From d951ee9963d206fde69f4a48ed4473e97a4c448f Mon Sep 17 00:00:00 2001 From: Brendan Punsky Date: Thu, 27 Aug 2026 08:42:04 -0400 Subject: [PATCH] rexcode/arm32: VFMA/VFMS carried VMLA/VMLS encodings; drop three duplicate mnemonics Asking for a VFMA with a lane operand emitted a VMLA. NEON's fused multiply-add has no by-element form at all -- llvm-mc rejects `vfma.f32 d0, d1, d2[0]` -- and the four rows sitting under VFMA/VFMS held VMLA/VMLS's lane encodings, which VMLA and VMLS already own. Their data type gave it away too: `.I32` on a fused multiply-add, which is float-only. Deleted. They were also the reason `bits & ~mask` looked wrong on those rows: as authored they were F2A000C0, and clearing the Vn high bit -- correct, since bit 7 is the top of the register number -- landed them exactly on VMLA's F2A00040. Found by asking which (bits, mask, mode) triples more than one mnemonic claims. That check found 18; this commit takes it to 9. Three of the eighteen were whole mnemonics duplicating a base: VRECPE_F, VRSQRTE_F every form already present under VRECPE / VRSQRTE, which carry both the U32 and F32 variants. VPADD_F its F32 form duplicated VPADD's; its F16 form was the only thing it owned, so that moves to VPADD, where the data type now selects it. All three were on the list of names no assembler spells, so that count goes from 14 to 11 -- and nine of the remaining eleven are the *_LANE group, still waiting on register-list and lane-index modelling. The other two are `psb csync` and `tsb csync`, which are correct as they are. Two smoke checks asserted the VFMA/VFMS by-element forms and are gone with them; a third moved index. Verified against llvm-mc: vpadd.i8/.f32/.f16, vrecpe.u32/.f32 and vrsqrte.f32 all byte-exact, 1656/1656 decode sweep, every suite at baseline. Co-Authored-By: Claude Opus 5 (1M context) --- core/rexcode/isa/arm32/mnemonic_builders.odin | 24 +- core/rexcode/isa/arm32/mnemonics.odin | 2 +- .../isa/arm32/tablegen/encoding_table.odin | 17 +- .../tablegen/generated/decode_tables.odin | 2257 ++++++++--------- .../tablegen/generated/encode_tables.odin | 675 +++-- .../isa/arm32/tables/arm32.bucket_list.bin | Bin 10794 -> 10758 bytes .../isa/arm32/tables/arm32.encode_forms.bin | Bin 38295 -> 38088 bytes .../isa/arm32/tables/arm32.encode_runs.bin | Bin 4784 -> 4760 bytes .../isa/arm32/tables/arm32.entries.bin | Bin 38295 -> 38088 bytes .../isa/arm32/tables/arm32.form_idx.bin | Bin 3330 -> 3312 bytes .../isa/arm32/tables/arm32.idx_a32.bin | Bin 1024 -> 1024 bytes .../isa/arm32/tables/arm32.idx_t16.bin | Bin 256 -> 256 bytes .../isa/arm32/tables/arm32.idx_t32.bin | Bin 512 -> 512 bytes .../isa/arm32/tables/arm32.idx_t32_sub.bin | Bin 16384 -> 16384 bytes core/rexcode/isa/arm32/tests/smoke.odin | 4 +- 15 files changed, 1460 insertions(+), 1519 deletions(-) diff --git a/core/rexcode/isa/arm32/mnemonic_builders.odin b/core/rexcode/isa/arm32/mnemonic_builders.odin index ce36876c5..ff246fdd8 100644 --- a/core/rexcode/isa/arm32/mnemonic_builders.odin +++ b/core/rexcode/isa/arm32/mnemonic_builders.odin @@ -693,13 +693,9 @@ emit_vnmla_s_s_s :: #force_inline proc(instructions: ^[dynamic]Instruc inst_vnmls_s_s_s :: #force_inline proc "contextless" (dst: Register, src: Register, src2: Register) -> Instruction { return Instruction{mnemonic = .VNMLS, operand_count = 3, mode = .A32, cond = 14, length = 4, ops = {op_reg(dst), op_reg(src), op_reg(src2), {}}} } emit_vnmls_s_s_s :: #force_inline proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register) { append(instructions, inst_vnmls_s_s_s(dst, src, src2)) } inst_vfma_s_s_s :: #force_inline proc "contextless" (dst: Register, src: Register, src2: Register) -> Instruction { return Instruction{mnemonic = .VFMA, operand_count = 3, mode = .A32, cond = 14, length = 4, ops = {op_reg(dst), op_reg(src), op_reg(src2), {}}} } -inst_vfma_d_d_dlane :: #force_inline proc "contextless" (dst: Register, src: Register, src2: Register, lane: u8) -> Instruction { return Instruction{mnemonic = .VFMA, operand_count = 3, mode = .A32, cond = 14, length = 4, ops = {op_reg(dst), op_reg(src), op_dpr_lane(src2, lane), {}}} } emit_vfma_s_s_s :: #force_inline proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register) { append(instructions, inst_vfma_s_s_s(dst, src, src2)) } -emit_vfma_d_d_dlane :: #force_inline proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, lane: u8) { append(instructions, inst_vfma_d_d_dlane(dst, src, src2, lane)) } inst_vfms_s_s_s :: #force_inline proc "contextless" (dst: Register, src: Register, src2: Register) -> Instruction { return Instruction{mnemonic = .VFMS, operand_count = 3, mode = .A32, cond = 14, length = 4, ops = {op_reg(dst), op_reg(src), op_reg(src2), {}}} } -inst_vfms_d_d_dlane :: #force_inline proc "contextless" (dst: Register, src: Register, src2: Register, lane: u8) -> Instruction { return Instruction{mnemonic = .VFMS, operand_count = 3, mode = .A32, cond = 14, length = 4, ops = {op_reg(dst), op_reg(src), op_dpr_lane(src2, lane), {}}} } emit_vfms_s_s_s :: #force_inline proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register) { append(instructions, inst_vfms_s_s_s(dst, src, src2)) } -emit_vfms_d_d_dlane :: #force_inline proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, lane: u8) { append(instructions, inst_vfms_d_d_dlane(dst, src, src2, lane)) } inst_vfnma_s_s_s :: #force_inline proc "contextless" (dst: Register, src: Register, src2: Register) -> Instruction { return Instruction{mnemonic = .VFNMA, operand_count = 3, mode = .A32, cond = 14, length = 4, ops = {op_reg(dst), op_reg(src), op_reg(src2), {}}} } emit_vfnma_s_s_s :: #force_inline proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register) { append(instructions, inst_vfnma_s_s_s(dst, src, src2)) } inst_vfnms_s_s_s :: #force_inline proc "contextless" (dst: Register, src: Register, src2: Register) -> Instruction { return Instruction{mnemonic = .VFNMS, operand_count = 3, mode = .A32, cond = 14, length = 4, ops = {op_reg(dst), op_reg(src), op_reg(src2), {}}} } @@ -976,12 +972,6 @@ inst_vclz_d_d :: #force_inline proc "contextless" (dst: Register, s emit_vclz_d_d :: #force_inline proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register) { append(instructions, inst_vclz_d_d(dst, src)) } inst_vcnt_d_d :: #force_inline proc "contextless" (dst: Register, src: Register) -> Instruction { return Instruction{mnemonic = .VCNT, operand_count = 2, mode = .A32, cond = 14, length = 4, ops = {op_reg(dst), op_reg(src), {}, {}}} } emit_vcnt_d_d :: #force_inline proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register) { append(instructions, inst_vcnt_d_d(dst, src)) } -inst_vpadd_f_d_d_d :: #force_inline proc "contextless" (dst: Register, src: Register, src2: Register) -> Instruction { return Instruction{mnemonic = .VPADD_F, operand_count = 3, mode = .A32, cond = 14, length = 4, ops = {op_reg(dst), op_reg(src), op_reg(src2), {}}} } -emit_vpadd_f_d_d_d :: #force_inline proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register) { append(instructions, inst_vpadd_f_d_d_d(dst, src, src2)) } -inst_vrecpe_f_d_d :: #force_inline proc "contextless" (dst: Register, src: Register) -> Instruction { return Instruction{mnemonic = .VRECPE_F, operand_count = 2, mode = .A32, cond = 14, length = 4, ops = {op_reg(dst), op_reg(src), {}, {}}} } -emit_vrecpe_f_d_d :: #force_inline proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register) { append(instructions, inst_vrecpe_f_d_d(dst, src)) } -inst_vrsqrte_f_d_d :: #force_inline proc "contextless" (dst: Register, src: Register) -> Instruction { return Instruction{mnemonic = .VRSQRTE_F, operand_count = 2, mode = .A32, cond = 14, length = 4, ops = {op_reg(dst), op_reg(src), {}, {}}} } -emit_vrsqrte_f_d_d :: #force_inline proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register) { append(instructions, inst_vrsqrte_f_d_d(dst, src)) } inst_vrev16_d_d :: #force_inline proc "contextless" (dst: Register, src: Register) -> Instruction { return Instruction{mnemonic = .VREV16, operand_count = 2, mode = .A32, cond = 14, length = 4, ops = {op_reg(dst), op_reg(src), {}, {}}} } emit_vrev16_d_d :: #force_inline proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register) { append(instructions, inst_vrev16_d_d(dst, src)) } inst_vrev32_d_d :: #force_inline proc "contextless" (dst: Register, src: Register) -> Instruction { return Instruction{mnemonic = .VREV32, operand_count = 2, mode = .A32, cond = 14, length = 4, ops = {op_reg(dst), op_reg(src), {}, {}}} } @@ -1985,10 +1975,10 @@ inst_vnmla :: inst_vnmla_s_s_s emit_vnmla :: emit_vnmla_s_s_s inst_vnmls :: inst_vnmls_s_s_s emit_vnmls :: emit_vnmls_s_s_s -inst_vfma :: proc{ inst_vfma_s_s_s, inst_vfma_d_d_dlane } -emit_vfma :: proc{ emit_vfma_s_s_s, emit_vfma_d_d_dlane } -inst_vfms :: proc{ inst_vfms_s_s_s, inst_vfms_d_d_dlane } -emit_vfms :: proc{ emit_vfms_s_s_s, emit_vfms_d_d_dlane } +inst_vfma :: inst_vfma_s_s_s +emit_vfma :: emit_vfma_s_s_s +inst_vfms :: inst_vfms_s_s_s +emit_vfms :: emit_vfms_s_s_s inst_vfnma :: inst_vfnma_s_s_s emit_vfnma :: emit_vfnma_s_s_s inst_vfnms :: inst_vfnms_s_s_s @@ -2211,12 +2201,6 @@ inst_vclz :: inst_vclz_d_d emit_vclz :: emit_vclz_d_d inst_vcnt :: inst_vcnt_d_d emit_vcnt :: emit_vcnt_d_d -inst_vpadd_f :: inst_vpadd_f_d_d_d -emit_vpadd_f :: emit_vpadd_f_d_d_d -inst_vrecpe_f :: inst_vrecpe_f_d_d -emit_vrecpe_f :: emit_vrecpe_f_d_d -inst_vrsqrte_f :: inst_vrsqrte_f_d_d -emit_vrsqrte_f :: emit_vrsqrte_f_d_d inst_vrev16 :: inst_vrev16_d_d emit_vrev16 :: emit_vrev16_d_d inst_vrev32 :: inst_vrev32_d_d diff --git a/core/rexcode/isa/arm32/mnemonics.odin b/core/rexcode/isa/arm32/mnemonics.odin index f7982e394..f922eeaa4 100644 --- a/core/rexcode/isa/arm32/mnemonics.odin +++ b/core/rexcode/isa/arm32/mnemonics.odin @@ -290,7 +290,7 @@ Mnemonic :: enum u16 { VSHLL, // shift-left long VCLS, VCLZ, VCNT, - VPADD_F, VRECPE_F, VRSQRTE_F, // (placeholders; canonical via operand types) + // (placeholders; canonical via operand types) VREV16, VREV32, VREV64, VEXT, // vector extract diff --git a/core/rexcode/isa/arm32/tablegen/encoding_table.odin b/core/rexcode/isa/arm32/tablegen/encoding_table.odin index 8f6e59141..8f7a78e3a 100644 --- a/core/rexcode/isa/arm32/tablegen/encoding_table.odin +++ b/core/rexcode/isa/arm32/tablegen/encoding_table.odin @@ -1376,8 +1376,6 @@ ENCODING_TABLE := #partial [Mnemonic][]Encoding{ // MVE FP vector + scalar {.VFMA, {.QPR, .QPR, .QPR, .NONE}, {.VD_Q, .VN_Q, .VM_Q, .NONE}, 0xEF000C50, 0xEFA10F51, .MVE_FP, .T32, {thumb32=true, cond_in_28=false}, {.F32, .NONE}}, {.VFMA, {.QPR, .QPR, .GPR, .NONE}, {.VD_Q, .VN_Q, .RM_T32, .NONE}, 0xEE310E40, 0xEFB10F51, .MVE_FP, .T32, {thumb32=true, cond_in_28=false}, {.F32, .NONE}}, - {.VFMA, {.DPR, .DPR, .DPR_ELEM, .NONE}, {.VD_D, .VN_D, .VM_D, .NONE}, 0xF2A00040, 0xFFB00F50, .VFPV4, .A32, {cond_in_28=false}, {.I32, .NONE}}, - {.VFMA, {.QPR, .QPR, .DPR_ELEM, .NONE}, {.VD_Q, .VN_Q, .VM_D, .NONE}, 0xF3A00040, 0xFFB00F50, .VFPV4, .A32, {cond_in_28=false}, {.I32, .NONE}}, {.VFMA, {.QPR, .QPR, .QPR, .NONE}, {.VD_Q, .VN_Q, .VM_Q, .NONE}, 0xFC300850, 0xFFB00F50, .BF16, .A32, {cond_in_28=false}, {.BF16, .NONE}}, }, .VFMS = { @@ -1390,8 +1388,6 @@ ENCODING_TABLE := #partial [Mnemonic][]Encoding{ {.VFMS, {.QPR, .QPR, .QPR, .NONE}, {.VD_Q, .VN_Q, .VM_Q, .NONE}, 0xF2200C50, 0xFFB00F50, .NEON, .A32, {cond_in_28=false}, {.F32, .NONE}}, // MVE FP vector {.VFMS, {.QPR, .QPR, .QPR, .NONE}, {.VD_Q, .VN_Q, .VM_Q, .NONE}, 0xEF200C50, 0xEFA10F51, .MVE_FP, .T32, {thumb32=true, cond_in_28=false}, {.F32, .NONE}}, - {.VFMS, {.DPR, .DPR, .DPR_ELEM, .NONE}, {.VD_D, .VN_D, .VM_D, .NONE}, 0xF2A00440, 0xFFB00F50, .VFPV4, .A32, {cond_in_28=false}, {.I32, .NONE}}, - {.VFMS, {.QPR, .QPR, .DPR_ELEM, .NONE}, {.VD_Q, .VN_Q, .VM_D, .NONE}, 0xF3A00440, 0xFFB00F50, .VFPV4, .A32, {cond_in_28=false}, {.I32, .NONE}}, }, .VFNMS = { {.VFNMS, {.SPR, .SPR, .SPR, .NONE}, {.VD_S, .VN_S, .VM_S, .NONE}, 0x0E900A00, 0x0FB00B50, .VFPV4, .A32, {}, {.F32, .NONE}}, @@ -2005,6 +2001,7 @@ ENCODING_TABLE := #partial [Mnemonic][]Encoding{ // F32 {.VPADD, {.DPR, .DPR, .DPR, .NONE}, {.VD_D, .VN_D, .VM_D, .NONE}, 0xF3000D00, 0xFFB00F10, .NEON, .A32, {cond_in_28=false}, {.F32, .NONE}}, // (VPADD MVE form doesn't exist; MVE uses VADDV reduction instead) + {.VPADD, {.DPR, .DPR, .DPR, .NONE}, {.VD_D, .VN_D, .VM_D, .NONE}, 0xF3100D00, 0xFFB00F10, .NEON_HALF_FP, .A32, {cond_in_28=false}, {.F16, .NONE}}, }, // ---- VPMAX / VPMIN (D-form only) ---- .VPMAX = { @@ -3556,18 +3553,6 @@ ENCODING_TABLE := #partial [Mnemonic][]Encoding{ {.VRSRA, {.DPR, .DPR, .IMM, .NONE}, {.VD_D, .VM_D, .NEON_SHIFT_IMM6, .NONE}, 0xF2800310, 0xFE800F10, .NEON, .A32, {cond_in_28=false}, {.I32, .NONE}}, {.VRSRA, {.QPR, .QPR, .IMM, .NONE}, {.VD_Q, .VM_Q, .NEON_SHIFT_IMM6, .NONE}, 0xF2800350, 0xFE800F50, .NEON, .A32, {cond_in_28=false}, {.I32, .NONE}}, }, - .VRECPE_F = { - {.VRECPE_F, {.DPR, .DPR, .NONE, .NONE}, {.VD_D, .VM_D, .NONE, .NONE}, 0xF3BB0500, 0xFFBF0FD0, .NEON, .A32, {cond_in_28=false}, {.F32, .NONE}}, - {.VRECPE_F, {.QPR, .QPR, .NONE, .NONE}, {.VD_Q, .VM_Q, .NONE, .NONE}, 0xF3BB0540, 0xFFBF0FD0, .NEON, .A32, {cond_in_28=false}, {.F32, .NONE}}, - }, - .VRSQRTE_F = { - {.VRSQRTE_F, {.DPR, .DPR, .NONE, .NONE}, {.VD_D, .VM_D, .NONE, .NONE}, 0xF3BB0580, 0xFFBF0FD0, .NEON, .A32, {cond_in_28=false}, {.F32, .NONE}}, - {.VRSQRTE_F, {.QPR, .QPR, .NONE, .NONE}, {.VD_Q, .VM_Q, .NONE, .NONE}, 0xF3BB05C0, 0xFFBF0FD0, .NEON, .A32, {cond_in_28=false}, {.F32, .NONE}}, - }, - .VPADD_F = { - {.VPADD_F, {.DPR, .DPR, .DPR, .NONE}, {.VD_D, .VN_D, .VM_D, .NONE}, 0xF3000D00, 0xFFB00F10, .NEON, .A32, {cond_in_28=false}, {.F32, .NONE}}, - {.VPADD_F, {.DPR, .DPR, .DPR, .NONE}, {.VD_D, .VN_D, .VM_D, .NONE}, 0xF3100D00, 0xFFB00F10, .NEON_HALF_FP, .A32, {cond_in_28=false}, {.F16, .NONE}}, - }, .VCVTR = { {.VCVTR, {.SPR, .SPR, .NONE, .NONE}, {.VD_S, .VM_S, .NONE, .NONE}, 0x0EBD0A40, 0x0FBF0FD0, .VFPV2, .A32, {}, {.S32, .F32}}, {.VCVTR, {.SPR, .SPR, .NONE, .NONE}, {.VD_S, .VM_S, .NONE, .NONE}, 0x0EBC0A40, 0x0FBF0FD0, .VFPV2, .A32, {}, {.U32, .F32}}, diff --git a/core/rexcode/isa/arm32/tablegen/generated/decode_tables.odin b/core/rexcode/isa/arm32/tablegen/generated/decode_tables.odin index 0f6aec39a..959620224 100644 --- a/core/rexcode/isa/arm32/tablegen/generated/decode_tables.odin +++ b/core/rexcode/isa/arm32/tablegen/generated/decode_tables.odin @@ -8,7 +8,7 @@ package rexcode_arm32_generated import lib "../.." @(rodata) -DECODE_ENTRIES := [1665]lib.Decode_Entry{ +DECODE_ENTRIES := [1656]lib.Decode_Entry{ { .MUL, {.GPR,.GPR,.GPR,.NONE}, {.RN_A32,.RM_A32,.RS_A32,.NONE}, 0x00000090, 0x0FE000F0, .BASE, .A32, {}, {.NONE,.NONE} }, { .AND, {.GPR,.GPR,.GPR_RSR,.NONE}, {.RD,.RN_A32,.RM_A32,.NONE}, 0x00000010, 0x0FE00090, .BASE, .A32, {}, {.NONE,.NONE} }, { .AND, {.GPR,.GPR,.GPR_SHIFTED,.NONE}, {.RD,.RN_A32,.RM_A32,.NONE}, 0x00000000, 0x0FE00010, .BASE, .A32, {}, {.NONE,.NONE} }, @@ -203,8 +203,8 @@ DECODE_ENTRIES := [1665]lib.Decode_Entry{ { .VCGT, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2000340, 0xFFB00F50, .NEON, .A32, {}, {.S8,.NONE} }, { .VCLE, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VM_D,.VN_D,.NONE}, 0xF2000310, 0xFFB00F50, .NEON, .A32, {}, {.S8,.NONE} }, { .VCLT, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VM_D,.VN_D,.NONE}, 0xF2000300, 0xFFB00F50, .NEON, .A32, {}, {.S8,.NONE} }, - { .VMAX, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2000F40, 0xFFB00F50, .NEON, .A32, {}, {.F32,.NONE} }, { .VMAX, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2000640, 0xFFB00F50, .NEON, .A32, {}, {.S8,.NONE} }, + { .VMAX, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2000F40, 0xFFB00F50, .NEON, .A32, {}, {.F32,.NONE} }, { .VMIN, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2000650, 0xFFB00F50, .NEON, .A32, {}, {.S8,.NONE} }, { .VRECPS, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2000F50, 0xFFB00F50, .NEON, .A32, {}, {.F32,.NONE} }, { .VSHL, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VM_Q,.VN_Q,.NONE}, 0xF2000440, 0xFFB00F50, .NEON, .A32, {}, {.S8,.NONE} }, @@ -230,8 +230,8 @@ DECODE_ENTRIES := [1665]lib.Decode_Entry{ { .VCEQ, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2000E00, 0xFFB00F10, .NEON, .A32, {}, {.F32,.NONE} }, { .VCGE, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2000310, 0xFFB00F10, .NEON, .A32, {}, {.S8,.NONE} }, { .VCGT, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2000300, 0xFFB00F10, .NEON, .A32, {}, {.S8,.NONE} }, - { .VMAX, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2000F00, 0xFFB00F10, .NEON, .A32, {}, {.F32,.NONE} }, { .VMAX, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2000600, 0xFFB00F10, .NEON, .A32, {}, {.S8,.NONE} }, + { .VMAX, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2000F00, 0xFFB00F10, .NEON, .A32, {}, {.F32,.NONE} }, { .VMIN, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2000610, 0xFFB00F10, .NEON, .A32, {}, {.S8,.NONE} }, { .VPMAX, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2000A00, 0xFFB00F10, .NEON, .A32, {}, {.S8,.NONE} }, { .VPMIN, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2000A10, 0xFFB00F10, .NEON, .A32, {}, {.S8,.NONE} }, @@ -244,8 +244,8 @@ DECODE_ENTRIES := [1665]lib.Decode_Entry{ { .VCLE, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VM_Q,.VN_Q,.NONE}, 0xF2100350, 0xFFB11F51, .NEON, .A32, {}, {.S16,.NONE} }, { .VCLT, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VM_Q,.VN_Q,.NONE}, 0xF2100340, 0xFFB11F51, .NEON, .A32, {}, {.S16,.NONE} }, { .VQRSHL, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VM_Q,.VN_Q,.NONE}, 0xF2100550, 0xFFB11F51, .NEON, .A32, {}, {.S16,.NONE} }, - { .VADD, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2100D40, 0xFFB00F50, .NEON_HALF_FP, .A32, {}, {.F16,.NONE} }, { .VADD, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2100840, 0xFFB00F50, .NEON, .A32, {}, {.I16,.NONE} }, + { .VADD, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2100D40, 0xFFB00F50, .NEON_HALF_FP, .A32, {}, {.F16,.NONE} }, { .VMUL, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2100950, 0xFFB00F50, .NEON, .A32, {}, {.I16,.NONE} }, { .VMLA, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2100940, 0xFFB00F50, .NEON, .A32, {}, {.I16,.NONE} }, { .VHADD, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2100040, 0xFFB00F50, .NEON, .A32, {}, {.S16,.NONE} }, @@ -283,8 +283,8 @@ DECODE_ENTRIES := [1665]lib.Decode_Entry{ { .VCEQ, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2100E00, 0xFFB00F10, .NEON_HALF_FP, .A32, {}, {.F16,.NONE} }, { .VCGE, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2100310, 0xFFB00F10, .NEON, .A32, {}, {.S16,.NONE} }, { .VCGT, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2100300, 0xFFB00F10, .NEON, .A32, {}, {.S16,.NONE} }, - { .VMAX, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2100600, 0xFFB00F10, .NEON, .A32, {}, {.S16,.NONE} }, { .VMAX, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2100F00, 0xFFB00F10, .NEON_HALF_FP, .A32, {}, {.F16,.NONE} }, + { .VMAX, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2100600, 0xFFB00F10, .NEON, .A32, {}, {.S16,.NONE} }, { .VMIN, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2100610, 0xFFB00F10, .NEON, .A32, {}, {.S16,.NONE} }, { .VPMAX, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2100A00, 0xFFB00F10, .NEON, .A32, {}, {.S16,.NONE} }, { .VPMIN, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2100A10, 0xFFB00F10, .NEON, .A32, {}, {.S16,.NONE} }, @@ -314,8 +314,8 @@ DECODE_ENTRIES := [1665]lib.Decode_Entry{ { .VCLE, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VM_D,.VN_D,.NONE}, 0xF2200310, 0xFFB00F50, .NEON, .A32, {}, {.S32,.NONE} }, { .VCLT, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VM_D,.VN_D,.NONE}, 0xF2200300, 0xFFB00F50, .NEON, .A32, {}, {.S32,.NONE} }, { .VMAX, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2200640, 0xFFB00F50, .NEON, .A32, {}, {.S32,.NONE} }, - { .VMIN, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2200F40, 0xFFB00F50, .NEON, .A32, {}, {.F32,.NONE} }, { .VMIN, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2200650, 0xFFB00F50, .NEON, .A32, {}, {.S32,.NONE} }, + { .VMIN, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2200F40, 0xFFB00F50, .NEON, .A32, {}, {.F32,.NONE} }, { .VRSQRTS, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2200F50, 0xFFB00F50, .NEON, .A32, {}, {.F32,.NONE} }, { .VQRSHL, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VM_D,.VN_D,.NONE}, 0xF2200510, 0xFFB00F50, .NEON, .A32, {}, {.S32,.NONE} }, { .SHA1M, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2200C40, 0xFFB00F50, .CRYPTO, .A32, {}, {.NONE,.NONE} }, @@ -337,8 +337,8 @@ DECODE_ENTRIES := [1665]lib.Decode_Entry{ { .VCGE, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2200310, 0xFFB00F10, .NEON, .A32, {}, {.S32,.NONE} }, { .VCGT, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2200300, 0xFFB00F10, .NEON, .A32, {}, {.S32,.NONE} }, { .VMAX, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2200600, 0xFFB00F10, .NEON, .A32, {}, {.S32,.NONE} }, - { .VMIN, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2200610, 0xFFB00F10, .NEON, .A32, {}, {.S32,.NONE} }, { .VMIN, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2200F00, 0xFFB00F10, .NEON, .A32, {}, {.F32,.NONE} }, + { .VMIN, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2200610, 0xFFB00F10, .NEON, .A32, {}, {.S32,.NONE} }, { .VPMAX, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2200A00, 0xFFB00F10, .NEON, .A32, {}, {.S32,.NONE} }, { .VPMIN, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2200A10, 0xFFB00F10, .NEON, .A32, {}, {.S32,.NONE} }, { .VPADD, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2200B10, 0xFFB00F10, .NEON, .A32, {}, {.I32,.NONE} }, @@ -370,40 +370,40 @@ DECODE_ENTRIES := [1665]lib.Decode_Entry{ { .VADDW, {.QPR,.QPR,.DPR,.NONE}, {.VD_Q,.VN_Q,.VM_D,.NONE}, 0xF2800100, 0xFFB11F50, .NEON, .A32, {}, {.S8,.NONE} }, { .VSUBW, {.QPR,.QPR,.DPR,.NONE}, {.VD_Q,.VN_Q,.VM_D,.NONE}, 0xF2800300, 0xFFB11F50, .NEON, .A32, {}, {.S8,.NONE} }, { .VMOVL, {.QPR,.DPR,.NONE,.NONE}, {.VD_Q,.VM_D,.NONE,.NONE}, 0xF2880A10, 0xFFB80FD0, .NEON, .A32, {}, {.S8,.NONE} }, - { .VMOV, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NONE,.NONE,.NONE}, 0xF2800050, 0xFEB80FD0, .NEON, .A32, {}, {.I32,.NONE} }, - { .VMOV, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NONE,.NONE,.NONE}, 0xF2800F50, 0xFEB80FD0, .NEON, .A32, {}, {.F32,.NONE} }, - { .VMOV, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NONE,.NONE,.NONE}, 0xF2800E50, 0xFEB80FD0, .NEON, .A32, {}, {.I8,.NONE} }, - { .VMOV, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NONE,.NONE,.NONE}, 0xF2800850, 0xFEB80FD0, .NEON, .A32, {}, {.I16,.NONE} }, { .VMOV, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NONE,.NONE,.NONE}, 0xF2800E70, 0xFEB80FD0, .NEON, .A32, {}, {.I64,.NONE} }, + { .VMOV, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NONE,.NONE,.NONE}, 0xF2800F50, 0xFEB80FD0, .NEON, .A32, {}, {.F32,.NONE} }, + { .VMOV, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NONE,.NONE,.NONE}, 0xF2800850, 0xFEB80FD0, .NEON, .A32, {}, {.I16,.NONE} }, + { .VMOV, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NONE,.NONE,.NONE}, 0xF2800050, 0xFEB80FD0, .NEON, .A32, {}, {.I32,.NONE} }, + { .VMOV, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NONE,.NONE,.NONE}, 0xF2800E50, 0xFEB80FD0, .NEON, .A32, {}, {.I8,.NONE} }, { .VADDL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2800000, 0xFFB01F50, .NEON, .A32, {}, {.S8,.NONE} }, { .VSUBL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2800200, 0xFFB01F50, .NEON, .A32, {}, {.S8,.NONE} }, { .VABAL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2800500, 0xFFB01F50, .NEON, .A32, {}, {.S8,.NONE} }, { .VABDL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2800700, 0xFFB01F50, .NEON, .A32, {}, {.S8,.NONE} }, { .VMVN, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NONE,.NONE,.NONE}, 0xF2800070, 0xFEB80FD0, .NEON, .A32, {}, {.I32,.NONE} }, { .VMVN, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NONE,.NONE,.NONE}, 0xF2800870, 0xFEB80FD0, .NEON, .A32, {}, {.I16,.NONE} }, + { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800A10, 0xFEB80F90, .NEON, .A32, {}, {.I16,.NONE} }, + { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800E30, 0xFEB80F90, .NEON, .A32, {}, {.I64,.NONE} }, { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800E10, 0xFEB80F90, .NEON, .A32, {}, {.I8,.NONE} }, { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800D10, 0xFEB80F90, .NEON, .A32, {}, {.I32,.NONE} }, - { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800A10, 0xFEB80F90, .NEON, .A32, {}, {.I16,.NONE} }, - { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800F10, 0xFEB80F90, .NEON, .A32, {}, {.F32,.NONE} }, { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800810, 0xFEB80F90, .NEON, .A32, {}, {.I16,.NONE} }, - { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800010, 0xFEB80F90, .NEON, .A32, {}, {.I32,.NONE} }, - { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800610, 0xFEB80F90, .NEON, .A32, {}, {.I32,.NONE} }, - { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800210, 0xFEB80F90, .NEON, .A32, {}, {.I32,.NONE} }, { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800410, 0xFEB80F90, .NEON, .A32, {}, {.I32,.NONE} }, + { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800010, 0xFEB80F90, .NEON, .A32, {}, {.I32,.NONE} }, + { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800210, 0xFEB80F90, .NEON, .A32, {}, {.I32,.NONE} }, + { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800F10, 0xFEB80F90, .NEON, .A32, {}, {.F32,.NONE} }, + { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800610, 0xFEB80F90, .NEON, .A32, {}, {.I32,.NONE} }, { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800C10, 0xFEB80F90, .NEON, .A32, {}, {.I32,.NONE} }, - { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800E30, 0xFEB80F90, .NEON, .A32, {}, {.I64,.NONE} }, - { .VMULL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2800E00, 0xFFB00F50, .NEON, .A32, {}, {.P8,.NONE} }, { .VMULL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2800C00, 0xFFB00F50, .NEON, .A32, {}, {.S8,.NONE} }, + { .VMULL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2800E00, 0xFFB00F50, .NEON, .A32, {}, {.P8,.NONE} }, { .VMLAL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2800800, 0xFFB00F50, .NEON, .A32, {}, {.S8,.NONE} }, { .VMLSL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2800A00, 0xFFB00F50, .NEON, .A32, {}, {.S8,.NONE} }, - { .VMVN, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800630, 0xFEB80F90, .NEON, .A32, {}, {.I32,.NONE} }, - { .VMVN, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800830, 0xFEB80F90, .NEON, .A32, {}, {.I16,.NONE} }, - { .VMVN, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800A30, 0xFEB80F90, .NEON, .A32, {}, {.I16,.NONE} }, - { .VMVN, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800230, 0xFEB80F90, .NEON, .A32, {}, {.I32,.NONE} }, - { .VMVN, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800D30, 0xFEB80F90, .NEON, .A32, {}, {.I32,.NONE} }, { .VMVN, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800030, 0xFEB80F90, .NEON, .A32, {}, {.I32,.NONE} }, + { .VMVN, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800830, 0xFEB80F90, .NEON, .A32, {}, {.I16,.NONE} }, + { .VMVN, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800630, 0xFEB80F90, .NEON, .A32, {}, {.I32,.NONE} }, { .VMVN, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800C30, 0xFEB80F90, .NEON, .A32, {}, {.I32,.NONE} }, + { .VMVN, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800A30, 0xFEB80F90, .NEON, .A32, {}, {.I16,.NONE} }, + { .VMVN, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800D30, 0xFEB80F90, .NEON, .A32, {}, {.I32,.NONE} }, { .VMVN, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800430, 0xFEB80F90, .NEON, .A32, {}, {.I32,.NONE} }, + { .VMVN, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800230, 0xFEB80F90, .NEON, .A32, {}, {.I32,.NONE} }, { .VQSHRN, {.DPR,.QPR,.IMM,.NONE}, {.VD_D,.VM_Q,.NEON_SHIFT_IMM6,.NONE}, 0xF2800910, 0xFE800FD0, .NEON, .A32, {}, {.I16,.NONE} }, { .VQRSHRN, {.DPR,.QPR,.IMM,.NONE}, {.VD_D,.VM_Q,.NEON_SHIFT_IMM6,.NONE}, 0xF2800950, 0xFE800FD0, .NEON, .A32, {}, {.I16,.NONE} }, { .VSHRN, {.DPR,.QPR,.IMM,.NONE}, {.VD_D,.VM_Q,.NEON_SHIFT_IMM6,.NONE}, 0xF2800810, 0xFE800FD0, .NEON, .A32, {}, {.I16,.NONE} }, @@ -434,18 +434,18 @@ DECODE_ENTRIES := [1665]lib.Decode_Entry{ { .VMUL, {.DPR,.DPR,.DPR_ELEM,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2900840, 0xFFB00F50, .NEON, .A32, {}, {.I16,.NONE} }, { .VMLA, {.DPR,.DPR,.DPR_ELEM,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2900040, 0xFFB00F50, .NEON, .A32, {}, {.I16,.NONE} }, { .VMLS, {.DPR,.DPR,.DPR_ELEM,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2900440, 0xFFB00F50, .NEON, .A32, {}, {.I16,.NONE} }, - { .VMULL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2900C00, 0xFFB00F50, .NEON, .A32, {}, {.S16,.NONE} }, { .VMULL, {.QPR,.DPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2900A40, 0xFFB00F50, .NEON, .A32, {}, {.S16,.NONE} }, - { .VMLAL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2900800, 0xFFB00F50, .NEON, .A32, {}, {.S16,.NONE} }, + { .VMULL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2900C00, 0xFFB00F50, .NEON, .A32, {}, {.S16,.NONE} }, { .VMLAL, {.QPR,.DPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2900240, 0xFFB00F50, .NEON, .A32, {}, {.S16,.NONE} }, + { .VMLAL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2900800, 0xFFB00F50, .NEON, .A32, {}, {.S16,.NONE} }, { .VMLSL, {.QPR,.DPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2900640, 0xFFB00F50, .NEON, .A32, {}, {.S16,.NONE} }, { .VMLSL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2900A00, 0xFFB00F50, .NEON, .A32, {}, {.S16,.NONE} }, - { .VQDMULL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2900D00, 0xFFB00F50, .NEON, .A32, {}, {.S16,.NONE} }, { .VQDMULL, {.QPR,.DPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2900B40, 0xFFB00F50, .NEON, .A32, {}, {.S16,.NONE} }, + { .VQDMULL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2900D00, 0xFFB00F50, .NEON, .A32, {}, {.S16,.NONE} }, { .VQDMLAL, {.QPR,.DPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2900340, 0xFFB00F50, .NEON, .A32, {}, {.S16,.NONE} }, { .VQDMLAL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2900900, 0xFFB00F50, .NEON, .A32, {}, {.S16,.NONE} }, - { .VQDMLSL, {.QPR,.DPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2900740, 0xFFB00F50, .NEON, .A32, {}, {.S16,.NONE} }, { .VQDMLSL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2900B00, 0xFFB00F50, .NEON, .A32, {}, {.S16,.NONE} }, + { .VQDMLSL, {.QPR,.DPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2900740, 0xFFB00F50, .NEON, .A32, {}, {.S16,.NONE} }, { .VQDMULH, {.DPR,.DPR,.DPR_ELEM,.NONE}, {.VD_D,.VN_D,.NEON_VM_SCALAR16,.NONE}, 0xF2900C40, 0xFFB00F50, .NEON, .A32, {}, {.S16,.NONE} }, { .VQRDMULH, {.DPR,.DPR,.DPR_ELEM,.NONE}, {.VD_D,.VN_D,.NEON_VM_SCALAR16,.NONE}, 0xF2900D40, 0xFFB00F50, .NEON, .A32, {}, {.S16,.NONE} }, { .VQRDMLAH, {.DPR,.DPR,.DPR_ELEM,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2900E40, 0xFFB00F50, .V8, .A32, {}, {.S16,.NONE} }, @@ -461,18 +461,16 @@ DECODE_ENTRIES := [1665]lib.Decode_Entry{ { .VMUL, {.DPR,.DPR,.DPR_ELEM,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2A00840, 0xFFB00F50, .NEON, .A32, {}, {.I32,.NONE} }, { .VMLA, {.DPR,.DPR,.DPR_ELEM,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2A00040, 0xFFB00F50, .NEON, .A32, {}, {.I32,.NONE} }, { .VMLS, {.DPR,.DPR,.DPR_ELEM,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2A00440, 0xFFB00F50, .NEON, .A32, {}, {.I32,.NONE} }, - { .VFMA, {.DPR,.DPR,.DPR_ELEM,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2A00040, 0xFFB00F50, .VFPV4, .A32, {}, {.I32,.NONE} }, - { .VFMS, {.DPR,.DPR,.DPR_ELEM,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2A00440, 0xFFB00F50, .VFPV4, .A32, {}, {.I32,.NONE} }, - { .VMULL, {.QPR,.DPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2A00A40, 0xFFB00F50, .NEON, .A32, {}, {.S32,.NONE} }, { .VMULL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2A00C00, 0xFFB00F50, .NEON, .A32, {}, {.S32,.NONE} }, - { .VMLAL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2A00800, 0xFFB00F50, .NEON, .A32, {}, {.S32,.NONE} }, + { .VMULL, {.QPR,.DPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2A00A40, 0xFFB00F50, .NEON, .A32, {}, {.S32,.NONE} }, { .VMLAL, {.QPR,.DPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2A00240, 0xFFB00F50, .NEON, .A32, {}, {.S32,.NONE} }, + { .VMLAL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2A00800, 0xFFB00F50, .NEON, .A32, {}, {.S32,.NONE} }, { .VMLSL, {.QPR,.DPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2A00640, 0xFFB00F50, .NEON, .A32, {}, {.S32,.NONE} }, { .VMLSL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2A00A00, 0xFFB00F50, .NEON, .A32, {}, {.S32,.NONE} }, - { .VQDMULL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2A00D00, 0xFFB00F50, .NEON, .A32, {}, {.S32,.NONE} }, { .VQDMULL, {.QPR,.DPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2A00B40, 0xFFB00F50, .NEON, .A32, {}, {.S32,.NONE} }, - { .VQDMLAL, {.QPR,.DPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2A00340, 0xFFB00F50, .NEON, .A32, {}, {.S32,.NONE} }, + { .VQDMULL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2A00D00, 0xFFB00F50, .NEON, .A32, {}, {.S32,.NONE} }, { .VQDMLAL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2A00900, 0xFFB00F50, .NEON, .A32, {}, {.S32,.NONE} }, + { .VQDMLAL, {.QPR,.DPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2A00340, 0xFFB00F50, .NEON, .A32, {}, {.S32,.NONE} }, { .VQDMLSL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2A00B00, 0xFFB00F50, .NEON, .A32, {}, {.S32,.NONE} }, { .VQDMLSL, {.QPR,.DPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2A00740, 0xFFB00F50, .NEON, .A32, {}, {.S32,.NONE} }, { .VQDMULH, {.DPR,.DPR,.DPR_ELEM,.NONE}, {.VD_D,.VN_D,.NEON_VM_SCALAR32,.NONE}, 0xF2A00C40, 0xFFB00F50, .NEON, .A32, {}, {.S32,.NONE} }, @@ -537,14 +535,13 @@ DECODE_ENTRIES := [1665]lib.Decode_Entry{ { .VACGE, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF3000E10, 0xFFB00F10, .NEON, .A32, {}, {.F32,.NONE} }, { .VMAX, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF3000600, 0xFFB00F10, .NEON, .A32, {}, {.U8,.NONE} }, { .VMIN, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF3000610, 0xFFB00F10, .NEON, .A32, {}, {.U8,.NONE} }, - { .VPMAX, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF3000A00, 0xFFB00F10, .NEON, .A32, {}, {.U8,.NONE} }, { .VPMAX, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF3000F00, 0xFFB00F10, .NEON, .A32, {}, {.F32,.NONE} }, + { .VPMAX, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF3000A00, 0xFFB00F10, .NEON, .A32, {}, {.U8,.NONE} }, { .VPMIN, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF3000A10, 0xFFB00F10, .NEON, .A32, {}, {.U8,.NONE} }, { .VPADD, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF3000D00, 0xFFB00F10, .NEON, .A32, {}, {.F32,.NONE} }, { .VSHL, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VM_D,.VN_D,.NONE}, 0xF3000400, 0xFFB00F10, .NEON, .A32, {}, {.U8,.NONE} }, { .VRSHL, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VM_D,.VN_D,.NONE}, 0xF3000500, 0xFFB00F10, .NEON, .A32, {}, {.U8,.NONE} }, { .VQSHL, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VM_D,.VN_D,.NONE}, 0xF3000410, 0xFFB00F10, .NEON, .A32, {}, {.U8,.NONE} }, - { .VPADD_F, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF3000D00, 0xFFB00F10, .NEON, .A32, {}, {.F32,.NONE} }, { .MOVW, {.GPR,.IMM16_LO_HI,.NONE,.NONE}, {.RD,.NONE,.NONE,.NONE}, 0x03000000, 0x0FF00000, .V6T2, .A32, {}, {.NONE,.NONE} }, { .VCLE, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VM_Q,.VN_Q,.NONE}, 0xF3100350, 0xFFB11F51, .NEON, .A32, {}, {.U16,.NONE} }, { .VCLT, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VM_Q,.VN_Q,.NONE}, 0xF3100340, 0xFFB11F51, .NEON, .A32, {}, {.U16,.NONE} }, @@ -571,7 +568,7 @@ DECODE_ENTRIES := [1665]lib.Decode_Entry{ { .VBSL, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF3100110, 0xFFB00F10, .NEON, .A32, {}, {.NONE,.NONE} }, { .VCEQ, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF3100810, 0xFFB00F10, .NEON, .A32, {}, {.I16,.NONE} }, { .VCGE, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF3100E00, 0xFFB00F10, .NEON_HALF_FP, .A32, {}, {.F16,.NONE} }, - { .VPADD_F, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF3100D00, 0xFFB00F10, .NEON_HALF_FP, .A32, {}, {.F16,.NONE} }, + { .VPADD, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF3100D00, 0xFFB00F10, .NEON_HALF_FP, .A32, {}, {.F16,.NONE} }, { .TST, {.GPR,.IMM_MOD,.NONE,.NONE}, {.RN_A32,.A32_IMM_MOD,.NONE,.NONE}, 0x03100000, 0x0FF0F000, .BASE, .A32, {}, {.NONE,.NONE} }, { .NOP, {.NONE,.NONE,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x0320F000, 0x0FFFFFFF, .V6K, .A32, {}, {.NONE,.NONE} }, { .YIELD, {.NONE,.NONE,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x0320F001, 0x0FFFFFFF, .V6K, .A32, {}, {.NONE,.NONE} }, @@ -657,8 +654,8 @@ DECODE_ENTRIES := [1665]lib.Decode_Entry{ { .VMLS, {.QPR,.QPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_Q,.VM_D,.NONE}, 0xF3900440, 0xFFB00F50, .NEON, .A32, {}, {.I16,.NONE} }, { .VMULL, {.QPR,.DPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF3900A40, 0xFFB00F50, .NEON, .A32, {}, {.U16,.NONE} }, { .VMULL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF3900C00, 0xFFB00F50, .NEON, .A32, {}, {.U16,.NONE} }, - { .VMLAL, {.QPR,.DPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF3900240, 0xFFB00F50, .NEON, .A32, {}, {.U16,.NONE} }, { .VMLAL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF3900800, 0xFFB00F50, .NEON, .A32, {}, {.U16,.NONE} }, + { .VMLAL, {.QPR,.DPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF3900240, 0xFFB00F50, .NEON, .A32, {}, {.U16,.NONE} }, { .VMLSL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF3900A00, 0xFFB00F50, .NEON, .A32, {}, {.U16,.NONE} }, { .VMLSL, {.QPR,.DPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF3900640, 0xFFB00F50, .NEON, .A32, {}, {.U16,.NONE} }, { .VQRDMLAH, {.QPR,.QPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_Q,.VM_D,.NONE}, 0xF3900E40, 0xFFB00F50, .V8, .A32, {}, {.S16,.NONE} }, @@ -676,152 +673,146 @@ DECODE_ENTRIES := [1665]lib.Decode_Entry{ { .VMUL, {.QPR,.QPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_Q,.VM_D,.NONE}, 0xF3A00840, 0xFFB00F50, .NEON, .A32, {}, {.I32,.NONE} }, { .VMLA, {.QPR,.QPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_Q,.VM_D,.NONE}, 0xF3A00040, 0xFFB00F50, .NEON, .A32, {}, {.I32,.NONE} }, { .VMLS, {.QPR,.QPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_Q,.VM_D,.NONE}, 0xF3A00440, 0xFFB00F50, .NEON, .A32, {}, {.I32,.NONE} }, - { .VFMA, {.QPR,.QPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_Q,.VM_D,.NONE}, 0xF3A00040, 0xFFB00F50, .VFPV4, .A32, {}, {.I32,.NONE} }, - { .VFMS, {.QPR,.QPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_Q,.VM_D,.NONE}, 0xF3A00440, 0xFFB00F50, .VFPV4, .A32, {}, {.I32,.NONE} }, { .VMULL, {.QPR,.DPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF3A00A40, 0xFFB00F50, .NEON, .A32, {}, {.U32,.NONE} }, { .VMULL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF3A00C00, 0xFFB00F50, .NEON, .A32, {}, {.U32,.NONE} }, - { .VMLAL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF3A00800, 0xFFB00F50, .NEON, .A32, {}, {.U32,.NONE} }, { .VMLAL, {.QPR,.DPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF3A00240, 0xFFB00F50, .NEON, .A32, {}, {.U32,.NONE} }, + { .VMLAL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF3A00800, 0xFFB00F50, .NEON, .A32, {}, {.U32,.NONE} }, { .VMLSL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF3A00A00, 0xFFB00F50, .NEON, .A32, {}, {.U32,.NONE} }, { .VMLSL, {.QPR,.DPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF3A00640, 0xFFB00F50, .NEON, .A32, {}, {.U32,.NONE} }, { .VQRDMLAH, {.QPR,.QPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_Q,.VM_D,.NONE}, 0xF3A00E40, 0xFFB00F50, .V8, .A32, {}, {.S32,.NONE} }, { .VQRDMLSH, {.QPR,.QPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_Q,.VM_D,.NONE}, 0xF3A00F40, 0xFFB00F50, .V8, .A32, {}, {.S32,.NONE} }, { .MOV, {.GPR,.IMM_MOD,.NONE,.NONE}, {.RD,.A32_IMM_MOD,.NONE,.NONE}, 0x03A00000, 0x0FEF0000, .BASE, .A32, {}, {.NONE,.NONE} }, { .VCVT, {.DPR,.QPR,.NONE,.NONE}, {.VD_D,.VM_Q,.NONE,.NONE}, 0xF3B60600, 0xFFBF0FD0, .BF16, .A32, {}, {.F16,.F32} }, - { .VRECPE, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3BB0500, 0xFFBF0FD0, .NEON, .A32, {}, {.F32,.NONE} }, + { .VRECPE, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3BB0400, 0xFFBF0FD0, .NEON, .A32, {}, {.U32,.NONE} }, { .VRECPE, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3BB0540, 0xFFBF0FD0, .NEON, .A32, {}, {.F32,.NONE} }, { .VRECPE, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3BB0440, 0xFFBF0FD0, .NEON, .A32, {}, {.U32,.NONE} }, - { .VRECPE, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3BB0400, 0xFFBF0FD0, .NEON, .A32, {}, {.U32,.NONE} }, - { .VRSQRTE, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3BB04C0, 0xFFBF0FD0, .NEON, .A32, {}, {.U32,.NONE} }, + { .VRECPE, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3BB0500, 0xFFBF0FD0, .NEON, .A32, {}, {.F32,.NONE} }, { .VRSQRTE, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3BB0480, 0xFFBF0FD0, .NEON, .A32, {}, {.U32,.NONE} }, - { .VRSQRTE, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3BB0580, 0xFFBF0FD0, .NEON, .A32, {}, {.F32,.NONE} }, + { .VRSQRTE, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3BB04C0, 0xFFBF0FD0, .NEON, .A32, {}, {.U32,.NONE} }, { .VRSQRTE, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3BB05C0, 0xFFBF0FD0, .NEON, .A32, {}, {.F32,.NONE} }, - { .VRECPE_F, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3BB0540, 0xFFBF0FD0, .NEON, .A32, {}, {.F32,.NONE} }, - { .VRECPE_F, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3BB0500, 0xFFBF0FD0, .NEON, .A32, {}, {.F32,.NONE} }, - { .VRSQRTE_F, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3BB05C0, 0xFFBF0FD0, .NEON, .A32, {}, {.F32,.NONE} }, - { .VRSQRTE_F, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3BB0580, 0xFFBF0FD0, .NEON, .A32, {}, {.F32,.NONE} }, + { .VRSQRTE, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3BB0580, 0xFFBF0FD0, .NEON, .A32, {}, {.F32,.NONE} }, { .SHA1H, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B902C0, 0xFFBF0FD0, .CRYPTO, .A32, {}, {.NONE,.NONE} }, { .SHA1SU1, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3BA0380, 0xFFBF0FD0, .CRYPTO, .A32, {}, {.NONE,.NONE} }, { .SHA256SU0, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3BA03C0, 0xFFBF0FD0, .CRYPTO, .A32, {}, {.NONE,.NONE} }, - { .VABS, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B50300, 0xFFB30FD0, .NEON, .A32, {}, {.S16,.NONE} }, - { .VABS, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B90340, 0xFFB30FD0, .NEON, .A32, {}, {.S32,.NONE} }, - { .VABS, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B90300, 0xFFB30FD0, .NEON, .A32, {}, {.S32,.NONE} }, - { .VABS, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B90700, 0xFFB30FD0, .NEON, .A32, {}, {.F32,.NONE} }, - { .VABS, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B10340, 0xFFB30FD0, .NEON, .A32, {}, {.S8,.NONE} }, - { .VABS, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B10300, 0xFFB30FD0, .NEON, .A32, {}, {.S8,.NONE} }, { .VABS, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B90740, 0xFFB30FD0, .NEON, .A32, {}, {.F32,.NONE} }, + { .VABS, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B90300, 0xFFB30FD0, .NEON, .A32, {}, {.S32,.NONE} }, + { .VABS, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B90340, 0xFFB30FD0, .NEON, .A32, {}, {.S32,.NONE} }, + { .VABS, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B10340, 0xFFB30FD0, .NEON, .A32, {}, {.S8,.NONE} }, + { .VABS, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B90700, 0xFFB30FD0, .NEON, .A32, {}, {.F32,.NONE} }, + { .VABS, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B10300, 0xFFB30FD0, .NEON, .A32, {}, {.S8,.NONE} }, { .VABS, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B50340, 0xFFB30FD0, .NEON, .A32, {}, {.S16,.NONE} }, - { .VNEG, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B503C0, 0xFFB30FD0, .NEON, .A32, {}, {.S16,.NONE} }, + { .VABS, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B50300, 0xFFB30FD0, .NEON, .A32, {}, {.S16,.NONE} }, { .VNEG, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B50380, 0xFFB30FD0, .NEON, .A32, {}, {.S16,.NONE} }, { .VNEG, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B903C0, 0xFFB30FD0, .NEON, .A32, {}, {.S32,.NONE} }, + { .VNEG, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B503C0, 0xFFB30FD0, .NEON, .A32, {}, {.S16,.NONE} }, + { .VNEG, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B103C0, 0xFFB30FD0, .NEON, .A32, {}, {.S8,.NONE} }, + { .VNEG, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B90380, 0xFFB30FD0, .NEON, .A32, {}, {.S32,.NONE} }, { .VNEG, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B10380, 0xFFB30FD0, .NEON, .A32, {}, {.S8,.NONE} }, { .VNEG, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B90780, 0xFFB30FD0, .NEON, .A32, {}, {.F32,.NONE} }, { .VNEG, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B907C0, 0xFFB30FD0, .NEON, .A32, {}, {.F32,.NONE} }, - { .VNEG, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B103C0, 0xFFB30FD0, .NEON, .A32, {}, {.S8,.NONE} }, - { .VNEG, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B90380, 0xFFB30FD0, .NEON, .A32, {}, {.S32,.NONE} }, { .VMVN, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B00580, 0xFFB30FD0, .NEON, .A32, {}, {.NONE,.NONE} }, { .VMVN, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B005C0, 0xFFB30FD0, .NEON, .A32, {}, {.NONE,.NONE} }, - { .VMOVN, {.DPR,.QPR,.NONE,.NONE}, {.VD_D,.VM_Q,.NONE,.NONE}, 0xF3B20200, 0xFFB30FD0, .NEON, .A32, {}, {.I16,.NONE} }, { .VMOVN, {.DPR,.QPR,.NONE,.NONE}, {.VD_D,.VM_Q,.NONE,.NONE}, 0xF3BA0200, 0xFFB30FD0, .NEON, .A32, {}, {.I64,.NONE} }, + { .VMOVN, {.DPR,.QPR,.NONE,.NONE}, {.VD_D,.VM_Q,.NONE,.NONE}, 0xF3B20200, 0xFFB30FD0, .NEON, .A32, {}, {.I16,.NONE} }, { .VMOVN, {.DPR,.QPR,.NONE,.NONE}, {.VD_D,.VM_Q,.NONE,.NONE}, 0xF3B60200, 0xFFB30FD0, .NEON, .A32, {}, {.I32,.NONE} }, - { .VQMOVN, {.DPR,.QPR,.NONE,.NONE}, {.VD_D,.VM_Q,.NONE,.NONE}, 0xF3B60280, 0xFFB30FD0, .NEON, .A32, {}, {.S32,.NONE} }, { .VQMOVN, {.DPR,.QPR,.NONE,.NONE}, {.VD_D,.VM_Q,.NONE,.NONE}, 0xF3BA02C0, 0xFFB30FD0, .NEON, .A32, {}, {.U64,.NONE} }, { .VQMOVN, {.DPR,.QPR,.NONE,.NONE}, {.VD_D,.VM_Q,.NONE,.NONE}, 0xF3B202C0, 0xFFB30FD0, .NEON, .A32, {}, {.U16,.NONE} }, - { .VQMOVN, {.DPR,.QPR,.NONE,.NONE}, {.VD_D,.VM_Q,.NONE,.NONE}, 0xF3B602C0, 0xFFB30FD0, .NEON, .A32, {}, {.U32,.NONE} }, - { .VQMOVN, {.DPR,.QPR,.NONE,.NONE}, {.VD_D,.VM_Q,.NONE,.NONE}, 0xF3BA0280, 0xFFB30FD0, .NEON, .A32, {}, {.S64,.NONE} }, { .VQMOVN, {.DPR,.QPR,.NONE,.NONE}, {.VD_D,.VM_Q,.NONE,.NONE}, 0xF3B20280, 0xFFB30FD0, .NEON, .A32, {}, {.S16,.NONE} }, - { .VQMOVUN, {.DPR,.QPR,.NONE,.NONE}, {.VD_D,.VM_Q,.NONE,.NONE}, 0xF3BA0240, 0xFFB30FD0, .NEON, .A32, {}, {.S64,.NONE} }, - { .VQMOVUN, {.DPR,.QPR,.NONE,.NONE}, {.VD_D,.VM_Q,.NONE,.NONE}, 0xF3B60240, 0xFFB30FD0, .NEON, .A32, {}, {.S32,.NONE} }, + { .VQMOVN, {.DPR,.QPR,.NONE,.NONE}, {.VD_D,.VM_Q,.NONE,.NONE}, 0xF3BA0280, 0xFFB30FD0, .NEON, .A32, {}, {.S64,.NONE} }, + { .VQMOVN, {.DPR,.QPR,.NONE,.NONE}, {.VD_D,.VM_Q,.NONE,.NONE}, 0xF3B60280, 0xFFB30FD0, .NEON, .A32, {}, {.S32,.NONE} }, + { .VQMOVN, {.DPR,.QPR,.NONE,.NONE}, {.VD_D,.VM_Q,.NONE,.NONE}, 0xF3B602C0, 0xFFB30FD0, .NEON, .A32, {}, {.U32,.NONE} }, { .VQMOVUN, {.DPR,.QPR,.NONE,.NONE}, {.VD_D,.VM_Q,.NONE,.NONE}, 0xF3B20240, 0xFFB30FD0, .NEON, .A32, {}, {.S16,.NONE} }, - { .VCEQ, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B90500, 0xFFB30FD0, .NEON, .A32, {}, {.F32,.NONE} }, + { .VQMOVUN, {.DPR,.QPR,.NONE,.NONE}, {.VD_D,.VM_Q,.NONE,.NONE}, 0xF3B60240, 0xFFB30FD0, .NEON, .A32, {}, {.S32,.NONE} }, + { .VQMOVUN, {.DPR,.QPR,.NONE,.NONE}, {.VD_D,.VM_Q,.NONE,.NONE}, 0xF3BA0240, 0xFFB30FD0, .NEON, .A32, {}, {.S64,.NONE} }, { .VCEQ, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B90540, 0xFFB30FD0, .NEON, .A32, {}, {.F32,.NONE} }, { .VCEQ, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B10140, 0xFFB30FD0, .NEON, .A32, {}, {.I8,.NONE} }, + { .VCEQ, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B90500, 0xFFB30FD0, .NEON, .A32, {}, {.F32,.NONE} }, { .VCEQ, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B10100, 0xFFB30FD0, .NEON, .A32, {}, {.I8,.NONE} }, - { .VCGE, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B100C0, 0xFFB30FD0, .NEON, .A32, {}, {.S8,.NONE} }, - { .VCGE, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B10080, 0xFFB30FD0, .NEON, .A32, {}, {.S8,.NONE} }, { .VCGE, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B90480, 0xFFB30FD0, .NEON, .A32, {}, {.F32,.NONE} }, + { .VCGE, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B100C0, 0xFFB30FD0, .NEON, .A32, {}, {.S8,.NONE} }, { .VCGE, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B904C0, 0xFFB30FD0, .NEON, .A32, {}, {.F32,.NONE} }, + { .VCGE, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B10080, 0xFFB30FD0, .NEON, .A32, {}, {.S8,.NONE} }, { .VCGT, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B90400, 0xFFB30FD0, .NEON, .A32, {}, {.F32,.NONE} }, { .VCGT, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B90440, 0xFFB30FD0, .NEON, .A32, {}, {.F32,.NONE} }, { .VCGT, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B10040, 0xFFB30FD0, .NEON, .A32, {}, {.S8,.NONE} }, { .VCGT, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B10000, 0xFFB30FD0, .NEON, .A32, {}, {.S8,.NONE} }, - { .VCLE, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B90580, 0xFFB30FD0, .NEON, .A32, {}, {.F32,.NONE} }, - { .VCLE, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B101C0, 0xFFB30FD0, .NEON, .A32, {}, {.S8,.NONE} }, { .VCLE, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B905C0, 0xFFB30FD0, .NEON, .A32, {}, {.F32,.NONE} }, + { .VCLE, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B101C0, 0xFFB30FD0, .NEON, .A32, {}, {.S8,.NONE} }, + { .VCLE, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B90580, 0xFFB30FD0, .NEON, .A32, {}, {.F32,.NONE} }, { .VCLE, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B10180, 0xFFB30FD0, .NEON, .A32, {}, {.S8,.NONE} }, { .VCLT, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B10240, 0xFFB30FD0, .NEON, .A32, {}, {.S8,.NONE} }, { .VCLT, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B90600, 0xFFB30FD0, .NEON, .A32, {}, {.F32,.NONE} }, { .VCLT, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B90640, 0xFFB30FD0, .NEON, .A32, {}, {.F32,.NONE} }, { .VCLT, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B10200, 0xFFB30FD0, .NEON, .A32, {}, {.S8,.NONE} }, + { .VPADDL, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B00280, 0xFFB30FD0, .NEON, .A32, {}, {.U8,.NONE} }, + { .VPADDL, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B00240, 0xFFB30FD0, .NEON, .A32, {}, {.S8,.NONE} }, { .VPADDL, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B40200, 0xFFB30FD0, .NEON, .A32, {}, {.S16,.NONE} }, + { .VPADDL, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B80200, 0xFFB30FD0, .NEON, .A32, {}, {.S32,.NONE} }, { .VPADDL, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B002C0, 0xFFB30FD0, .NEON, .A32, {}, {.U8,.NONE} }, { .VPADDL, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B00200, 0xFFB30FD0, .NEON, .A32, {}, {.S8,.NONE} }, - { .VPADDL, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B00280, 0xFFB30FD0, .NEON, .A32, {}, {.U8,.NONE} }, - { .VPADDL, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B80200, 0xFFB30FD0, .NEON, .A32, {}, {.S32,.NONE} }, - { .VPADDL, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B00240, 0xFFB30FD0, .NEON, .A32, {}, {.S8,.NONE} }, + { .VPADAL, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B006C0, 0xFFB30FD0, .NEON, .A32, {}, {.U8,.NONE} }, + { .VPADAL, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B00680, 0xFFB30FD0, .NEON, .A32, {}, {.U8,.NONE} }, { .VPADAL, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B00640, 0xFFB30FD0, .NEON, .A32, {}, {.S8,.NONE} }, { .VPADAL, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B00600, 0xFFB30FD0, .NEON, .A32, {}, {.S8,.NONE} }, - { .VPADAL, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B00680, 0xFFB30FD0, .NEON, .A32, {}, {.U8,.NONE} }, - { .VPADAL, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B006C0, 0xFFB30FD0, .NEON, .A32, {}, {.U8,.NONE} }, - { .VSHLL, {.QPR,.DPR,.NONE,.NONE}, {.VD_Q,.VM_D,.NONE,.NONE}, 0xF3BA0300, 0xFFB30FD0, .NEON, .A32, {}, {.I32,.NONE} }, { .VSHLL, {.QPR,.DPR,.NONE,.NONE}, {.VD_Q,.VM_D,.NONE,.NONE}, 0xF3B60300, 0xFFB30FD0, .NEON, .A32, {}, {.I16,.NONE} }, + { .VSHLL, {.QPR,.DPR,.NONE,.NONE}, {.VD_Q,.VM_D,.NONE,.NONE}, 0xF3BA0300, 0xFFB30FD0, .NEON, .A32, {}, {.I32,.NONE} }, { .VSHLL, {.QPR,.DPR,.NONE,.NONE}, {.VD_Q,.VM_D,.NONE,.NONE}, 0xF3B20300, 0xFFB30FD0, .NEON, .A32, {}, {.I8,.NONE} }, { .VCLS, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B80440, 0xFFB30FD0, .NEON, .A32, {}, {.S32,.NONE} }, - { .VCLS, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B00440, 0xFFB30FD0, .NEON, .A32, {}, {.S8,.NONE} }, - { .VCLS, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B00400, 0xFFB30FD0, .NEON, .A32, {}, {.S8,.NONE} }, - { .VCLS, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B40440, 0xFFB30FD0, .NEON, .A32, {}, {.S16,.NONE} }, - { .VCLS, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B40400, 0xFFB30FD0, .NEON, .A32, {}, {.S16,.NONE} }, { .VCLS, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B80400, 0xFFB30FD0, .NEON, .A32, {}, {.S32,.NONE} }, - { .VCLZ, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B80480, 0xFFB30FD0, .NEON, .A32, {}, {.I32,.NONE} }, - { .VCLZ, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B404C0, 0xFFB30FD0, .NEON, .A32, {}, {.I16,.NONE} }, + { .VCLS, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B00440, 0xFFB30FD0, .NEON, .A32, {}, {.S8,.NONE} }, + { .VCLS, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B40440, 0xFFB30FD0, .NEON, .A32, {}, {.S16,.NONE} }, + { .VCLS, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B00400, 0xFFB30FD0, .NEON, .A32, {}, {.S8,.NONE} }, + { .VCLS, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B40400, 0xFFB30FD0, .NEON, .A32, {}, {.S16,.NONE} }, { .VCLZ, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B40480, 0xFFB30FD0, .NEON, .A32, {}, {.I16,.NONE} }, { .VCLZ, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B00480, 0xFFB30FD0, .NEON, .A32, {}, {.I8,.NONE} }, + { .VCLZ, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B404C0, 0xFFB30FD0, .NEON, .A32, {}, {.I16,.NONE} }, { .VCLZ, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B804C0, 0xFFB30FD0, .NEON, .A32, {}, {.I32,.NONE} }, + { .VCLZ, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B80480, 0xFFB30FD0, .NEON, .A32, {}, {.I32,.NONE} }, { .VCLZ, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B004C0, 0xFFB30FD0, .NEON, .A32, {}, {.I8,.NONE} }, - { .VCNT, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B00540, 0xFFB30FD0, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VCNT, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B00500, 0xFFB30FD0, .NEON, .A32, {}, {.SZ8,.NONE} }, - { .VREV16, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B00100, 0xFFB30FD0, .NEON, .A32, {}, {.SZ8,.NONE} }, + { .VCNT, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B00540, 0xFFB30FD0, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VREV16, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B00140, 0xFFB30FD0, .NEON, .A32, {}, {.SZ8,.NONE} }, - { .VREV32, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B00080, 0xFFB30FD0, .NEON, .A32, {}, {.SZ8,.NONE} }, + { .VREV16, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B00100, 0xFFB30FD0, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VREV32, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B400C0, 0xFFB30FD0, .NEON, .A32, {}, {.SZ16,.NONE} }, - { .VREV32, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B40080, 0xFFB30FD0, .NEON, .A32, {}, {.SZ16,.NONE} }, + { .VREV32, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B00080, 0xFFB30FD0, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VREV32, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B000C0, 0xFFB30FD0, .NEON, .A32, {}, {.SZ8,.NONE} }, + { .VREV32, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B40080, 0xFFB30FD0, .NEON, .A32, {}, {.SZ16,.NONE} }, { .VREV64, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B80000, 0xFFB30FD0, .NEON, .A32, {}, {.SZ32,.NONE} }, - { .VREV64, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B80040, 0xFFB30FD0, .NEON, .A32, {}, {.SZ32,.NONE} }, - { .VREV64, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B00000, 0xFFB30FD0, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VREV64, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B40000, 0xFFB30FD0, .NEON, .A32, {}, {.SZ16,.NONE} }, { .VREV64, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B00040, 0xFFB30FD0, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VREV64, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B40040, 0xFFB30FD0, .NEON, .A32, {}, {.SZ16,.NONE} }, + { .VREV64, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B80040, 0xFFB30FD0, .NEON, .A32, {}, {.SZ32,.NONE} }, + { .VREV64, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B00000, 0xFFB30FD0, .NEON, .A32, {}, {.SZ8,.NONE} }, + { .VTRN, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B20080, 0xFFB30FD0, .NEON, .A32, {}, {.SZ8,.NONE} }, + { .VTRN, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B200C0, 0xFFB30FD0, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VTRN, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B60080, 0xFFB30FD0, .NEON, .A32, {}, {.SZ16,.NONE} }, { .VTRN, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3BA00C0, 0xFFB30FD0, .NEON, .A32, {}, {.SZ32,.NONE} }, - { .VTRN, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B200C0, 0xFFB30FD0, .NEON, .A32, {}, {.SZ8,.NONE} }, - { .VTRN, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3BA0080, 0xFFB30FD0, .NEON, .A32, {}, {.SZ32,.NONE} }, { .VTRN, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B600C0, 0xFFB30FD0, .NEON, .A32, {}, {.SZ16,.NONE} }, - { .VTRN, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B20080, 0xFFB30FD0, .NEON, .A32, {}, {.SZ8,.NONE} }, - { .VUZP, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B20140, 0xFFB30FD0, .NEON, .A32, {}, {.SZ8,.NONE} }, - { .VUZP, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B60100, 0xFFB30FD0, .NEON, .A32, {}, {.SZ16,.NONE} }, + { .VTRN, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3BA0080, 0xFFB30FD0, .NEON, .A32, {}, {.SZ32,.NONE} }, { .VUZP, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B60140, 0xFFB30FD0, .NEON, .A32, {}, {.SZ16,.NONE} }, - { .VUZP, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B20100, 0xFFB30FD0, .NEON, .A32, {}, {.SZ8,.NONE} }, + { .VUZP, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B20140, 0xFFB30FD0, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VUZP, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3BA0140, 0xFFB30FD0, .NEON, .A32, {}, {.SZ32,.NONE} }, - { .VZIP, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3BA01C0, 0xFFB30FD0, .NEON, .A32, {}, {.SZ32,.NONE} }, - { .VZIP, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B20180, 0xFFB30FD0, .NEON, .A32, {}, {.SZ8,.NONE} }, - { .VZIP, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B601C0, 0xFFB30FD0, .NEON, .A32, {}, {.SZ16,.NONE} }, + { .VUZP, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B60100, 0xFFB30FD0, .NEON, .A32, {}, {.SZ16,.NONE} }, + { .VUZP, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B20100, 0xFFB30FD0, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VZIP, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B201C0, 0xFFB30FD0, .NEON, .A32, {}, {.SZ8,.NONE} }, + { .VZIP, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3BA01C0, 0xFFB30FD0, .NEON, .A32, {}, {.SZ32,.NONE} }, { .VZIP, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B60180, 0xFFB30FD0, .NEON, .A32, {}, {.SZ16,.NONE} }, + { .VZIP, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B601C0, 0xFFB30FD0, .NEON, .A32, {}, {.SZ16,.NONE} }, + { .VZIP, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B20180, 0xFFB30FD0, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VSWP, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B20000, 0xFFB30FD0, .NEON, .A32, {}, {.NONE,.NONE} }, { .VSWP, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B20040, 0xFFB30FD0, .NEON, .A32, {}, {.NONE,.NONE} }, { .AESE, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B00300, 0xFFB30FD0, .CRYPTO, .A32, {}, {.NONE,.NONE} }, { .AESD, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B00340, 0xFFB30FD0, .CRYPTO, .A32, {}, {.NONE,.NONE} }, { .AESMC, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B00380, 0xFFB30FD0, .CRYPTO, .A32, {}, {.NONE,.NONE} }, { .AESIMC, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B003C0, 0xFFB30FD0, .CRYPTO, .A32, {}, {.NONE,.NONE} }, + { .VTBL, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF3B00800, 0xFFB00F70, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VTBL, {.DPR,.DPR_LIST,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF3B00900, 0xFFB00F70, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VTBL, {.DPR,.DPR_LIST,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF3B00B00, 0xFFB00F70, .NEON, .A32, {}, {.SZ8,.NONE} }, - { .VTBL, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF3B00800, 0xFFB00F70, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VTBL, {.DPR,.DPR_LIST,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF3B00A00, 0xFFB00F70, .NEON, .A32, {}, {.SZ8,.NONE} }, - { .VTBX, {.DPR,.DPR_LIST,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF3B00A40, 0xFFB00F70, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VTBX, {.DPR,.DPR_LIST,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF3B00B40, 0xFFB00F70, .NEON, .A32, {}, {.SZ8,.NONE} }, - { .VTBX, {.DPR,.DPR_LIST,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF3B00940, 0xFFB00F70, .NEON, .A32, {}, {.SZ8,.NONE} }, + { .VTBX, {.DPR,.DPR_LIST,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF3B00A40, 0xFFB00F70, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VTBX, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF3B00840, 0xFFB00F70, .NEON, .A32, {}, {.SZ8,.NONE} }, + { .VTBX, {.DPR,.DPR_LIST,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF3B00940, 0xFFB00F70, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VDUP, {.DPR,.DPR_ELEM,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B00C00, 0xFFB00FD0, .NEON, .A32, {}, {.NONE,.NONE} }, { .VDUP, {.QPR,.DPR_ELEM,.NONE,.NONE}, {.VD_Q,.VM_D,.NONE,.NONE}, 0xF3B00C40, 0xFFB00FD0, .NEON, .A32, {}, {.NONE,.NONE} }, { .MOV, {.GPR,.IMM_MOD,.NONE,.NONE}, {.RD,.A32_IMM_MOD,.NONE,.NONE}, 0x03B00000, 0x0FFF0000, .BASE, .A32, {sets_flags=true}, {.NONE,.NONE} }, @@ -829,26 +820,26 @@ DECODE_ENTRIES := [1665]lib.Decode_Entry{ { .BIC, {.GPR,.GPR,.IMM_MOD,.NONE}, {.RD,.RN_A32,.A32_IMM_MOD,.NONE}, 0x03D00000, 0x0FF00000, .BASE, .A32, {sets_flags=true}, {.NONE,.NONE} }, { .MVN, {.GPR,.IMM_MOD,.NONE,.NONE}, {.RD,.A32_IMM_MOD,.NONE,.NONE}, 0x03E00000, 0x0FEF0000, .BASE, .A32, {}, {.NONE,.NONE} }, { .MVN, {.GPR,.IMM_MOD,.NONE,.NONE}, {.RD,.A32_IMM_MOD,.NONE,.NONE}, 0x03F00000, 0x0FFF0000, .BASE, .A32, {sets_flags=true}, {.NONE,.NONE} }, - { .VST1, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VFP_D_LIST,.RN_A32,.NONE,.NONE}, 0xF4000700, 0xFFF00F00, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VST1, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VFP_D_LIST,.RN_A32,.NONE,.NONE}, 0xF4000200, 0xFFF00F00, .NEON, .A32, {}, {.SZ8,.NONE} }, - { .VST1, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VFP_D_LIST,.RN_A32,.NONE,.NONE}, 0xF4000A00, 0xFFF00F00, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VST1, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VFP_D_LIST,.RN_A32,.NONE,.NONE}, 0xF4000600, 0xFFF00F00, .NEON, .A32, {}, {.SZ8,.NONE} }, + { .VST1, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VFP_D_LIST,.RN_A32,.NONE,.NONE}, 0xF4000700, 0xFFF00F00, .NEON, .A32, {}, {.SZ8,.NONE} }, + { .VST1, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VFP_D_LIST,.RN_A32,.NONE,.NONE}, 0xF4000A00, 0xFFF00F00, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VST2, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VFP_D_LIST,.RN_A32,.NONE,.NONE}, 0xF4000800, 0xFFF00F00, .NEON, .A32, {}, {.SZ8,.NONE} }, - { .VST2, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VFP_D_LIST,.RN_A32,.NONE,.NONE}, 0xF4000900, 0xFFF00F00, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VST2, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VFP_D_LIST,.RN_A32,.NONE,.NONE}, 0xF4000300, 0xFFF00F00, .NEON, .A32, {}, {.SZ8,.NONE} }, + { .VST2, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VFP_D_LIST,.RN_A32,.NONE,.NONE}, 0xF4000900, 0xFFF00F00, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VST3, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VFP_D_LIST,.RN_A32,.NONE,.NONE}, 0xF4000500, 0xFFF00F00, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VST3, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VFP_D_LIST,.RN_A32,.NONE,.NONE}, 0xF4000400, 0xFFF00F00, .NEON, .A32, {}, {.SZ8,.NONE} }, - { .VST4, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VFP_D_LIST,.RN_A32,.NONE,.NONE}, 0xF4000100, 0xFFF00F00, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VST4, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VFP_D_LIST,.RN_A32,.NONE,.NONE}, 0xF4000000, 0xFFF00F00, .NEON, .A32, {}, {.SZ8,.NONE} }, + { .VST4, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VFP_D_LIST,.RN_A32,.NONE,.NONE}, 0xF4000100, 0xFFF00F00, .NEON, .A32, {}, {.SZ8,.NONE} }, { .STR, {.GPR,.MEM,.NONE,.NONE}, {.RT_A32,.MEM_POST_INDEX,.NONE,.NONE}, 0x04000000, 0x0F700000, .BASE, .A32, {}, {.NONE,.NONE} }, { .LDR, {.GPR,.MEM,.NONE,.NONE}, {.RT_A32,.MEM_POST_INDEX,.NONE,.NONE}, 0x04100000, 0x0F700000, .BASE, .A32, {}, {.NONE,.NONE} }, - { .VLD1, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VFP_D_LIST,.RN_A32,.NONE,.NONE}, 0xF4200600, 0xFFF00F00, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VLD1, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VFP_D_LIST,.RN_A32,.NONE,.NONE}, 0xF4200200, 0xFFF00F00, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VLD1, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VFP_D_LIST,.RN_A32,.NONE,.NONE}, 0xF4200700, 0xFFF00F00, .NEON, .A32, {}, {.SZ8,.NONE} }, + { .VLD1, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VFP_D_LIST,.RN_A32,.NONE,.NONE}, 0xF4200600, 0xFFF00F00, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VLD1, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VFP_D_LIST,.RN_A32,.NONE,.NONE}, 0xF4200A00, 0xFFF00F00, .NEON, .A32, {}, {.SZ8,.NONE} }, - { .VLD2, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VFP_D_LIST,.RN_A32,.NONE,.NONE}, 0xF4200300, 0xFFF00F00, .NEON, .A32, {}, {.SZ8,.NONE} }, - { .VLD2, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VFP_D_LIST,.RN_A32,.NONE,.NONE}, 0xF4200900, 0xFFF00F00, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VLD2, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VFP_D_LIST,.RN_A32,.NONE,.NONE}, 0xF4200800, 0xFFF00F00, .NEON, .A32, {}, {.SZ8,.NONE} }, + { .VLD2, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VFP_D_LIST,.RN_A32,.NONE,.NONE}, 0xF4200900, 0xFFF00F00, .NEON, .A32, {}, {.SZ8,.NONE} }, + { .VLD2, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VFP_D_LIST,.RN_A32,.NONE,.NONE}, 0xF4200300, 0xFFF00F00, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VLD3, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VFP_D_LIST,.RN_A32,.NONE,.NONE}, 0xF4200400, 0xFFF00F00, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VLD3, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VFP_D_LIST,.RN_A32,.NONE,.NONE}, 0xF4200500, 0xFFF00F00, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VLD4, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VFP_D_LIST,.RN_A32,.NONE,.NONE}, 0xF4200000, 0xFFF00F00, .NEON, .A32, {}, {.SZ8,.NONE} }, @@ -860,21 +851,21 @@ DECODE_ENTRIES := [1665]lib.Decode_Entry{ { .LDRB, {.GPR,.MEM,.NONE,.NONE}, {.RT_A32,.MEM_POST_INDEX,.NONE,.NONE}, 0x04500000, 0x0F700000, .BASE, .A32, {}, {.NONE,.NONE} }, { .STRBT, {.GPR,.MEM,.NONE,.NONE}, {.RT_A32,.MEM_POST_INDEX,.NONE,.NONE}, 0x04600000, 0x0F700000, .BASE, .A32, {}, {.NONE,.NONE} }, { .LDRBT, {.GPR,.MEM,.NONE,.NONE}, {.RT_A32,.MEM_POST_INDEX,.NONE,.NONE}, 0x04700000, 0x0F700000, .BASE, .A32, {}, {.NONE,.NONE} }, - { .VST1, {.DPR_ELEM,.MEM,.NONE,.NONE}, {.VD_D,.RN_A32,.NONE,.NONE}, 0xF4800800, 0xFFB00F00, .NEON, .A32, {}, {.SZ32,.NONE} }, - { .VST1, {.DPR_ELEM,.MEM,.NONE,.NONE}, {.VD_D,.RN_A32,.NONE,.NONE}, 0xF4800000, 0xFFB00F00, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VST1, {.DPR_ELEM,.MEM,.NONE,.NONE}, {.VD_D,.RN_A32,.NONE,.NONE}, 0xF4800400, 0xFFB00F00, .NEON, .A32, {}, {.SZ16,.NONE} }, + { .VST1, {.DPR_ELEM,.MEM,.NONE,.NONE}, {.VD_D,.RN_A32,.NONE,.NONE}, 0xF4800000, 0xFFB00F00, .NEON, .A32, {}, {.SZ8,.NONE} }, + { .VST1, {.DPR_ELEM,.MEM,.NONE,.NONE}, {.VD_D,.RN_A32,.NONE,.NONE}, 0xF4800800, 0xFFB00F00, .NEON, .A32, {}, {.SZ32,.NONE} }, { .VST2_LANE, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VD_D,.RN_A32,.NONE,.NONE}, 0xF4800100, 0xFFB00D00, .NEON, .A32, {}, {.SZ8,.NONE} }, - { .VST2_LANE, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VD_D,.RN_A32,.NONE,.NONE}, 0xF4800500, 0xFFB00D00, .NEON, .A32, {}, {.SZ16,.NONE} }, { .VST2_LANE, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VD_D,.RN_A32,.NONE,.NONE}, 0xF4800900, 0xFFB00D00, .NEON, .A32, {}, {.SZ32,.NONE} }, - { .VST3_LANE, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VD_D,.RN_A32,.NONE,.NONE}, 0xF4800600, 0xFFB00D00, .NEON, .A32, {}, {.SZ16,.NONE} }, + { .VST2_LANE, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VD_D,.RN_A32,.NONE,.NONE}, 0xF4800500, 0xFFB00D00, .NEON, .A32, {}, {.SZ16,.NONE} }, { .VST3_LANE, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VD_D,.RN_A32,.NONE,.NONE}, 0xF4800200, 0xFFB00D00, .NEON, .A32, {}, {.SZ8,.NONE} }, + { .VST3_LANE, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VD_D,.RN_A32,.NONE,.NONE}, 0xF4800600, 0xFFB00D00, .NEON, .A32, {}, {.SZ16,.NONE} }, { .VST3_LANE, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VD_D,.RN_A32,.NONE,.NONE}, 0xF4800A00, 0xFFB00D00, .NEON, .A32, {}, {.SZ32,.NONE} }, - { .VST4_LANE, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VD_D,.RN_A32,.NONE,.NONE}, 0xF4800300, 0xFFB00D00, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VST4_LANE, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VD_D,.RN_A32,.NONE,.NONE}, 0xF4800B00, 0xFFB00D00, .NEON, .A32, {}, {.SZ32,.NONE} }, { .VST4_LANE, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VD_D,.RN_A32,.NONE,.NONE}, 0xF4800700, 0xFFB00D00, .NEON, .A32, {}, {.SZ16,.NONE} }, + { .VST4_LANE, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VD_D,.RN_A32,.NONE,.NONE}, 0xF4800300, 0xFFB00D00, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VST1_LANE, {.DPR_ELEM,.MEM,.NONE,.NONE}, {.VD_D,.RN_A32,.NONE,.NONE}, 0xF4800400, 0xFFB00C00, .NEON, .A32, {}, {.SZ16,.NONE} }, - { .VST1_LANE, {.DPR_ELEM,.MEM,.NONE,.NONE}, {.VD_D,.RN_A32,.NONE,.NONE}, 0xF4800800, 0xFFB00C00, .NEON, .A32, {}, {.SZ32,.NONE} }, { .VST1_LANE, {.DPR_ELEM,.MEM,.NONE,.NONE}, {.VD_D,.RN_A32,.NONE,.NONE}, 0xF4800000, 0xFFB00C00, .NEON, .A32, {}, {.SZ8,.NONE} }, + { .VST1_LANE, {.DPR_ELEM,.MEM,.NONE,.NONE}, {.VD_D,.RN_A32,.NONE,.NONE}, 0xF4800800, 0xFFB00C00, .NEON, .A32, {}, {.SZ32,.NONE} }, { .VLD2R, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VD_D,.RN_A32,.NONE,.NONE}, 0xF4A00D0F, 0xFFB00F0F, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VLD3R, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VD_D,.RN_A32,.NONE,.NONE}, 0xF4A00E0F, 0xFFB00F0F, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VLD4R, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VD_D,.RN_A32,.NONE,.NONE}, 0xF4A00F0F, 0xFFB00F0F, .NEON, .A32, {}, {.SZ8,.NONE} }, @@ -882,18 +873,18 @@ DECODE_ENTRIES := [1665]lib.Decode_Entry{ { .VLD1, {.DPR_ELEM,.MEM,.NONE,.NONE}, {.VD_D,.RN_A32,.NONE,.NONE}, 0xF4A00800, 0xFFB00F00, .NEON, .A32, {}, {.SZ32,.NONE} }, { .VLD1, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VFP_D_LIST,.RN_A32,.NONE,.NONE}, 0xF4A00C00, 0xFFB00F00, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VLD1, {.DPR_ELEM,.MEM,.NONE,.NONE}, {.VD_D,.RN_A32,.NONE,.NONE}, 0xF4A00000, 0xFFB00F00, .NEON, .A32, {}, {.SZ8,.NONE} }, + { .VLD2_LANE, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VD_D,.RN_A32,.NONE,.NONE}, 0xF4A00500, 0xFFB00D00, .NEON, .A32, {}, {.SZ16,.NONE} }, { .VLD2_LANE, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VD_D,.RN_A32,.NONE,.NONE}, 0xF4A00100, 0xFFB00D00, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VLD2_LANE, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VD_D,.RN_A32,.NONE,.NONE}, 0xF4A00900, 0xFFB00D00, .NEON, .A32, {}, {.SZ32,.NONE} }, - { .VLD2_LANE, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VD_D,.RN_A32,.NONE,.NONE}, 0xF4A00500, 0xFFB00D00, .NEON, .A32, {}, {.SZ16,.NONE} }, { .VLD3_LANE, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VD_D,.RN_A32,.NONE,.NONE}, 0xF4A00A00, 0xFFB00D00, .NEON, .A32, {}, {.SZ32,.NONE} }, { .VLD3_LANE, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VD_D,.RN_A32,.NONE,.NONE}, 0xF4A00600, 0xFFB00D00, .NEON, .A32, {}, {.SZ16,.NONE} }, { .VLD3_LANE, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VD_D,.RN_A32,.NONE,.NONE}, 0xF4A00200, 0xFFB00D00, .NEON, .A32, {}, {.SZ8,.NONE} }, + { .VLD4_LANE, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VD_D,.RN_A32,.NONE,.NONE}, 0xF4A00300, 0xFFB00D00, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VLD4_LANE, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VD_D,.RN_A32,.NONE,.NONE}, 0xF4A00700, 0xFFB00D00, .NEON, .A32, {}, {.SZ16,.NONE} }, { .VLD4_LANE, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VD_D,.RN_A32,.NONE,.NONE}, 0xF4A00B00, 0xFFB00D00, .NEON, .A32, {}, {.SZ32,.NONE} }, - { .VLD4_LANE, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VD_D,.RN_A32,.NONE,.NONE}, 0xF4A00300, 0xFFB00D00, .NEON, .A32, {}, {.SZ8,.NONE} }, - { .VLD1_LANE, {.DPR_ELEM,.MEM,.NONE,.NONE}, {.VD_D,.RN_A32,.NONE,.NONE}, 0xF4A00400, 0xFFB00C00, .NEON, .A32, {}, {.SZ16,.NONE} }, { .VLD1_LANE, {.DPR_ELEM,.MEM,.NONE,.NONE}, {.VD_D,.RN_A32,.NONE,.NONE}, 0xF4A00000, 0xFFB00C00, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VLD1_LANE, {.DPR_ELEM,.MEM,.NONE,.NONE}, {.VD_D,.RN_A32,.NONE,.NONE}, 0xF4A00800, 0xFFB00C00, .NEON, .A32, {}, {.SZ32,.NONE} }, + { .VLD1_LANE, {.DPR_ELEM,.MEM,.NONE,.NONE}, {.VD_D,.RN_A32,.NONE,.NONE}, 0xF4A00400, 0xFFB00C00, .NEON, .A32, {}, {.SZ16,.NONE} }, { .STR, {.GPR,.MEM,.NONE,.NONE}, {.RT_A32,.MEM_IMM12_OFFSET,.NONE,.NONE}, 0x05000000, 0x0F700000, .BASE, .A32, {}, {.NONE,.NONE} }, { .LDR, {.GPR,.MEM,.NONE,.NONE}, {.RT_A32,.MEM_IMM12_OFFSET,.NONE,.NONE}, 0x05100000, 0x0F700000, .BASE, .A32, {}, {.NONE,.NONE} }, { .STR, {.GPR,.MEM,.NONE,.NONE}, {.RT_A32,.MEM_PRE_INDEX,.NONE,.NONE}, 0x05200000, 0x0F700000, .BASE, .A32, {}, {.NONE,.NONE} }, @@ -1034,20 +1025,20 @@ DECODE_ENTRIES := [1665]lib.Decode_Entry{ { .VCMLA, {.QPR,.QPR,.QPR,.IMM}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xFC200840, 0xFC800F50, .FCMA, .A32, {}, {.F16,.NONE} }, { .VCMLA, {.DPR,.DPR,.DPR,.IMM}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xFC200800, 0xFC800F10, .FCMA, .A32, {}, {.F16,.NONE} }, { .VFMA, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xFC300850, 0xFFB00F50, .BF16, .A32, {}, {.BF16,.NONE} }, - { .VMOV, {.DPR,.GPR,.GPR,.NONE}, {.VM_D,.RT_A32,.RT2_A32,.NONE}, 0x0C400B10, 0x0FF00FD0, .VFPV2, .A32, {}, {.NONE,.NONE} }, { .VMOV, {.SPR,.SPR,.GPR,.GPR}, {.VM_S,.NONE,.RT_A32,.RT2_A32}, 0x0C400A10, 0x0FF00FD0, .VFPV2, .A32, {}, {.NONE,.NONE} }, + { .VMOV, {.DPR,.GPR,.GPR,.NONE}, {.VM_D,.RT_A32,.RT2_A32,.NONE}, 0x0C400B10, 0x0FF00FD0, .VFPV2, .A32, {}, {.NONE,.NONE} }, { .MCRR2, {.COPROC_NUM,.IMM_COPROC_OP,.GPR,.GPR}, {.COPROC_NUM_FIELD,.COPROC_OPC_MCRR,.RT_A32,.RT2_A32}, 0xFC400000, 0xFFF00000, .V6, .A32, {}, {.NONE,.NONE} }, { .MCRR, {.COPROC_NUM,.IMM_COPROC_OP,.GPR,.GPR}, {.COPROC_NUM_FIELD,.COPROC_OPC_MCRR,.RT_A32,.RT2_A32}, 0x0C400000, 0x0FF00000, .V6, .A32, {}, {.NONE,.NONE} }, - { .VMOV, {.GPR,.GPR,.DPR,.NONE}, {.RT_A32,.RT2_A32,.VM_D,.NONE}, 0x0C500B10, 0x0FF00FD0, .VFPV2, .A32, {}, {.NONE,.NONE} }, { .VMOV, {.GPR,.GPR,.SPR,.SPR}, {.RT_A32,.RT2_A32,.VM_S,.NONE}, 0x0C500A10, 0x0FF00FD0, .VFPV2, .A32, {}, {.NONE,.NONE} }, + { .VMOV, {.GPR,.GPR,.DPR,.NONE}, {.RT_A32,.RT2_A32,.VM_D,.NONE}, 0x0C500B10, 0x0FF00FD0, .VFPV2, .A32, {}, {.NONE,.NONE} }, { .MRRC2, {.COPROC_NUM,.IMM_COPROC_OP,.GPR,.GPR}, {.COPROC_NUM_FIELD,.COPROC_OPC_MCRR,.RT_A32,.RT2_A32}, 0xFC500000, 0xFFF00000, .V6, .A32, {}, {.NONE,.NONE} }, { .MRRC, {.COPROC_NUM,.IMM_COPROC_OP,.GPR,.GPR}, {.COPROC_NUM_FIELD,.COPROC_OPC_MCRR,.RT_A32,.RT2_A32}, 0x0C500000, 0x0FF00000, .V6, .A32, {}, {.NONE,.NONE} }, { .VCADD, {.QPR,.QPR,.QPR,.IMM}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xFC800840, 0xFE800F50, .FCMA, .A32, {}, {.F16,.NONE} }, { .VCADD, {.DPR,.DPR,.DPR,.IMM}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xFC800800, 0xFE800F10, .FCMA, .A32, {}, {.F16,.NONE} }, { .VSTM, {.GPR,.DPR_LIST,.NONE,.NONE}, {.RN_A32,.VFP_D_LIST,.NONE,.NONE}, 0x0C800B00, 0x0F900F00, .VFPV2, .A32, {}, {.NONE,.NONE} }, { .VSTM, {.GPR,.SPR_LIST,.NONE,.NONE}, {.RN_A32,.VFP_S_LIST,.NONE,.NONE}, 0x0C800A00, 0x0F900F00, .VFPV2, .A32, {}, {.NONE,.NONE} }, - { .VLDM, {.GPR,.DPR_LIST,.NONE,.NONE}, {.RN_A32,.VFP_D_LIST,.NONE,.NONE}, 0x0C900B00, 0x0F900F00, .VFPV2, .A32, {}, {.NONE,.NONE} }, { .VLDM, {.GPR,.SPR_LIST,.NONE,.NONE}, {.RN_A32,.VFP_S_LIST,.NONE,.NONE}, 0x0C900A00, 0x0F900F00, .VFPV2, .A32, {}, {.NONE,.NONE} }, + { .VLDM, {.GPR,.DPR_LIST,.NONE,.NONE}, {.RN_A32,.VFP_D_LIST,.NONE,.NONE}, 0x0C900B00, 0x0F900F00, .VFPV2, .A32, {}, {.NONE,.NONE} }, { .VFMSL, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xFCA00850, 0xFFB00F50, .FHM, .A32, {}, {.NONE,.NONE} }, { .VUSMMLA, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xFCA00C40, 0xFFB00F50, .V8, .A32, {}, {.S8,.NONE} }, { .VSUDOT, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xFCA00D50, 0xFFB00F50, .V8, .A32, {}, {.NONE,.NONE} }, @@ -1056,12 +1047,12 @@ DECODE_ENTRIES := [1665]lib.Decode_Entry{ { .VUSDOT, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xFCA00D00, 0xFFB00F10, .V8, .A32, {}, {.S8,.NONE} }, { .VPOP, {.DPR_LIST,.NONE,.NONE,.NONE}, {.VFP_D_LIST,.NONE,.NONE,.NONE}, 0x0CBD0B00, 0x0FFF0F00, .VFPV2, .A32, {}, {.NONE,.NONE} }, { .VPOP, {.SPR_LIST,.NONE,.NONE,.NONE}, {.VFP_S_LIST,.NONE,.NONE,.NONE}, 0x0CBD0A00, 0x0FFF0F00, .VFPV2, .A32, {}, {.NONE,.NONE} }, - { .VSTR, {.DPR,.MEM,.NONE,.NONE}, {.VD_D,.MEM_IMM8_OFFSET,.NONE,.NONE}, 0x0D000B00, 0x0F300F00, .VFPV2, .A32, {}, {.NONE,.NONE} }, { .VSTR, {.SPR,.MEM,.NONE,.NONE}, {.VD_S,.MEM_IMM8_OFFSET,.NONE,.NONE}, 0x0D000A00, 0x0F300F00, .VFPV2, .A32, {}, {.NONE,.NONE} }, - { .VLDR, {.SPR,.MEM,.NONE,.NONE}, {.VD_S,.MEM_IMM8_OFFSET,.NONE,.NONE}, 0x0D100A00, 0x0F300F00, .VFPV2, .A32, {}, {.NONE,.NONE} }, + { .VSTR, {.DPR,.MEM,.NONE,.NONE}, {.VD_D,.MEM_IMM8_OFFSET,.NONE,.NONE}, 0x0D000B00, 0x0F300F00, .VFPV2, .A32, {}, {.NONE,.NONE} }, { .VLDR, {.DPR,.MEM,.NONE,.NONE}, {.VD_D,.MEM_IMM8_OFFSET,.NONE,.NONE}, 0x0D100B00, 0x0F300F00, .VFPV2, .A32, {}, {.NONE,.NONE} }, - { .VPUSH, {.SPR_LIST,.NONE,.NONE,.NONE}, {.VFP_S_LIST,.NONE,.NONE,.NONE}, 0x0D2D0A00, 0x0FFF0F00, .VFPV2, .A32, {}, {.NONE,.NONE} }, + { .VLDR, {.SPR,.MEM,.NONE,.NONE}, {.VD_S,.MEM_IMM8_OFFSET,.NONE,.NONE}, 0x0D100A00, 0x0F300F00, .VFPV2, .A32, {}, {.NONE,.NONE} }, { .VPUSH, {.DPR_LIST,.NONE,.NONE,.NONE}, {.VFP_D_LIST,.NONE,.NONE,.NONE}, 0x0D2D0B00, 0x0FFF0F00, .VFPV2, .A32, {}, {.NONE,.NONE} }, + { .VPUSH, {.SPR_LIST,.NONE,.NONE,.NONE}, {.VFP_S_LIST,.NONE,.NONE,.NONE}, 0x0D2D0A00, 0x0FFF0F00, .VFPV2, .A32, {}, {.NONE,.NONE} }, { .VMOV, {.SPR,.GPR,.NONE,.NONE}, {.VN_S,.RT_A32,.NONE,.NONE}, 0x0E000A10, 0x0FF00F7F, .VFPV2, .A32, {}, {.NONE,.NONE} }, { .VMOV_LANE, {.DPR_ELEM,.GPR,.NONE,.NONE}, {.VMOV_LANE_32,.RT_A32,.NONE,.NONE}, 0x0E000B10, 0x0FD00F7F, .VFPV2, .A32, {}, {.SZ32,.NONE} }, { .VMOV_LANE, {.DPR_ELEM,.GPR,.NONE,.NONE}, {.VMOV_LANE_16,.RT_A32,.NONE,.NONE}, 0x0E000B30, 0x0FD00F3F, .VFPV2, .A32, {}, {.SZ16,.NONE} }, @@ -1106,8 +1097,8 @@ DECODE_ENTRIES := [1665]lib.Decode_Entry{ { .VMOV_LANE, {.DPR_ELEM,.GPR,.NONE,.NONE}, {.VMOV_LANE_8,.RT_A32,.NONE,.NONE}, 0x0E400B10, 0x0FD00F1F, .VFPV2, .A32, {}, {.SZ8,.NONE} }, { .VSUDOT, {.QPR,.QPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_Q,.VM_D,.NONE}, 0xFE800D50, 0xFFB00F50, .V8, .A32, {}, {.U8,.NONE} }, { .VUSDOT, {.QPR,.QPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_Q,.VM_D,.NONE}, 0xFE800D40, 0xFFB00F50, .V8, .A32, {}, {.S8,.NONE} }, - { .VMAXNM, {.SPR,.SPR,.SPR,.NONE}, {.VD_S,.VN_S,.VM_S,.NONE}, 0xFE800A00, 0xFFB00B50, .V8, .A32, {}, {.F32,.NONE} }, { .VMAXNM, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xFE800B00, 0xFFB00B50, .V8, .A32, {}, {.F64,.NONE} }, + { .VMAXNM, {.SPR,.SPR,.SPR,.NONE}, {.VD_S,.VN_S,.VM_S,.NONE}, 0xFE800A00, 0xFFB00B50, .V8, .A32, {}, {.F32,.NONE} }, { .VMINNM, {.SPR,.SPR,.SPR,.NONE}, {.VD_S,.VN_S,.VM_S,.NONE}, 0xFE800A40, 0xFFB00B50, .V8, .A32, {}, {.F32,.NONE} }, { .VMINNM, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xFE800B40, 0xFFB00B50, .V8, .A32, {}, {.F64,.NONE} }, { .VUSDOT, {.DPR,.DPR,.DPR_ELEM,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xFE800D00, 0xFFB00F10, .V8, .A32, {}, {.S8,.NONE} }, @@ -1126,78 +1117,78 @@ DECODE_ENTRIES := [1665]lib.Decode_Entry{ { .VFMA, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0x0EA00B00, 0x0FB00B50, .VFPV4, .A32, {}, {.F64,.NONE} }, { .VFMS, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0x0EA00B40, 0x0FB00B50, .VFPV4, .A32, {}, {.F64,.NONE} }, { .VFMS, {.SPR,.SPR,.SPR,.NONE}, {.VD_S,.VN_S,.VM_S,.NONE}, 0x0EA00A40, 0x0FB00B50, .VFPV4, .A32, {}, {.F32,.NONE} }, + { .VCMP, {.SPR,.NONE,.NONE,.NONE}, {.VD_S,.NONE,.NONE,.NONE}, 0x0EB50940, 0x0FBF0FFF, .HALF_FP, .A32, {}, {.F16,.NONE} }, { .VCMP, {.SPR,.NONE,.NONE,.NONE}, {.VD_S,.NONE,.NONE,.NONE}, 0x0EB50A40, 0x0FBF0FFF, .VFPV2, .A32, {}, {.F32,.NONE} }, { .VCMP, {.DPR,.NONE,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0x0EB50B40, 0x0FBF0FFF, .VFPV2, .A32, {}, {.F64,.NONE} }, - { .VCMP, {.SPR,.NONE,.NONE,.NONE}, {.VD_S,.NONE,.NONE,.NONE}, 0x0EB50940, 0x0FBF0FFF, .HALF_FP, .A32, {}, {.F16,.NONE} }, - { .VCMPE, {.SPR,.NONE,.NONE,.NONE}, {.VD_S,.NONE,.NONE,.NONE}, 0x0EB50AC0, 0x0FBF0FFF, .VFPV2, .A32, {}, {.F32,.NONE} }, { .VCMPE, {.DPR,.NONE,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0x0EB50BC0, 0x0FBF0FFF, .VFPV2, .A32, {}, {.F64,.NONE} }, + { .VCMPE, {.SPR,.NONE,.NONE,.NONE}, {.VD_S,.NONE,.NONE,.NONE}, 0x0EB50AC0, 0x0FBF0FFF, .VFPV2, .A32, {}, {.F32,.NONE} }, { .VCVTA, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xFEBC0B40, 0xFFBF0FD0, .V8, .A32, {}, {.U32,.F64} }, { .VCVTA, {.SPR,.SPR,.NONE,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0xFEBC0A40, 0xFFBF0FD0, .V8, .A32, {}, {.U32,.F32} }, - { .VCVTN, {.SPR,.SPR,.NONE,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0xFEBD0A40, 0xFFBF0FD0, .V8, .A32, {}, {.U32,.F32} }, { .VCVTN, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xFEBD0B40, 0xFFBF0FD0, .V8, .A32, {}, {.U32,.F64} }, + { .VCVTN, {.SPR,.SPR,.NONE,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0xFEBD0A40, 0xFFBF0FD0, .V8, .A32, {}, {.U32,.F32} }, { .VCVTP, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xFEBE0B40, 0xFFBF0FD0, .V8, .A32, {}, {.U32,.F64} }, { .VCVTP, {.SPR,.SPR,.NONE,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0xFEBE0A40, 0xFFBF0FD0, .V8, .A32, {}, {.U32,.F32} }, { .VCVTM, {.SPR,.SPR,.NONE,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0xFEBF0A40, 0xFFBF0FD0, .V8, .A32, {}, {.U32,.F32} }, { .VCVTM, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xFEBF0B40, 0xFFBF0FD0, .V8, .A32, {}, {.U32,.F64} }, - { .VRINTA, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xFEB80B40, 0xFFBF0FD0, .V8, .A32, {}, {.F64,.NONE} }, { .VRINTA, {.SPR,.SPR,.NONE,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0xFEB80A40, 0xFFBF0FD0, .V8, .A32, {}, {.F32,.NONE} }, - { .VRINTN, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xFEB90B40, 0xFFBF0FD0, .V8, .A32, {}, {.F64,.NONE} }, + { .VRINTA, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xFEB80B40, 0xFFBF0FD0, .V8, .A32, {}, {.F64,.NONE} }, { .VRINTN, {.SPR,.SPR,.NONE,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0xFEB90A40, 0xFFBF0FD0, .V8, .A32, {}, {.F32,.NONE} }, - { .VRINTP, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xFEBA0B40, 0xFFBF0FD0, .V8, .A32, {}, {.F64,.NONE} }, + { .VRINTN, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xFEB90B40, 0xFFBF0FD0, .V8, .A32, {}, {.F64,.NONE} }, { .VRINTP, {.SPR,.SPR,.NONE,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0xFEBA0A40, 0xFFBF0FD0, .V8, .A32, {}, {.F32,.NONE} }, + { .VRINTP, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xFEBA0B40, 0xFFBF0FD0, .V8, .A32, {}, {.F64,.NONE} }, { .VRINTM, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xFEBB0B40, 0xFFBF0FD0, .V8, .A32, {}, {.F64,.NONE} }, { .VRINTM, {.SPR,.SPR,.NONE,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0xFEBB0A40, 0xFFBF0FD0, .V8, .A32, {}, {.F32,.NONE} }, - { .VABS, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0x0EB00BC0, 0x0FBF0FD0, .VFPV2, .A32, {}, {.F64,.NONE} }, { .VABS, {.SPR,.SPR,.NONE,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EB00AC0, 0x0FBF0FD0, .VFPV2, .A32, {}, {.F32,.NONE} }, - { .VNEG, {.SPR,.SPR,.NONE,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EB10A40, 0x0FBF0FD0, .VFPV2, .A32, {}, {.F32,.NONE} }, + { .VABS, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0x0EB00BC0, 0x0FBF0FD0, .VFPV2, .A32, {}, {.F64,.NONE} }, { .VNEG, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0x0EB10B40, 0x0FBF0FD0, .VFPV2, .A32, {}, {.F64,.NONE} }, - { .VSQRT, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0x0EB10BC0, 0x0FBF0FD0, .VFPV2, .A32, {}, {.F64,.NONE} }, - { .VSQRT, {.SPR,.SPR,.NONE,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EB10AC0, 0x0FBF0FD0, .VFPV2, .A32, {}, {.F32,.NONE} }, + { .VNEG, {.SPR,.SPR,.NONE,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EB10A40, 0x0FBF0FD0, .VFPV2, .A32, {}, {.F32,.NONE} }, { .VSQRT, {.SPR,.SPR,.NONE,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EB109C0, 0x0FBF0FD0, .HALF_FP, .A32, {}, {.F16,.NONE} }, - { .VCVT, {.DPR,.DPR,.IMM,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0x0EBE0B40, 0x0FBF0FD0, .VFPV3, .A32, {}, {.S16,.F64} }, - { .VCVT, {.DPR,.DPR,.IMM,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0x0EBA0B40, 0x0FBF0FD0, .VFPV3, .A32, {}, {.F64,.S16} }, - { .VCVT, {.SPR,.SPR,.IMM,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EBB0A40, 0x0FBF0FD0, .VFPV3, .A32, {}, {.F32,.U16} }, + { .VSQRT, {.SPR,.SPR,.NONE,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EB10AC0, 0x0FBF0FD0, .VFPV2, .A32, {}, {.F32,.NONE} }, + { .VSQRT, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0x0EB10BC0, 0x0FBF0FD0, .VFPV2, .A32, {}, {.F64,.NONE} }, { .VCVT, {.SPR,.SPR,.IMM,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EBE0940, 0x0FBF0FD0, .HALF_FP, .A32, {}, {.S16,.F16} }, - { .VCVT, {.SPR,.SPR,.IMM,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EBE0A40, 0x0FBF0FD0, .VFPV3, .A32, {}, {.S16,.F32} }, - { .VCVT, {.SPR,.SPR,.IMM,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EBF0A40, 0x0FBF0FD0, .VFPV3, .A32, {}, {.U16,.F32} }, - { .VCVT, {.DPR,.SPR,.NONE,.NONE}, {.VD_D,.VM_S,.NONE,.NONE}, 0x0EB80BC0, 0x0FBF0FD0, .VFPV2, .A32, {}, {.F64,.S32} }, - { .VCVT, {.SPR,.SPR,.NONE,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EB80AC0, 0x0FBF0FD0, .VFPV2, .A32, {}, {.F32,.S32} }, - { .VCVT, {.SPR,.DPR,.NONE,.NONE}, {.VD_S,.VM_D,.NONE,.NONE}, 0x0EBC0BC0, 0x0FBF0FD0, .VFPV2, .A32, {}, {.U32,.F64} }, - { .VCVT, {.SPR,.SPR,.NONE,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EB80A40, 0x0FBF0FD0, .VFPV2, .A32, {}, {.F32,.U32} }, - { .VCVT, {.DPR,.SPR,.NONE,.NONE}, {.VD_D,.VM_S,.NONE,.NONE}, 0x0EB80B40, 0x0FBF0FD0, .VFPV2, .A32, {}, {.F64,.U32} }, - { .VCVT, {.SPR,.SPR,.IMM,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EBA0A40, 0x0FBF0FD0, .VFPV3, .A32, {}, {.F32,.S16} }, - { .VCVT, {.SPR,.DPR,.NONE,.NONE}, {.VD_S,.VM_D,.NONE,.NONE}, 0x0EB70BC0, 0x0FBF0FD0, .VFPV2, .A32, {}, {.F32,.F64} }, - { .VCVT, {.DPR,.SPR,.NONE,.NONE}, {.VD_D,.VM_S,.NONE,.NONE}, 0x0EB70AC0, 0x0FBF0FD0, .VFPV2, .A32, {}, {.F64,.F32} }, - { .VCVT, {.SPR,.SPR,.NONE,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EBD0AC0, 0x0FBF0FD0, .VFPV2, .A32, {}, {.S32,.F32} }, - { .VCVT, {.SPR,.SPR,.NONE,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EBC0AC0, 0x0FBF0FD0, .VFPV2, .A32, {}, {.U32,.F32} }, - { .VCVT, {.SPR,.DPR,.NONE,.NONE}, {.VD_S,.VM_D,.NONE,.NONE}, 0x0EBD0BC0, 0x0FBF0FD0, .VFPV2, .A32, {}, {.S32,.F64} }, + { .VCVT, {.DPR,.DPR,.IMM,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0x0EBA0B40, 0x0FBF0FD0, .VFPV3, .A32, {}, {.F64,.S16} }, { .VCVT, {.SPR,.SPR,.IMM,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EBA0940, 0x0FBF0FD0, .HALF_FP, .A32, {}, {.F16,.S16} }, - { .VCVTB, {.SPR,.SPR,.NONE,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EB30A40, 0x0FBF0FD0, .VFPV3, .A32, {}, {.F16,.F32} }, + { .VCVT, {.DPR,.DPR,.IMM,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0x0EBE0B40, 0x0FBF0FD0, .VFPV3, .A32, {}, {.S16,.F64} }, + { .VCVT, {.SPR,.SPR,.IMM,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EBB0A40, 0x0FBF0FD0, .VFPV3, .A32, {}, {.F32,.U16} }, + { .VCVT, {.SPR,.SPR,.IMM,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EBF0A40, 0x0FBF0FD0, .VFPV3, .A32, {}, {.U16,.F32} }, + { .VCVT, {.DPR,.SPR,.NONE,.NONE}, {.VD_D,.VM_S,.NONE,.NONE}, 0x0EB80B40, 0x0FBF0FD0, .VFPV2, .A32, {}, {.F64,.U32} }, + { .VCVT, {.SPR,.SPR,.IMM,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EBE0A40, 0x0FBF0FD0, .VFPV3, .A32, {}, {.S16,.F32} }, + { .VCVT, {.SPR,.SPR,.IMM,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EBA0A40, 0x0FBF0FD0, .VFPV3, .A32, {}, {.F32,.S16} }, + { .VCVT, {.SPR,.DPR,.NONE,.NONE}, {.VD_S,.VM_D,.NONE,.NONE}, 0x0EBC0BC0, 0x0FBF0FD0, .VFPV2, .A32, {}, {.U32,.F64} }, + { .VCVT, {.SPR,.DPR,.NONE,.NONE}, {.VD_S,.VM_D,.NONE,.NONE}, 0x0EBD0BC0, 0x0FBF0FD0, .VFPV2, .A32, {}, {.S32,.F64} }, + { .VCVT, {.SPR,.SPR,.NONE,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EB80AC0, 0x0FBF0FD0, .VFPV2, .A32, {}, {.F32,.S32} }, + { .VCVT, {.SPR,.SPR,.NONE,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EBD0AC0, 0x0FBF0FD0, .VFPV2, .A32, {}, {.S32,.F32} }, + { .VCVT, {.DPR,.SPR,.NONE,.NONE}, {.VD_D,.VM_S,.NONE,.NONE}, 0x0EB70AC0, 0x0FBF0FD0, .VFPV2, .A32, {}, {.F64,.F32} }, + { .VCVT, {.SPR,.DPR,.NONE,.NONE}, {.VD_S,.VM_D,.NONE,.NONE}, 0x0EB70BC0, 0x0FBF0FD0, .VFPV2, .A32, {}, {.F32,.F64} }, + { .VCVT, {.SPR,.SPR,.NONE,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EBC0AC0, 0x0FBF0FD0, .VFPV2, .A32, {}, {.U32,.F32} }, + { .VCVT, {.SPR,.SPR,.NONE,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EB80A40, 0x0FBF0FD0, .VFPV2, .A32, {}, {.F32,.U32} }, + { .VCVT, {.DPR,.SPR,.NONE,.NONE}, {.VD_D,.VM_S,.NONE,.NONE}, 0x0EB80BC0, 0x0FBF0FD0, .VFPV2, .A32, {}, {.F64,.S32} }, { .VCVTB, {.SPR,.SPR,.NONE,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EB20A40, 0x0FBF0FD0, .VFPV3, .A32, {}, {.F32,.F16} }, - { .VCVTT, {.SPR,.SPR,.NONE,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EB30AC0, 0x0FBF0FD0, .VFPV3, .A32, {}, {.F16,.F32} }, + { .VCVTB, {.SPR,.SPR,.NONE,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EB30A40, 0x0FBF0FD0, .VFPV3, .A32, {}, {.F16,.F32} }, { .VCVTT, {.SPR,.SPR,.NONE,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EB20AC0, 0x0FBF0FD0, .VFPV3, .A32, {}, {.F32,.F16} }, + { .VCVTT, {.SPR,.SPR,.NONE,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EB30AC0, 0x0FBF0FD0, .VFPV3, .A32, {}, {.F16,.F32} }, + { .VCVTR, {.SPR,.DPR,.NONE,.NONE}, {.VD_S,.VM_D,.NONE,.NONE}, 0x0EBD0B40, 0x0FBF0FD0, .VFPV2, .A32, {}, {.S32,.F64} }, + { .VCVTR, {.SPR,.SPR,.NONE,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EBC0A40, 0x0FBF0FD0, .VFPV2, .A32, {}, {.U32,.F32} }, { .VCVTR, {.SPR,.DPR,.NONE,.NONE}, {.VD_S,.VM_D,.NONE,.NONE}, 0x0EBC0B40, 0x0FBF0FD0, .VFPV2, .A32, {}, {.U32,.F64} }, { .VCVTR, {.SPR,.SPR,.NONE,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EBD0A40, 0x0FBF0FD0, .VFPV2, .A32, {}, {.S32,.F32} }, - { .VCVTR, {.SPR,.SPR,.NONE,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EBC0A40, 0x0FBF0FD0, .VFPV2, .A32, {}, {.U32,.F32} }, - { .VCVTR, {.SPR,.DPR,.NONE,.NONE}, {.VD_S,.VM_D,.NONE,.NONE}, 0x0EBD0B40, 0x0FBF0FD0, .VFPV2, .A32, {}, {.S32,.F64} }, { .VMOV, {.SPR,.SPR,.NONE,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EB00A40, 0x0FBF0FD0, .VFPV2, .A32, {}, {.F32,.NONE} }, { .VMOV, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0x0EB00B40, 0x0FBF0FD0, .VFPV2, .A32, {}, {.F64,.NONE} }, - { .VRINTR, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0x0EB60B40, 0x0FBF0FD0, .V8, .A32, {}, {.F64,.NONE} }, { .VRINTR, {.SPR,.SPR,.NONE,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EB60A40, 0x0FBF0FD0, .V8, .A32, {}, {.F32,.NONE} }, - { .VRINTZ, {.SPR,.SPR,.NONE,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EB60AC0, 0x0FBF0FD0, .V8, .A32, {}, {.F32,.NONE} }, + { .VRINTR, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0x0EB60B40, 0x0FBF0FD0, .V8, .A32, {}, {.F64,.NONE} }, { .VRINTZ, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0x0EB60BC0, 0x0FBF0FD0, .V8, .A32, {}, {.F64,.NONE} }, + { .VRINTZ, {.SPR,.SPR,.NONE,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EB60AC0, 0x0FBF0FD0, .V8, .A32, {}, {.F32,.NONE} }, { .VRINTX, {.SPR,.SPR,.NONE,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EB70A40, 0x0FBF0FD0, .V8, .A32, {}, {.F32,.NONE} }, { .VRINTX, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0x0EB70B40, 0x0FBF0FD0, .V8, .A32, {}, {.F64,.NONE} }, { .VJCVT, {.SPR,.DPR,.NONE,.NONE}, {.VD_S,.VM_D,.NONE,.NONE}, 0x0EB90BC0, 0x0FBF0FD0, .V8, .A32, {}, {.NONE,.NONE} }, - { .VCMP, {.SPR,.SPR,.NONE,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EB40940, 0x0FBF0F50, .HALF_FP, .A32, {}, {.F16,.NONE} }, { .VCMP, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0x0EB40B40, 0x0FBF0F50, .VFPV2, .A32, {}, {.F64,.NONE} }, { .VCMP, {.SPR,.SPR,.NONE,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EB40A40, 0x0FBF0F50, .VFPV2, .A32, {}, {.F32,.NONE} }, + { .VCMP, {.SPR,.SPR,.NONE,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EB40940, 0x0FBF0F50, .HALF_FP, .A32, {}, {.F16,.NONE} }, { .VCMPE, {.SPR,.SPR,.NONE,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EB40AC0, 0x0FBF0F50, .VFPV2, .A32, {}, {.F32,.NONE} }, { .VCMPE, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0x0EB40BC0, 0x0FBF0F50, .VFPV2, .A32, {}, {.F64,.NONE} }, { .VCVT, {.SPR,.SPR,.IMM,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EBE0A40, 0x0FBF0FC0, .VFPV3, .A32, {}, {.S16,.F32} }, { .VCVT, {.SPR,.SPR,.IMM,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EBA0A40, 0x0FBF0FC0, .VFPV3, .A32, {}, {.F32,.S16} }, - { .VMOV, {.SPR,.IMM8,.NONE,.NONE}, {.VD_S,.VFP_IMM8,.NONE,.NONE}, 0x0EB00A00, 0x0FB00FF0, .VFPV3, .A32, {}, {.F32,.NONE} }, { .VMOV, {.DPR,.IMM8,.NONE,.NONE}, {.VD_D,.VFP_IMM8,.NONE,.NONE}, 0x0EB00B00, 0x0FB00FF0, .VFPV3, .A32, {}, {.F64,.NONE} }, + { .VMOV, {.SPR,.IMM8,.NONE,.NONE}, {.VD_S,.VFP_IMM8,.NONE,.NONE}, 0x0EB00A00, 0x0FB00FF0, .VFPV3, .A32, {}, {.F32,.NONE} }, { .VDUP, {.DPR,.GPR,.NONE,.NONE}, {.VD_D,.RT_A32,.NONE,.NONE}, 0x0EC00B10, 0x0FF00FD0, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VMSR, {.GPR,.NONE,.NONE,.NONE}, {.RT_A32,.NONE,.NONE,.NONE}, 0x0EE10A10, 0x0FFF0FFF, .VFPV2, .A32, {}, {.NONE,.NONE} }, { .VDUP, {.QPR,.GPR,.NONE,.NONE}, {.VD_Q,.RT_A32,.NONE,.NONE}, 0x0EE00B10, 0x0FF00FD0, .NEON, .A32, {}, {.SZ8,.NONE} }, @@ -1258,8 +1249,8 @@ DECODE_ENTRIES := [1665]lib.Decode_Entry{ { .VMOV, {.QPR_ELEM,.QPR_ELEM,.GPR,.GPR}, {.VD_Q,.VD_Q,.RT_T32,.RT2_T32}, 0xEC000F00, 0xFF900F11, .MVE_INT, .T32, {thumb32=true}, {.NONE,.NONE} }, { .VLDRB, {.QPR,.MEM,.NONE,.NONE}, {.VD_Q,.MEM_IMM12_OFFSET,.NONE,.NONE}, 0xED901E00, 0xFFB01F00, .MVE_INT, .T32, {thumb32=true}, {.U8,.NONE} }, { .VSTRB, {.QPR,.MEM,.NONE,.NONE}, {.VD_Q,.MEM_IMM12_OFFSET,.NONE,.NONE}, 0xED801E00, 0xFFB01F00, .MVE_INT, .T32, {thumb32=true}, {.SZ8,.NONE} }, - { .VCX1, {.IMM_COPROC,.SPR,.IMM,.NONE}, {.CDE_COPROC_FIELD,.VD_S,.CDE_IMM_FIELD,.NONE}, 0xEC200000, 0xFF300000, .CDE, .T32, {thumb32=true}, {.NONE,.NONE} }, { .VCX1, {.IMM_COPROC,.DPR,.IMM,.NONE}, {.CDE_COPROC_FIELD,.VD_D,.CDE_IMM_FIELD,.NONE}, 0xEC300000, 0xFF300000, .CDE, .T32, {thumb32=true}, {.NONE,.NONE} }, + { .VCX1, {.IMM_COPROC,.SPR,.IMM,.NONE}, {.CDE_COPROC_FIELD,.VD_S,.CDE_IMM_FIELD,.NONE}, 0xEC200000, 0xFF300000, .CDE, .T32, {thumb32=true}, {.NONE,.NONE} }, { .VCX2, {.IMM_COPROC,.DPR,.DPR,.IMM}, {.CDE_COPROC_FIELD,.VD_D,.VM_D,.CDE_IMM_FIELD}, 0xEC700000, 0xFF300000, .CDE, .T32, {thumb32=true}, {.NONE,.NONE} }, { .VCX2, {.IMM_COPROC,.SPR,.SPR,.IMM}, {.CDE_COPROC_FIELD,.VD_S,.VM_S,.CDE_IMM_FIELD}, 0xEC600000, 0xFF300000, .CDE, .T32, {thumb32=true}, {.NONE,.NONE} }, { .VCX3, {.IMM_COPROC,.SPR,.SPR,.SPR}, {.CDE_COPROC_FIELD,.VD_S,.VN_S,.VM_S}, 0xEC800000, 0xFF300000, .CDE, .T32, {thumb32=true}, {.NONE,.NONE} }, @@ -1289,8 +1280,8 @@ DECODE_ENTRIES := [1665]lib.Decode_Entry{ { .VDDUP, {.QPR,.GPR,.IMM,.NONE}, {.VD_Q,.RM_T32,.CDE_IMM_FIELD,.NONE}, 0xEE011F6E, 0xEF811F7E, .MVE_INT, .T32, {thumb32=true}, {.U8,.NONE} }, { .VIDUP, {.QPR,.GPR,.IMM,.NONE}, {.VD_Q,.RM_T32,.CDE_IMM_FIELD,.NONE}, 0xEE010F6E, 0xEF811F7E, .MVE_INT, .T32, {thumb32=true}, {.U8,.NONE} }, { .VCMP, {.QPR,.QPR,.NONE,.NONE}, {.VN_Q,.VM_Q,.NONE,.NONE}, 0xEE310F00, 0xEFB10FF0, .MVE_FP, .T32, {thumb32=true}, {.F32,.NONE} }, - { .VMOV, {.QPR_ELEM,.GPR,.NONE,.NONE}, {.VD_Q,.RT_T32,.NONE,.NONE}, 0xEE000B10, 0xFF900F1F, .MVE_INT, .T32, {thumb32=true}, {.SZ32,.NONE} }, { .VMOV, {.GPR,.QPR_ELEM,.NONE,.NONE}, {.RT_T32,.VD_Q,.NONE,.NONE}, 0xEE100B10, 0xFF900F1F, .MVE_INT, .T32, {thumb32=true}, {.SZ32,.NONE} }, + { .VMOV, {.QPR_ELEM,.GPR,.NONE,.NONE}, {.VD_Q,.RT_T32,.NONE,.NONE}, 0xEE000B10, 0xFF900F1F, .MVE_INT, .T32, {thumb32=true}, {.SZ32,.NONE} }, { .VAND, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xEF000150, 0xFFB10F51, .MVE_INT, .T32, {thumb32=true}, {.NONE,.NONE} }, { .VBIC, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xEF100150, 0xFFB10F51, .MVE_INT, .T32, {thumb32=true}, {.NONE,.NONE} }, { .VORR, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xEF200150, 0xFFB10F51, .MVE_INT, .T32, {thumb32=true}, {.NONE,.NONE} }, @@ -1541,12 +1532,12 @@ DECODE_ENTRIES := [1665]lib.Decode_Entry{ { .VLDRW, {.QPR,.MEM,.QPR,.NONE}, {.VD_Q,.RN_T32,.VM_Q,.NONE}, 0xFC900F40, 0xFEF00FF1, .MVE_INT, .T32, {thumb32=true}, {.U32,.NONE} }, { .VLDRD, {.QPR,.MEM,.QPR,.NONE}, {.VD_Q,.RN_T32,.VM_Q,.NONE}, 0xFC900FD0, 0xFEF00FF1, .MVE_INT, .T32, {thumb32=true}, {.U64,.NONE} }, { .VLDRB, {.QPR,.MEM,.QPR,.NONE}, {.VD_Q,.RN_T32,.VM_Q,.NONE}, 0xFC900E00, 0xFEF00FD1, .MVE_INT, .T32, {thumb32=true}, {.U8,.NONE} }, - { .VCX1A, {.IMM_COPROC,.DPR,.IMM,.NONE}, {.CDE_COPROC_FIELD,.VD_D,.CDE_IMM_FIELD,.NONE}, 0xFC300000, 0xFF300000, .CDE, .T32, {thumb32=true}, {.NONE,.NONE} }, { .VCX1A, {.IMM_COPROC,.SPR,.IMM,.NONE}, {.CDE_COPROC_FIELD,.VD_S,.CDE_IMM_FIELD,.NONE}, 0xFC200000, 0xFF300000, .CDE, .T32, {thumb32=true}, {.NONE,.NONE} }, + { .VCX1A, {.IMM_COPROC,.DPR,.IMM,.NONE}, {.CDE_COPROC_FIELD,.VD_D,.CDE_IMM_FIELD,.NONE}, 0xFC300000, 0xFF300000, .CDE, .T32, {thumb32=true}, {.NONE,.NONE} }, { .VCX2A, {.IMM_COPROC,.SPR,.SPR,.IMM}, {.CDE_COPROC_FIELD,.VD_S,.VM_S,.CDE_IMM_FIELD}, 0xFC600000, 0xFF300000, .CDE, .T32, {thumb32=true}, {.NONE,.NONE} }, { .VCX2A, {.IMM_COPROC,.DPR,.DPR,.IMM}, {.CDE_COPROC_FIELD,.VD_D,.VM_D,.CDE_IMM_FIELD}, 0xFC700000, 0xFF300000, .CDE, .T32, {thumb32=true}, {.NONE,.NONE} }, - { .VCX3A, {.IMM_COPROC,.DPR,.DPR,.DPR}, {.CDE_COPROC_FIELD,.VD_D,.VN_D,.VM_D}, 0xFC900000, 0xFF300000, .CDE, .T32, {thumb32=true}, {.NONE,.NONE} }, { .VCX3A, {.IMM_COPROC,.SPR,.SPR,.SPR}, {.CDE_COPROC_FIELD,.VD_S,.VN_S,.VM_S}, 0xFC800000, 0xFF300000, .CDE, .T32, {thumb32=true}, {.NONE,.NONE} }, + { .VCX3A, {.IMM_COPROC,.DPR,.DPR,.DPR}, {.CDE_COPROC_FIELD,.VD_D,.VN_D,.VM_D}, 0xFC900000, 0xFF300000, .CDE, .T32, {thumb32=true}, {.NONE,.NONE} }, { .VPST, {.MVE_VPT_MASK,.NONE,.NONE,.NONE}, {.MVE_VPT_MASK_FIELD,.NONE,.NONE,.NONE}, 0xFE710F4D, 0xFFFFFFFF, .MVE_INT, .T32, {thumb32=true}, {.NONE,.NONE} }, { .VPNOT, {.NONE,.NONE,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xFE310F4D, 0xFFFFFFFF, .MVE_INT, .T32, {thumb32=true}, {.NONE,.NONE} }, { .VRINTA, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xFFBA0540, 0xFFBB0FD1, .MVE_FP, .T32, {thumb32=true}, {.F32,.NONE} }, @@ -1677,7 +1668,7 @@ DECODE_ENTRIES := [1665]lib.Decode_Entry{ } @(rodata) -DECODE_FORM_IDX := [1665]u16{ +DECODE_FORM_IDX := [1656]u16{ 0, 2, 1, 1, 5, 4, 0, 2, 1, 1, 5, 4, 0, 2, 2, 2, 2, 1, 2, 2, 2, 5, 4, 0, 0, 2, 1, 0, 0, 0, 5, 4, 0, 2, 1, 1, 5, 4, 0, 2, 1, 1, 5, 4, 0, 2, 1, 1, @@ -1690,103 +1681,102 @@ DECODE_FORM_IDX := [1665]u16{ 0, 2, 1, 0, 0, 5, 4, 0, 0, 0, 2, 1, 0, 0, 0, 5, 4, 0, 0, 0, 2, 1, 0, 0, 0, 5, 4, 1, 1, 1, 9, 14, 8, 10, 6, 4, 3, 3, 1, 4, 4, 3, 3, 1, 3, 7, 3, 3, - 0, 0, 9, 3, 3, 1, 4, 1, 1, 0, 0, 13, 5, 5, 9, 3, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 8, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 4, 10, 9, 7, 4, + 0, 0, 3, 9, 3, 1, 4, 1, 1, 0, 0, 13, 5, 5, 9, 3, + 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, 10, 4, 9, 7, 4, 4, 5, 5, 2, 4, 4, 1, 4, 9, 4, 4, 2, 2, 11, 4, 4, 2, 0, 3, 6, 6, 4, 1, 1, 1, 1, 0, 1, 1, 0, 1, 8, - 1, 1, 1, 10, 1, 1, 1, 1, 1, 3, 5, 5, 5, 11, 14, 10, + 1, 1, 10, 1, 1, 1, 1, 1, 1, 3, 5, 5, 5, 11, 14, 10, 8, 10, 4, 5, 5, 6, 6, 3, 5, 5, 1, 5, 5, 5, 4, 4, - 5, 9, 5, 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, + 5, 5, 9, 1, 4, 0, 7, 13, 7, 5, 9, 3, 2, 2, 2, 2, + 1, 2, 2, 0, 2, 2, 2, 2, 8, 2, 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, 21, 24, 23, 22, 25, 0, 0, - 0, 0, 10, 11, 18, 17, 15, 19, 14, 10, 13, 11, 12, 16, 20, 6, - 0, 0, 0, 5, 6, 7, 3, 9, 2, 8, 4, 0, 0, 0, 0, 0, + 3, 3, 0, 3, 0, 3, 0, 0, 0, 25, 24, 22, 21, 23, 0, 0, + 0, 0, 10, 11, 15, 20, 18, 17, 14, 12, 10, 11, 19, 13, 16, 0, + 6, 0, 0, 2, 6, 5, 8, 7, 9, 4, 3, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 5, 0, 0, 0, 0, 0, 0, 4, 0, 1, - 1, 1, 1, 1, 1, 1, 18, 12, 11, 1, 7, 1, 6, 6, 1, 0, - 2, 2, 0, 2, 0, 4, 4, 4, 4, 3, 2, 2, 2, 2, 2, 2, - 2, 19, 13, 12, 7, 6, 8, 2, 2, 7, 7, 2, 1, 3, 3, 1, - 1, 3, 6, 6, 5, 5, 0, 1, 0, 3, 0, 3, 0, 3, 13, 7, - 7, 1, 9, 9, 12, 14, 6, 7, 7, 9, 9, 7, 7, 1, 3, 7, - 9, 7, 6, 12, 6, 1, 0, 7, 7, 7, 3, 3, 8, 0, 5, 11, - 13, 3, 6, 6, 8, 8, 6, 6, 0, 0, 8, 6, 6, 0, 6, 6, - 3, 4, 3, 3, 6, 2, 2, 0, 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, 11, 13, 1, 13, 11, 8, 3, 3, 3, 9, 1, 5, 9, 10, 10, - 12, 1, 0, 12, 0, 7, 5, 1, 1, 1, 8, 0, 2, 8, 0, 4, - 0, 15, 12, 1, 11, 14, 8, 0, 10, 0, 0, 0, 0, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 4, 4, 5, 5, 4, 4, - 4, 4, 4, 20, 14, 13, 9, 4, 8, 4, 4, 8, 6, 6, 3, 5, - 5, 7, 7, 5, 5, 5, 5, 5, 21, 15, 14, 8, 7, 10, 5, 5, - 9, 5, 9, 7, 7, 0, 10, 2, 3, 1, 0, 1, 0, 2, 3, 1, - 0, 1, 0, 0, 0, 0, 3, 7, 4, 8, 5, 2, 9, 6, 6, 3, - 7, 2, 8, 9, 5, 4, 0, 1, 0, 2, 1, 1, 5, 3, 4, 2, - 0, 2, 1, 0, 12, 13, 11, 10, 13, 12, 14, 15, 14, 15, 13, 12, - 16, 15, 17, 14, 15, 16, 17, 14, 1, 5, 0, 4, 2, 3, 1, 0, - 2, 3, 3, 2, 1, 5, 3, 0, 4, 1, 2, 2, 4, 1, 0, 5, - 3, 1, 0, 0, 1, 0, 3, 1, 2, 2, 5, 0, 1, 3, 4, 1, - 5, 3, 2, 4, 0, 2, 1, 3, 0, 4, 4, 0, 3, 2, 1, 0, - 1, 0, 0, 0, 0, 1, 3, 0, 2, 2, 3, 1, 0, 2, 3, 3, - 0, 3, 0, 3, 0, 3, 1, 2, 0, 1, 2, 1, 0, 1, 0, 2, - 2, 2, 3, 0, 1, 2, 1, 0, 0, 1, 0, 1, 0, 0, 2, 0, - 2, 0, 0, 6, 4, 5, 0, 1, 2, 1, 0, 2, 0, 2, 1, 1, - 2, 0, 0, 0, 0, 6, 7, 4, 5, 0, 2, 1, 2, 1, 0, 1, - 2, 0, 1, 0, 2, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, - 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 1, 1, 18, 12, 11, 7, 1, 6, 1, 6, 1, 2, + 0, 2, 0, 0, 2, 4, 4, 4, 4, 3, 2, 2, 2, 2, 2, 2, + 2, 19, 13, 12, 2, 8, 7, 2, 7, 2, 3, 1, 1, 3, 1, 3, + 6, 6, 5, 5, 0, 1, 0, 3, 0, 3, 0, 3, 13, 7, 7, 1, + 9, 9, 12, 14, 6, 7, 7, 9, 9, 7, 7, 1, 3, 7, 9, 7, + 6, 12, 6, 1, 0, 7, 7, 7, 3, 3, 8, 0, 5, 11, 13, 3, + 6, 6, 8, 8, 6, 6, 0, 0, 8, 6, 6, 0, 6, 6, 4, 3, + 3, 3, 6, 2, 2, 0, 9, 9, 11, 10, 4, 7, 2, 2, 2, 1, + 4, 11, 8, 8, 10, 0, 6, 3, 4, 0, 0, 0, 0, 1, 10, 4, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 11, 13, + 1, 13, 11, 8, 3, 3, 3, 9, 1, 5, 9, 10, 10, 12, 1, 0, + 12, 0, 7, 5, 1, 1, 1, 8, 0, 2, 8, 0, 4, 0, 15, 12, + 1, 11, 14, 8, 0, 10, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 0, 0, 0, 4, 4, 5, 5, 4, 4, 4, 4, 4, + 20, 14, 13, 9, 4, 4, 8, 4, 8, 6, 6, 3, 5, 5, 7, 7, + 5, 5, 5, 5, 5, 21, 15, 14, 10, 5, 9, 5, 5, 9, 7, 7, + 0, 10, 0, 3, 1, 2, 0, 1, 3, 2, 0, 0, 0, 9, 4, 7, + 5, 8, 2, 6, 3, 3, 7, 6, 5, 4, 2, 8, 9, 0, 1, 2, + 0, 1, 5, 3, 0, 2, 1, 4, 0, 1, 2, 13, 11, 12, 10, 14, + 13, 15, 12, 14, 15, 13, 12, 17, 15, 16, 14, 15, 16, 17, 14, 4, + 3, 1, 2, 5, 0, 3, 2, 1, 0, 2, 3, 1, 5, 2, 3, 4, + 0, 1, 1, 0, 4, 5, 2, 3, 0, 1, 1, 0, 3, 0, 2, 1, + 2, 1, 3, 4, 5, 0, 0, 3, 1, 5, 4, 2, 3, 2, 4, 1, + 0, 2, 4, 1, 3, 0, 0, 1, 0, 0, 0, 0, 0, 1, 3, 2, + 3, 2, 0, 1, 2, 3, 3, 0, 3, 0, 3, 3, 2, 0, 1, 0, + 2, 1, 1, 0, 0, 1, 2, 2, 3, 0, 2, 1, 0, 1, 2, 0, + 1, 0, 1, 0, 0, 2, 0, 2, 0, 0, 5, 4, 6, 0, 2, 1, + 0, 1, 2, 2, 1, 0, 1, 0, 2, 0, 0, 0, 6, 7, 4, 5, + 1, 0, 2, 2, 1, 0, 0, 1, 2, 0, 2, 1, 0, 0, 1, 1, + 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 3, 0, 3, 0, 0, 0, 0, 0, 3, - 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, - 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, - 9, 7, 9, 0, 0, 6, 8, 0, 0, 1, 0, 1, 0, 1, 0, 1, - 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 4, 2, 1, - 3, 2, 0, 1, 27, 2, 2, 0, 1, 0, 1, 0, 0, 0, 0, 5, - 26, 0, 1, 1, 0, 0, 0, 3, 3, 2, 2, 2, 0, 1, 0, 1, - 2, 2, 0, 1, 1, 0, 0, 1, 3, 0, 1, 0, 1, 2, 2, 0, - 1, 2, 2, 1, 0, 0, 1, 2, 2, 0, 1, 1, 0, 2, 3, 5, - 2, 3, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 1, 0, - 1, 0, 1, 0, 0, 1, 1, 0, 2, 17, 18, 14, 19, 11, 12, 8, - 6, 5, 7, 9, 13, 1, 0, 2, 3, 4, 20, 1, 0, 1, 0, 3, - 0, 1, 2, 0, 1, 1, 0, 0, 1, 0, 1, 0, 4, 1, 0, 0, - 1, 15, 16, 2, 3, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, - 1, 1, 0, 0, 0, 0, 1, 1, 2, 2, 1, 3, 3, 1, 1, 4, - 4, 4, 4, 4, 3, 5, 4, 7, 5, 11, 10, 8, 10, 9, 8, 7, - 8, 8, 8, 8, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 30, 0, - 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 0, 0, 0, 0, 7, - 28, 29, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 17, 17, 17, - 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 16, 11, 5, - 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 15, 15, 8, 8, 2, 10, 10, 12, 12, - 8, 4, 6, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 3, 6, 4, 8, 9, - 7, 0, 0, 7, 8, 7, 6, 7, 7, 7, 7, 4, 3, 1, 2, 2, - 2, 2, 2, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, - 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 2, - 9, 8, 7, 7, 7, 7, 6, 6, 1, 1, 1, 10, 8, 7, 6, 6, - 6, 6, 5, 5, 2, 1, 2, 2, 1, 2, 1, 1, 2, 2, 2, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, + 3, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, + 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 1, 0, 7, 9, 7, 0, 0, 8, 6, 0, 0, + 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, + 1, 0, 1, 0, 4, 2, 1, 3, 2, 0, 1, 27, 2, 2, 0, 1, + 0, 1, 0, 0, 0, 0, 5, 26, 0, 1, 1, 0, 0, 0, 3, 3, + 2, 2, 2, 0, 1, 0, 1, 2, 2, 0, 1, 1, 0, 0, 1, 3, + 1, 0, 0, 1, 2, 2, 0, 1, 2, 2, 1, 0, 0, 1, 2, 2, + 0, 1, 1, 0, 5, 2, 3, 3, 2, 1, 0, 1, 0, 1, 0, 0, + 1, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 2, 0, 1, + 19, 18, 20, 17, 14, 12, 9, 11, 13, 5, 4, 6, 2, 0, 1, 3, + 7, 8, 0, 1, 0, 1, 2, 1, 3, 0, 0, 1, 0, 1, 1, 0, + 0, 1, 0, 1, 0, 4, 0, 1, 15, 16, 3, 2, 0, 0, 1, 0, + 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 2, + 2, 1, 3, 3, 1, 1, 4, 4, 4, 4, 4, 3, 5, 4, 7, 5, + 11, 10, 8, 10, 9, 8, 7, 8, 8, 8, 8, 1, 1, 1, 1, 0, + 0, 0, 0, 0, 0, 30, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 4, 0, 0, 0, 0, 7, 29, 28, 2, 2, 2, 2, 0, 0, 0, + 0, 0, 0, 0, 17, 17, 17, 6, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 16, 16, 11, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 15, + 8, 8, 2, 10, 10, 12, 12, 8, 4, 6, 0, 0, 2, 2, 2, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 4, 3, 6, 4, 8, 9, 7, 0, 0, 7, 8, 7, 6, 7, 7, + 7, 7, 4, 3, 1, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, + 0, 0, 0, 0, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 2, 9, 8, 7, 7, 7, 7, 6, 6, 1, + 1, 1, 10, 8, 7, 6, 6, 6, 6, 5, 5, 2, 1, 2, 2, 1, + 2, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 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, 4, 1, 1, 1, 1, 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, 2, 2, 1, 1, 1, - 2, + 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, 4, 1, + 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 0, 2, 2, 2, 2, 2, + 2, 0, 0, 0, 0, 11, 11, 0, 0, 0, 10, 10, 12, 2, 16, 6, + 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 6, 6, 7, 7, 6, + 3, 8, 8, 6, 6, 6, 6, 3, 4, 3, 6, 6, 6, 3, 3, 3, + 2, 0, 2, 1, 2, 0, 0, 9, 5, 7, 4, 4, 4, 4, 4, 5, + 4, 4, 4, 5, 6, 5, 5, 5, 5, 6, 7, 0, 10, 1, 1, 1, + 1, 9, 11, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, + 0, 1, 2, 2, 1, 1, 1, 2, } @(rodata) -DECODE_BUCKET_LIST := [5397]u16{ +DECODE_BUCKET_LIST := [5379]u16{ 0, 1, 2, 3, 0, 4, 1, 5, 2, 6, 7, 8, 9, 6, 10, 7, 11, 8, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 16, 17, 23, 24, 25, 26, 27, 28, 29, 30, 31, 25, 26, 32, 33, 34, 35, 32, 36, @@ -1824,307 +1814,306 @@ DECODE_BUCKET_LIST := [5397]u16{ 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 329, 328, 330, 331, 332, 333, 334, 356, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, - 346, 347, 348, 349, 350, 351, 352, 357, 356, 358, 359, 360, 363, 361, 362, 365, - 364, 366, 367, 368, 369, 370, 371, 376, 378, 379, 381, 374, 382, 377, 373, 380, - 372, 375, 383, 384, 385, 386, 392, 387, 388, 389, 394, 390, 393, 391, 395, 396, + 346, 347, 348, 349, 350, 351, 352, 357, 356, 358, 359, 360, 365, 361, 362, 363, + 364, 366, 367, 368, 369, 370, 371, 374, 380, 372, 379, 381, 378, 377, 373, 375, + 376, 382, 383, 384, 385, 386, 387, 389, 388, 394, 391, 393, 392, 390, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, - 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 428, 427, - 429, 430, 432, 431, 434, 433, 435, 436, 437, 438, 439, 440, 395, 396, 397, 398, + 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 426, 425, 427, 428, + 430, 429, 431, 432, 434, 433, 435, 436, 437, 438, 439, 440, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 441, 414, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, - 457, 459, 458, 460, 461, 462, 463, 465, 464, 466, 467, 468, 469, 395, 396, 397, - 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, - 470, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, - 410, 411, 412, 413, 471, 472, 473, 470, 358, 359, 360, 365, 364, 363, 362, 361, - 366, 367, 368, 369, 370, 371, 382, 381, 380, 379, 378, 377, 376, 374, 373, 372, - 375, 383, 384, 385, 386, 394, 393, 392, 391, 389, 390, 388, 387, 395, 396, 397, - 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, - 474, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 428, 427, 429, - 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 395, 396, 397, 398, 399, - 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 475, 474, - 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 455, 454, 456, 457, - 459, 458, 460, 461, 462, 463, 465, 464, 466, 467, 468, 469, 395, 396, 397, 398, - 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 476, - 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, - 411, 412, 413, 471, 472, 477, 476, 478, 479, 480, 481, 482, 483, 485, 484, 486, - 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 499, 498, 500, 501, 502, - 503, 504, 505, 506, 507, 508, 509, 510, 512, 511, 513, 514, 515, 516, 517, 518, - 519, 520, 521, 523, 522, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, - 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, - 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, - 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, - 583, 584, 585, 586, 587, 588, 589, 590, 592, 591, 593, 594, 595, 596, 597, 598, - 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, - 615, 616, 617, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, - 491, 492, 493, 494, 495, 496, 497, 499, 498, 500, 501, 502, 503, 504, 505, 506, - 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, - 523, 524, 525, 526, 527, 529, 528, 530, 531, 532, 533, 534, 535, 618, 537, 538, - 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, - 555, 556, 557, 558, 559, 560, 561, 562, 619, 576, 577, 578, 579, 580, 581, 582, - 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, - 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, - 615, 616, 620, 621, 622, 623, 365, 364, 363, 361, 362, 624, 625, 626, 627, 370, - 371, 382, 380, 379, 381, 378, 375, 376, 377, 374, 373, 372, 628, 629, 630, 394, - 393, 390, 391, 392, 389, 388, 387, 631, 632, 395, 396, 397, 398, 399, 400, 401, - 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 633, 634, 635, 636, - 637, 638, 639, 640, 641, 642, 643, 644, 645, 647, 646, 648, 649, 650, 651, 652, - 653, 631, 632, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, - 408, 409, 410, 411, 412, 413, 654, 633, 655, 656, 657, 658, 659, 660, 661, 662, - 663, 664, 665, 666, 667, 668, 669, 670, 672, 671, 673, 674, 675, 676, 631, 632, - 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, - 411, 412, 413, 677, 678, 681, 679, 682, 680, 685, 686, 683, 684, 687, 688, 689, - 690, 691, 692, 693, 698, 696, 695, 694, 701, 697, 699, 700, 703, 705, 708, 704, - 706, 707, 709, 702, 711, 710, 714, 713, 712, 718, 717, 716, 719, 715, 720, 722, - 723, 721, 726, 724, 725, 727, 730, 728, 731, 729, 733, 732, 734, 735, 737, 738, - 739, 736, 740, 742, 743, 741, 746, 748, 747, 749, 745, 744, 750, 753, 752, 751, - 754, 755, 756, 760, 757, 759, 758, 762, 761, 767, 764, 763, 768, 765, 766, 770, - 769, 771, 772, 774, 776, 773, 775, 778, 782, 779, 781, 780, 777, 788, 786, 787, - 783, 784, 785, 793, 792, 789, 791, 790, 797, 794, 796, 795, 798, 799, 800, 801, - 802, 803, 804, 806, 807, 805, 808, 812, 809, 810, 811, 814, 813, 631, 632, 395, + 457, 459, 458, 460, 461, 462, 463, 464, 465, 466, 467, 395, 396, 397, 398, 399, + 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 468, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, - 412, 413, 815, 677, 621, 622, 623, 365, 364, 363, 361, 362, 624, 625, 626, 627, - 371, 370, 382, 380, 379, 378, 376, 375, 374, 372, 373, 377, 381, 628, 629, 630, - 394, 392, 393, 391, 390, 387, 388, 389, 631, 632, 395, 396, 397, 398, 399, 400, - 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 816, 634, 635, - 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 647, 646, 648, 649, 650, 651, - 652, 653, 631, 632, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, - 407, 408, 409, 410, 411, 412, 413, 817, 816, 655, 656, 657, 658, 659, 660, 661, - 662, 663, 664, 665, 666, 667, 668, 669, 670, 672, 671, 674, 673, 675, 676, 631, - 632, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, - 410, 411, 412, 413, 818, 678, 682, 680, 679, 681, 686, 685, 683, 684, 687, 688, - 690, 689, 691, 692, 693, 700, 701, 699, 698, 696, 695, 694, 697, 707, 708, 709, - 705, 706, 704, 703, 702, 711, 710, 714, 712, 713, 720, 719, 717, 716, 715, 718, - 721, 722, 723, 726, 727, 725, 724, 728, 729, 730, 731, 734, 735, 733, 732, 739, - 736, 737, 738, 742, 740, 741, 743, 744, 745, 748, 749, 747, 746, 753, 750, 751, - 752, 756, 754, 755, 761, 758, 759, 760, 762, 757, 766, 767, 768, 764, 763, 765, - 769, 770, 772, 771, 776, 775, 774, 773, 778, 777, 782, 779, 780, 781, 788, 787, - 785, 784, 783, 786, 791, 792, 789, 790, 793, 795, 794, 796, 797, 798, 799, 800, - 801, 802, 803, 804, 805, 808, 807, 806, 812, 811, 809, 810, 813, 814, 631, 632, - 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, - 411, 412, 413, 819, 818, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, - 831, 832, 836, 834, 833, 835, 838, 837, 839, 840, 841, 842, 843, 844, 845, 846, - 847, 848, 849, 850, 852, 851, 853, 856, 855, 854, 857, 858, 859, 862, 860, 861, - 864, 865, 863, 831, 832, 866, 867, 868, 872, 869, 870, 871, 873, 875, 874, 876, - 878, 877, 879, 881, 880, 882, 884, 883, 844, 845, 851, 852, 853, 854, 855, 856, - 859, 857, 858, 862, 860, 861, 865, 864, 863, 846, 847, 848, 866, 867, 868, 872, - 870, 869, 871, 873, 874, 875, 877, 878, 876, 879, 880, 881, 884, 882, 883, 849, - 850, 885, 886, 887, 888, 889, 890, 891, 892, 893, 894, 895, 896, 897, 885, 886, - 887, 888, 889, 898, 899, 890, 891, 897, 900, 901, 902, 903, 904, 905, 906, 907, - 908, 909, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, - 924, 925, 926, 927, 928, 929, 930, 931, 932, 933, 934, 935, 936, 937, 938, 939, - 940, 941, 942, 943, 944, 945, 946, 947, 948, 944, 949, 950, 951, 952, 953, 954, - 955, 956, 957, 958, 954, 959, 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, - 970, 971, 972, 973, 974, 975, 976, 977, 978, 979, 980, 981, 982, 983, 984, 967, - 969, 985, 985, 986, 987, 975, 986, 987, 982, 988, 989, 988, 990, 991, 992, 990, - 991, 992, 993, 991, 993, 991, 996, 994, 991, 998, 995, 996, 994, 991, 997, 995, - 998, 993, 991, 993, 991, 999, 991, 1000, 1001, 999, 991, 1000, 993, 991, 993, 991, - 1002, 991, 1003, 1002, 991, 1003, 993, 991, 993, 991, 1004, 1005, 1004, 1005, 1004, 1005, - 1004, 1005, 1004, 1005, 1004, 1005, 1004, 1005, 1004, 1005, 1004, 1005, 1004, 1005, 1004, 1005, - 1004, 1005, 1004, 1005, 1004, 1005, 1004, 1005, 1004, 1005, 1004, 1006, 1004, 1006, 1004, 1006, - 1004, 1006, 1004, 1006, 1004, 1006, 1004, 1006, 1004, 1006, 1004, 1006, 1004, 1006, 1004, 1006, - 1004, 1006, 1004, 1006, 1004, 1006, 1004, 1006, 1004, 1006, 1007, 1008, 1009, 1022, 1023, 1010, - 1011, 1022, 1023, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1010, - 1011, 1024, 1022, 1023, 1012, 1013, 1007, 1008, 1009, 1026, 1025, 1022, 1027, 1023, 1010, 1028, - 1011, 1029, 1030, 1022, 1031, 1023, 1012, 1032, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, - 1021, 1022, 1023, 1010, 1011, 1024, 1022, 1023, 1012, 1013, 1033, 1034, 1035, 1036, 1010, 1011, - 1033, 1034, 1038, 1037, 1012, 1013, 1039, 1040, 1041, 1042, 1043, 1044, 1033, 1034, 1036, 1035, - 1010, 1011, 1046, 1045, 1033, 1034, 1038, 1037, 1012, 1013, 1033, 1034, 1036, 1035, 1010, 1011, - 1033, 1034, 1038, 1037, 1012, 1013, 1039, 1040, 1041, 1042, 1043, 1044, 1033, 1034, 1035, 1036, - 1010, 1011, 1033, 1034, 1038, 1037, 1012, 1013, 1022, 1023, 1047, 1048, 1022, 1023, 1050, 1049, - 1052, 1051, 1022, 1023, 1022, 1023, 1022, 1023, 1048, 1047, 1022, 1023, 1049, 1050, 1022, 1023, - 1022, 1023, 1033, 1034, 1047, 1048, 1033, 1034, 1050, 1049, 1033, 1034, 1033, 1034, 1033, 1034, - 1048, 1047, 1033, 1034, 1049, 1050, 1033, 1034, 1033, 1034, 1053, 1054, 1055, 1056, 1057, 1059, - 1058, 1060, 1061, 1062, 1022, 1064, 1063, 1065, 1066, 1023, 1067, 1068, 1069, 1070, 1071, 1058, - 1059, 1072, 1022, 1074, 1073, 1076, 1075, 1023, 1077, 1068, 1078, 1070, 1054, 1055, 1079, 1080, - 1081, 1082, 1058, 1059, 1060, 1083, 1022, 1084, 1085, 1087, 1086, 1023, 1067, 1068, 1069, 1070, - 1059, 1058, 1072, 1088, 1089, 1022, 1090, 1091, 1093, 1092, 1023, 1077, 1068, 1078, 1070, 1056, - 1094, 1057, 1059, 1058, 1060, 1061, 1062, 1022, 1063, 1064, 1065, 1066, 1023, 1067, 1068, 1069, - 1070, 1058, 1059, 1072, 1022, 1074, 1073, 1076, 1075, 1023, 1077, 1068, 1078, 1070, 1079, 1080, - 1094, 1081, 1082, 1059, 1058, 1060, 1083, 1022, 1084, 1085, 1087, 1086, 1023, 1067, 1068, 1069, - 1070, 1058, 1059, 1072, 1088, 1089, 1022, 1091, 1090, 1092, 1093, 1023, 1077, 1068, 1078, 1070, - 1095, 1096, 1098, 1097, 1099, 1100, 1101, 1060, 1102, 1104, 1103, 1067, 1068, 1069, 1070, 1072, - 1105, 1106, 1108, 1107, 1109, 1110, 1077, 1068, 1078, 1070, 1060, 1111, 1112, 1113, 1114, 1116, - 1115, 1067, 1068, 1069, 1070, 1117, 1119, 1118, 1120, 1121, 1123, 1122, 1125, 1124, 1126, 1127, - 1129, 1128, 1130, 1131, 1132, 1133, 1134, 1135, 1136, 1137, 1139, 1138, 1140, 1141, 1142, 1143, - 1144, 1162, 1156, 1153, 1148, 1151, 1154, 1161, 1160, 1157, 1146, 1159, 1150, 1145, 1155, 1152, - 1158, 1147, 1149, 1164, 1163, 1165, 1166, 1167, 1170, 1169, 1168, 1171, 1172, 1174, 1173, 1175, - 1176, 1178, 1177, 1179, 1182, 1181, 1180, 1183, 1184, 1185, 1186, 1188, 1187, 1072, 1077, 1068, - 1078, 1070, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1189, 1060, 1102, 1103, 1104, 1067, 1068, - 1069, 1070, 1072, 1105, 1106, 1108, 1107, 1110, 1109, 1077, 1068, 1078, 1070, 1190, 1191, 1060, - 1111, 1112, 1114, 1113, 1115, 1116, 1067, 1068, 1069, 1070, 1192, 1117, 1118, 1119, 1121, 1120, - 1123, 1122, 1125, 1124, 1126, 1127, 1128, 1129, 1131, 1130, 1132, 1133, 1134, 1135, 1137, 1136, - 1139, 1138, 1140, 1141, 1144, 1143, 1142, 1151, 1152, 1153, 1149, 1150, 1148, 1147, 1145, 1146, - 1154, 1159, 1160, 1161, 1157, 1158, 1156, 1162, 1155, 1163, 1164, 1165, 1166, 1167, 1168, 1169, - 1170, 1171, 1172, 1174, 1173, 1175, 1176, 1177, 1178, 1179, 1182, 1180, 1181, 1184, 1183, 1185, - 1186, 1187, 1188, 1072, 1077, 1068, 1078, 1070, 1022, 1023, 1193, 1022, 1023, 1193, 1022, 1023, - 1193, 1022, 1023, 1193, 1022, 1023, 1193, 1022, 1023, 1193, 1022, 1023, 1193, 1022, 1023, 1193, - 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1194, 1195, 1196, 1197, 1198, 1199, 1200, 1201, - 1202, 1203, 1204, 1205, 1206, 1207, 1208, 1209, 1210, 1211, 1212, 1213, 1214, 1215, 1216, 1217, - 1218, 1219, 1220, 1221, 1222, 1223, 1224, 1225, 1226, 1227, 1228, 1229, 1230, 1231, 1232, 1233, - 1234, 1235, 1236, 1237, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 1245, 1246, 1247, 1248, 1249, - 1250, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 1258, 1259, 1260, 1261, 1262, 1263, 1264, 1265, - 1266, 1267, 1268, 1269, 1270, 1271, 1272, 1273, 1274, 1275, 1276, 1277, 1278, 1279, 1280, 1281, - 1282, 1283, 1284, 1285, 1286, 1287, 1288, 1289, 1290, 1291, 1292, 1293, 1294, 1295, 1296, 1297, - 1298, 1299, 1300, 1301, 1302, 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 1311, 1312, 1313, - 1314, 1315, 1316, 1317, 1318, 1319, 1320, 1321, 1322, 1323, 1324, 1325, 1326, 1327, 1328, 1329, - 1330, 1331, 1332, 1333, 1334, 1335, 1336, 1337, 1338, 1339, 1340, 1341, 1342, 1343, 1344, 1345, - 1346, 1347, 1348, 1349, 1350, 1351, 1352, 1353, 1354, 1355, 1356, 1357, 1358, 1359, 1360, 1361, - 1362, 1363, 1364, 1365, 1366, 1367, 1368, 1369, 1370, 1371, 1372, 1373, 1374, 1375, 1376, 1377, - 1378, 1379, 1380, 1381, 1382, 1383, 1384, 1385, 1386, 1387, 1388, 1389, 1390, 1391, 1392, 1393, - 1394, 1395, 1396, 1397, 1398, 1399, 1400, 1401, 1402, 1403, 1404, 1405, 1406, 1407, 1408, 1409, - 1363, 1364, 1410, 1411, 1412, 1368, 1369, 1413, 1414, 1415, 1416, 1417, 1378, 1418, 1419, 1388, - 1387, 1389, 1363, 1364, 1368, 1369, 1370, 1371, 1372, 1373, 1375, 1374, 1376, 1378, 1379, 1380, - 1381, 1382, 1383, 1384, 1385, 1386, 1388, 1387, 1389, 1420, 1421, 1422, 1363, 1364, 1368, 1369, - 1423, 1378, 1418, 1419, 1388, 1387, 1389, 1424, 1425, 1426, 1427, 1428, 1429, 1430, 1431, 1432, - 1433, 1434, 1435, 1436, 1437, 1438, 1439, 1440, 1441, 1442, 1443, 1444, 1445, 1446, 1447, 1448, - 1449, 1450, 1451, 1452, 1453, 1454, 1455, 1456, 1457, 1458, 1459, 1460, 1461, 1462, 1463, 1464, - 1465, 1466, 1467, 1468, 1469, 1470, 1471, 1472, 1473, 1474, 1475, 1476, 1477, 1478, 1479, 1480, - 1481, 1482, 1483, 1484, 1485, 1486, 1487, 1488, 1489, 1490, 1491, 1492, 1493, 1494, 1495, 1496, - 1497, 1498, 1499, 1500, 1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508, 1509, 1510, 1511, 1512, - 1513, 1514, 1515, 1516, 1517, 1518, 1519, 1520, 1521, 1522, 1523, 1524, 1525, 1526, 1527, 1528, - 1529, 1530, 1531, 1533, 1532, 1535, 1534, 1537, 1536, 1538, 1539, 1255, 1256, 1257, 1258, 1259, - 1260, 1540, 1541, 1542, 1543, 1544, 1545, 1546, 1547, 1548, 1549, 1550, 1551, 1552, 1553, 1554, - 1267, 1268, 1269, 1270, 1271, 1272, 1555, 1556, 1557, 1277, 1278, 1279, 1558, 1286, 1287, 1288, - 1289, 1290, 1291, 1293, 1294, 1559, 1295, 1296, 1560, 1297, 1298, 1299, 1300, 1301, 1302, 1303, - 1304, 1305, 1306, 1307, 1561, 1562, 1563, 1564, 1565, 1566, 1567, 1568, 1308, 1569, 1309, 1310, - 1311, 1312, 1570, 1313, 1314, 1315, 1316, 1317, 1318, 1319, 1320, 1321, 1322, 1323, 1324, 1325, - 1326, 1327, 1328, 1329, 1330, 1331, 1332, 1333, 1334, 1335, 1336, 1337, 1338, 1339, 1340, 1341, - 1342, 1343, 1344, 1345, 1346, 1571, 1572, 1573, 1574, 1575, 1576, 1577, 1578, 1349, 1350, 1351, - 1352, 1579, 1580, 1581, 1582, 1583, 1584, 1585, 1585, 1586, 1586, 1587, 1587, 1588, 1589, 1590, - 1591, 1592, 1592, 1593, 1593, 1594, 1594, 1595, 1595, 1596, 1597, 1598, 1599, 1600, 1601, 1602, - 1603, 1604, 1605, 1606, 1607, 1608, 1609, 1610, 1611, 1612, 1613, 1614, 1615, 1616, 1617, 1618, - 1619, 1619, 1620, 1621, 1622, 1623, 1624, 1625, 1626, 1627, 1628, 1628, 1629, 1629, 1630, 1630, - 1631, 1631, 1632, 1632, 1633, 1633, 1634, 1634, 1635, 1635, 1636, 1636, 1637, 1637, 1638, 1639, - 1640, 1641, 1642, 1643, 1644, 1645, 1646, 1647, 1648, 1649, 1650, 1651, 1652, 1653, 1654, 1655, - 1656, 1657, 1658, 1659, 1659, 1660, 1660, 1661, 1661, 1661, 1662, 1663, 1661, 1664, 1664, 1202, - 1203, 1204, 1205, 1210, 1216, 1206, 1215, 1216, 1215, 1212, 1211, 1212, 1209, 1211, 1199, 1200, - 1207, 1216, 1195, 1196, 1197, 1198, 1201, 1215, 1216, 1215, 1214, 1213, 1208, 1214, 1213, 1216, - 1215, 1216, 1194, 1215, 1216, 1215, 1216, 1215, 1229, 1228, 1221, 1229, 1228, 1235, 1235, 1217, - 1218, 1219, 1220, 1226, 1225, 1234, 1217, 1218, 1219, 1220, 1225, 1226, 1234, 1227, 1227, 1230, - 1222, 1230, 1224, 1232, 1232, 1233, 1233, 1223, 1231, 1231, 1246, 1253, 1254, 1246, 1249, 1252, - 1250, 1251, 1246, 1253, 1254, 1236, 1237, 1238, 1239, 1246, 1249, 1252, 1250, 1251, 1253, 1254, - 1249, 1252, 1250, 1251, 1253, 1254, 1249, 1252, 1250, 1251, 1236, 1237, 1238, 1239, 1243, 1244, - 1245, 1248, 1240, 1241, 1242, 1247, 1243, 1244, 1245, 1248, 1240, 1241, 1242, 1247, 1273, 1277, - 1278, 1280, 1292, 1293, 1294, 1295, 1306, 1307, 1310, 1313, 1314, 1317, 1318, 1319, 1320, 1321, - 1322, 1331, 1332, 1333, 1334, 1357, 1273, 1277, 1278, 1281, 1292, 1293, 1294, 1295, 1307, 1310, - 1313, 1314, 1317, 1318, 1319, 1320, 1321, 1322, 1331, 1332, 1333, 1334, 1357, 1277, 1278, 1280, - 1292, 1293, 1294, 1295, 1307, 1310, 1313, 1314, 1317, 1318, 1319, 1320, 1321, 1322, 1331, 1332, - 1333, 1334, 1357, 1263, 1264, 1265, 1266, 1277, 1278, 1279, 1281, 1292, 1293, 1294, 1295, 1296, - 1305, 1307, 1310, 1313, 1314, 1317, 1318, 1319, 1320, 1321, 1322, 1331, 1332, 1333, 1334, 1357, - 1277, 1278, 1280, 1293, 1294, 1295, 1306, 1307, 1310, 1313, 1314, 1317, 1318, 1319, 1320, 1321, - 1322, 1331, 1332, 1333, 1334, 1353, 1357, 1277, 1278, 1281, 1293, 1294, 1295, 1307, 1310, 1313, - 1314, 1317, 1318, 1319, 1320, 1321, 1322, 1331, 1332, 1333, 1334, 1353, 1357, 1277, 1278, 1280, - 1293, 1294, 1295, 1307, 1310, 1313, 1314, 1317, 1318, 1319, 1320, 1321, 1322, 1331, 1332, 1333, - 1334, 1353, 1357, 1263, 1264, 1265, 1266, 1277, 1278, 1279, 1281, 1293, 1294, 1295, 1296, 1305, - 1307, 1310, 1313, 1314, 1317, 1318, 1319, 1320, 1321, 1322, 1331, 1332, 1333, 1334, 1353, 1357, - 1255, 1256, 1274, 1275, 1276, 1288, 1289, 1290, 1291, 1299, 1300, 1301, 1302, 1315, 1316, 1323, - 1324, 1325, 1326, 1327, 1328, 1329, 1330, 1347, 1348, 1352, 1355, 1358, 1315, 1316, 1323, 1324, - 1325, 1326, 1327, 1328, 1329, 1330, 1355, 1358, 1274, 1315, 1316, 1323, 1324, 1325, 1326, 1327, - 1328, 1329, 1330, 1355, 1358, 1286, 1287, 1297, 1298, 1303, 1304, 1315, 1316, 1323, 1324, 1325, - 1326, 1327, 1328, 1329, 1330, 1355, 1358, 1274, 1275, 1276, 1288, 1289, 1290, 1291, 1299, 1300, - 1301, 1302, 1315, 1316, 1323, 1324, 1325, 1326, 1327, 1328, 1329, 1330, 1347, 1348, 1352, 1354, - 1356, 1358, 1315, 1316, 1323, 1324, 1325, 1326, 1327, 1328, 1329, 1330, 1354, 1356, 1358, 1257, - 1258, 1259, 1260, 1269, 1270, 1271, 1272, 1274, 1315, 1316, 1323, 1324, 1325, 1326, 1327, 1328, - 1329, 1330, 1354, 1356, 1358, 1261, 1262, 1267, 1268, 1286, 1287, 1297, 1298, 1303, 1304, 1315, - 1316, 1323, 1324, 1325, 1326, 1327, 1328, 1329, 1330, 1354, 1356, 1358, 1282, 1308, 1311, 1335, - 1336, 1337, 1338, 1339, 1340, 1341, 1342, 1343, 1344, 1345, 1346, 1283, 1308, 1311, 1335, 1336, - 1337, 1338, 1339, 1340, 1341, 1342, 1343, 1344, 1345, 1346, 1284, 1309, 1312, 1335, 1336, 1337, - 1338, 1339, 1340, 1341, 1342, 1343, 1344, 1345, 1346, 1285, 1309, 1312, 1335, 1336, 1337, 1338, - 1339, 1340, 1341, 1342, 1343, 1344, 1345, 1346, 1282, 1308, 1311, 1335, 1336, 1337, 1338, 1339, - 1340, 1341, 1342, 1343, 1344, 1345, 1346, 1283, 1308, 1311, 1335, 1336, 1337, 1338, 1339, 1340, - 1341, 1342, 1343, 1344, 1345, 1346, 1284, 1309, 1312, 1335, 1336, 1337, 1338, 1339, 1340, 1341, - 1342, 1343, 1344, 1345, 1346, 1285, 1309, 1312, 1335, 1336, 1337, 1338, 1339, 1340, 1341, 1342, - 1343, 1344, 1345, 1346, 1349, 1350, 1351, 1349, 1350, 1351, 1349, 1350, 1351, 1349, 1350, 1351, - 1349, 1350, 1351, 1349, 1350, 1351, 1349, 1350, 1351, 1349, 1350, 1351, 1359, 1361, 1362, 1365, - 1369, 1377, 1378, 1379, 1380, 1388, 1387, 1389, 1361, 1362, 1366, 1370, 1377, 1378, 1379, 1380, - 1388, 1387, 1389, 1361, 1362, 1377, 1378, 1386, 1388, 1387, 1389, 1361, 1362, 1377, 1378, 1386, - 1388, 1387, 1389, 1360, 1367, 1368, 1375, 1374, 1385, 1388, 1387, 1389, 1374, 1375, 1385, 1388, - 1387, 1389, 1363, 1376, 1388, 1387, 1389, 1364, 1376, 1387, 1388, 1389, 1369, 1378, 1381, 1388, - 1387, 1389, 1371, 1378, 1381, 1387, 1388, 1389, 1378, 1388, 1387, 1389, 1378, 1388, 1387, 1389, - 1368, 1387, 1388, 1389, 1388, 1387, 1389, 1363, 1387, 1388, 1389, 1364, 1388, 1387, 1389, 1362, - 1369, 1377, 1378, 1388, 1387, 1389, 1362, 1373, 1377, 1378, 1387, 1388, 1389, 1362, 1377, 1378, - 1388, 1387, 1389, 1362, 1377, 1378, 1387, 1388, 1389, 1368, 1383, 1388, 1387, 1389, 1383, 1388, - 1387, 1389, 1363, 1384, 1387, 1388, 1389, 1364, 1384, 1387, 1388, 1389, 1369, 1378, 1387, 1388, - 1389, 1378, 1388, 1387, 1389, 1378, 1388, 1387, 1389, 1372, 1378, 1387, 1388, 1389, 1368, 1382, - 1388, 1387, 1389, 1382, 1387, 1388, 1389, 1363, 1387, 1388, 1389, 1364, 1387, 1388, 1389, 1369, - 1378, 1387, 1388, 1389, 1378, 1387, 1388, 1389, 1378, 1387, 1388, 1389, 1378, 1388, 1387, 1389, - 1368, 1418, 1387, 1388, 1389, 1387, 1388, 1389, 1363, 1388, 1387, 1389, 1364, 1388, 1387, 1389, - 1369, 1378, 1388, 1387, 1389, 1378, 1387, 1388, 1389, 1378, 1387, 1388, 1389, 1378, 1387, 1388, - 1389, 1368, 1419, 1388, 1387, 1389, 1387, 1388, 1389, 1363, 1387, 1388, 1389, 1364, 1387, 1388, - 1389, 1369, 1416, 1378, 1387, 1388, 1389, 1378, 1387, 1388, 1389, 1410, 1416, 1378, 1387, 1388, - 1389, 1378, 1387, 1388, 1389, 1368, 1414, 1388, 1387, 1389, 1388, 1387, 1389, 1363, 1412, 1413, - 1387, 1388, 1389, 1364, 1387, 1388, 1389, 1409, 1369, 1417, 1378, 1388, 1387, 1389, 1378, 1387, - 1388, 1389, 1390, 1391, 1392, 1393, 1394, 1396, 1397, 1398, 1399, 1401, 1402, 1403, 1404, 1411, - 1417, 1378, 1388, 1387, 1389, 1395, 1400, 1406, 1407, 1408, 1378, 1388, 1387, 1389, 1368, 1415, - 1387, 1388, 1389, 1388, 1387, 1389, 1405, 1363, 1388, 1387, 1389, 1364, 1387, 1388, 1389, 1369, - 1378, 1379, 1380, 1388, 1387, 1389, 1370, 1378, 1379, 1380, 1387, 1388, 1389, 1378, 1386, 1387, - 1388, 1389, 1378, 1386, 1388, 1387, 1389, 1368, 1375, 1374, 1385, 1388, 1387, 1389, 1374, 1375, - 1385, 1388, 1387, 1389, 1363, 1376, 1387, 1388, 1389, 1364, 1376, 1387, 1388, 1389, 1369, 1378, - 1381, 1388, 1387, 1389, 1371, 1378, 1381, 1387, 1388, 1389, 1378, 1387, 1388, 1389, 1378, 1387, - 1388, 1389, 1368, 1387, 1388, 1389, 1387, 1388, 1389, 1363, 1387, 1388, 1389, 1364, 1388, 1387, - 1389, 1369, 1378, 1388, 1387, 1389, 1373, 1378, 1387, 1388, 1389, 1378, 1387, 1388, 1389, 1378, - 1387, 1388, 1389, 1368, 1383, 1387, 1388, 1389, 1383, 1388, 1387, 1389, 1363, 1384, 1388, 1387, - 1389, 1364, 1384, 1388, 1387, 1389, 1369, 1378, 1388, 1387, 1389, 1378, 1387, 1388, 1389, 1378, - 1387, 1388, 1389, 1372, 1378, 1387, 1388, 1389, 1368, 1382, 1388, 1387, 1389, 1382, 1388, 1387, - 1389, 1363, 1388, 1387, 1389, 1364, 1387, 1388, 1389, 1369, 1378, 1387, 1388, 1389, 1378, 1388, - 1387, 1389, 1378, 1387, 1388, 1389, 1378, 1387, 1388, 1389, 1368, 1418, 1388, 1387, 1389, 1387, - 1388, 1389, 1363, 1388, 1387, 1389, 1364, 1387, 1388, 1389, 1369, 1378, 1387, 1388, 1389, 1378, - 1388, 1387, 1389, 1378, 1388, 1387, 1389, 1378, 1387, 1388, 1389, 1368, 1419, 1388, 1387, 1389, - 1387, 1388, 1389, 1363, 1388, 1387, 1389, 1364, 1388, 1387, 1389, 1369, 1378, 1388, 1387, 1389, - 1378, 1387, 1388, 1389, 1378, 1388, 1387, 1389, 1378, 1388, 1387, 1389, 1368, 1388, 1387, 1389, - 1388, 1387, 1389, 1363, 1387, 1388, 1389, 1364, 1387, 1388, 1389, 1420, 1421, 1422, 1369, 1378, - 1388, 1387, 1389, 1378, 1388, 1387, 1389, 1378, 1388, 1387, 1389, 1378, 1388, 1387, 1389, 1368, - 1387, 1388, 1389, 1388, 1387, 1389, 1363, 1387, 1388, 1389, 1364, 1423, 1388, 1387, 1389, 1427, - 1426, 1429, 1428, 1433, 1425, 1424, 1435, 1439, 1432, 1438, 1441, 1440, 1437, 1435, 1436, 1430, - 1431, 1434, 1442, 1443, 1446, 1499, 1505, 1449, 1499, 1508, 1445, 1500, 1504, 1448, 1500, 1507, - 1444, 1501, 1503, 1447, 1501, 1506, 1502, 1502, 1455, 1456, 1457, 1458, 1459, 1465, 1471, 1477, - 1483, 1489, 1451, 1452, 1453, 1454, 1460, 1466, 1472, 1478, 1484, 1490, 1461, 1467, 1473, 1479, - 1485, 1491, 1450, 1463, 1469, 1475, 1481, 1487, 1493, 1464, 1470, 1476, 1482, 1488, 1494, 1462, - 1468, 1474, 1480, 1486, 1492, 1495, 1509, 1510, 1498, 1513, 1496, 1511, 1497, 1514, 1512, 1537, - 1536, 1527, 1533, 1534, 1527, 1532, 1535, 1537, 1536, 1533, 1534, 1532, 1535, 1521, 1522, 1523, - 1524, 1525, 1526, 1537, 1515, 1516, 1517, 1518, 1519, 1520, 1528, 1529, 1530, 1531, 1536, 1527, - 1533, 1534, 1527, 1532, 1535, 1521, 1522, 1523, 1524, 1525, 1526, 1537, 1515, 1516, 1517, 1518, - 1519, 1520, 1536, 1533, 1534, 1532, 1535, 1527, 1527, 1528, 1529, 1530, 1531, 1527, 1527, 1554, - 1277, 1278, 1293, 1294, 1295, 1560, 1306, 1307, 1565, 1566, 1567, 1568, 1310, 1570, 1313, 1314, - 1317, 1318, 1319, 1320, 1321, 1322, 1331, 1332, 1333, 1334, 1583, 1277, 1278, 1293, 1294, 1295, - 1560, 1307, 1565, 1566, 1567, 1568, 1310, 1570, 1313, 1314, 1317, 1318, 1319, 1320, 1321, 1322, - 1331, 1332, 1333, 1334, 1583, 1277, 1278, 1293, 1294, 1295, 1560, 1307, 1565, 1566, 1567, 1568, - 1310, 1570, 1313, 1314, 1317, 1318, 1319, 1320, 1321, 1322, 1331, 1332, 1333, 1334, 1583, 1539, - 1548, 1549, 1277, 1278, 1279, 1293, 1294, 1295, 1296, 1560, 1305, 1307, 1565, 1566, 1567, 1568, - 1310, 1570, 1313, 1314, 1317, 1318, 1319, 1320, 1321, 1322, 1331, 1332, 1333, 1334, 1583, 1554, - 1277, 1278, 1293, 1294, 1295, 1560, 1306, 1307, 1565, 1566, 1567, 1568, 1310, 1570, 1313, 1314, - 1317, 1318, 1319, 1320, 1321, 1322, 1331, 1332, 1333, 1334, 1579, 1583, 1277, 1278, 1293, 1294, - 1295, 1560, 1307, 1565, 1566, 1567, 1568, 1310, 1570, 1313, 1314, 1317, 1318, 1319, 1320, 1321, - 1322, 1331, 1332, 1333, 1334, 1579, 1583, 1277, 1278, 1293, 1294, 1295, 1560, 1307, 1565, 1566, - 1567, 1568, 1310, 1570, 1313, 1314, 1317, 1318, 1319, 1320, 1321, 1322, 1331, 1332, 1333, 1334, - 1579, 1583, 1538, 1548, 1549, 1277, 1278, 1279, 1293, 1294, 1295, 1296, 1560, 1305, 1307, 1565, - 1566, 1567, 1568, 1310, 1570, 1313, 1314, 1317, 1318, 1319, 1320, 1321, 1322, 1331, 1332, 1333, - 1334, 1579, 1583, 1255, 1256, 1288, 1289, 1290, 1291, 1299, 1300, 1301, 1302, 1561, 1562, 1563, - 1564, 1570, 1315, 1316, 1323, 1324, 1325, 1326, 1327, 1328, 1329, 1330, 1575, 1576, 1577, 1578, - 1352, 1581, 1584, 1561, 1562, 1563, 1564, 1570, 1315, 1316, 1323, 1324, 1325, 1326, 1327, 1328, - 1329, 1330, 1581, 1584, 1561, 1562, 1563, 1564, 1570, 1315, 1316, 1323, 1324, 1325, 1326, 1327, - 1328, 1329, 1330, 1581, 1584, 1546, 1547, 1286, 1287, 1297, 1298, 1303, 1304, 1561, 1562, 1563, - 1564, 1570, 1315, 1316, 1323, 1324, 1325, 1326, 1327, 1328, 1329, 1330, 1571, 1572, 1573, 1574, - 1581, 1584, 1288, 1289, 1290, 1291, 1299, 1300, 1301, 1302, 1561, 1562, 1563, 1564, 1570, 1315, - 1316, 1323, 1324, 1325, 1326, 1327, 1328, 1329, 1330, 1575, 1576, 1577, 1578, 1352, 1580, 1582, - 1584, 1561, 1562, 1563, 1564, 1570, 1315, 1316, 1323, 1324, 1325, 1326, 1327, 1328, 1329, 1330, - 1580, 1582, 1584, 1257, 1258, 1259, 1260, 1269, 1270, 1271, 1272, 1561, 1562, 1563, 1564, 1570, - 1315, 1316, 1323, 1324, 1325, 1326, 1327, 1328, 1329, 1330, 1580, 1582, 1584, 1546, 1547, 1267, - 1268, 1286, 1287, 1297, 1298, 1303, 1304, 1561, 1562, 1563, 1564, 1570, 1315, 1316, 1323, 1324, - 1325, 1326, 1327, 1328, 1329, 1330, 1571, 1572, 1573, 1574, 1580, 1582, 1584, 1558, 1559, 1560, - 1308, 1569, 1311, 1570, 1335, 1336, 1337, 1338, 1339, 1340, 1341, 1342, 1343, 1344, 1345, 1346, - 1559, 1560, 1308, 1569, 1311, 1570, 1335, 1336, 1337, 1338, 1339, 1340, 1341, 1342, 1343, 1344, - 1345, 1346, 1560, 1569, 1309, 1312, 1570, 1335, 1336, 1337, 1338, 1339, 1340, 1341, 1342, 1343, - 1344, 1345, 1346, 1560, 1569, 1309, 1312, 1570, 1335, 1336, 1337, 1338, 1339, 1340, 1341, 1342, - 1343, 1344, 1345, 1346, 1558, 1559, 1560, 1308, 1569, 1311, 1570, 1335, 1336, 1337, 1338, 1339, - 1340, 1341, 1342, 1343, 1344, 1345, 1346, 1559, 1560, 1308, 1569, 1311, 1570, 1335, 1336, 1337, - 1338, 1339, 1340, 1341, 1342, 1343, 1344, 1345, 1346, 1560, 1309, 1569, 1312, 1570, 1335, 1336, - 1337, 1338, 1339, 1340, 1341, 1342, 1343, 1344, 1345, 1346, 1560, 1569, 1309, 1312, 1570, 1335, - 1336, 1337, 1338, 1339, 1340, 1341, 1342, 1343, 1344, 1345, 1346, 1570, 1349, 1350, 1351, 1570, - 1349, 1350, 1351, 1570, 1349, 1350, 1351, 1540, 1541, 1542, 1543, 1544, 1545, 1550, 1551, 1552, - 1553, 1555, 1556, 1557, 1570, 1349, 1350, 1351, 1570, 1349, 1350, 1351, 1570, 1349, 1350, 1351, - 1570, 1349, 1350, 1351, 1540, 1541, 1542, 1543, 1544, 1545, 1550, 1551, 1552, 1553, 1555, 1556, - 1557, 1570, 1349, 1350, 1351, + 412, 413, 469, 470, 471, 468, 358, 359, 360, 365, 364, 363, 362, 361, 366, 367, + 368, 369, 370, 371, 382, 381, 380, 379, 378, 377, 376, 374, 373, 372, 375, 383, + 384, 385, 386, 394, 393, 392, 391, 389, 390, 388, 387, 395, 396, 397, 398, 399, + 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 472, 415, + 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 428, 427, 429, 430, 431, + 432, 434, 433, 435, 436, 437, 438, 439, 440, 395, 396, 397, 398, 399, 400, 401, + 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 473, 472, 442, 443, + 444, 445, 446, 447, 448, 449, 450, 451, 453, 452, 455, 454, 456, 457, 459, 458, + 461, 460, 463, 462, 464, 465, 466, 467, 395, 396, 397, 398, 399, 400, 401, 402, + 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 474, 395, 396, 397, 398, + 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 469, + 470, 475, 474, 477, 476, 478, 479, 480, 481, 483, 482, 484, 485, 486, 487, 488, + 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, + 505, 506, 507, 508, 510, 509, 511, 512, 513, 514, 515, 516, 517, 518, 519, 521, + 520, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, + 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, + 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, + 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, + 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, + 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 477, 476, + 478, 479, 480, 481, 483, 482, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, + 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, + 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, + 527, 526, 528, 529, 530, 531, 532, 615, 534, 535, 536, 537, 538, 539, 540, 541, + 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, + 558, 559, 616, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, + 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, + 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 617, 618, 619, 620, + 365, 364, 363, 361, 362, 621, 622, 623, 624, 370, 371, 382, 380, 379, 381, 378, + 375, 376, 377, 374, 373, 372, 625, 626, 627, 394, 393, 390, 391, 392, 389, 388, + 387, 628, 629, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, + 408, 409, 410, 411, 412, 413, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, + 640, 641, 642, 644, 643, 645, 646, 647, 648, 649, 650, 628, 629, 395, 396, 397, + 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, + 651, 630, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, + 667, 666, 669, 668, 670, 671, 628, 629, 395, 396, 397, 398, 399, 400, 401, 402, + 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 672, 673, 677, 675, 674, + 676, 680, 679, 678, 681, 682, 683, 684, 692, 690, 687, 688, 689, 691, 685, 686, + 698, 694, 700, 697, 696, 693, 699, 695, 702, 701, 704, 703, 705, 711, 709, 710, + 708, 706, 707, 713, 712, 714, 718, 716, 717, 715, 719, 721, 720, 722, 724, 725, + 726, 723, 730, 729, 727, 728, 733, 731, 734, 732, 740, 737, 735, 738, 739, 736, + 743, 744, 742, 741, 745, 746, 747, 752, 748, 753, 749, 750, 751, 759, 757, 755, + 754, 758, 756, 760, 761, 762, 763, 765, 766, 764, 767, 771, 773, 769, 768, 772, + 770, 777, 775, 779, 776, 778, 774, 780, 784, 783, 782, 781, 789, 787, 788, 785, + 786, 791, 790, 792, 793, 794, 795, 797, 799, 798, 796, 802, 800, 803, 801, 805, + 804, 628, 629, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, + 408, 409, 410, 411, 412, 413, 806, 672, 618, 619, 620, 365, 364, 363, 361, 362, + 621, 622, 623, 624, 371, 370, 382, 380, 379, 378, 376, 375, 374, 372, 373, 377, + 381, 625, 626, 627, 394, 392, 393, 391, 390, 387, 388, 389, 628, 629, 395, 396, + 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, + 413, 807, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, + 645, 646, 647, 648, 649, 650, 628, 629, 395, 396, 397, 398, 399, 400, 401, 402, + 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 808, 807, 652, 653, 654, + 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 667, 666, 669, 668, 670, + 671, 628, 629, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, + 408, 409, 410, 411, 412, 413, 809, 673, 677, 675, 674, 676, 680, 678, 679, 681, + 682, 683, 684, 690, 691, 692, 687, 688, 686, 685, 689, 700, 699, 698, 696, 695, + 693, 694, 697, 701, 702, 705, 704, 703, 711, 707, 708, 709, 706, 710, 714, 712, + 713, 717, 716, 715, 718, 721, 722, 720, 719, 726, 725, 724, 723, 728, 729, 730, + 727, 734, 733, 732, 731, 739, 740, 736, 737, 738, 735, 742, 741, 743, 744, 745, + 747, 746, 753, 750, 751, 752, 748, 749, 758, 759, 756, 754, 755, 757, 761, 760, + 763, 762, 764, 765, 766, 767, 772, 771, 769, 768, 770, 773, 778, 776, 777, 775, + 774, 779, 782, 780, 784, 781, 783, 786, 787, 785, 789, 788, 791, 790, 792, 793, + 794, 795, 799, 797, 798, 796, 802, 800, 801, 803, 804, 805, 628, 629, 395, 396, + 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, + 413, 810, 809, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, + 824, 827, 825, 826, 830, 829, 828, 831, 832, 834, 833, 835, 836, 837, 838, 839, + 840, 841, 844, 843, 842, 845, 846, 847, 848, 849, 850, 851, 852, 853, 856, 854, + 855, 822, 823, 857, 858, 859, 862, 861, 860, 863, 865, 866, 864, 867, 868, 869, + 870, 871, 872, 874, 875, 873, 835, 836, 843, 844, 842, 845, 846, 847, 849, 850, + 848, 851, 852, 853, 854, 855, 856, 837, 838, 839, 857, 858, 859, 862, 860, 861, + 863, 866, 865, 864, 867, 868, 869, 871, 870, 872, 874, 873, 875, 840, 841, 876, + 877, 878, 879, 880, 881, 882, 883, 884, 885, 886, 887, 888, 876, 877, 878, 879, + 880, 889, 890, 881, 882, 888, 891, 892, 893, 894, 895, 896, 897, 898, 899, 900, + 901, 902, 903, 904, 905, 906, 907, 908, 909, 910, 911, 912, 913, 914, 915, 916, + 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, 930, 931, 932, + 933, 934, 935, 936, 937, 938, 939, 935, 940, 941, 942, 943, 944, 945, 946, 947, + 948, 949, 945, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, + 963, 964, 965, 966, 967, 968, 969, 970, 971, 972, 973, 974, 975, 958, 960, 976, + 976, 977, 978, 966, 977, 978, 973, 979, 980, 979, 981, 982, 983, 981, 982, 983, + 984, 982, 984, 982, 985, 987, 982, 986, 989, 987, 985, 982, 988, 986, 989, 984, + 982, 984, 982, 990, 982, 991, 992, 990, 982, 991, 984, 982, 984, 982, 993, 982, + 994, 993, 982, 994, 984, 982, 984, 982, 995, 996, 995, 996, 995, 996, 995, 996, + 995, 996, 995, 996, 995, 996, 995, 996, 995, 996, 995, 996, 995, 996, 995, 996, + 995, 996, 995, 996, 995, 996, 995, 996, 995, 997, 995, 997, 995, 997, 995, 997, + 995, 997, 995, 997, 995, 997, 995, 997, 995, 997, 995, 997, 995, 997, 995, 997, + 995, 997, 995, 997, 995, 997, 995, 997, 998, 999, 1000, 1013, 1014, 1001, 1002, 1013, + 1014, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1001, 1002, 1015, + 1013, 1014, 1003, 1004, 998, 999, 1000, 1017, 1016, 1013, 1018, 1014, 1001, 1019, 1002, 1021, + 1020, 1013, 1022, 1014, 1003, 1023, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, + 1014, 1001, 1002, 1015, 1013, 1014, 1003, 1004, 1024, 1025, 1026, 1027, 1001, 1002, 1024, 1025, + 1029, 1028, 1003, 1004, 1030, 1031, 1032, 1033, 1034, 1035, 1024, 1025, 1027, 1026, 1001, 1002, + 1037, 1036, 1024, 1025, 1029, 1028, 1003, 1004, 1024, 1025, 1027, 1026, 1001, 1002, 1024, 1025, + 1028, 1029, 1003, 1004, 1030, 1031, 1032, 1033, 1034, 1035, 1024, 1025, 1026, 1027, 1001, 1002, + 1024, 1025, 1029, 1028, 1003, 1004, 1013, 1014, 1038, 1039, 1013, 1014, 1040, 1041, 1042, 1043, + 1013, 1014, 1013, 1014, 1013, 1014, 1038, 1039, 1013, 1014, 1041, 1040, 1013, 1014, 1013, 1014, + 1024, 1025, 1039, 1038, 1024, 1025, 1041, 1040, 1024, 1025, 1024, 1025, 1024, 1025, 1039, 1038, + 1024, 1025, 1040, 1041, 1024, 1025, 1024, 1025, 1044, 1045, 1046, 1047, 1048, 1050, 1049, 1051, + 1052, 1053, 1013, 1055, 1054, 1057, 1056, 1014, 1058, 1059, 1060, 1061, 1062, 1049, 1050, 1063, + 1013, 1064, 1065, 1067, 1066, 1014, 1068, 1059, 1069, 1061, 1045, 1046, 1070, 1071, 1072, 1073, + 1050, 1049, 1051, 1074, 1013, 1075, 1076, 1078, 1077, 1014, 1058, 1059, 1060, 1061, 1050, 1049, + 1063, 1079, 1080, 1013, 1082, 1081, 1083, 1084, 1014, 1068, 1059, 1069, 1061, 1047, 1085, 1048, + 1050, 1049, 1051, 1052, 1053, 1013, 1055, 1054, 1057, 1056, 1014, 1058, 1059, 1060, 1061, 1050, + 1049, 1063, 1013, 1064, 1065, 1066, 1067, 1014, 1068, 1059, 1069, 1061, 1070, 1071, 1085, 1072, + 1073, 1050, 1049, 1051, 1074, 1013, 1075, 1076, 1077, 1078, 1014, 1058, 1059, 1060, 1061, 1050, + 1049, 1063, 1079, 1080, 1013, 1081, 1082, 1084, 1083, 1014, 1068, 1059, 1069, 1061, 1086, 1087, + 1088, 1089, 1091, 1090, 1092, 1051, 1093, 1094, 1095, 1058, 1059, 1060, 1061, 1063, 1096, 1097, + 1099, 1098, 1100, 1101, 1068, 1059, 1069, 1061, 1051, 1102, 1103, 1105, 1104, 1106, 1107, 1058, + 1059, 1060, 1061, 1110, 1108, 1109, 1111, 1112, 1114, 1113, 1115, 1116, 1118, 1117, 1120, 1119, + 1121, 1122, 1123, 1124, 1126, 1125, 1127, 1128, 1130, 1129, 1132, 1131, 1135, 1133, 1134, 1136, + 1151, 1144, 1150, 1140, 1147, 1139, 1148, 1137, 1153, 1152, 1141, 1149, 1146, 1142, 1143, 1145, + 1138, 1155, 1154, 1156, 1157, 1158, 1160, 1161, 1159, 1162, 1163, 1164, 1165, 1166, 1167, 1168, + 1169, 1170, 1173, 1172, 1171, 1175, 1174, 1177, 1176, 1178, 1179, 1063, 1068, 1059, 1069, 1061, + 1086, 1087, 1089, 1088, 1090, 1091, 1092, 1180, 1051, 1093, 1094, 1095, 1058, 1059, 1060, 1061, + 1063, 1096, 1097, 1098, 1099, 1100, 1101, 1068, 1059, 1069, 1061, 1181, 1182, 1051, 1102, 1103, + 1105, 1104, 1107, 1106, 1058, 1059, 1060, 1061, 1183, 1110, 1109, 1108, 1111, 1112, 1114, 1113, + 1115, 1116, 1117, 1118, 1119, 1120, 1122, 1121, 1123, 1124, 1125, 1126, 1128, 1127, 1129, 1130, + 1131, 1132, 1133, 1134, 1135, 1144, 1145, 1143, 1149, 1150, 1148, 1151, 1152, 1153, 1147, 1142, + 1140, 1139, 1137, 1136, 1138, 1141, 1146, 1154, 1155, 1156, 1157, 1158, 1159, 1160, 1161, 1163, + 1162, 1164, 1165, 1167, 1166, 1168, 1169, 1170, 1171, 1172, 1173, 1174, 1175, 1176, 1177, 1178, + 1179, 1063, 1068, 1059, 1069, 1061, 1013, 1014, 1184, 1013, 1014, 1184, 1013, 1014, 1184, 1013, + 1014, 1184, 1013, 1014, 1184, 1013, 1014, 1184, 1013, 1014, 1184, 1013, 1014, 1184, 1184, 1184, + 1184, 1184, 1184, 1184, 1184, 1184, 1185, 1186, 1187, 1188, 1189, 1190, 1191, 1192, 1193, 1194, + 1195, 1196, 1197, 1198, 1199, 1200, 1201, 1202, 1203, 1204, 1205, 1206, 1207, 1208, 1209, 1210, + 1211, 1212, 1213, 1214, 1215, 1216, 1217, 1218, 1219, 1220, 1221, 1222, 1223, 1224, 1225, 1226, + 1227, 1228, 1229, 1230, 1231, 1232, 1233, 1234, 1235, 1236, 1237, 1238, 1239, 1240, 1241, 1242, + 1243, 1244, 1245, 1246, 1247, 1248, 1249, 1250, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 1258, + 1259, 1260, 1261, 1262, 1263, 1264, 1265, 1266, 1267, 1268, 1269, 1270, 1271, 1272, 1273, 1274, + 1275, 1276, 1277, 1278, 1279, 1280, 1281, 1282, 1283, 1284, 1285, 1286, 1287, 1288, 1289, 1290, + 1291, 1292, 1293, 1294, 1295, 1296, 1297, 1298, 1299, 1300, 1301, 1302, 1303, 1304, 1305, 1306, + 1307, 1308, 1309, 1310, 1311, 1312, 1313, 1314, 1315, 1316, 1317, 1318, 1319, 1320, 1321, 1322, + 1323, 1324, 1325, 1326, 1327, 1328, 1329, 1330, 1331, 1332, 1333, 1334, 1335, 1336, 1337, 1338, + 1339, 1340, 1341, 1342, 1343, 1344, 1345, 1346, 1347, 1348, 1349, 1350, 1351, 1352, 1353, 1354, + 1355, 1356, 1357, 1358, 1359, 1360, 1361, 1362, 1363, 1364, 1365, 1366, 1367, 1368, 1369, 1370, + 1371, 1372, 1373, 1374, 1375, 1376, 1377, 1378, 1379, 1380, 1381, 1382, 1383, 1384, 1385, 1386, + 1387, 1388, 1389, 1390, 1391, 1392, 1393, 1394, 1395, 1396, 1397, 1398, 1399, 1400, 1354, 1355, + 1401, 1402, 1403, 1359, 1360, 1404, 1405, 1406, 1407, 1408, 1369, 1409, 1410, 1379, 1378, 1380, + 1354, 1355, 1359, 1360, 1361, 1362, 1363, 1364, 1366, 1365, 1367, 1369, 1370, 1371, 1372, 1373, + 1374, 1375, 1376, 1377, 1379, 1378, 1380, 1411, 1412, 1413, 1354, 1355, 1359, 1360, 1414, 1369, + 1409, 1410, 1379, 1378, 1380, 1415, 1416, 1417, 1418, 1419, 1420, 1421, 1422, 1423, 1424, 1425, + 1426, 1427, 1428, 1429, 1430, 1431, 1432, 1433, 1434, 1435, 1436, 1437, 1438, 1439, 1440, 1441, + 1442, 1443, 1444, 1445, 1446, 1447, 1448, 1449, 1450, 1451, 1452, 1453, 1454, 1455, 1456, 1457, + 1458, 1459, 1460, 1461, 1462, 1463, 1464, 1465, 1466, 1467, 1468, 1469, 1470, 1471, 1472, 1473, + 1474, 1475, 1476, 1477, 1478, 1479, 1480, 1481, 1482, 1483, 1484, 1485, 1486, 1487, 1488, 1489, + 1490, 1491, 1492, 1493, 1494, 1495, 1496, 1497, 1498, 1499, 1500, 1501, 1502, 1503, 1504, 1505, + 1506, 1507, 1508, 1509, 1510, 1511, 1512, 1513, 1514, 1515, 1516, 1517, 1518, 1519, 1520, 1521, + 1522, 1524, 1523, 1526, 1525, 1528, 1527, 1529, 1530, 1246, 1247, 1248, 1249, 1250, 1251, 1531, + 1532, 1533, 1534, 1535, 1536, 1537, 1538, 1539, 1540, 1541, 1542, 1543, 1544, 1545, 1258, 1259, + 1260, 1261, 1262, 1263, 1546, 1547, 1548, 1268, 1269, 1270, 1549, 1277, 1278, 1279, 1280, 1281, + 1282, 1284, 1285, 1550, 1286, 1287, 1551, 1288, 1289, 1290, 1291, 1292, 1293, 1294, 1295, 1296, + 1297, 1298, 1552, 1553, 1554, 1555, 1556, 1557, 1558, 1559, 1299, 1560, 1300, 1301, 1302, 1303, + 1561, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 1311, 1312, 1313, 1314, 1315, 1316, 1317, 1318, + 1319, 1320, 1321, 1322, 1323, 1324, 1325, 1326, 1327, 1328, 1329, 1330, 1331, 1332, 1333, 1334, + 1335, 1336, 1337, 1562, 1563, 1564, 1565, 1566, 1567, 1568, 1569, 1340, 1341, 1342, 1343, 1570, + 1571, 1572, 1573, 1574, 1575, 1576, 1576, 1577, 1577, 1578, 1578, 1579, 1580, 1581, 1582, 1583, + 1583, 1584, 1584, 1585, 1585, 1586, 1586, 1587, 1588, 1589, 1590, 1591, 1592, 1593, 1594, 1595, + 1596, 1597, 1598, 1599, 1600, 1601, 1602, 1603, 1604, 1605, 1606, 1607, 1608, 1609, 1610, 1610, + 1611, 1612, 1613, 1614, 1615, 1616, 1617, 1618, 1619, 1619, 1620, 1620, 1621, 1621, 1622, 1622, + 1623, 1623, 1624, 1624, 1625, 1625, 1626, 1626, 1627, 1627, 1628, 1628, 1629, 1630, 1631, 1632, + 1633, 1634, 1635, 1636, 1637, 1638, 1639, 1640, 1641, 1642, 1643, 1644, 1645, 1646, 1647, 1648, + 1649, 1650, 1650, 1651, 1651, 1652, 1652, 1652, 1653, 1654, 1652, 1655, 1655, 1193, 1194, 1195, + 1196, 1201, 1207, 1197, 1206, 1207, 1206, 1203, 1202, 1203, 1200, 1202, 1190, 1191, 1198, 1207, + 1186, 1187, 1188, 1189, 1192, 1206, 1207, 1206, 1205, 1204, 1199, 1205, 1204, 1207, 1206, 1207, + 1185, 1206, 1207, 1206, 1207, 1206, 1220, 1219, 1212, 1220, 1219, 1226, 1226, 1208, 1209, 1210, + 1211, 1217, 1216, 1225, 1208, 1209, 1210, 1211, 1216, 1217, 1225, 1218, 1218, 1221, 1213, 1221, + 1215, 1223, 1223, 1224, 1224, 1214, 1222, 1222, 1237, 1244, 1245, 1237, 1241, 1243, 1240, 1242, + 1237, 1244, 1245, 1227, 1228, 1229, 1230, 1237, 1241, 1243, 1240, 1242, 1244, 1245, 1241, 1243, + 1240, 1242, 1244, 1245, 1241, 1243, 1240, 1242, 1227, 1228, 1229, 1230, 1234, 1235, 1236, 1239, + 1231, 1232, 1233, 1238, 1234, 1235, 1236, 1239, 1231, 1232, 1233, 1238, 1264, 1268, 1269, 1272, + 1283, 1284, 1285, 1286, 1297, 1298, 1301, 1304, 1305, 1308, 1309, 1310, 1311, 1312, 1313, 1322, + 1323, 1324, 1325, 1348, 1264, 1268, 1269, 1271, 1283, 1284, 1285, 1286, 1298, 1301, 1304, 1305, + 1308, 1309, 1310, 1311, 1312, 1313, 1322, 1323, 1324, 1325, 1348, 1268, 1269, 1272, 1283, 1284, + 1285, 1286, 1298, 1301, 1304, 1305, 1308, 1309, 1310, 1311, 1312, 1313, 1322, 1323, 1324, 1325, + 1348, 1254, 1255, 1256, 1257, 1268, 1269, 1270, 1271, 1283, 1284, 1285, 1286, 1287, 1296, 1298, + 1301, 1304, 1305, 1308, 1309, 1310, 1311, 1312, 1313, 1322, 1323, 1324, 1325, 1348, 1268, 1269, + 1272, 1284, 1285, 1286, 1297, 1298, 1301, 1304, 1305, 1308, 1309, 1310, 1311, 1312, 1313, 1322, + 1323, 1324, 1325, 1344, 1348, 1268, 1269, 1271, 1284, 1285, 1286, 1298, 1301, 1304, 1305, 1308, + 1309, 1310, 1311, 1312, 1313, 1322, 1323, 1324, 1325, 1344, 1348, 1268, 1269, 1272, 1284, 1285, + 1286, 1298, 1301, 1304, 1305, 1308, 1309, 1310, 1311, 1312, 1313, 1322, 1323, 1324, 1325, 1344, + 1348, 1254, 1255, 1256, 1257, 1268, 1269, 1270, 1271, 1284, 1285, 1286, 1287, 1296, 1298, 1301, + 1304, 1305, 1308, 1309, 1310, 1311, 1312, 1313, 1322, 1323, 1324, 1325, 1344, 1348, 1246, 1247, + 1265, 1266, 1267, 1279, 1280, 1281, 1282, 1290, 1291, 1292, 1293, 1306, 1307, 1314, 1315, 1316, + 1317, 1318, 1319, 1320, 1321, 1338, 1339, 1343, 1346, 1349, 1306, 1307, 1314, 1315, 1316, 1317, + 1318, 1319, 1320, 1321, 1346, 1349, 1265, 1306, 1307, 1314, 1315, 1316, 1317, 1318, 1319, 1320, + 1321, 1346, 1349, 1277, 1278, 1288, 1289, 1294, 1295, 1306, 1307, 1314, 1315, 1316, 1317, 1318, + 1319, 1320, 1321, 1346, 1349, 1265, 1266, 1267, 1279, 1280, 1281, 1282, 1290, 1291, 1292, 1293, + 1306, 1307, 1314, 1315, 1316, 1317, 1318, 1319, 1320, 1321, 1338, 1339, 1343, 1345, 1347, 1349, + 1306, 1307, 1314, 1315, 1316, 1317, 1318, 1319, 1320, 1321, 1345, 1347, 1349, 1248, 1249, 1250, + 1251, 1260, 1261, 1262, 1263, 1265, 1306, 1307, 1314, 1315, 1316, 1317, 1318, 1319, 1320, 1321, + 1345, 1347, 1349, 1252, 1253, 1258, 1259, 1277, 1278, 1288, 1289, 1294, 1295, 1306, 1307, 1314, + 1315, 1316, 1317, 1318, 1319, 1320, 1321, 1345, 1347, 1349, 1273, 1299, 1302, 1326, 1327, 1328, + 1329, 1330, 1331, 1332, 1333, 1334, 1335, 1336, 1337, 1274, 1299, 1302, 1326, 1327, 1328, 1329, + 1330, 1331, 1332, 1333, 1334, 1335, 1336, 1337, 1275, 1300, 1303, 1326, 1327, 1328, 1329, 1330, + 1331, 1332, 1333, 1334, 1335, 1336, 1337, 1276, 1300, 1303, 1326, 1327, 1328, 1329, 1330, 1331, + 1332, 1333, 1334, 1335, 1336, 1337, 1273, 1299, 1302, 1326, 1327, 1328, 1329, 1330, 1331, 1332, + 1333, 1334, 1335, 1336, 1337, 1274, 1299, 1302, 1326, 1327, 1328, 1329, 1330, 1331, 1332, 1333, + 1334, 1335, 1336, 1337, 1275, 1300, 1303, 1326, 1327, 1328, 1329, 1330, 1331, 1332, 1333, 1334, + 1335, 1336, 1337, 1276, 1300, 1303, 1326, 1327, 1328, 1329, 1330, 1331, 1332, 1333, 1334, 1335, + 1336, 1337, 1340, 1341, 1342, 1340, 1341, 1342, 1340, 1341, 1342, 1340, 1341, 1342, 1340, 1341, + 1342, 1340, 1341, 1342, 1340, 1341, 1342, 1340, 1341, 1342, 1350, 1352, 1353, 1356, 1360, 1368, + 1369, 1370, 1371, 1379, 1378, 1380, 1352, 1353, 1357, 1361, 1368, 1369, 1370, 1371, 1378, 1379, + 1380, 1352, 1353, 1368, 1369, 1377, 1379, 1378, 1380, 1352, 1353, 1368, 1369, 1377, 1378, 1379, + 1380, 1351, 1358, 1359, 1366, 1365, 1376, 1379, 1378, 1380, 1365, 1366, 1376, 1379, 1378, 1380, + 1354, 1367, 1378, 1379, 1380, 1355, 1367, 1378, 1379, 1380, 1360, 1369, 1372, 1379, 1378, 1380, + 1362, 1369, 1372, 1379, 1378, 1380, 1369, 1379, 1378, 1380, 1369, 1379, 1378, 1380, 1359, 1378, + 1379, 1380, 1379, 1378, 1380, 1354, 1378, 1379, 1380, 1355, 1379, 1378, 1380, 1353, 1360, 1368, + 1369, 1379, 1378, 1380, 1353, 1364, 1368, 1369, 1378, 1379, 1380, 1353, 1368, 1369, 1379, 1378, + 1380, 1353, 1368, 1369, 1378, 1379, 1380, 1359, 1374, 1379, 1378, 1380, 1374, 1379, 1378, 1380, + 1354, 1375, 1378, 1379, 1380, 1355, 1375, 1378, 1379, 1380, 1360, 1369, 1378, 1379, 1380, 1369, + 1379, 1378, 1380, 1369, 1378, 1379, 1380, 1363, 1369, 1378, 1379, 1380, 1359, 1373, 1379, 1378, + 1380, 1373, 1378, 1379, 1380, 1354, 1378, 1379, 1380, 1355, 1378, 1379, 1380, 1360, 1369, 1378, + 1379, 1380, 1369, 1378, 1379, 1380, 1369, 1378, 1379, 1380, 1369, 1379, 1378, 1380, 1359, 1409, + 1378, 1379, 1380, 1378, 1379, 1380, 1354, 1379, 1378, 1380, 1355, 1379, 1378, 1380, 1360, 1369, + 1379, 1378, 1380, 1369, 1378, 1379, 1380, 1369, 1378, 1379, 1380, 1369, 1378, 1379, 1380, 1359, + 1410, 1378, 1379, 1380, 1378, 1379, 1380, 1354, 1378, 1379, 1380, 1355, 1378, 1379, 1380, 1360, + 1407, 1369, 1378, 1379, 1380, 1369, 1378, 1379, 1380, 1401, 1407, 1369, 1378, 1379, 1380, 1369, + 1378, 1379, 1380, 1359, 1405, 1379, 1378, 1380, 1379, 1378, 1380, 1354, 1403, 1404, 1378, 1379, + 1380, 1355, 1378, 1379, 1380, 1400, 1360, 1408, 1369, 1379, 1378, 1380, 1369, 1378, 1379, 1380, + 1381, 1382, 1383, 1384, 1385, 1387, 1388, 1389, 1390, 1392, 1393, 1394, 1395, 1402, 1408, 1369, + 1379, 1378, 1380, 1386, 1391, 1397, 1398, 1399, 1369, 1379, 1378, 1380, 1359, 1406, 1378, 1379, + 1380, 1379, 1378, 1380, 1396, 1354, 1379, 1378, 1380, 1355, 1378, 1379, 1380, 1360, 1369, 1370, + 1371, 1379, 1378, 1380, 1361, 1369, 1370, 1371, 1378, 1379, 1380, 1369, 1377, 1378, 1379, 1380, + 1369, 1377, 1379, 1378, 1380, 1359, 1366, 1365, 1376, 1379, 1378, 1380, 1365, 1366, 1376, 1379, + 1378, 1380, 1354, 1367, 1378, 1379, 1380, 1355, 1367, 1378, 1379, 1380, 1360, 1369, 1372, 1379, + 1378, 1380, 1362, 1369, 1372, 1378, 1379, 1380, 1369, 1378, 1379, 1380, 1369, 1378, 1379, 1380, + 1359, 1378, 1379, 1380, 1378, 1379, 1380, 1354, 1378, 1379, 1380, 1355, 1379, 1378, 1380, 1360, + 1369, 1379, 1378, 1380, 1364, 1369, 1378, 1379, 1380, 1369, 1378, 1379, 1380, 1369, 1378, 1379, + 1380, 1359, 1374, 1378, 1379, 1380, 1374, 1379, 1378, 1380, 1354, 1375, 1379, 1378, 1380, 1355, + 1375, 1379, 1378, 1380, 1360, 1369, 1379, 1378, 1380, 1369, 1378, 1379, 1380, 1369, 1378, 1379, + 1380, 1363, 1369, 1378, 1379, 1380, 1359, 1373, 1379, 1378, 1380, 1373, 1379, 1378, 1380, 1354, + 1379, 1378, 1380, 1355, 1378, 1379, 1380, 1360, 1369, 1378, 1379, 1380, 1369, 1379, 1378, 1380, + 1369, 1378, 1379, 1380, 1369, 1378, 1379, 1380, 1359, 1409, 1379, 1378, 1380, 1378, 1379, 1380, + 1354, 1379, 1378, 1380, 1355, 1378, 1379, 1380, 1360, 1369, 1378, 1379, 1380, 1369, 1378, 1379, + 1380, 1369, 1379, 1378, 1380, 1369, 1378, 1379, 1380, 1359, 1410, 1379, 1378, 1380, 1378, 1379, + 1380, 1354, 1379, 1378, 1380, 1355, 1379, 1378, 1380, 1360, 1369, 1379, 1378, 1380, 1369, 1378, + 1379, 1380, 1369, 1378, 1379, 1380, 1369, 1378, 1379, 1380, 1359, 1379, 1378, 1380, 1379, 1378, + 1380, 1354, 1378, 1379, 1380, 1355, 1378, 1379, 1380, 1411, 1412, 1413, 1360, 1369, 1379, 1378, + 1380, 1369, 1379, 1378, 1380, 1369, 1379, 1378, 1380, 1369, 1379, 1378, 1380, 1359, 1378, 1379, + 1380, 1379, 1378, 1380, 1354, 1378, 1379, 1380, 1355, 1414, 1379, 1378, 1380, 1418, 1417, 1420, + 1419, 1424, 1416, 1415, 1426, 1430, 1423, 1429, 1432, 1431, 1428, 1426, 1427, 1421, 1422, 1425, + 1433, 1434, 1437, 1490, 1496, 1440, 1490, 1499, 1436, 1491, 1495, 1439, 1491, 1498, 1435, 1492, + 1494, 1438, 1492, 1497, 1493, 1493, 1446, 1447, 1448, 1449, 1450, 1456, 1462, 1468, 1474, 1480, + 1442, 1443, 1444, 1445, 1451, 1457, 1463, 1469, 1475, 1481, 1452, 1458, 1464, 1470, 1476, 1482, + 1441, 1454, 1460, 1466, 1472, 1478, 1484, 1455, 1461, 1467, 1473, 1479, 1485, 1453, 1459, 1465, + 1471, 1477, 1483, 1486, 1500, 1501, 1489, 1504, 1487, 1502, 1488, 1505, 1503, 1527, 1528, 1518, + 1523, 1525, 1518, 1524, 1526, 1527, 1528, 1523, 1525, 1524, 1526, 1512, 1513, 1514, 1515, 1516, + 1517, 1527, 1506, 1507, 1508, 1509, 1510, 1511, 1519, 1520, 1521, 1522, 1528, 1518, 1523, 1525, + 1518, 1524, 1526, 1512, 1513, 1514, 1515, 1516, 1517, 1527, 1506, 1507, 1508, 1509, 1510, 1511, + 1528, 1523, 1525, 1524, 1526, 1518, 1518, 1519, 1520, 1521, 1522, 1518, 1518, 1545, 1268, 1269, + 1284, 1285, 1286, 1551, 1297, 1298, 1556, 1557, 1558, 1559, 1301, 1561, 1304, 1305, 1308, 1309, + 1310, 1311, 1312, 1313, 1322, 1323, 1324, 1325, 1574, 1268, 1269, 1284, 1285, 1286, 1551, 1298, + 1556, 1557, 1558, 1559, 1301, 1561, 1304, 1305, 1308, 1309, 1310, 1311, 1312, 1313, 1322, 1323, + 1324, 1325, 1574, 1268, 1269, 1284, 1285, 1286, 1551, 1298, 1556, 1557, 1558, 1559, 1301, 1561, + 1304, 1305, 1308, 1309, 1310, 1311, 1312, 1313, 1322, 1323, 1324, 1325, 1574, 1530, 1539, 1540, + 1268, 1269, 1270, 1284, 1285, 1286, 1287, 1551, 1296, 1298, 1556, 1557, 1558, 1559, 1301, 1561, + 1304, 1305, 1308, 1309, 1310, 1311, 1312, 1313, 1322, 1323, 1324, 1325, 1574, 1545, 1268, 1269, + 1284, 1285, 1286, 1551, 1297, 1298, 1556, 1557, 1558, 1559, 1301, 1561, 1304, 1305, 1308, 1309, + 1310, 1311, 1312, 1313, 1322, 1323, 1324, 1325, 1570, 1574, 1268, 1269, 1284, 1285, 1286, 1551, + 1298, 1556, 1557, 1558, 1559, 1301, 1561, 1304, 1305, 1308, 1309, 1310, 1311, 1312, 1313, 1322, + 1323, 1324, 1325, 1570, 1574, 1268, 1269, 1284, 1285, 1286, 1551, 1298, 1556, 1557, 1558, 1559, + 1301, 1561, 1304, 1305, 1308, 1309, 1310, 1311, 1312, 1313, 1322, 1323, 1324, 1325, 1570, 1574, + 1529, 1539, 1540, 1268, 1269, 1270, 1284, 1285, 1286, 1287, 1551, 1296, 1298, 1556, 1557, 1558, + 1559, 1301, 1561, 1304, 1305, 1308, 1309, 1310, 1311, 1312, 1313, 1322, 1323, 1324, 1325, 1570, + 1574, 1246, 1247, 1279, 1280, 1281, 1282, 1290, 1291, 1292, 1293, 1552, 1553, 1554, 1555, 1561, + 1306, 1307, 1314, 1315, 1316, 1317, 1318, 1319, 1320, 1321, 1566, 1567, 1568, 1569, 1343, 1572, + 1575, 1552, 1553, 1554, 1555, 1561, 1306, 1307, 1314, 1315, 1316, 1317, 1318, 1319, 1320, 1321, + 1572, 1575, 1552, 1553, 1554, 1555, 1561, 1306, 1307, 1314, 1315, 1316, 1317, 1318, 1319, 1320, + 1321, 1572, 1575, 1537, 1538, 1277, 1278, 1288, 1289, 1294, 1295, 1552, 1553, 1554, 1555, 1561, + 1306, 1307, 1314, 1315, 1316, 1317, 1318, 1319, 1320, 1321, 1562, 1563, 1564, 1565, 1572, 1575, + 1279, 1280, 1281, 1282, 1290, 1291, 1292, 1293, 1552, 1553, 1554, 1555, 1561, 1306, 1307, 1314, + 1315, 1316, 1317, 1318, 1319, 1320, 1321, 1566, 1567, 1568, 1569, 1343, 1571, 1573, 1575, 1552, + 1553, 1554, 1555, 1561, 1306, 1307, 1314, 1315, 1316, 1317, 1318, 1319, 1320, 1321, 1571, 1573, + 1575, 1248, 1249, 1250, 1251, 1260, 1261, 1262, 1263, 1552, 1553, 1554, 1555, 1561, 1306, 1307, + 1314, 1315, 1316, 1317, 1318, 1319, 1320, 1321, 1571, 1573, 1575, 1537, 1538, 1258, 1259, 1277, + 1278, 1288, 1289, 1294, 1295, 1552, 1553, 1554, 1555, 1561, 1306, 1307, 1314, 1315, 1316, 1317, + 1318, 1319, 1320, 1321, 1562, 1563, 1564, 1565, 1571, 1573, 1575, 1549, 1550, 1551, 1299, 1560, + 1302, 1561, 1326, 1327, 1328, 1329, 1330, 1331, 1332, 1333, 1334, 1335, 1336, 1337, 1550, 1551, + 1299, 1560, 1302, 1561, 1326, 1327, 1328, 1329, 1330, 1331, 1332, 1333, 1334, 1335, 1336, 1337, + 1551, 1560, 1300, 1303, 1561, 1326, 1327, 1328, 1329, 1330, 1331, 1332, 1333, 1334, 1335, 1336, + 1337, 1551, 1560, 1300, 1303, 1561, 1326, 1327, 1328, 1329, 1330, 1331, 1332, 1333, 1334, 1335, + 1336, 1337, 1549, 1550, 1551, 1299, 1560, 1302, 1561, 1326, 1327, 1328, 1329, 1330, 1331, 1332, + 1333, 1334, 1335, 1336, 1337, 1550, 1551, 1299, 1560, 1302, 1561, 1326, 1327, 1328, 1329, 1330, + 1331, 1332, 1333, 1334, 1335, 1336, 1337, 1551, 1300, 1560, 1303, 1561, 1326, 1327, 1328, 1329, + 1330, 1331, 1332, 1333, 1334, 1335, 1336, 1337, 1551, 1560, 1300, 1303, 1561, 1326, 1327, 1328, + 1329, 1330, 1331, 1332, 1333, 1334, 1335, 1336, 1337, 1561, 1340, 1341, 1342, 1561, 1340, 1341, + 1342, 1561, 1340, 1341, 1342, 1531, 1532, 1533, 1534, 1535, 1536, 1541, 1542, 1543, 1544, 1546, + 1547, 1548, 1561, 1340, 1341, 1342, 1561, 1340, 1341, 1342, 1561, 1340, 1341, 1342, 1561, 1340, + 1341, 1342, 1531, 1532, 1533, 1534, 1535, 1536, 1541, 1542, 1543, 1544, 1546, 1547, 1548, 1561, + 1340, 1341, 1342, } DECODE_INDEX_A32 := [256]lib.Decode_Index{ @@ -2170,606 +2159,606 @@ DECODE_INDEX_A32 := [256]lib.Decode_Index{ 0x27 = { 582, 19}, 0x28 = { 601, 57}, 0x29 = { 658, 47}, - 0x2A = { 705, 48}, - 0x2B = { 753, 23}, - 0x2C = { 776, 57}, - 0x2D = { 833, 47}, - 0x2E = { 880, 48}, - 0x2F = { 928, 23}, - 0x30 = { 951, 59}, - 0x31 = { 1010, 27}, - 0x32 = { 1037, 45}, - 0x33 = { 1082, 9}, - 0x34 = { 1091, 59}, - 0x35 = { 1150, 27}, - 0x36 = { 1177, 33}, - 0x37 = { 1210, 9}, - 0x38 = { 1219, 58}, - 0x39 = { 1277, 43}, - 0x3A = { 1320, 44}, - 0x3B = { 1364, 160}, - 0x3C = { 1524, 58}, - 0x3D = { 1582, 43}, - 0x3E = { 1625, 44}, - 0x3F = { 1669, 160}, - 0x40 = { 1829, 12}, - 0x41 = { 1841, 1}, - 0x42 = { 1842, 12}, - 0x43 = { 1854, 1}, - 0x44 = { 1855, 1}, - 0x45 = { 1856, 2}, - 0x46 = { 1858, 1}, - 0x47 = { 1859, 1}, - 0x48 = { 1860, 16}, - 0x49 = { 1876, 1}, - 0x4A = { 1877, 20}, - 0x4B = { 1897, 1}, - 0x4C = { 1898, 16}, - 0x4D = { 1914, 2}, - 0x4E = { 1916, 20}, - 0x4F = { 1936, 1}, - 0x50 = { 1937, 1}, - 0x51 = { 1938, 1}, - 0x52 = { 1939, 1}, - 0x53 = { 1940, 1}, - 0x54 = { 1941, 1}, - 0x55 = { 1942, 1}, - 0x56 = { 1943, 1}, - 0x57 = { 1944, 6}, - 0x58 = { 1950, 1}, - 0x59 = { 1951, 1}, - 0x5A = { 1952, 1}, - 0x5B = { 1953, 1}, - 0x5C = { 1954, 1}, - 0x5D = { 1955, 3}, - 0x5E = { 1958, 1}, - 0x5F = { 1959, 1}, - 0x61 = { 1960, 6}, - 0x62 = { 1966, 6}, - 0x63 = { 1972, 6}, - 0x65 = { 1978, 6}, - 0x66 = { 1984, 6}, - 0x67 = { 1990, 6}, - 0x68 = { 1996, 5}, - 0x6A = { 2001, 4}, - 0x6B = { 2005, 5}, - 0x6C = { 2010, 2}, - 0x6E = { 2012, 4}, - 0x6F = { 2016, 5}, - 0x70 = { 2021, 9}, - 0x71 = { 2030, 2}, - 0x73 = { 2032, 1}, - 0x74 = { 2033, 5}, - 0x75 = { 2038, 7}, - 0x78 = { 2045, 3}, - 0x79 = { 2048, 1}, - 0x7A = { 2049, 1}, - 0x7B = { 2050, 1}, - 0x7C = { 2051, 3}, - 0x7D = { 2054, 3}, - 0x7E = { 2057, 1}, - 0x7F = { 2058, 2}, - 0x80 = { 2060, 1}, - 0x81 = { 2061, 2}, - 0x82 = { 2063, 1}, - 0x83 = { 2064, 2}, - 0x84 = { 2066, 1}, - 0x85 = { 2067, 1}, - 0x86 = { 2068, 1}, - 0x87 = { 2069, 1}, - 0x88 = { 2070, 2}, - 0x89 = { 2072, 3}, - 0x8A = { 2075, 2}, - 0x8B = { 2077, 4}, - 0x8C = { 2081, 1}, - 0x8D = { 2082, 1}, - 0x8E = { 2083, 1}, - 0x8F = { 2084, 1}, - 0x90 = { 2085, 1}, - 0x91 = { 2086, 2}, - 0x92 = { 2088, 2}, - 0x93 = { 2090, 2}, - 0x94 = { 2092, 1}, - 0x95 = { 2093, 1}, - 0x96 = { 2094, 1}, - 0x97 = { 2095, 1}, - 0x98 = { 2096, 1}, - 0x99 = { 2097, 2}, - 0x9A = { 2099, 1}, - 0x9B = { 2100, 2}, - 0x9C = { 2102, 1}, - 0x9D = { 2103, 1}, - 0x9E = { 2104, 1}, - 0x9F = { 2105, 1}, - 0xA0 = { 2106, 2}, - 0xA1 = { 2108, 2}, - 0xA2 = { 2110, 2}, - 0xA3 = { 2112, 2}, - 0xA4 = { 2114, 2}, - 0xA5 = { 2116, 2}, - 0xA6 = { 2118, 2}, - 0xA7 = { 2120, 2}, - 0xA8 = { 2122, 2}, - 0xA9 = { 2124, 2}, - 0xAA = { 2126, 2}, - 0xAB = { 2128, 2}, - 0xAC = { 2130, 2}, - 0xAD = { 2132, 2}, - 0xAE = { 2134, 2}, - 0xAF = { 2136, 2}, - 0xB0 = { 2138, 2}, - 0xB1 = { 2140, 2}, - 0xB2 = { 2142, 2}, - 0xB3 = { 2144, 2}, - 0xB4 = { 2146, 2}, - 0xB5 = { 2148, 2}, - 0xB6 = { 2150, 2}, - 0xB7 = { 2152, 2}, - 0xB8 = { 2154, 2}, - 0xB9 = { 2156, 2}, - 0xBA = { 2158, 2}, - 0xBB = { 2160, 2}, - 0xBC = { 2162, 2}, - 0xBD = { 2164, 2}, - 0xBE = { 2166, 2}, - 0xBF = { 2168, 2}, - 0xC0 = { 2170, 7}, - 0xC1 = { 2177, 4}, - 0xC2 = { 2181, 12}, - 0xC3 = { 2193, 5}, - 0xC4 = { 2198, 11}, - 0xC5 = { 2209, 8}, - 0xC6 = { 2217, 12}, - 0xC7 = { 2229, 5}, - 0xC8 = { 2234, 6}, - 0xC9 = { 2240, 6}, - 0xCA = { 2246, 12}, - 0xCB = { 2258, 8}, - 0xCC = { 2266, 6}, - 0xCD = { 2272, 6}, - 0xCE = { 2278, 12}, - 0xCF = { 2290, 6}, - 0xD0 = { 2296, 4}, - 0xD1 = { 2300, 4}, - 0xD2 = { 2304, 4}, - 0xD3 = { 2308, 2}, - 0xD4 = { 2310, 4}, - 0xD5 = { 2314, 4}, - 0xD6 = { 2318, 2}, - 0xD7 = { 2320, 2}, - 0xD8 = { 2322, 4}, - 0xD9 = { 2326, 4}, - 0xDA = { 2330, 2}, - 0xDB = { 2332, 2}, - 0xDC = { 2334, 4}, - 0xDD = { 2338, 4}, - 0xDE = { 2342, 2}, - 0xDF = { 2344, 2}, - 0xE0 = { 2346, 20}, - 0xE1 = { 2366, 14}, - 0xE2 = { 2380, 20}, - 0xE3 = { 2400, 15}, - 0xE4 = { 2415, 18}, - 0xE5 = { 2433, 13}, - 0xE6 = { 2446, 19}, - 0xE7 = { 2465, 15}, - 0xE8 = { 2480, 15}, - 0xE9 = { 2495, 11}, - 0xEA = { 2506, 11}, - 0xEB = { 2517, 77}, - 0xEC = { 2594, 16}, - 0xED = { 2610, 11}, - 0xEE = { 2621, 13}, - 0xEF = { 2634, 78}, - 0xF0 = { 2712, 3}, - 0xF1 = { 2715, 3}, - 0xF2 = { 2718, 3}, - 0xF3 = { 2721, 3}, - 0xF4 = { 2724, 3}, - 0xF5 = { 2727, 3}, - 0xF6 = { 2730, 3}, - 0xF7 = { 2733, 3}, - 0xF8 = { 2736, 1}, - 0xF9 = { 2737, 1}, - 0xFA = { 2738, 1}, - 0xFB = { 2739, 1}, - 0xFC = { 2740, 1}, - 0xFD = { 2741, 1}, - 0xFE = { 2742, 1}, - 0xFF = { 2743, 1}, + 0x2A = { 705, 46}, + 0x2B = { 751, 23}, + 0x2C = { 774, 57}, + 0x2D = { 831, 47}, + 0x2E = { 878, 46}, + 0x2F = { 924, 23}, + 0x30 = { 947, 58}, + 0x31 = { 1005, 27}, + 0x32 = { 1032, 45}, + 0x33 = { 1077, 9}, + 0x34 = { 1086, 58}, + 0x35 = { 1144, 27}, + 0x36 = { 1171, 33}, + 0x37 = { 1204, 9}, + 0x38 = { 1213, 58}, + 0x39 = { 1271, 43}, + 0x3A = { 1314, 42}, + 0x3B = { 1356, 156}, + 0x3C = { 1512, 58}, + 0x3D = { 1570, 43}, + 0x3E = { 1613, 42}, + 0x3F = { 1655, 156}, + 0x40 = { 1811, 12}, + 0x41 = { 1823, 1}, + 0x42 = { 1824, 12}, + 0x43 = { 1836, 1}, + 0x44 = { 1837, 1}, + 0x45 = { 1838, 2}, + 0x46 = { 1840, 1}, + 0x47 = { 1841, 1}, + 0x48 = { 1842, 16}, + 0x49 = { 1858, 1}, + 0x4A = { 1859, 20}, + 0x4B = { 1879, 1}, + 0x4C = { 1880, 16}, + 0x4D = { 1896, 2}, + 0x4E = { 1898, 20}, + 0x4F = { 1918, 1}, + 0x50 = { 1919, 1}, + 0x51 = { 1920, 1}, + 0x52 = { 1921, 1}, + 0x53 = { 1922, 1}, + 0x54 = { 1923, 1}, + 0x55 = { 1924, 1}, + 0x56 = { 1925, 1}, + 0x57 = { 1926, 6}, + 0x58 = { 1932, 1}, + 0x59 = { 1933, 1}, + 0x5A = { 1934, 1}, + 0x5B = { 1935, 1}, + 0x5C = { 1936, 1}, + 0x5D = { 1937, 3}, + 0x5E = { 1940, 1}, + 0x5F = { 1941, 1}, + 0x61 = { 1942, 6}, + 0x62 = { 1948, 6}, + 0x63 = { 1954, 6}, + 0x65 = { 1960, 6}, + 0x66 = { 1966, 6}, + 0x67 = { 1972, 6}, + 0x68 = { 1978, 5}, + 0x6A = { 1983, 4}, + 0x6B = { 1987, 5}, + 0x6C = { 1992, 2}, + 0x6E = { 1994, 4}, + 0x6F = { 1998, 5}, + 0x70 = { 2003, 9}, + 0x71 = { 2012, 2}, + 0x73 = { 2014, 1}, + 0x74 = { 2015, 5}, + 0x75 = { 2020, 7}, + 0x78 = { 2027, 3}, + 0x79 = { 2030, 1}, + 0x7A = { 2031, 1}, + 0x7B = { 2032, 1}, + 0x7C = { 2033, 3}, + 0x7D = { 2036, 3}, + 0x7E = { 2039, 1}, + 0x7F = { 2040, 2}, + 0x80 = { 2042, 1}, + 0x81 = { 2043, 2}, + 0x82 = { 2045, 1}, + 0x83 = { 2046, 2}, + 0x84 = { 2048, 1}, + 0x85 = { 2049, 1}, + 0x86 = { 2050, 1}, + 0x87 = { 2051, 1}, + 0x88 = { 2052, 2}, + 0x89 = { 2054, 3}, + 0x8A = { 2057, 2}, + 0x8B = { 2059, 4}, + 0x8C = { 2063, 1}, + 0x8D = { 2064, 1}, + 0x8E = { 2065, 1}, + 0x8F = { 2066, 1}, + 0x90 = { 2067, 1}, + 0x91 = { 2068, 2}, + 0x92 = { 2070, 2}, + 0x93 = { 2072, 2}, + 0x94 = { 2074, 1}, + 0x95 = { 2075, 1}, + 0x96 = { 2076, 1}, + 0x97 = { 2077, 1}, + 0x98 = { 2078, 1}, + 0x99 = { 2079, 2}, + 0x9A = { 2081, 1}, + 0x9B = { 2082, 2}, + 0x9C = { 2084, 1}, + 0x9D = { 2085, 1}, + 0x9E = { 2086, 1}, + 0x9F = { 2087, 1}, + 0xA0 = { 2088, 2}, + 0xA1 = { 2090, 2}, + 0xA2 = { 2092, 2}, + 0xA3 = { 2094, 2}, + 0xA4 = { 2096, 2}, + 0xA5 = { 2098, 2}, + 0xA6 = { 2100, 2}, + 0xA7 = { 2102, 2}, + 0xA8 = { 2104, 2}, + 0xA9 = { 2106, 2}, + 0xAA = { 2108, 2}, + 0xAB = { 2110, 2}, + 0xAC = { 2112, 2}, + 0xAD = { 2114, 2}, + 0xAE = { 2116, 2}, + 0xAF = { 2118, 2}, + 0xB0 = { 2120, 2}, + 0xB1 = { 2122, 2}, + 0xB2 = { 2124, 2}, + 0xB3 = { 2126, 2}, + 0xB4 = { 2128, 2}, + 0xB5 = { 2130, 2}, + 0xB6 = { 2132, 2}, + 0xB7 = { 2134, 2}, + 0xB8 = { 2136, 2}, + 0xB9 = { 2138, 2}, + 0xBA = { 2140, 2}, + 0xBB = { 2142, 2}, + 0xBC = { 2144, 2}, + 0xBD = { 2146, 2}, + 0xBE = { 2148, 2}, + 0xBF = { 2150, 2}, + 0xC0 = { 2152, 7}, + 0xC1 = { 2159, 4}, + 0xC2 = { 2163, 12}, + 0xC3 = { 2175, 5}, + 0xC4 = { 2180, 11}, + 0xC5 = { 2191, 8}, + 0xC6 = { 2199, 12}, + 0xC7 = { 2211, 5}, + 0xC8 = { 2216, 6}, + 0xC9 = { 2222, 6}, + 0xCA = { 2228, 12}, + 0xCB = { 2240, 8}, + 0xCC = { 2248, 6}, + 0xCD = { 2254, 6}, + 0xCE = { 2260, 12}, + 0xCF = { 2272, 6}, + 0xD0 = { 2278, 4}, + 0xD1 = { 2282, 4}, + 0xD2 = { 2286, 4}, + 0xD3 = { 2290, 2}, + 0xD4 = { 2292, 4}, + 0xD5 = { 2296, 4}, + 0xD6 = { 2300, 2}, + 0xD7 = { 2302, 2}, + 0xD8 = { 2304, 4}, + 0xD9 = { 2308, 4}, + 0xDA = { 2312, 2}, + 0xDB = { 2314, 2}, + 0xDC = { 2316, 4}, + 0xDD = { 2320, 4}, + 0xDE = { 2324, 2}, + 0xDF = { 2326, 2}, + 0xE0 = { 2328, 20}, + 0xE1 = { 2348, 14}, + 0xE2 = { 2362, 20}, + 0xE3 = { 2382, 15}, + 0xE4 = { 2397, 18}, + 0xE5 = { 2415, 13}, + 0xE6 = { 2428, 19}, + 0xE7 = { 2447, 15}, + 0xE8 = { 2462, 15}, + 0xE9 = { 2477, 11}, + 0xEA = { 2488, 11}, + 0xEB = { 2499, 77}, + 0xEC = { 2576, 16}, + 0xED = { 2592, 11}, + 0xEE = { 2603, 13}, + 0xEF = { 2616, 78}, + 0xF0 = { 2694, 3}, + 0xF1 = { 2697, 3}, + 0xF2 = { 2700, 3}, + 0xF3 = { 2703, 3}, + 0xF4 = { 2706, 3}, + 0xF5 = { 2709, 3}, + 0xF6 = { 2712, 3}, + 0xF7 = { 2715, 3}, + 0xF8 = { 2718, 1}, + 0xF9 = { 2719, 1}, + 0xFA = { 2720, 1}, + 0xFB = { 2721, 1}, + 0xFC = { 2722, 1}, + 0xFD = { 2723, 1}, + 0xFE = { 2724, 1}, + 0xFF = { 2725, 1}, } DECODE_INDEX_T32 := [128]lib.Decode_Index{ - 0x74 = { 2744, 23}, - 0x75 = { 2767, 19}, - 0x76 = { 2786, 19}, - 0x77 = { 2805, 104}, - 0x78 = { 2909, 31}, - 0x79 = { 2940, 38}, - 0x7A = { 2978, 23}, - 0x7B = { 3001, 14}, - 0x7C = { 3015, 20}, - 0x7D = { 3035, 71}, - 0x7E = { 3106, 23}, - 0x7F = { 3129, 126}, + 0x74 = { 2726, 23}, + 0x75 = { 2749, 19}, + 0x76 = { 2768, 19}, + 0x77 = { 2787, 104}, + 0x78 = { 2891, 31}, + 0x79 = { 2922, 38}, + 0x7A = { 2960, 23}, + 0x7B = { 2983, 14}, + 0x7C = { 2997, 20}, + 0x7D = { 3017, 71}, + 0x7E = { 3088, 23}, + 0x7F = { 3111, 126}, } DECODE_INDEX_T16 := [64]lib.Decode_Index{ - 0x00 = { 3255, 1}, - 0x01 = { 3256, 1}, - 0x02 = { 3257, 1}, - 0x03 = { 3258, 1}, - 0x04 = { 3259, 1}, - 0x05 = { 3260, 1}, - 0x06 = { 3261, 2}, - 0x07 = { 3263, 2}, - 0x08 = { 3265, 1}, - 0x09 = { 3266, 1}, - 0x0A = { 3267, 1}, - 0x0B = { 3268, 1}, - 0x0C = { 3269, 1}, - 0x0D = { 3270, 1}, - 0x0E = { 3271, 1}, - 0x0F = { 3272, 1}, - 0x10 = { 3273, 16}, - 0x11 = { 3289, 7}, - 0x12 = { 3296, 1}, - 0x13 = { 3297, 1}, - 0x14 = { 3298, 2}, - 0x15 = { 3300, 2}, - 0x16 = { 3302, 2}, - 0x17 = { 3304, 2}, - 0x18 = { 3306, 1}, - 0x19 = { 3307, 1}, - 0x1A = { 3308, 1}, - 0x1B = { 3309, 1}, - 0x1C = { 3310, 1}, - 0x1D = { 3311, 1}, - 0x1E = { 3312, 1}, - 0x1F = { 3313, 1}, - 0x20 = { 3314, 1}, - 0x21 = { 3315, 1}, - 0x22 = { 3316, 1}, - 0x23 = { 3317, 1}, - 0x24 = { 3318, 1}, - 0x25 = { 3319, 1}, - 0x26 = { 3320, 1}, - 0x27 = { 3321, 1}, - 0x28 = { 3322, 1}, - 0x29 = { 3323, 1}, - 0x2A = { 3324, 1}, - 0x2B = { 3325, 1}, - 0x2C = { 3326, 7}, - 0x2D = { 3333, 2}, - 0x2E = { 3335, 4}, - 0x2F = { 3339, 8}, - 0x30 = { 3347, 1}, - 0x31 = { 3348, 1}, - 0x32 = { 3349, 1}, - 0x33 = { 3350, 1}, - 0x34 = { 3351, 1}, - 0x35 = { 3352, 1}, - 0x36 = { 3353, 1}, - 0x37 = { 3354, 3}, - 0x38 = { 3357, 1}, - 0x39 = { 3358, 1}, + 0x00 = { 3237, 1}, + 0x01 = { 3238, 1}, + 0x02 = { 3239, 1}, + 0x03 = { 3240, 1}, + 0x04 = { 3241, 1}, + 0x05 = { 3242, 1}, + 0x06 = { 3243, 2}, + 0x07 = { 3245, 2}, + 0x08 = { 3247, 1}, + 0x09 = { 3248, 1}, + 0x0A = { 3249, 1}, + 0x0B = { 3250, 1}, + 0x0C = { 3251, 1}, + 0x0D = { 3252, 1}, + 0x0E = { 3253, 1}, + 0x0F = { 3254, 1}, + 0x10 = { 3255, 16}, + 0x11 = { 3271, 7}, + 0x12 = { 3278, 1}, + 0x13 = { 3279, 1}, + 0x14 = { 3280, 2}, + 0x15 = { 3282, 2}, + 0x16 = { 3284, 2}, + 0x17 = { 3286, 2}, + 0x18 = { 3288, 1}, + 0x19 = { 3289, 1}, + 0x1A = { 3290, 1}, + 0x1B = { 3291, 1}, + 0x1C = { 3292, 1}, + 0x1D = { 3293, 1}, + 0x1E = { 3294, 1}, + 0x1F = { 3295, 1}, + 0x20 = { 3296, 1}, + 0x21 = { 3297, 1}, + 0x22 = { 3298, 1}, + 0x23 = { 3299, 1}, + 0x24 = { 3300, 1}, + 0x25 = { 3301, 1}, + 0x26 = { 3302, 1}, + 0x27 = { 3303, 1}, + 0x28 = { 3304, 1}, + 0x29 = { 3305, 1}, + 0x2A = { 3306, 1}, + 0x2B = { 3307, 1}, + 0x2C = { 3308, 7}, + 0x2D = { 3315, 2}, + 0x2E = { 3317, 4}, + 0x2F = { 3321, 8}, + 0x30 = { 3329, 1}, + 0x31 = { 3330, 1}, + 0x32 = { 3331, 1}, + 0x33 = { 3332, 1}, + 0x34 = { 3333, 1}, + 0x35 = { 3334, 1}, + 0x36 = { 3335, 1}, + 0x37 = { 3336, 3}, + 0x38 = { 3339, 1}, + 0x39 = { 3340, 1}, } DECODE_INDEX_T32_SUB := [4096]lib.Decode_Index{ - 0xE84 = { 3359, 6}, - 0xE85 = { 3365, 2}, - 0xE86 = { 3367, 1}, - 0xE87 = { 3368, 1}, - 0xE88 = { 3369, 1}, - 0xE89 = { 3370, 1}, - 0xE8A = { 3371, 1}, - 0xE8B = { 3372, 2}, - 0xE8C = { 3374, 4}, - 0xE8D = { 3378, 6}, - 0xE8E = { 3384, 1}, - 0xE8F = { 3385, 1}, - 0xE90 = { 3386, 1}, - 0xE91 = { 3387, 1}, - 0xE92 = { 3388, 2}, - 0xE93 = { 3390, 1}, - 0xE94 = { 3391, 1}, - 0xE95 = { 3392, 1}, - 0xE96 = { 3393, 1}, - 0xE97 = { 3394, 2}, - 0xE9C = { 3396, 1}, - 0xE9D = { 3397, 1}, - 0xE9E = { 3398, 1}, - 0xE9F = { 3399, 1}, - 0xEA0 = { 3400, 2}, - 0xEA1 = { 3402, 3}, - 0xEA2 = { 3405, 1}, - 0xEA3 = { 3406, 1}, - 0xEA4 = { 3407, 7}, - 0xEA5 = { 3414, 7}, - 0xEA6 = { 3421, 1}, - 0xEA7 = { 3422, 1}, - 0xEA8 = { 3423, 1}, - 0xEA9 = { 3424, 2}, - 0xEB1 = { 3426, 1}, - 0xEB4 = { 3427, 1}, - 0xEB5 = { 3428, 1}, - 0xEB6 = { 3429, 1}, - 0xEB7 = { 3430, 1}, - 0xEBB = { 3431, 1}, - 0xEBC = { 3432, 1}, - 0xEBD = { 3433, 1}, - 0xEC0 = { 3434, 2}, - 0xEC1 = { 3436, 1}, - 0xEC2 = { 3437, 3}, - 0xEC3 = { 3440, 2}, - 0xEC4 = { 3442, 2}, - 0xEC5 = { 3444, 1}, - 0xEC6 = { 3445, 7}, - 0xEC7 = { 3452, 2}, - 0xEC8 = { 3454, 1}, - 0xEC9 = { 3455, 1}, - 0xECA = { 3456, 2}, - 0xECB = { 3458, 2}, - 0xECC = { 3460, 1}, - 0xECD = { 3461, 1}, - 0xECE = { 3462, 2}, - 0xECF = { 3464, 2}, - 0xED6 = { 3466, 4}, - 0xED8 = { 3470, 4}, - 0xED9 = { 3474, 4}, - 0xEDC = { 3478, 4}, - 0xEDD = { 3482, 4}, - 0xEE0 = { 3486, 24}, - 0xEE1 = { 3510, 23}, - 0xEE2 = { 3533, 22}, - 0xEE3 = { 3555, 29}, - 0xEE4 = { 3584, 23}, - 0xEE5 = { 3607, 22}, - 0xEE6 = { 3629, 22}, - 0xEE7 = { 3651, 29}, - 0xEE8 = { 3680, 28}, - 0xEE9 = { 3708, 12}, - 0xEEA = { 3720, 13}, - 0xEEB = { 3733, 18}, - 0xEEC = { 3751, 27}, - 0xEED = { 3778, 13}, - 0xEEE = { 3791, 22}, - 0xEEF = { 3813, 23}, - 0xEF0 = { 3836, 15}, - 0xEF1 = { 3851, 15}, - 0xEF2 = { 3866, 15}, - 0xEF3 = { 3881, 15}, - 0xEF4 = { 3896, 15}, - 0xEF5 = { 3911, 15}, - 0xEF6 = { 3926, 15}, - 0xEF7 = { 3941, 15}, - 0xEF8 = { 3956, 3}, - 0xEF9 = { 3959, 3}, - 0xEFA = { 3962, 3}, - 0xEFB = { 3965, 3}, - 0xEFC = { 3968, 3}, - 0xEFD = { 3971, 3}, - 0xEFE = { 3974, 3}, - 0xEFF = { 3977, 3}, - 0xF00 = { 3980, 12}, - 0xF01 = { 3992, 11}, - 0xF02 = { 4003, 8}, - 0xF03 = { 4011, 8}, - 0xF04 = { 4019, 9}, - 0xF05 = { 4028, 6}, - 0xF06 = { 4034, 5}, - 0xF07 = { 4039, 5}, - 0xF08 = { 4044, 6}, - 0xF09 = { 4050, 6}, - 0xF0A = { 4056, 4}, - 0xF0B = { 4060, 4}, - 0xF0C = { 4064, 4}, - 0xF0D = { 4068, 3}, - 0xF0E = { 4071, 4}, - 0xF0F = { 4075, 4}, - 0xF10 = { 4079, 7}, - 0xF11 = { 4086, 7}, - 0xF12 = { 4093, 6}, - 0xF13 = { 4099, 6}, - 0xF14 = { 4105, 5}, - 0xF15 = { 4110, 4}, - 0xF16 = { 4114, 5}, - 0xF17 = { 4119, 5}, - 0xF18 = { 4124, 5}, - 0xF19 = { 4129, 4}, - 0xF1A = { 4133, 4}, - 0xF1B = { 4137, 5}, - 0xF1C = { 4142, 5}, - 0xF1D = { 4147, 4}, - 0xF1E = { 4151, 4}, - 0xF1F = { 4155, 4}, - 0xF20 = { 4159, 5}, - 0xF21 = { 4164, 4}, - 0xF22 = { 4168, 4}, - 0xF23 = { 4172, 4}, - 0xF24 = { 4176, 5}, - 0xF25 = { 4181, 3}, - 0xF26 = { 4184, 4}, - 0xF27 = { 4188, 4}, - 0xF28 = { 4192, 5}, - 0xF29 = { 4197, 4}, - 0xF2A = { 4201, 4}, - 0xF2B = { 4205, 4}, - 0xF2C = { 4209, 5}, - 0xF2D = { 4214, 3}, - 0xF2E = { 4217, 4}, - 0xF2F = { 4221, 4}, - 0xF30 = { 4225, 6}, - 0xF31 = { 4231, 4}, - 0xF32 = { 4235, 6}, - 0xF33 = { 4241, 4}, - 0xF34 = { 4245, 5}, - 0xF35 = { 4250, 3}, - 0xF36 = { 4253, 6}, - 0xF37 = { 4259, 4}, - 0xF38 = { 4263, 7}, - 0xF39 = { 4270, 4}, - 0xF3A = { 4274, 19}, - 0xF3B = { 4293, 9}, - 0xF3C = { 4302, 5}, - 0xF3D = { 4307, 3}, - 0xF3E = { 4310, 5}, - 0xF3F = { 4315, 4}, - 0xF40 = { 4319, 7}, - 0xF41 = { 4326, 7}, - 0xF42 = { 4333, 5}, - 0xF43 = { 4338, 5}, - 0xF44 = { 4343, 7}, - 0xF45 = { 4350, 6}, - 0xF46 = { 4356, 5}, - 0xF47 = { 4361, 5}, - 0xF48 = { 4366, 6}, - 0xF49 = { 4372, 6}, - 0xF4A = { 4378, 4}, - 0xF4B = { 4382, 4}, - 0xF4C = { 4386, 4}, - 0xF4D = { 4390, 3}, - 0xF4E = { 4393, 4}, - 0xF4F = { 4397, 4}, - 0xF50 = { 4401, 5}, - 0xF51 = { 4406, 5}, - 0xF52 = { 4411, 4}, - 0xF53 = { 4415, 4}, - 0xF54 = { 4419, 5}, - 0xF55 = { 4424, 4}, - 0xF56 = { 4428, 5}, - 0xF57 = { 4433, 5}, - 0xF58 = { 4438, 5}, - 0xF59 = { 4443, 4}, - 0xF5A = { 4447, 4}, - 0xF5B = { 4451, 5}, - 0xF5C = { 4456, 5}, - 0xF5D = { 4461, 4}, - 0xF5E = { 4465, 4}, - 0xF5F = { 4469, 4}, - 0xF60 = { 4473, 5}, - 0xF61 = { 4478, 4}, - 0xF62 = { 4482, 4}, - 0xF63 = { 4486, 4}, - 0xF64 = { 4490, 5}, - 0xF65 = { 4495, 3}, - 0xF66 = { 4498, 4}, - 0xF67 = { 4502, 4}, - 0xF68 = { 4506, 5}, - 0xF69 = { 4511, 4}, - 0xF6A = { 4515, 4}, - 0xF6B = { 4519, 4}, - 0xF6C = { 4523, 5}, - 0xF6D = { 4528, 3}, - 0xF6E = { 4531, 4}, - 0xF6F = { 4535, 4}, - 0xF70 = { 4539, 5}, - 0xF71 = { 4544, 4}, - 0xF72 = { 4548, 4}, - 0xF73 = { 4552, 4}, - 0xF74 = { 4556, 4}, - 0xF75 = { 4560, 3}, - 0xF76 = { 4563, 4}, - 0xF77 = { 4567, 4}, - 0xF78 = { 4571, 8}, - 0xF79 = { 4579, 4}, - 0xF7A = { 4583, 4}, - 0xF7B = { 4587, 4}, - 0xF7C = { 4591, 4}, - 0xF7D = { 4595, 3}, - 0xF7E = { 4598, 4}, - 0xF7F = { 4602, 5}, - 0xF80 = { 4607, 1}, - 0xF81 = { 4608, 1}, - 0xF82 = { 4609, 1}, - 0xF83 = { 4610, 2}, - 0xF84 = { 4612, 1}, - 0xF85 = { 4613, 2}, - 0xF88 = { 4615, 1}, - 0xF89 = { 4616, 2}, - 0xF8A = { 4618, 1}, - 0xF8B = { 4619, 1}, - 0xF8C = { 4620, 1}, - 0xF8D = { 4621, 2}, - 0xF91 = { 4623, 1}, - 0xF93 = { 4624, 1}, - 0xF99 = { 4625, 2}, - 0xF9B = { 4627, 1}, - 0xFA0 = { 4628, 3}, - 0xFA1 = { 4631, 3}, - 0xFA2 = { 4634, 3}, - 0xFA3 = { 4637, 3}, - 0xFA4 = { 4640, 3}, - 0xFA5 = { 4643, 3}, - 0xFA6 = { 4646, 1}, - 0xFA7 = { 4647, 1}, - 0xFA8 = { 4648, 10}, - 0xFA9 = { 4658, 10}, - 0xFAA = { 4668, 6}, - 0xFAB = { 4674, 1}, - 0xFAC = { 4675, 6}, - 0xFAD = { 4681, 6}, - 0xFAE = { 4687, 6}, - 0xFB0 = { 4693, 3}, - 0xFB5 = { 4696, 1}, - 0xFB8 = { 4697, 1}, - 0xFB9 = { 4698, 1}, - 0xFBA = { 4699, 1}, - 0xFBB = { 4700, 1}, - 0xFBC = { 4701, 1}, - 0xFBE = { 4702, 1}, - 0xFC0 = { 4703, 1}, - 0xFC1 = { 4704, 1}, - 0xFC2 = { 4705, 3}, - 0xFC3 = { 4708, 3}, - 0xFC4 = { 4711, 1}, - 0xFC5 = { 4712, 1}, - 0xFC6 = { 4713, 2}, - 0xFC7 = { 4715, 2}, - 0xFC8 = { 4717, 7}, - 0xFC9 = { 4724, 11}, - 0xFCA = { 4735, 3}, - 0xFCB = { 4738, 3}, - 0xFCC = { 4741, 7}, - 0xFCD = { 4748, 7}, - 0xFCE = { 4755, 2}, - 0xFCF = { 4757, 2}, - 0xFD2 = { 4759, 1}, - 0xFD3 = { 4760, 1}, - 0xFD9 = { 4761, 4}, - 0xFDA = { 4765, 1}, - 0xFDB = { 4766, 1}, - 0xFE0 = { 4767, 28}, - 0xFE1 = { 4795, 26}, - 0xFE2 = { 4821, 26}, - 0xFE3 = { 4847, 32}, - 0xFE4 = { 4879, 29}, - 0xFE5 = { 4908, 27}, - 0xFE6 = { 4935, 27}, - 0xFE7 = { 4962, 33}, - 0xFE8 = { 4995, 32}, - 0xFE9 = { 5027, 17}, - 0xFEA = { 5044, 17}, - 0xFEB = { 5061, 29}, - 0xFEC = { 5090, 31}, - 0xFED = { 5121, 18}, - 0xFEE = { 5139, 26}, - 0xFEF = { 5165, 32}, - 0xFF0 = { 5197, 19}, - 0xFF1 = { 5216, 18}, - 0xFF2 = { 5234, 17}, - 0xFF3 = { 5251, 17}, - 0xFF4 = { 5268, 19}, - 0xFF5 = { 5287, 18}, - 0xFF6 = { 5305, 17}, - 0xFF7 = { 5322, 17}, - 0xFF8 = { 5339, 4}, - 0xFF9 = { 5343, 4}, - 0xFFA = { 5347, 4}, - 0xFFB = { 5351, 17}, - 0xFFC = { 5368, 4}, - 0xFFD = { 5372, 4}, - 0xFFE = { 5376, 4}, - 0xFFF = { 5380, 17}, + 0xE84 = { 3341, 6}, + 0xE85 = { 3347, 2}, + 0xE86 = { 3349, 1}, + 0xE87 = { 3350, 1}, + 0xE88 = { 3351, 1}, + 0xE89 = { 3352, 1}, + 0xE8A = { 3353, 1}, + 0xE8B = { 3354, 2}, + 0xE8C = { 3356, 4}, + 0xE8D = { 3360, 6}, + 0xE8E = { 3366, 1}, + 0xE8F = { 3367, 1}, + 0xE90 = { 3368, 1}, + 0xE91 = { 3369, 1}, + 0xE92 = { 3370, 2}, + 0xE93 = { 3372, 1}, + 0xE94 = { 3373, 1}, + 0xE95 = { 3374, 1}, + 0xE96 = { 3375, 1}, + 0xE97 = { 3376, 2}, + 0xE9C = { 3378, 1}, + 0xE9D = { 3379, 1}, + 0xE9E = { 3380, 1}, + 0xE9F = { 3381, 1}, + 0xEA0 = { 3382, 2}, + 0xEA1 = { 3384, 3}, + 0xEA2 = { 3387, 1}, + 0xEA3 = { 3388, 1}, + 0xEA4 = { 3389, 7}, + 0xEA5 = { 3396, 7}, + 0xEA6 = { 3403, 1}, + 0xEA7 = { 3404, 1}, + 0xEA8 = { 3405, 1}, + 0xEA9 = { 3406, 2}, + 0xEB1 = { 3408, 1}, + 0xEB4 = { 3409, 1}, + 0xEB5 = { 3410, 1}, + 0xEB6 = { 3411, 1}, + 0xEB7 = { 3412, 1}, + 0xEBB = { 3413, 1}, + 0xEBC = { 3414, 1}, + 0xEBD = { 3415, 1}, + 0xEC0 = { 3416, 2}, + 0xEC1 = { 3418, 1}, + 0xEC2 = { 3419, 3}, + 0xEC3 = { 3422, 2}, + 0xEC4 = { 3424, 2}, + 0xEC5 = { 3426, 1}, + 0xEC6 = { 3427, 7}, + 0xEC7 = { 3434, 2}, + 0xEC8 = { 3436, 1}, + 0xEC9 = { 3437, 1}, + 0xECA = { 3438, 2}, + 0xECB = { 3440, 2}, + 0xECC = { 3442, 1}, + 0xECD = { 3443, 1}, + 0xECE = { 3444, 2}, + 0xECF = { 3446, 2}, + 0xED6 = { 3448, 4}, + 0xED8 = { 3452, 4}, + 0xED9 = { 3456, 4}, + 0xEDC = { 3460, 4}, + 0xEDD = { 3464, 4}, + 0xEE0 = { 3468, 24}, + 0xEE1 = { 3492, 23}, + 0xEE2 = { 3515, 22}, + 0xEE3 = { 3537, 29}, + 0xEE4 = { 3566, 23}, + 0xEE5 = { 3589, 22}, + 0xEE6 = { 3611, 22}, + 0xEE7 = { 3633, 29}, + 0xEE8 = { 3662, 28}, + 0xEE9 = { 3690, 12}, + 0xEEA = { 3702, 13}, + 0xEEB = { 3715, 18}, + 0xEEC = { 3733, 27}, + 0xEED = { 3760, 13}, + 0xEEE = { 3773, 22}, + 0xEEF = { 3795, 23}, + 0xEF0 = { 3818, 15}, + 0xEF1 = { 3833, 15}, + 0xEF2 = { 3848, 15}, + 0xEF3 = { 3863, 15}, + 0xEF4 = { 3878, 15}, + 0xEF5 = { 3893, 15}, + 0xEF6 = { 3908, 15}, + 0xEF7 = { 3923, 15}, + 0xEF8 = { 3938, 3}, + 0xEF9 = { 3941, 3}, + 0xEFA = { 3944, 3}, + 0xEFB = { 3947, 3}, + 0xEFC = { 3950, 3}, + 0xEFD = { 3953, 3}, + 0xEFE = { 3956, 3}, + 0xEFF = { 3959, 3}, + 0xF00 = { 3962, 12}, + 0xF01 = { 3974, 11}, + 0xF02 = { 3985, 8}, + 0xF03 = { 3993, 8}, + 0xF04 = { 4001, 9}, + 0xF05 = { 4010, 6}, + 0xF06 = { 4016, 5}, + 0xF07 = { 4021, 5}, + 0xF08 = { 4026, 6}, + 0xF09 = { 4032, 6}, + 0xF0A = { 4038, 4}, + 0xF0B = { 4042, 4}, + 0xF0C = { 4046, 4}, + 0xF0D = { 4050, 3}, + 0xF0E = { 4053, 4}, + 0xF0F = { 4057, 4}, + 0xF10 = { 4061, 7}, + 0xF11 = { 4068, 7}, + 0xF12 = { 4075, 6}, + 0xF13 = { 4081, 6}, + 0xF14 = { 4087, 5}, + 0xF15 = { 4092, 4}, + 0xF16 = { 4096, 5}, + 0xF17 = { 4101, 5}, + 0xF18 = { 4106, 5}, + 0xF19 = { 4111, 4}, + 0xF1A = { 4115, 4}, + 0xF1B = { 4119, 5}, + 0xF1C = { 4124, 5}, + 0xF1D = { 4129, 4}, + 0xF1E = { 4133, 4}, + 0xF1F = { 4137, 4}, + 0xF20 = { 4141, 5}, + 0xF21 = { 4146, 4}, + 0xF22 = { 4150, 4}, + 0xF23 = { 4154, 4}, + 0xF24 = { 4158, 5}, + 0xF25 = { 4163, 3}, + 0xF26 = { 4166, 4}, + 0xF27 = { 4170, 4}, + 0xF28 = { 4174, 5}, + 0xF29 = { 4179, 4}, + 0xF2A = { 4183, 4}, + 0xF2B = { 4187, 4}, + 0xF2C = { 4191, 5}, + 0xF2D = { 4196, 3}, + 0xF2E = { 4199, 4}, + 0xF2F = { 4203, 4}, + 0xF30 = { 4207, 6}, + 0xF31 = { 4213, 4}, + 0xF32 = { 4217, 6}, + 0xF33 = { 4223, 4}, + 0xF34 = { 4227, 5}, + 0xF35 = { 4232, 3}, + 0xF36 = { 4235, 6}, + 0xF37 = { 4241, 4}, + 0xF38 = { 4245, 7}, + 0xF39 = { 4252, 4}, + 0xF3A = { 4256, 19}, + 0xF3B = { 4275, 9}, + 0xF3C = { 4284, 5}, + 0xF3D = { 4289, 3}, + 0xF3E = { 4292, 5}, + 0xF3F = { 4297, 4}, + 0xF40 = { 4301, 7}, + 0xF41 = { 4308, 7}, + 0xF42 = { 4315, 5}, + 0xF43 = { 4320, 5}, + 0xF44 = { 4325, 7}, + 0xF45 = { 4332, 6}, + 0xF46 = { 4338, 5}, + 0xF47 = { 4343, 5}, + 0xF48 = { 4348, 6}, + 0xF49 = { 4354, 6}, + 0xF4A = { 4360, 4}, + 0xF4B = { 4364, 4}, + 0xF4C = { 4368, 4}, + 0xF4D = { 4372, 3}, + 0xF4E = { 4375, 4}, + 0xF4F = { 4379, 4}, + 0xF50 = { 4383, 5}, + 0xF51 = { 4388, 5}, + 0xF52 = { 4393, 4}, + 0xF53 = { 4397, 4}, + 0xF54 = { 4401, 5}, + 0xF55 = { 4406, 4}, + 0xF56 = { 4410, 5}, + 0xF57 = { 4415, 5}, + 0xF58 = { 4420, 5}, + 0xF59 = { 4425, 4}, + 0xF5A = { 4429, 4}, + 0xF5B = { 4433, 5}, + 0xF5C = { 4438, 5}, + 0xF5D = { 4443, 4}, + 0xF5E = { 4447, 4}, + 0xF5F = { 4451, 4}, + 0xF60 = { 4455, 5}, + 0xF61 = { 4460, 4}, + 0xF62 = { 4464, 4}, + 0xF63 = { 4468, 4}, + 0xF64 = { 4472, 5}, + 0xF65 = { 4477, 3}, + 0xF66 = { 4480, 4}, + 0xF67 = { 4484, 4}, + 0xF68 = { 4488, 5}, + 0xF69 = { 4493, 4}, + 0xF6A = { 4497, 4}, + 0xF6B = { 4501, 4}, + 0xF6C = { 4505, 5}, + 0xF6D = { 4510, 3}, + 0xF6E = { 4513, 4}, + 0xF6F = { 4517, 4}, + 0xF70 = { 4521, 5}, + 0xF71 = { 4526, 4}, + 0xF72 = { 4530, 4}, + 0xF73 = { 4534, 4}, + 0xF74 = { 4538, 4}, + 0xF75 = { 4542, 3}, + 0xF76 = { 4545, 4}, + 0xF77 = { 4549, 4}, + 0xF78 = { 4553, 8}, + 0xF79 = { 4561, 4}, + 0xF7A = { 4565, 4}, + 0xF7B = { 4569, 4}, + 0xF7C = { 4573, 4}, + 0xF7D = { 4577, 3}, + 0xF7E = { 4580, 4}, + 0xF7F = { 4584, 5}, + 0xF80 = { 4589, 1}, + 0xF81 = { 4590, 1}, + 0xF82 = { 4591, 1}, + 0xF83 = { 4592, 2}, + 0xF84 = { 4594, 1}, + 0xF85 = { 4595, 2}, + 0xF88 = { 4597, 1}, + 0xF89 = { 4598, 2}, + 0xF8A = { 4600, 1}, + 0xF8B = { 4601, 1}, + 0xF8C = { 4602, 1}, + 0xF8D = { 4603, 2}, + 0xF91 = { 4605, 1}, + 0xF93 = { 4606, 1}, + 0xF99 = { 4607, 2}, + 0xF9B = { 4609, 1}, + 0xFA0 = { 4610, 3}, + 0xFA1 = { 4613, 3}, + 0xFA2 = { 4616, 3}, + 0xFA3 = { 4619, 3}, + 0xFA4 = { 4622, 3}, + 0xFA5 = { 4625, 3}, + 0xFA6 = { 4628, 1}, + 0xFA7 = { 4629, 1}, + 0xFA8 = { 4630, 10}, + 0xFA9 = { 4640, 10}, + 0xFAA = { 4650, 6}, + 0xFAB = { 4656, 1}, + 0xFAC = { 4657, 6}, + 0xFAD = { 4663, 6}, + 0xFAE = { 4669, 6}, + 0xFB0 = { 4675, 3}, + 0xFB5 = { 4678, 1}, + 0xFB8 = { 4679, 1}, + 0xFB9 = { 4680, 1}, + 0xFBA = { 4681, 1}, + 0xFBB = { 4682, 1}, + 0xFBC = { 4683, 1}, + 0xFBE = { 4684, 1}, + 0xFC0 = { 4685, 1}, + 0xFC1 = { 4686, 1}, + 0xFC2 = { 4687, 3}, + 0xFC3 = { 4690, 3}, + 0xFC4 = { 4693, 1}, + 0xFC5 = { 4694, 1}, + 0xFC6 = { 4695, 2}, + 0xFC7 = { 4697, 2}, + 0xFC8 = { 4699, 7}, + 0xFC9 = { 4706, 11}, + 0xFCA = { 4717, 3}, + 0xFCB = { 4720, 3}, + 0xFCC = { 4723, 7}, + 0xFCD = { 4730, 7}, + 0xFCE = { 4737, 2}, + 0xFCF = { 4739, 2}, + 0xFD2 = { 4741, 1}, + 0xFD3 = { 4742, 1}, + 0xFD9 = { 4743, 4}, + 0xFDA = { 4747, 1}, + 0xFDB = { 4748, 1}, + 0xFE0 = { 4749, 28}, + 0xFE1 = { 4777, 26}, + 0xFE2 = { 4803, 26}, + 0xFE3 = { 4829, 32}, + 0xFE4 = { 4861, 29}, + 0xFE5 = { 4890, 27}, + 0xFE6 = { 4917, 27}, + 0xFE7 = { 4944, 33}, + 0xFE8 = { 4977, 32}, + 0xFE9 = { 5009, 17}, + 0xFEA = { 5026, 17}, + 0xFEB = { 5043, 29}, + 0xFEC = { 5072, 31}, + 0xFED = { 5103, 18}, + 0xFEE = { 5121, 26}, + 0xFEF = { 5147, 32}, + 0xFF0 = { 5179, 19}, + 0xFF1 = { 5198, 18}, + 0xFF2 = { 5216, 17}, + 0xFF3 = { 5233, 17}, + 0xFF4 = { 5250, 19}, + 0xFF5 = { 5269, 18}, + 0xFF6 = { 5287, 17}, + 0xFF7 = { 5304, 17}, + 0xFF8 = { 5321, 4}, + 0xFF9 = { 5325, 4}, + 0xFFA = { 5329, 4}, + 0xFFB = { 5333, 17}, + 0xFFC = { 5350, 4}, + 0xFFD = { 5354, 4}, + 0xFFE = { 5358, 4}, + 0xFFF = { 5362, 17}, } diff --git a/core/rexcode/isa/arm32/tablegen/generated/encode_tables.odin b/core/rexcode/isa/arm32/tablegen/generated/encode_tables.odin index 17a9506a2..ac5d48cde 100644 --- a/core/rexcode/isa/arm32/tablegen/generated/encode_tables.odin +++ b/core/rexcode/isa/arm32/tablegen/generated/encode_tables.odin @@ -8,7 +8,7 @@ package rexcode_arm32_generated import lib "../.." @(rodata) -ENCODE_FORMS := [1665]lib.Encoding{ +ENCODE_FORMS := [1656]lib.Encoding{ // .AND { .AND, {.GPR,.GPR,.IMM_MOD,.NONE}, {.RD,.RN_A32,.A32_IMM_MOD,.NONE}, 0x02000000, 0x0FE00000, .BASE, .A32, {}, {.NONE,.NONE} }, { .AND, {.GPR,.GPR,.GPR_SHIFTED,.NONE}, {.RD,.RN_A32,.RM_A32,.NONE}, 0x00000000, 0x0FE00010, .BASE, .A32, {}, {.NONE,.NONE} }, @@ -993,8 +993,6 @@ ENCODE_FORMS := [1665]lib.Encoding{ { .VFMA, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2000C50, 0xFFB00F50, .NEON, .A32, {}, {.F32,.NONE} }, { .VFMA, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xEF000C50, 0xEFA10F51, .MVE_FP, .T32, {thumb32=true}, {.F32,.NONE} }, { .VFMA, {.QPR,.QPR,.GPR,.NONE}, {.VD_Q,.VN_Q,.RM_T32,.NONE}, 0xEE310E40, 0xEFB10F51, .MVE_FP, .T32, {thumb32=true}, {.F32,.NONE} }, - { .VFMA, {.DPR,.DPR,.DPR_ELEM,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2A00040, 0xFFB00F50, .VFPV4, .A32, {}, {.I32,.NONE} }, - { .VFMA, {.QPR,.QPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_Q,.VM_D,.NONE}, 0xF3A00040, 0xFFB00F50, .VFPV4, .A32, {}, {.I32,.NONE} }, { .VFMA, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xFC300850, 0xFFB00F50, .BF16, .A32, {}, {.BF16,.NONE} }, // .VFMS { .VFMS, {.SPR,.SPR,.SPR,.NONE}, {.VD_S,.VN_S,.VM_S,.NONE}, 0x0EA00A40, 0x0FB00B50, .VFPV4, .A32, {}, {.F32,.NONE} }, @@ -1003,8 +1001,6 @@ ENCODE_FORMS := [1665]lib.Encoding{ { .VFMS, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2200C10, 0xFFB00F10, .NEON, .A32, {}, {.F32,.NONE} }, { .VFMS, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2200C50, 0xFFB00F50, .NEON, .A32, {}, {.F32,.NONE} }, { .VFMS, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xEF200C50, 0xEFA10F51, .MVE_FP, .T32, {thumb32=true}, {.F32,.NONE} }, - { .VFMS, {.DPR,.DPR,.DPR_ELEM,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2A00440, 0xFFB00F50, .VFPV4, .A32, {}, {.I32,.NONE} }, - { .VFMS, {.QPR,.QPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_Q,.VM_D,.NONE}, 0xF3A00440, 0xFFB00F50, .VFPV4, .A32, {}, {.I32,.NONE} }, // .VFNMA { .VFNMA, {.SPR,.SPR,.SPR,.NONE}, {.VD_S,.VN_S,.VM_S,.NONE}, 0x0E900A40, 0x0FB00B50, .VFPV4, .A32, {}, {.F32,.NONE} }, { .VFNMA, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0x0E900B40, 0x0FB00B50, .VFPV4, .A32, {}, {.F64,.NONE} }, @@ -1603,6 +1599,7 @@ ENCODE_FORMS := [1665]lib.Encoding{ { .VPADD, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2100B10, 0xFFB00F10, .NEON, .A32, {}, {.I16,.NONE} }, { .VPADD, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2200B10, 0xFFB00F10, .NEON, .A32, {}, {.I32,.NONE} }, { .VPADD, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF3000D00, 0xFFB00F10, .NEON, .A32, {}, {.F32,.NONE} }, + { .VPADD, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF3100D00, 0xFFB00F10, .NEON_HALF_FP, .A32, {}, {.F16,.NONE} }, // .VPADDL { .VPADDL, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B00200, 0xFFB30FD0, .NEON, .A32, {}, {.S8,.NONE} }, { .VPADDL, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B40200, 0xFFB30FD0, .NEON, .A32, {}, {.S16,.NONE} }, @@ -1727,15 +1724,6 @@ ENCODE_FORMS := [1665]lib.Encoding{ // .VCNT { .VCNT, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B00500, 0xFFB30FD0, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VCNT, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B00540, 0xFFB30FD0, .NEON, .A32, {}, {.SZ8,.NONE} }, - // .VPADD_F - { .VPADD_F, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF3000D00, 0xFFB00F10, .NEON, .A32, {}, {.F32,.NONE} }, - { .VPADD_F, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF3100D00, 0xFFB00F10, .NEON_HALF_FP, .A32, {}, {.F16,.NONE} }, - // .VRECPE_F - { .VRECPE_F, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3BB0500, 0xFFBF0FD0, .NEON, .A32, {}, {.F32,.NONE} }, - { .VRECPE_F, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3BB0540, 0xFFBF0FD0, .NEON, .A32, {}, {.F32,.NONE} }, - // .VRSQRTE_F - { .VRSQRTE_F, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3BB0580, 0xFFBF0FD0, .NEON, .A32, {}, {.F32,.NONE} }, - { .VRSQRTE_F, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3BB05C0, 0xFFBF0FD0, .NEON, .A32, {}, {.F32,.NONE} }, // .VREV16 { .VREV16, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B00100, 0xFFB30FD0, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VREV16, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B00140, 0xFFB30FD0, .NEON, .A32, {}, {.SZ8,.NONE} }, @@ -2540,335 +2528,332 @@ ENCODE_RUNS := [lib.Mnemonic]lib.Encode_Run{ .VNMUL = { 704, 2}, .VNMLA = { 706, 2}, .VNMLS = { 708, 2}, - .VFMA = { 710, 10}, - .VFMS = { 720, 8}, - .VFNMA = { 728, 3}, - .VFNMS = { 731, 3}, - .VABS = { 734, 12}, - .VNEG = { 746, 12}, - .VSQRT = { 758, 3}, - .VCMP = { 761, 8}, - .VCMPE = { 769, 4}, - .VCVT = { 773, 21}, - .VCVTB = { 794, 2}, - .VCVTT = { 796, 2}, - .VCVTA = { 798, 2}, - .VCVTN = { 800, 2}, - .VCVTP = { 802, 2}, - .VCVTM = { 804, 2}, - .VCVTR = { 806, 4}, - .VMOV = { 810, 31}, - .VMRS = { 841, 1}, - .VMSR = { 842, 1}, - .VLDR = { 843, 2}, - .VSTR = { 845, 2}, - .VLDM = { 847, 2}, - .VSTM = { 849, 2}, - .VPUSH = { 851, 2}, - .VPOP = { 853, 2}, - .VSEL = { 855, 2}, - .VMAXNM = { 857, 2}, - .VMINNM = { 859, 2}, - .VRINTA = { 861, 3}, - .VRINTN = { 864, 3}, - .VRINTP = { 867, 3}, - .VRINTM = { 870, 3}, - .VRINTR = { 873, 2}, - .VRINTZ = { 875, 3}, - .VRINTX = { 878, 3}, - .VADDL = { 881, 6}, - .VADDW = { 887, 6}, - .VSUBL = { 893, 6}, - .VSUBW = { 899, 6}, - .VHADD = { 905, 9}, - .VHSUB = { 914, 9}, - .VRHADD = { 923, 3}, - .VQADD = { 926, 11}, - .VQSUB = { 937, 11}, - .VMULL = { 948, 11}, - .VMLAL = { 959, 10}, - .VMLSL = { 969, 10}, - .VQDMULL = { 979, 4}, - .VQDMLAL = { 983, 4}, - .VQDMLSL = { 987, 4}, - .VQDMULH = { 991, 8}, - .VQRDMULH = { 999, 8}, - .VQRDMLAH = { 1007, 8}, - .VQRDMLSH = { 1015, 8}, - .VABA = { 1023, 8}, - .VABAL = { 1031, 6}, - .VABD = { 1037, 10}, - .VABDL = { 1047, 6}, - .VAND = { 1053, 3}, - .VBIC = { 1056, 3}, - .VORR = { 1059, 3}, - .VORN = { 1062, 3}, - .VEOR = { 1065, 3}, - .VBSL = { 1068, 2}, - .VBIT = { 1070, 2}, - .VBIF = { 1072, 2}, - .VMVN = { 1074, 13}, - .VMOVN = { 1087, 3}, - .VQMOVN = { 1090, 6}, - .VQMOVUN = { 1096, 3}, - .VMOVL = { 1099, 6}, - .VTST = { 1105, 6}, - .VCEQ = { 1111, 14}, - .VCGE = { 1125, 16}, - .VCGT = { 1141, 16}, - .VCLE = { 1157, 18}, - .VCLT = { 1175, 18}, - .VACGE = { 1193, 2}, - .VACGT = { 1195, 2}, - .VACLE = { 1197, 2}, - .VACLT = { 1199, 2}, - .VMAX = { 1201, 13}, - .VMIN = { 1214, 13}, - .VPMAX = { 1227, 5}, - .VPMIN = { 1232, 5}, - .VPADD = { 1237, 4}, - .VPADDL = { 1241, 6}, - .VPADAL = { 1247, 4}, - .VRECPE = { 1251, 4}, - .VRECPS = { 1255, 2}, - .VRSQRTE = { 1257, 4}, - .VRSQRTS = { 1261, 2}, - .VSHL = { 1263, 9}, - .VSHR = { 1272, 3}, - .VSRA = { 1275, 3}, - .VRSHL = { 1278, 5}, - .VRSHR = { 1283, 3}, - .VRSRA = { 1286, 2}, - .VSLI = { 1288, 2}, - .VSRI = { 1290, 2}, - .VQSHL = { 1292, 7}, - .VQSHRN = { 1299, 1}, - .VQSHRUN = { 1300, 1}, - .VQRSHL = { 1301, 16}, - .VQRSHRN = { 1317, 1}, - .VQRSHRUN = { 1318, 1}, - .VSHRN = { 1319, 1}, - .VRSHRN = { 1320, 1}, - .VSHLL = { 1321, 4}, - .VCLS = { 1325, 6}, - .VCLZ = { 1331, 6}, - .VCNT = { 1337, 2}, - .VPADD_F = { 1339, 2}, - .VRECPE_F = { 1341, 2}, - .VRSQRTE_F = { 1343, 2}, - .VREV16 = { 1345, 2}, - .VREV32 = { 1347, 4}, - .VREV64 = { 1351, 6}, - .VEXT = { 1357, 2}, - .VTBL = { 1359, 4}, - .VTBX = { 1363, 4}, - .VTRN = { 1367, 6}, - .VUZP = { 1373, 5}, - .VZIP = { 1378, 5}, - .VDUP = { 1383, 5}, - .VSWP = { 1388, 2}, - .VMOV_LANE = { 1390, 3}, - .VLD1 = { 1393, 8}, - .VLD2 = { 1401, 3}, - .VLD3 = { 1404, 2}, - .VLD4 = { 1406, 2}, - .VST1 = { 1408, 7}, - .VST2 = { 1415, 3}, - .VST3 = { 1418, 2}, - .VST4 = { 1420, 2}, - .AESE = { 1422, 1}, - .AESD = { 1423, 1}, - .AESMC = { 1424, 1}, - .AESIMC = { 1425, 1}, - .SHA1H = { 1426, 1}, - .SHA1SU0 = { 1427, 1}, - .SHA1SU1 = { 1428, 1}, - .SHA1C = { 1429, 1}, - .SHA1M = { 1430, 1}, - .SHA1P = { 1431, 1}, - .SHA256H = { 1432, 1}, - .SHA256H2 = { 1433, 1}, - .SHA256SU0 = { 1434, 1}, - .SHA256SU1 = { 1435, 1}, - .VJCVT = { 1436, 1}, - .VSDOT = { 1437, 4}, - .VUDOT = { 1441, 4}, - .VDOT = { 1445, 2}, - .VMMLA = { 1447, 1}, - .VFMAL = { 1448, 2}, - .VFMSL = { 1450, 2}, - .VCMLA = { 1452, 5}, - .VCADD = { 1457, 2}, - .VSMMLA = { 1459, 1}, - .VUMMLA = { 1460, 1}, - .VUSMMLA = { 1461, 1}, - .VSUDOT = { 1462, 2}, - .VUSDOT = { 1464, 4}, - .VQABS = { 1468, 1}, - .VQNEG = { 1469, 1}, - .VMOVX = { 1470, 1}, - .VINS = { 1471, 1}, - .VLD2R = { 1472, 1}, - .VLD3R = { 1473, 1}, - .VLD4R = { 1474, 1}, - .VLD1_LANE = { 1475, 3}, - .VLD2_LANE = { 1478, 3}, - .VLD3_LANE = { 1481, 3}, - .VLD4_LANE = { 1484, 3}, - .VST1_LANE = { 1487, 3}, - .VST2_LANE = { 1490, 3}, - .VST3_LANE = { 1493, 3}, - .VST4_LANE = { 1496, 3}, - .IT = { 1499, 1}, - .TT = { 1500, 1}, - .TTT = { 1501, 1}, - .TTA = { 1502, 1}, - .TTAT = { 1503, 1}, - .SG = { 1504, 1}, - .BXNS = { 1505, 1}, - .BLXNS = { 1506, 1}, - .PAC = { 1507, 1}, - .PACBTI = { 1508, 1}, - .AUT = { 1509, 1}, - .AUTG = { 1510, 1}, - .BTI = { 1511, 1}, - .WLS = { 1512, 1}, - .WLSTP = { 1513, 1}, - .DLS = { 1514, 1}, - .DLSTP = { 1515, 1}, - .LE = { 1516, 1}, - .LETP = { 1517, 1}, - .LCTP = { 1518, 1}, - .BF = { 1519, 1}, - .BFX = { 1520, 1}, - .BFL = { 1521, 1}, - .BFLX = { 1522, 1}, - .BFCSEL = { 1523, 1}, - .CX1 = { 1524, 1}, - .CX1A = { 1525, 1}, - .CX1D = { 1526, 1}, - .CX1DA = { 1527, 1}, - .CX2 = { 1528, 1}, - .CX2A = { 1529, 1}, - .CX2D = { 1530, 1}, - .CX2DA = { 1531, 1}, - .CX3 = { 1532, 1}, - .CX3A = { 1533, 1}, - .CX3D = { 1534, 1}, - .CX3DA = { 1535, 1}, - .VCX1 = { 1536, 2}, - .VCX1A = { 1538, 2}, - .VCX2 = { 1540, 2}, - .VCX2A = { 1542, 2}, - .VCX3 = { 1544, 2}, - .VCX3A = { 1546, 2}, - .VPT = { 1548, 1}, - .VPST = { 1549, 1}, - .VPSEL = { 1550, 1}, - .VPNOT = { 1551, 1}, - .VCTP = { 1552, 1}, - .VADDV = { 1553, 1}, - .VADDVA = { 1554, 1}, - .VADDLV = { 1555, 1}, - .VADDLVA = { 1556, 1}, - .VMAXV = { 1557, 1}, - .VMAXAV = { 1558, 1}, - .VMINV = { 1559, 1}, - .VMINAV = { 1560, 1}, - .VMAXNMV = { 1561, 1}, - .VMAXNMAV = { 1562, 1}, - .VMINNMV = { 1563, 1}, - .VMINNMAV = { 1564, 1}, - .VABAV = { 1565, 1}, - .VMLADAV = { 1566, 1}, - .VMLADAVA = { 1567, 1}, - .VMLADAVX = { 1568, 1}, - .VMLADAVAX = { 1569, 1}, - .VMLALDAV = { 1570, 1}, - .VMLALDAVA = { 1571, 1}, - .VMLALDAVX = { 1572, 1}, - .VMLALDAVAX = { 1573, 1}, - .VMLSDAV = { 1574, 1}, - .VMLSDAVA = { 1575, 1}, - .VMLSDAVX = { 1576, 1}, - .VMLSDAVAX = { 1577, 1}, - .VMLSLDAV = { 1578, 1}, - .VMLSLDAVA = { 1579, 1}, - .VMLSLDAVX = { 1580, 1}, - .VMLSLDAVAX = { 1581, 1}, - .VRMLALDAVH = { 1582, 1}, - .VRMLALDAVHA = { 1583, 1}, - .VRMLALDAVHX = { 1584, 1}, - .VRMLALDAVHAX = { 1585, 1}, - .VRMLSLDAVH = { 1586, 1}, - .VRMLSLDAVHA = { 1587, 1}, - .VRMLSLDAVHX = { 1588, 1}, - .VRMLSLDAVHAX = { 1589, 1}, - .VMLAV = { 1590, 1}, - .VMLAVA = { 1591, 1}, - .VMLSV = { 1592, 1}, - .VMLSVA = { 1593, 1}, - .VCMUL = { 1594, 1}, - .VHCADD = { 1595, 2}, - .VBRSR = { 1597, 1}, - .VSHLC = { 1598, 1}, - .VDDUP = { 1599, 1}, - .VIDUP = { 1600, 1}, - .VDWDUP = { 1601, 1}, - .VIWDUP = { 1602, 1}, - .VMOVNB = { 1603, 1}, - .VMOVNT = { 1604, 1}, - .VQMOVNB = { 1605, 1}, - .VQMOVNT = { 1606, 1}, - .VQMOVUNB = { 1607, 1}, - .VQMOVUNT = { 1608, 1}, - .VSHLLB = { 1609, 1}, - .VSHLLT = { 1610, 1}, - .VMULLB = { 1611, 1}, - .VMULLT = { 1612, 1}, - .VMLALB = { 1613, 1}, - .VMLALT = { 1614, 1}, - .VMLSLB = { 1615, 1}, - .VMLSLT = { 1616, 1}, - .VSHRNB = { 1617, 1}, - .VSHRNT = { 1618, 1}, - .VRSHRNB = { 1619, 1}, - .VRSHRNT = { 1620, 1}, - .VQSHRNB = { 1621, 1}, - .VQSHRNT = { 1622, 1}, - .VQRSHRNB = { 1623, 1}, - .VQRSHRNT = { 1624, 1}, - .VQSHRUNB = { 1625, 1}, - .VQSHRUNT = { 1626, 1}, - .VQRSHRUNB = { 1627, 1}, - .VQRSHRUNT = { 1628, 1}, - .VQDMLADH = { 1629, 1}, - .VQDMLADHX = { 1630, 1}, - .VQDMLSDH = { 1631, 1}, - .VQDMLSDHX = { 1632, 1}, - .VQRDMLADH = { 1633, 1}, - .VQRDMLADHX = { 1634, 1}, - .VQRDMLSDH = { 1635, 1}, - .VQRDMLSDHX = { 1636, 1}, - .VLDRB = { 1637, 2}, - .VLDRH = { 1639, 2}, - .VLDRW = { 1641, 2}, - .VLDRD = { 1643, 2}, - .VSTRB = { 1645, 2}, - .VSTRH = { 1647, 2}, - .VSTRW = { 1649, 2}, - .VSTRD = { 1651, 2}, - .VLD20 = { 1653, 1}, - .VLD21 = { 1654, 1}, - .VLD40 = { 1655, 1}, - .VLD41 = { 1656, 1}, - .VLD42 = { 1657, 1}, - .VLD43 = { 1658, 1}, - .VST20 = { 1659, 1}, - .VST21 = { 1660, 1}, - .VST40 = { 1661, 1}, - .VST41 = { 1662, 1}, - .VST42 = { 1663, 1}, - .VST43 = { 1664, 1}, - ._COUNT = { 1665, 0}, + .VFMA = { 710, 8}, + .VFMS = { 718, 6}, + .VFNMA = { 724, 3}, + .VFNMS = { 727, 3}, + .VABS = { 730, 12}, + .VNEG = { 742, 12}, + .VSQRT = { 754, 3}, + .VCMP = { 757, 8}, + .VCMPE = { 765, 4}, + .VCVT = { 769, 21}, + .VCVTB = { 790, 2}, + .VCVTT = { 792, 2}, + .VCVTA = { 794, 2}, + .VCVTN = { 796, 2}, + .VCVTP = { 798, 2}, + .VCVTM = { 800, 2}, + .VCVTR = { 802, 4}, + .VMOV = { 806, 31}, + .VMRS = { 837, 1}, + .VMSR = { 838, 1}, + .VLDR = { 839, 2}, + .VSTR = { 841, 2}, + .VLDM = { 843, 2}, + .VSTM = { 845, 2}, + .VPUSH = { 847, 2}, + .VPOP = { 849, 2}, + .VSEL = { 851, 2}, + .VMAXNM = { 853, 2}, + .VMINNM = { 855, 2}, + .VRINTA = { 857, 3}, + .VRINTN = { 860, 3}, + .VRINTP = { 863, 3}, + .VRINTM = { 866, 3}, + .VRINTR = { 869, 2}, + .VRINTZ = { 871, 3}, + .VRINTX = { 874, 3}, + .VADDL = { 877, 6}, + .VADDW = { 883, 6}, + .VSUBL = { 889, 6}, + .VSUBW = { 895, 6}, + .VHADD = { 901, 9}, + .VHSUB = { 910, 9}, + .VRHADD = { 919, 3}, + .VQADD = { 922, 11}, + .VQSUB = { 933, 11}, + .VMULL = { 944, 11}, + .VMLAL = { 955, 10}, + .VMLSL = { 965, 10}, + .VQDMULL = { 975, 4}, + .VQDMLAL = { 979, 4}, + .VQDMLSL = { 983, 4}, + .VQDMULH = { 987, 8}, + .VQRDMULH = { 995, 8}, + .VQRDMLAH = { 1003, 8}, + .VQRDMLSH = { 1011, 8}, + .VABA = { 1019, 8}, + .VABAL = { 1027, 6}, + .VABD = { 1033, 10}, + .VABDL = { 1043, 6}, + .VAND = { 1049, 3}, + .VBIC = { 1052, 3}, + .VORR = { 1055, 3}, + .VORN = { 1058, 3}, + .VEOR = { 1061, 3}, + .VBSL = { 1064, 2}, + .VBIT = { 1066, 2}, + .VBIF = { 1068, 2}, + .VMVN = { 1070, 13}, + .VMOVN = { 1083, 3}, + .VQMOVN = { 1086, 6}, + .VQMOVUN = { 1092, 3}, + .VMOVL = { 1095, 6}, + .VTST = { 1101, 6}, + .VCEQ = { 1107, 14}, + .VCGE = { 1121, 16}, + .VCGT = { 1137, 16}, + .VCLE = { 1153, 18}, + .VCLT = { 1171, 18}, + .VACGE = { 1189, 2}, + .VACGT = { 1191, 2}, + .VACLE = { 1193, 2}, + .VACLT = { 1195, 2}, + .VMAX = { 1197, 13}, + .VMIN = { 1210, 13}, + .VPMAX = { 1223, 5}, + .VPMIN = { 1228, 5}, + .VPADD = { 1233, 5}, + .VPADDL = { 1238, 6}, + .VPADAL = { 1244, 4}, + .VRECPE = { 1248, 4}, + .VRECPS = { 1252, 2}, + .VRSQRTE = { 1254, 4}, + .VRSQRTS = { 1258, 2}, + .VSHL = { 1260, 9}, + .VSHR = { 1269, 3}, + .VSRA = { 1272, 3}, + .VRSHL = { 1275, 5}, + .VRSHR = { 1280, 3}, + .VRSRA = { 1283, 2}, + .VSLI = { 1285, 2}, + .VSRI = { 1287, 2}, + .VQSHL = { 1289, 7}, + .VQSHRN = { 1296, 1}, + .VQSHRUN = { 1297, 1}, + .VQRSHL = { 1298, 16}, + .VQRSHRN = { 1314, 1}, + .VQRSHRUN = { 1315, 1}, + .VSHRN = { 1316, 1}, + .VRSHRN = { 1317, 1}, + .VSHLL = { 1318, 4}, + .VCLS = { 1322, 6}, + .VCLZ = { 1328, 6}, + .VCNT = { 1334, 2}, + .VREV16 = { 1336, 2}, + .VREV32 = { 1338, 4}, + .VREV64 = { 1342, 6}, + .VEXT = { 1348, 2}, + .VTBL = { 1350, 4}, + .VTBX = { 1354, 4}, + .VTRN = { 1358, 6}, + .VUZP = { 1364, 5}, + .VZIP = { 1369, 5}, + .VDUP = { 1374, 5}, + .VSWP = { 1379, 2}, + .VMOV_LANE = { 1381, 3}, + .VLD1 = { 1384, 8}, + .VLD2 = { 1392, 3}, + .VLD3 = { 1395, 2}, + .VLD4 = { 1397, 2}, + .VST1 = { 1399, 7}, + .VST2 = { 1406, 3}, + .VST3 = { 1409, 2}, + .VST4 = { 1411, 2}, + .AESE = { 1413, 1}, + .AESD = { 1414, 1}, + .AESMC = { 1415, 1}, + .AESIMC = { 1416, 1}, + .SHA1H = { 1417, 1}, + .SHA1SU0 = { 1418, 1}, + .SHA1SU1 = { 1419, 1}, + .SHA1C = { 1420, 1}, + .SHA1M = { 1421, 1}, + .SHA1P = { 1422, 1}, + .SHA256H = { 1423, 1}, + .SHA256H2 = { 1424, 1}, + .SHA256SU0 = { 1425, 1}, + .SHA256SU1 = { 1426, 1}, + .VJCVT = { 1427, 1}, + .VSDOT = { 1428, 4}, + .VUDOT = { 1432, 4}, + .VDOT = { 1436, 2}, + .VMMLA = { 1438, 1}, + .VFMAL = { 1439, 2}, + .VFMSL = { 1441, 2}, + .VCMLA = { 1443, 5}, + .VCADD = { 1448, 2}, + .VSMMLA = { 1450, 1}, + .VUMMLA = { 1451, 1}, + .VUSMMLA = { 1452, 1}, + .VSUDOT = { 1453, 2}, + .VUSDOT = { 1455, 4}, + .VQABS = { 1459, 1}, + .VQNEG = { 1460, 1}, + .VMOVX = { 1461, 1}, + .VINS = { 1462, 1}, + .VLD2R = { 1463, 1}, + .VLD3R = { 1464, 1}, + .VLD4R = { 1465, 1}, + .VLD1_LANE = { 1466, 3}, + .VLD2_LANE = { 1469, 3}, + .VLD3_LANE = { 1472, 3}, + .VLD4_LANE = { 1475, 3}, + .VST1_LANE = { 1478, 3}, + .VST2_LANE = { 1481, 3}, + .VST3_LANE = { 1484, 3}, + .VST4_LANE = { 1487, 3}, + .IT = { 1490, 1}, + .TT = { 1491, 1}, + .TTT = { 1492, 1}, + .TTA = { 1493, 1}, + .TTAT = { 1494, 1}, + .SG = { 1495, 1}, + .BXNS = { 1496, 1}, + .BLXNS = { 1497, 1}, + .PAC = { 1498, 1}, + .PACBTI = { 1499, 1}, + .AUT = { 1500, 1}, + .AUTG = { 1501, 1}, + .BTI = { 1502, 1}, + .WLS = { 1503, 1}, + .WLSTP = { 1504, 1}, + .DLS = { 1505, 1}, + .DLSTP = { 1506, 1}, + .LE = { 1507, 1}, + .LETP = { 1508, 1}, + .LCTP = { 1509, 1}, + .BF = { 1510, 1}, + .BFX = { 1511, 1}, + .BFL = { 1512, 1}, + .BFLX = { 1513, 1}, + .BFCSEL = { 1514, 1}, + .CX1 = { 1515, 1}, + .CX1A = { 1516, 1}, + .CX1D = { 1517, 1}, + .CX1DA = { 1518, 1}, + .CX2 = { 1519, 1}, + .CX2A = { 1520, 1}, + .CX2D = { 1521, 1}, + .CX2DA = { 1522, 1}, + .CX3 = { 1523, 1}, + .CX3A = { 1524, 1}, + .CX3D = { 1525, 1}, + .CX3DA = { 1526, 1}, + .VCX1 = { 1527, 2}, + .VCX1A = { 1529, 2}, + .VCX2 = { 1531, 2}, + .VCX2A = { 1533, 2}, + .VCX3 = { 1535, 2}, + .VCX3A = { 1537, 2}, + .VPT = { 1539, 1}, + .VPST = { 1540, 1}, + .VPSEL = { 1541, 1}, + .VPNOT = { 1542, 1}, + .VCTP = { 1543, 1}, + .VADDV = { 1544, 1}, + .VADDVA = { 1545, 1}, + .VADDLV = { 1546, 1}, + .VADDLVA = { 1547, 1}, + .VMAXV = { 1548, 1}, + .VMAXAV = { 1549, 1}, + .VMINV = { 1550, 1}, + .VMINAV = { 1551, 1}, + .VMAXNMV = { 1552, 1}, + .VMAXNMAV = { 1553, 1}, + .VMINNMV = { 1554, 1}, + .VMINNMAV = { 1555, 1}, + .VABAV = { 1556, 1}, + .VMLADAV = { 1557, 1}, + .VMLADAVA = { 1558, 1}, + .VMLADAVX = { 1559, 1}, + .VMLADAVAX = { 1560, 1}, + .VMLALDAV = { 1561, 1}, + .VMLALDAVA = { 1562, 1}, + .VMLALDAVX = { 1563, 1}, + .VMLALDAVAX = { 1564, 1}, + .VMLSDAV = { 1565, 1}, + .VMLSDAVA = { 1566, 1}, + .VMLSDAVX = { 1567, 1}, + .VMLSDAVAX = { 1568, 1}, + .VMLSLDAV = { 1569, 1}, + .VMLSLDAVA = { 1570, 1}, + .VMLSLDAVX = { 1571, 1}, + .VMLSLDAVAX = { 1572, 1}, + .VRMLALDAVH = { 1573, 1}, + .VRMLALDAVHA = { 1574, 1}, + .VRMLALDAVHX = { 1575, 1}, + .VRMLALDAVHAX = { 1576, 1}, + .VRMLSLDAVH = { 1577, 1}, + .VRMLSLDAVHA = { 1578, 1}, + .VRMLSLDAVHX = { 1579, 1}, + .VRMLSLDAVHAX = { 1580, 1}, + .VMLAV = { 1581, 1}, + .VMLAVA = { 1582, 1}, + .VMLSV = { 1583, 1}, + .VMLSVA = { 1584, 1}, + .VCMUL = { 1585, 1}, + .VHCADD = { 1586, 2}, + .VBRSR = { 1588, 1}, + .VSHLC = { 1589, 1}, + .VDDUP = { 1590, 1}, + .VIDUP = { 1591, 1}, + .VDWDUP = { 1592, 1}, + .VIWDUP = { 1593, 1}, + .VMOVNB = { 1594, 1}, + .VMOVNT = { 1595, 1}, + .VQMOVNB = { 1596, 1}, + .VQMOVNT = { 1597, 1}, + .VQMOVUNB = { 1598, 1}, + .VQMOVUNT = { 1599, 1}, + .VSHLLB = { 1600, 1}, + .VSHLLT = { 1601, 1}, + .VMULLB = { 1602, 1}, + .VMULLT = { 1603, 1}, + .VMLALB = { 1604, 1}, + .VMLALT = { 1605, 1}, + .VMLSLB = { 1606, 1}, + .VMLSLT = { 1607, 1}, + .VSHRNB = { 1608, 1}, + .VSHRNT = { 1609, 1}, + .VRSHRNB = { 1610, 1}, + .VRSHRNT = { 1611, 1}, + .VQSHRNB = { 1612, 1}, + .VQSHRNT = { 1613, 1}, + .VQRSHRNB = { 1614, 1}, + .VQRSHRNT = { 1615, 1}, + .VQSHRUNB = { 1616, 1}, + .VQSHRUNT = { 1617, 1}, + .VQRSHRUNB = { 1618, 1}, + .VQRSHRUNT = { 1619, 1}, + .VQDMLADH = { 1620, 1}, + .VQDMLADHX = { 1621, 1}, + .VQDMLSDH = { 1622, 1}, + .VQDMLSDHX = { 1623, 1}, + .VQRDMLADH = { 1624, 1}, + .VQRDMLADHX = { 1625, 1}, + .VQRDMLSDH = { 1626, 1}, + .VQRDMLSDHX = { 1627, 1}, + .VLDRB = { 1628, 2}, + .VLDRH = { 1630, 2}, + .VLDRW = { 1632, 2}, + .VLDRD = { 1634, 2}, + .VSTRB = { 1636, 2}, + .VSTRH = { 1638, 2}, + .VSTRW = { 1640, 2}, + .VSTRD = { 1642, 2}, + .VLD20 = { 1644, 1}, + .VLD21 = { 1645, 1}, + .VLD40 = { 1646, 1}, + .VLD41 = { 1647, 1}, + .VLD42 = { 1648, 1}, + .VLD43 = { 1649, 1}, + .VST20 = { 1650, 1}, + .VST21 = { 1651, 1}, + .VST40 = { 1652, 1}, + .VST41 = { 1653, 1}, + .VST42 = { 1654, 1}, + .VST43 = { 1655, 1}, + ._COUNT = { 1656, 0}, } diff --git a/core/rexcode/isa/arm32/tables/arm32.bucket_list.bin b/core/rexcode/isa/arm32/tables/arm32.bucket_list.bin index 45e43b9dbfbd334414f4f6a95c2c2915b813462c..b9c14de52346f6219d1b0e22336c394554d4eafe 100644 GIT binary patch literal 10758 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 C-i3?+ delta 6072 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 F1_0?ozZn1k diff --git a/core/rexcode/isa/arm32/tables/arm32.encode_runs.bin b/core/rexcode/isa/arm32/tables/arm32.encode_runs.bin index bbfb9942b8f86d09bbded8da309eed5498eda8bf..bd080323aaed4c7a586b5123da233e6f0389771c 100644 GIT binary patch delta 1575 zcmdm>Izx3s3`Zmf0|Uc3CI$vJ1_p*JObiUn3=9m{q4X^#1_mAm28L%)`V&%KxuiFdWe7$R6rFONZl1?0|Ue4 zdMINl)Pm(udL@)z4W-vYE#3vCkFzi^ure?(oPp98q4YJV#dlaBA@~4FKY^O_49b56 z<=4MqfyC8Us1JTX>EBQTLAHR>2s0}rL|CCTJCx>RWnf@uU|J154)tLjRK5`^-VCK%AwFSfgVOC#x&umg zLg_9j-3_ICKr|>z_ktLcr}CJCQVGKhs6XaFjh_dSWnf^K59Kd}(u<+~Spns*f~s2$ zrPn~|wNUx>Aaf`C^2!^63WV)Y*&R@NCzRd=_2gbCeE>vHUdyZR2-0;Ks_F`qz6zzU zLFwyI`UaG~38im==*e$+pVxzms-I97{f5$iq4a+!&Bz8xYRqhqB*g-yS)nu=lxBz0 z98j7QN^?PJZYa$IrFq#HHV5--GBPqvZWXZS1bN5?BsKY{z<;pA;-D5MKR>9+b|9(gjeu5K0$8>0&5d!p6YFz&P1eNFG#nGXMaf4R@&k delta 1581 zcmbQCxgs%)r3Oz`!sG zO3#Mso5#$c#K6tKz_5~;0Zea!()*bi7(jt?5=2kF%PC$D^5T7FNDw`T((j@4cPRZI zO0%;-oWsikF-088mt}!?PXS6RLuoZAtqG-dSRjF?2c->I80x{HX~e?7z{|kEU=LO3 z1U1+L%J+uy1EF*{3j+fm0|P@U3j>1y0|P@Tlx}5VU=U(pV3-c2S3)gX4W-vY>Ge>0 zBTGHR;(bsDoMvHQUExr%sKZerJp$5H#^4~)F?^z%b^8@OE-%$D= z)Ldp(NQkl3vqFM|14?s2X&zPv26hGp24Pl6x)OoXqO1@ft3vr|P+A>IYd~pDR*1uO zSs_to45clh=37JQdRr*N9!fhxX=kVb?of@sP;q~#crcU>hswvYLP9PHN~c5V9H_oL zsE-R-A!)4=!q;P{fhwqj(hX3bw?h;#bV0>?K=kCJJm&SFd^Q#8&uLJ4I+UIPrDsCv zSx|a5l%4~n=R%#o5K1ovna;q#upBDC0?JI;I3q^nS`-T={)W%-_iz4!y9hJk_MCzSpLrGG=| zKT!HFl>P^$|3hg|$pLaB6B{Inu|R1yD9r(-xu7%;8ziamvN3FK=GSE81ckFPNO1C6 z0eeQK$zKKjgB=zN5@TRsh=bDcP&xrhCqn5YD4h(YQ=oJz)WUQqoe8D0p>!^k&WF;4 tP`a269QLI`@;)G^RYHxcg3{Gcx&}(uLg_jvT@R%jpmZasWMyDr005PSdG-JR diff --git a/core/rexcode/isa/arm32/tables/arm32.entries.bin b/core/rexcode/isa/arm32/tables/arm32.entries.bin index d64a80d8478751f313732f907be836316a951879..0999b9e45c18c8f5f3d4c3ad81875a9e9b2b74b3 100644 GIT binary patch delta 7007 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 KxO?)0Dcb?OV$zlX delta 7116 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 MDF%kgAG!Yn076bL{Qv*} diff --git a/core/rexcode/isa/arm32/tables/arm32.idx_a32.bin b/core/rexcode/isa/arm32/tables/arm32.idx_a32.bin index 0bdf5058f11a2be5e542c47845581ddb9938d4b9..fe72eb4afd8141dcd496f880f7f0dcb51ab0be69 100644 GIT binary patch delta 778 zcmZqRXyBNzs$P%bJ(D;C8?z;YJ+nST9{zTA zDp;f$CbK9qY+>PK*vn$Y@SR1QL5Wq1!H0DY!wXg`1|>Fa246NUhH|z!48rU@4D#%Z z3<~T#3_9$L47%)$40`NL3$nXzj4hJIxBL^b`69*#$ zGY2CB3kMSe8wYbe11AR)12+c?13w2Ng8&C3gCGYZgAfNJgD?jpg9rx`gBS-Bg9HZ? zgA@lNgER*tgA4~FgDeLlgB%AVgFFWlgCYkbgAxZ5g9-;DgDM9jgBk}TgE|Kzg9Zl^ zgBAx9gANB1gB}MHg8>H96SsUIM^7T zaj-DF;$UHT$HBtziGzvZ3kM6s4-OWFKO9U9|2UW!7&uuNSU6c2I5?RYxHy>@csN-Y z1UOk3L^zok#5kE4BK4AF*3~OVq{pr#mKObi;-aw7bC-BE=GnWT#O7$xfmG$Cst?< delta 776 zcmZqRXyBNzs@{O%Ba=7-2eT!EBeOn30kZ+a0%mcB?abB;pO~c?cv*BAtXMc1oLQ_H z>R6;1X0j+U>|)_$ILuf3?b}{459VxA`F@Aj0{=q0t{8`Obj*b zA`BDQ85t(BGcrtKXJnYn&d4x@osnTGJ0rt1c1DKj?2HUE*x4B7u`@EvXJ=$sz|P39 zke!iX5j!KpVs>VRW$cU$%h?$jKwt$s8^bzwHij+iY#=VfE_ODC1MF-J$Jp5z&aktB z#p*AzvoKs`XJxp>&IA^?!_LC+fSr}$DLW^_JE+(Pc1DJe?5qsm*xA8qK*V2mW(Ech zMg~R>Mg}GhMh0dMW(GD6W(H0UMg}epCI%i3Mh0FECI)^EMg{>6CI%r6Mh0OHMg|cM zMg~z1Mg}nsCI$%(<_HF94kiX!4i*MQ4n_tg4n_uL4n_tQ4n_u54n_tw4kiW-4kiXI z4kiX24n_uD4n_t&4n_uj4n_t84n_t;4kiX;4n_tO4kiXO4n_uZ4n_tG4n_t`4#vrg znd0l27_vB+7;-q681gun7z#L;7>YQU7)m&p7|J-97%DiJ7^*nf85%iQ7+N`a7$$PC zGEC#(W?0CL36or{qH0CQJllmGw# diff --git a/core/rexcode/isa/arm32/tables/arm32.idx_t16.bin b/core/rexcode/isa/arm32/tables/arm32.idx_t16.bin index fbaa9362e846b37635052e5443e8eb8ca45b094e..5cee54de858ea5e66f43040c10314520778e7c98 100644 GIT binary patch literal 256 zcmZ3=!^p6Vhmm194ACY~x{M*v=!saGZyo;T#Vm!+9P?h6_AQ43~JA7_RUzF z$Z(T~k>M5(Bg1VTMus~)j0|^q7#Z&IFf!cdVPtr~!^rTEhmqkC4IJd6xa zc^Da<@h~zx=V4@c!NbV#l82Gu6%QlBYaT|1H$3bNpLv)VzVfgz{N&+aVB}?FVB%$D mVCH3HVBuwCVC7|GVB=+EVCQ9I;NWFu;O1py;NfLtzy$y|ttt@! literal 256 zcmdna!^p6Mhmm0?4@-Q*%=V4+v$iv8Rh=-BkFb^Zc5gtZ{ zqdbfZ$9NbSj`J`woZw+(ILRZxaFd6f;QF z$nctnk>L#wBg0!BMuvAhj12F27#TkBFfx4PVPyEk!^rTNhmqk64B8a=eTTxBvj7sVgV| diff --git a/core/rexcode/isa/arm32/tables/arm32.idx_t32.bin b/core/rexcode/isa/arm32/tables/arm32.idx_t32.bin index ff3f7e97b88328d841fdf1dbcfdcb83ac003a8af..3553b433adda5b4106ce35e1b30f844a396b954d 100644 GIT binary patch literal 512 zcmZP=1;Z)?mT`$Q?Bx<>xWFaM@R%!u!JAv2A&Xm$VFI@}!*XsuhOOKp3@5qW83cI5 J8Ps{|7y$cd2{`}& literal 512 zcmZP=1;Z)?c5sO^oaYi|c*G^l@RcirA(mU7p@v(HVG*}D!%l8KhU45K47a)68I*X$ J87z6~7yuDx3K0MR diff --git a/core/rexcode/isa/arm32/tables/arm32.idx_t32_sub.bin b/core/rexcode/isa/arm32/tables/arm32.idx_t32_sub.bin index 87cec02c4aa19ec53abfcd95469481c52fc880a4..fb447f346afb0b4f396556c9b947288d16af4014 100644 GIT binary patch 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)sjPczM|vgn5}5 zM0pt*#CRDQ#CaJRBzPGaBzYMbqqG40xF^{A$F@$Y9LN$Y8?D$Y9FL$Y93H#9+b8%wWyS$Y8_E z$Y9IM&fvn!&fv|<$l$}v$l%M%$l!;?9Atw7cp2f`Kwd_MAYMj>U|vRs5F~Msf>2&Y zhA>`6hHxbD2wo$xy?~!q5O^g9KW5Sr|Hy_&vN53`=;$8FurE zF0 z;ta3&_!)lk@iTDn^D~I^^E0UN^D~(8^E0^c^D_kV^D`vzGc%;}Gc#oHGc#oKGc)Az zGcy$OGc%O%Gc%O)Gc#22^DwmWb2Cij=U|x0&%v;epOaw~KO4gaepZI9{HzSS_}Lf^ z@Ut--<7Z(w#m~ZUj-Q3$5mcgP#B^L$Ck~L%0A7L$m-3L%aYhLy7=1L%IM9L$&}5 zL%skTL#Y4@L!|&4L%jeCL$d%YLx%t}L$?4M!$biVhN%MV408ln7#0W!Gi(;%WY{CX z%5YGCnc;{4E5k_v7KXC|>_XTsUQo( zN=Hwh6K@>=I;Q*eA%$a8Qti;iw=B!%0C7hKqtM3|9qN7;Xx(Fx(Yn zVR$IW%2{JMK5M*Td zDagq1OOTP_HGKdLrF(?ReF=z>~F&GFjG8hW6F_;UnG1v;RfsJt%Vg}R5gd37Q z?m~7ILx8X%L!qz&!$e_0hDE}H44Z{z z87>IRGrSiTVqg@JVvrV5V6YYuX7CdcVn`4XWGEC7WM~o*W|%4>#IRgMkYR_2Aj3%! j7KXDTEDRS#SQxH~2r@hqVPSYB!ou)QgoWXgh#&(1ZsV*4 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)sjPg z)Oi^hGqG!EM6vt99~9-TwZ2|0$wJDB3>qj5?)4zQeJk38eS%bI$lPGdR|6`23{tH zCSE3n7G6e%R$fMiHeM!%4m|Ga;$;C@$pP!+GpP8YYpP8YGpP8YSpP8Y7 zpP8YVpP8YJpP8YPpP8YDpNC-vKR3f-eh!A!{2UCM`8gT(@Ut--;%8+z&dJm+U&c+Jnk@SdNY;Tu0Y!(V^22KH120j56 z1|b1f25|va1{ncX21NlD22}wT22BB020Z~*24evh26F)x25SKp273Wk1{VPq1`h!i z1|IVTPjuoDAm# zSQ#!0Ff&{eU}d;1z`}4}fSuu)06W850ak`j0;~+*1=tz>39vD+2(mJ83bHcr39>PW z2(mFq39>NA39>LK39>M#2{JQi3bHWh3bHU53bHbo39>R+3$ifS3$idc3$ikJ2(mEv z2(mH+3bHbU39>Ro3$if83$idI3$ij~2(mKd3bHU13bHVi3bHU%3bHcP39>LW39>M> z39>MB39>Tu3os|8sZHV85^Y!+l;*e=Mz zuv?Io;ea3u!x2Fih7*D;3}*yc7%m7hGh7yAVYn{H!f;!VgW<6t3&V3k7KYb?EDY}j zSr|SGGBbP=WMTLv$jb0vkdc8wh>?L&h>?Lwh>3wkh>?L+2$65ug%}w)gqRq(gcupP zg%}xlgcuokk>o*XnqLT#{{)~kNDLVZLe&dnkrxqSW)K%*W{?tMW{?$PW>64fW>6Ml zW>6DiWKb7kWY7@eVlWcoVz3cnV{j5;WN;Q@WAGGWWAGPZ16vU)#0;j9i3lWnB83ks(8fks(uvi6L8vi6K{r zouNdCo1tEanW0IDnW0sPouNmFonf*N6T?)fzd&|R7h+_X0W}lEN5(USSQzFCF*3}< zB0pb9hGDmm6vI^^DTen#3Jm}7GYs{E+WYALxhFlj|d9`gD49Fi>M$20K%H6MF0Q* diff --git a/core/rexcode/isa/arm32/tests/smoke.odin b/core/rexcode/isa/arm32/tests/smoke.odin index c626b48cf..b7b38dd1c 100644 --- a/core/rexcode/isa/arm32/tests/smoke.odin +++ b/core/rexcode/isa/arm32/tests/smoke.odin @@ -389,7 +389,7 @@ run_smoke :: proc() { check("VFMSL Q", .VFMSL, 1, 0xFCA00850, 0xFFB00F50) check("VCVT BF16", .VCVT, 10, 0xF3B60600, 0xFFBF0FD0) check("VDOT BF16 D", .VDOT, 0, 0xFC000D00, 0xFFB00F10) - check("VFMA BF16 Q", .VFMA, 9, 0xFC300850, 0xFFB00F50) + check("VFMA BF16 Q", .VFMA, 7, 0xFC300850, 0xFFB00F50) check("VMMLA BF16 Q", .VMMLA, 0, 0xFC000C40, 0xFFB00F50) // ---- Barriers / hints: ESB, PSB CSYNC, TSB CSYNC, CSDB, SB ---- @@ -513,8 +513,6 @@ run_smoke :: proc() { check("VQDMULL lane .S16",.VQDMULL, 2, 0xF2900B40, 0xFFB00F50) check("VQDMLAL lane .S32",.VQDMLAL, 3, 0xF2A00340, 0xFFB00F50) check("VQDMLSL lane", .VQDMLSL, 2, 0xF2900740, 0xFFB00F50) - check("VFMA lane D", .VFMA, 7, 0xF2A00040, 0xFFB00F50) - check("VFMS lane Q", .VFMS, 7, 0xF3A00440, 0xFFB00F50) check("VQRDMLAH lane", .VQRDMLAH, 4, 0xF2900E40, 0xFFB00F50) check("VQRDMLSH lane", .VQRDMLSH, 4, 0xF2900F40, 0xFFB00F50) check("VCMLA lane D", .VCMLA, 2, 0xFE000800, 0xFFB00F10)