From 93a0baf422c35d55f4f93010863fa3621e0f00a6 Mon Sep 17 00:00:00 2001 From: Brendan Punsky Date: Sat, 29 Aug 2026 02:00:33 -0400 Subject: [PATCH] rexcode/arm32: masks that let one form answer for another, and four missing shapes The one-register-and-modified-immediate forms left the op bit and the Q bit out of their masks. Those two bits are the whole difference between VMOV and VMVN and between the D and Q widths, so a handful of D-form entries answered for words that were neither -- a Q-width VMOV decoded as a D-width VMVN. With them pinned the matrix has to be complete, and it was not: only four of the ten cmodes had Q forms at all. Both mnemonics now carry the full set, with cmode 1110 going to VMOV.I64 rather than VMVN when op is set, and cmode 1111 belonging to VMOV alone. VLDM and VSTM name their addressing mode, as LDM and STM do, so they are VLDMIA and VLDMDB rather than one mnemonic apiece -- and the decrement-before forms, which always write back, had no entries at all. The broadcast structure loads are not mnemonics of their own. VLD2R and friends are how the encoding is named, not how it is written: an assembler writes `vld2.8 {d0[], d1[]}, [r0]`, a VLD2 with an all-lanes list. They join VLD2, VLD3 and VLD4 as the forms they are, and the list carries the spacing bit 5 gives it. VFMA against bfloat16 names which half of each pair it takes on the mnemonic, bottom or top. It had one form covering the top half under the plain name and none for the bottom. Every word the A32 sweep produces now round-trips through llvm-mc or is one llvm's own disassembly cannot: 985 exact, 177 with no assemblable text, 38 reserved, and PSB CSYNC and TSB CSYNC, which llvm does not implement for AArch32. Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_018UmHLRF11EoWwNWCJ7JGaA --- core/rexcode/isa/arm32/decoder.odin | 5 + core/rexcode/isa/arm32/encoder.odin | 4 + core/rexcode/isa/arm32/encoding_types.odin | 3 + core/rexcode/isa/arm32/mnemonic_builders.odin | 44 +- core/rexcode/isa/arm32/mnemonics.odin | 10 +- .../isa/arm32/tablegen/encoding_table.odin | 122 +- .../tablegen/generated/decode_tables.odin | 2334 +++++++++-------- .../tablegen/generated/encode_tables.odin | 731 +++--- .../isa/arm32/tables/arm32.bucket_list.bin | Bin 10902 -> 11018 bytes .../isa/arm32/tables/arm32.encode_forms.bin | Bin 39123 -> 39606 bytes .../isa/arm32/tables/arm32.encode_runs.bin | Bin 4736 -> 4744 bytes .../isa/arm32/tables/arm32.entries.bin | Bin 39123 -> 39606 bytes .../isa/arm32/tables/arm32.form_idx.bin | Bin 3402 -> 3444 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 | 12 +- 18 files changed, 1680 insertions(+), 1585 deletions(-) diff --git a/core/rexcode/isa/arm32/decoder.odin b/core/rexcode/isa/arm32/decoder.odin index 2adf60b19..e1875314a 100644 --- a/core/rexcode/isa/arm32/decoder.odin +++ b/core/rexcode/isa/arm32/decoder.odin @@ -497,6 +497,11 @@ unpack_operand :: proc(word: u32, enc: Operand_Encoding, ot: Operand_Type) -> Op case .NEON_D_LIST_ALL: n := ((word >> 22) & 1) << 4 | ((word >> 12) & 0xF) return op_reg_run(Register(REG_DPR | u16(n)), 1, 1, true) + case .NEON_D_LIST_ALL_2, .NEON_D_LIST_ALL_3, .NEON_D_LIST_ALL_4: + n := ((word >> 22) & 1) << 4 | ((word >> 12) & 0xF) + count := u8(2 + (int(enc) - int(Operand_Encoding.NEON_D_LIST_ALL_2))) + return op_reg_run(Register(REG_DPR | u16(n)), count, + ((word >> 5) & 1) != 0 ? 2 : 1, true) case .NEON_LANE_D_8, .NEON_LANE_D_16, .NEON_LANE_D_32, .NEON_LANE_D_8_2, .NEON_LANE_D_16_2, .NEON_LANE_D_32_2, .NEON_LANE_D_8_3, .NEON_LANE_D_16_3, .NEON_LANE_D_32_3, .NEON_LANE_D_8_4, .NEON_LANE_D_16_4, .NEON_LANE_D_32_4: n := ((word >> 22) & 1) << 4 | ((word >> 12) & 0xF) shift, mask, count := neon_lane_shape(enc) diff --git a/core/rexcode/isa/arm32/encoder.odin b/core/rexcode/isa/arm32/encoder.odin index bd9083589..a0ab5a4b4 100644 --- a/core/rexcode/isa/arm32/encoder.odin +++ b/core/rexcode/isa/arm32/encoder.odin @@ -541,6 +541,10 @@ pack_operand_inline :: #force_inline proc( // Only Vd; the count lives in the form's type field. n := u32(reg_hw(op.reg)) & 0x1F return ((n >> 4) & 1) << 22 | (n & 0xF) << 12 + case .NEON_D_LIST_ALL_2, .NEON_D_LIST_ALL_3, .NEON_D_LIST_ALL_4: + // Same, plus the spacing, which bit 5 carries. + n := u32(reg_hw(op.reg)) & 0x1F + return ((n >> 4) & 1) << 22 | (n & 0xF) << 12 | (op.list.stride > 1 ? u32(1) : 0) << 5 case .NEON_LANE_D_8, .NEON_LANE_D_16, .NEON_LANE_D_32, .NEON_LANE_D_8_2, .NEON_LANE_D_16_2, .NEON_LANE_D_32_2, .NEON_LANE_D_8_3, .NEON_LANE_D_16_3, .NEON_LANE_D_32_3, .NEON_LANE_D_8_4, .NEON_LANE_D_16_4, .NEON_LANE_D_32_4: n := u32(reg_hw(op.reg)) & 0x1F shift, mask, _ := neon_lane_shape(enc) diff --git a/core/rexcode/isa/arm32/encoding_types.odin b/core/rexcode/isa/arm32/encoding_types.odin index e332ac458..5a0dc425d 100644 --- a/core/rexcode/isa/arm32/encoding_types.odin +++ b/core/rexcode/isa/arm32/encoding_types.odin @@ -367,6 +367,9 @@ Operand_Encoding :: enum u8 { NEON_D_LIST_3X, // {d2, d4, d6} -- spaced NEON_D_LIST_4X, // {d2, d4, d6, d8} -- spaced NEON_D_LIST_ALL, // {d2[]} -- to all lanes + // The structure loads that broadcast take a list of two, three or four, + // and bit 5 spaces it -- `{d0[], d2[]}` rather than `{d0[], d1[]}`. + NEON_D_LIST_ALL_2, NEON_D_LIST_ALL_3, NEON_D_LIST_ALL_4, // VLD1/VST1 single-lane: Vd plus the lane index, whose width and position // follow the element size -- bits 7:5 for .8, 7:6 for .16, bit 7 for .32. // Verified against llvm-mc. diff --git a/core/rexcode/isa/arm32/mnemonic_builders.odin b/core/rexcode/isa/arm32/mnemonic_builders.odin index 44cb6d7a1..db1a453b2 100644 --- a/core/rexcode/isa/arm32/mnemonic_builders.odin +++ b/core/rexcode/isa/arm32/mnemonic_builders.odin @@ -708,6 +708,10 @@ inst_vfnma_s_s_s :: #force_inline proc "contextless" (dst: Register, s 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), {}}} } emit_vfnms_s_s_s :: #force_inline proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register) { append(instructions, inst_vfnms_s_s_s(dst, src, src2)) } +inst_vfmab_q_q_q :: #force_inline proc "contextless" (dst: Register, src: Register, src2: Register) -> Instruction { return Instruction{mnemonic = .VFMAB, operand_count = 3, mode = .A32, cond = 14, length = 4, ops = {op_reg(dst), op_reg(src), op_reg(src2), {}}} } +emit_vfmab_q_q_q :: #force_inline proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register) { append(instructions, inst_vfmab_q_q_q(dst, src, src2)) } +inst_vfmat_q_q_q :: #force_inline proc "contextless" (dst: Register, src: Register, src2: Register) -> Instruction { return Instruction{mnemonic = .VFMAT, operand_count = 3, mode = .A32, cond = 14, length = 4, ops = {op_reg(dst), op_reg(src), op_reg(src2), {}}} } +emit_vfmat_q_q_q :: #force_inline proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register) { append(instructions, inst_vfmat_q_q_q(dst, src, src2)) } inst_vabs_s_s :: #force_inline proc "contextless" (dst: Register, src: Register) -> Instruction { return Instruction{mnemonic = .VABS, operand_count = 2, mode = .A32, cond = 14, length = 4, ops = {op_reg(dst), op_reg(src), {}, {}}} } emit_vabs_s_s :: #force_inline proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register) { append(instructions, inst_vabs_s_s(dst, src)) } inst_vneg_s_s :: #force_inline proc "contextless" (dst: Register, src: Register) -> Instruction { return Instruction{mnemonic = .VNEG, operand_count = 2, mode = .A32, cond = 14, length = 4, ops = {op_reg(dst), op_reg(src), {}, {}}} } @@ -762,10 +766,14 @@ inst_vldr_s_mem :: #force_inline proc "contextless" (dst: Register, s emit_vldr_s_mem :: #force_inline proc(instructions: ^[dynamic]Instruction, dst: Register, src: Memory) { append(instructions, inst_vldr_s_mem(dst, src)) } inst_vstr_s_mem :: #force_inline proc "contextless" (dst: Register, src: Memory) -> Instruction { return Instruction{mnemonic = .VSTR, operand_count = 2, mode = .A32, cond = 14, length = 4, ops = {op_reg(dst), op_mem(src), {}, {}}} } emit_vstr_s_mem :: #force_inline proc(instructions: ^[dynamic]Instruction, dst: Register, src: Memory) { append(instructions, inst_vstr_s_mem(dst, src)) } -inst_vldm_r_slist :: #force_inline proc "contextless" (dst: Register, regs: u16) -> Instruction { return Instruction{mnemonic = .VLDM, operand_count = 2, mode = .A32, cond = 14, length = 4, ops = {op_reg(dst), op_reg_list(regs), {}, {}}} } -emit_vldm_r_slist :: #force_inline proc(instructions: ^[dynamic]Instruction, dst: Register, regs: u16) { append(instructions, inst_vldm_r_slist(dst, regs)) } -inst_vstm_r_slist :: #force_inline proc "contextless" (dst: Register, regs: u16) -> Instruction { return Instruction{mnemonic = .VSTM, operand_count = 2, mode = .A32, cond = 14, length = 4, ops = {op_reg(dst), op_reg_list(regs), {}, {}}} } -emit_vstm_r_slist :: #force_inline proc(instructions: ^[dynamic]Instruction, dst: Register, regs: u16) { append(instructions, inst_vstm_r_slist(dst, regs)) } +inst_vldmia_r_slist :: #force_inline proc "contextless" (dst: Register, regs: u16) -> Instruction { return Instruction{mnemonic = .VLDMIA, operand_count = 2, mode = .A32, cond = 14, length = 4, ops = {op_reg(dst), op_reg_list(regs), {}, {}}} } +emit_vldmia_r_slist :: #force_inline proc(instructions: ^[dynamic]Instruction, dst: Register, regs: u16) { append(instructions, inst_vldmia_r_slist(dst, regs)) } +inst_vldmdb_r_slist :: #force_inline proc "contextless" (dst: Register, regs: u16) -> Instruction { return Instruction{mnemonic = .VLDMDB, operand_count = 2, mode = .A32, cond = 14, length = 4, ops = {op_reg(dst), op_reg_list(regs), {}, {}}} } +emit_vldmdb_r_slist :: #force_inline proc(instructions: ^[dynamic]Instruction, dst: Register, regs: u16) { append(instructions, inst_vldmdb_r_slist(dst, regs)) } +inst_vstmia_r_slist :: #force_inline proc "contextless" (dst: Register, regs: u16) -> Instruction { return Instruction{mnemonic = .VSTMIA, operand_count = 2, mode = .A32, cond = 14, length = 4, ops = {op_reg(dst), op_reg_list(regs), {}, {}}} } +emit_vstmia_r_slist :: #force_inline proc(instructions: ^[dynamic]Instruction, dst: Register, regs: u16) { append(instructions, inst_vstmia_r_slist(dst, regs)) } +inst_vstmdb_r_slist :: #force_inline proc "contextless" (dst: Register, regs: u16) -> Instruction { return Instruction{mnemonic = .VSTMDB, operand_count = 2, mode = .A32, cond = 14, length = 4, ops = {op_reg(dst), op_reg_list(regs), {}, {}}} } +emit_vstmdb_r_slist :: #force_inline proc(instructions: ^[dynamic]Instruction, dst: Register, regs: u16) { append(instructions, inst_vstmdb_r_slist(dst, regs)) } inst_vpush_slist :: #force_inline proc "contextless" (regs: u16) -> Instruction { return Instruction{mnemonic = .VPUSH, operand_count = 1, mode = .A32, cond = 14, length = 4, ops = {op_reg_list(regs), {}, {}, {}}} } emit_vpush_slist :: #force_inline proc(instructions: ^[dynamic]Instruction, regs: u16) { append(instructions, inst_vpush_slist(regs)) } inst_vpop_slist :: #force_inline proc "contextless" (regs: u16) -> Instruction { return Instruction{mnemonic = .VPOP, operand_count = 1, mode = .A32, cond = 14, length = 4, ops = {op_reg_list(regs), {}, {}, {}}} } @@ -1100,12 +1108,6 @@ inst_vmovx_s_s :: #force_inline proc "contextless" (dst: Register, s emit_vmovx_s_s :: #force_inline proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register) { append(instructions, inst_vmovx_s_s(dst, src)) } inst_vins_s_s :: #force_inline proc "contextless" (dst: Register, src: Register) -> Instruction { return Instruction{mnemonic = .VINS, operand_count = 2, mode = .T32, cond = 14, length = 4, ops = {op_reg(dst), op_reg(src), {}, {}}} } emit_vins_s_s :: #force_inline proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register) { append(instructions, inst_vins_s_s(dst, src)) } -inst_vld2r_dlist_mem :: #force_inline proc "contextless" (regs: u16, src: Memory) -> Instruction { return Instruction{mnemonic = .VLD2R, operand_count = 2, mode = .A32, cond = 14, length = 4, ops = {op_reg_list(regs), op_mem(src), {}, {}}} } -emit_vld2r_dlist_mem :: #force_inline proc(instructions: ^[dynamic]Instruction, regs: u16, src: Memory) { append(instructions, inst_vld2r_dlist_mem(regs, src)) } -inst_vld3r_dlist_mem :: #force_inline proc "contextless" (regs: u16, src: Memory) -> Instruction { return Instruction{mnemonic = .VLD3R, operand_count = 2, mode = .A32, cond = 14, length = 4, ops = {op_reg_list(regs), op_mem(src), {}, {}}} } -emit_vld3r_dlist_mem :: #force_inline proc(instructions: ^[dynamic]Instruction, regs: u16, src: Memory) { append(instructions, inst_vld3r_dlist_mem(regs, src)) } -inst_vld4r_dlist_mem :: #force_inline proc "contextless" (regs: u16, src: Memory) -> Instruction { return Instruction{mnemonic = .VLD4R, operand_count = 2, mode = .A32, cond = 14, length = 4, ops = {op_reg_list(regs), op_mem(src), {}, {}}} } -emit_vld4r_dlist_mem :: #force_inline proc(instructions: ^[dynamic]Instruction, regs: u16, src: Memory) { append(instructions, inst_vld4r_dlist_mem(regs, src)) } inst_it_cond_imm4 :: #force_inline proc "contextless" (imm: i64, imm2: i64) -> Instruction { return Instruction{mnemonic = .IT, operand_count = 2, mode = .T32, cond = 14, length = 2, ops = {op_imm(imm), op_imm(imm2), {}, {}}} } emit_it_cond_imm4 :: #force_inline proc(instructions: ^[dynamic]Instruction, imm: i64, imm2: i64) { append(instructions, inst_it_cond_imm4(imm, imm2)) } inst_tt_r_r :: #force_inline proc "contextless" (dst: Register, src: Register) -> Instruction { return Instruction{mnemonic = .TT, operand_count = 2, mode = .T32, cond = 14, length = 4, ops = {op_reg(dst), op_reg(src), {}, {}}} } @@ -1983,6 +1985,10 @@ inst_vfnma :: inst_vfnma_s_s_s emit_vfnma :: emit_vfnma_s_s_s inst_vfnms :: inst_vfnms_s_s_s emit_vfnms :: emit_vfnms_s_s_s +inst_vfmab :: inst_vfmab_q_q_q +emit_vfmab :: emit_vfmab_q_q_q +inst_vfmat :: inst_vfmat_q_q_q +emit_vfmat :: emit_vfmat_q_q_q inst_vabs :: inst_vabs_s_s emit_vabs :: emit_vabs_s_s inst_vneg :: inst_vneg_s_s @@ -2019,10 +2025,14 @@ inst_vldr :: inst_vldr_s_mem emit_vldr :: emit_vldr_s_mem inst_vstr :: inst_vstr_s_mem emit_vstr :: emit_vstr_s_mem -inst_vldm :: inst_vldm_r_slist -emit_vldm :: emit_vldm_r_slist -inst_vstm :: inst_vstm_r_slist -emit_vstm :: emit_vstm_r_slist +inst_vldmia :: inst_vldmia_r_slist +emit_vldmia :: emit_vldmia_r_slist +inst_vldmdb :: inst_vldmdb_r_slist +emit_vldmdb :: emit_vldmdb_r_slist +inst_vstmia :: inst_vstmia_r_slist +emit_vstmia :: emit_vstmia_r_slist +inst_vstmdb :: inst_vstmdb_r_slist +emit_vstmdb :: emit_vstmdb_r_slist inst_vpush :: inst_vpush_slist emit_vpush :: emit_vpush_slist inst_vpop :: inst_vpop_slist @@ -2303,12 +2313,6 @@ inst_vmovx :: inst_vmovx_s_s emit_vmovx :: emit_vmovx_s_s inst_vins :: inst_vins_s_s emit_vins :: emit_vins_s_s -inst_vld2r :: inst_vld2r_dlist_mem -emit_vld2r :: emit_vld2r_dlist_mem -inst_vld3r :: inst_vld3r_dlist_mem -emit_vld3r :: emit_vld3r_dlist_mem -inst_vld4r :: inst_vld4r_dlist_mem -emit_vld4r :: emit_vld4r_dlist_mem inst_it :: inst_it_cond_imm4 emit_it :: emit_it_cond_imm4 inst_tt :: inst_tt_r_r diff --git a/core/rexcode/isa/arm32/mnemonics.odin b/core/rexcode/isa/arm32/mnemonics.odin index 617124fa3..982689701 100644 --- a/core/rexcode/isa/arm32/mnemonics.odin +++ b/core/rexcode/isa/arm32/mnemonics.odin @@ -232,6 +232,9 @@ Mnemonic :: enum u16 { VADD, VSUB, VMUL, VDIV, VMLA, VMLS, VNMUL, VNMLA, VNMLS, VFMA, VFMS, VFNMA, VFNMS, + // The bfloat16 multiply-accumulates name which half of each pair they + // take, bottom or top, on the mnemonic. + VFMAB, VFMAT, VABS, VNEG, VSQRT, VCMP, VCMPE, @@ -243,7 +246,8 @@ Mnemonic :: enum u16 { VMOV, // many forms (reg-reg, reg-imm, GPR-FPR) VMRS, VMSR, // FPSCR/coprocessor access VLDR, VSTR, - VLDM, VSTM, + // The addressing mode is part of the name, as it is for LDM and STM. + VLDMIA, VLDMDB, VSTMIA, VSTMDB, VPUSH, VPOP, VSEL, // ARMv8 conditional select @@ -346,8 +350,8 @@ Mnemonic :: enum u16 { // -- MVE gather/scatter (vector offset addressing) ---------------------- // -- NEON compare-with-zero (distinct encodings from reg-vs-reg) -------- // -- NEON replicate loads (broadcast one element to all lanes) ---------- - // VLD1R already covered in VLD1; these are the 2/3/4 variants. - VLD2R, VLD3R, VLD4R, + // The broadcast structure loads are VLD2/VLD3/VLD4 with an all-lanes + // list, not mnemonics of their own -- that is how they are written. // -- NEON single-element-lane load/store (lane form, not multi-vec) ----- // -- VFP fixed-point conversions (with #fbits operand) ------------------ diff --git a/core/rexcode/isa/arm32/tablegen/encoding_table.odin b/core/rexcode/isa/arm32/tablegen/encoding_table.odin index 19efb4f2a..7169a675f 100644 --- a/core/rexcode/isa/arm32/tablegen/encoding_table.odin +++ b/core/rexcode/isa/arm32/tablegen/encoding_table.odin @@ -1402,7 +1402,12 @@ 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, {.QPR, .QPR, .QPR, .NONE}, {.VD_Q, .VN_Q, .VM_Q, .NONE}, 0xFC300850, 0xFFB00F50, .BF16, .A32, {cond_in_28=false}, {.BF16, .NONE}}, + }, + .VFMAB = { + {.VFMAB, {.QPR, .QPR, .QPR, .NONE}, {.VD_Q, .VN_Q, .VM_Q, .NONE}, 0xFC300810, 0xFFB00F70, .BF16, .A32, {cond_in_28=false}, {.BF16, .NONE}}, + }, + .VFMAT = { + {.VFMAT, {.QPR, .QPR, .QPR, .NONE}, {.VD_Q, .VN_Q, .VM_Q, .NONE}, 0xFC300850, 0xFFB00F70, .BF16, .A32, {cond_in_28=false}, {.BF16, .NONE}}, }, .VFMS = { {.VFMS, {.SPR, .SPR, .SPR, .NONE}, {.VD_S, .VN_S, .VM_S, .NONE}, 0x0EA00A40, 0x0FB00B50, .VFPV4, .A32, {}, {.F32, .NONE}}, @@ -1468,23 +1473,31 @@ ENCODING_TABLE := #partial [Mnemonic][]Encoding{ // 1110 .I8 → 0xF2800E10 // 1111 .F32 (special: high bit = 0) → 0xF2800F10 (limited to specific imm patterns) // 1110 op=1 + bit 5 set → .I64 → 0xF2800E30 - {.VMOV, {.DPR, .IMM, .NONE, .NONE}, {.VD_D, .NEON_IMM8_ABCDEFGH, .NONE, .NONE}, 0xF2800010, 0xFEB80FB0, .NEON, .A32, {cond_in_28=false}, {.I32, .NONE}}, // .I32 cmode=0000 - {.VMOV, {.DPR, .IMM, .NONE, .NONE}, {.VD_D, .NEON_IMM8_ABCDEFGH, .NONE, .NONE}, 0xF2800210, 0xFEB80FB0, .NEON, .A32, {cond_in_28=false}, {.I32, .NONE}}, // .I32 cmode=0010 - {.VMOV, {.DPR, .IMM, .NONE, .NONE}, {.VD_D, .NEON_IMM8_ABCDEFGH, .NONE, .NONE}, 0xF2800410, 0xFEB80FB0, .NEON, .A32, {cond_in_28=false}, {.I32, .NONE}}, // .I32 cmode=0100 - {.VMOV, {.DPR, .IMM, .NONE, .NONE}, {.VD_D, .NEON_IMM8_ABCDEFGH, .NONE, .NONE}, 0xF2800610, 0xFEB80FB0, .NEON, .A32, {cond_in_28=false}, {.I32, .NONE}}, // .I32 cmode=0110 - {.VMOV, {.DPR, .IMM, .NONE, .NONE}, {.VD_D, .NEON_IMM8_ABCDEFGH, .NONE, .NONE}, 0xF2800810, 0xFEB80FB0, .NEON, .A32, {cond_in_28=false}, {.I16, .NONE}}, // .I16 cmode=1000 - {.VMOV, {.DPR, .IMM, .NONE, .NONE}, {.VD_D, .NEON_IMM8_ABCDEFGH, .NONE, .NONE}, 0xF2800A10, 0xFEB80FB0, .NEON, .A32, {cond_in_28=false}, {.I16, .NONE}}, // .I16 cmode=1010 - {.VMOV, {.DPR, .IMM, .NONE, .NONE}, {.VD_D, .NEON_IMM8_ABCDEFGH, .NONE, .NONE}, 0xF2800C10, 0xFEB80FB0, .NEON, .A32, {cond_in_28=false}, {.I32, .NONE}}, // .I32 cmode=1100 - {.VMOV, {.DPR, .IMM, .NONE, .NONE}, {.VD_D, .NEON_IMM8_ABCDEFGH, .NONE, .NONE}, 0xF2800D10, 0xFEB80FB0, .NEON, .A32, {cond_in_28=false}, {.I32, .NONE}}, // .I32 cmode=1101 - {.VMOV, {.DPR, .IMM, .NONE, .NONE}, {.VD_D, .NEON_IMM8_ABCDEFGH, .NONE, .NONE}, 0xF2800E10, 0xFEB80FB0, .NEON, .A32, {cond_in_28=false}, {.I8, .NONE}}, // .I8 cmode=1110 - {.VMOV, {.DPR, .IMM, .NONE, .NONE}, {.VD_D, .NEON_IMM8_ABCDEFGH, .NONE, .NONE}, 0xF2800F10, 0xFEB80FB0, .NEON, .A32, {cond_in_28=false}, {.F32, .NONE}}, // .F32 cmode=1111 - {.VMOV, {.DPR, .IMM, .NONE, .NONE}, {.VD_D, .NEON_IMM8_ABCDEFGH, .NONE, .NONE}, 0xF2800E30, 0xFEB80FB0, .NEON, .A32, {cond_in_28=false}, {.I64, .NONE}}, // .I64 (op=0+bit5=1) + // One register and a modified immediate: the cmode picks how the + // eight-bit field expands, and op tells VMOV from VMVN. + {.VMOV, {.DPR, .IMM, .NONE, .NONE}, {.VD_D, .NEON_IMM8_ABCDEFGH, .NONE, .NONE}, 0xF2800010, 0xFEB80FF0, .NEON, .A32, {cond_in_28=false}, {.I32, .NONE}}, + {.VMOV, {.QPR, .IMM, .NONE, .NONE}, {.VD_Q, .NEON_IMM8_ABCDEFGH, .NONE, .NONE}, 0xF2800050, 0xFEB80FF0, .NEON, .A32, {cond_in_28=false}, {.I32, .NONE}}, + {.VMOV, {.DPR, .IMM, .NONE, .NONE}, {.VD_D, .NEON_IMM8_ABCDEFGH, .NONE, .NONE}, 0xF2800210, 0xFEB80FF0, .NEON, .A32, {cond_in_28=false}, {.I32, .NONE}}, + {.VMOV, {.QPR, .IMM, .NONE, .NONE}, {.VD_Q, .NEON_IMM8_ABCDEFGH, .NONE, .NONE}, 0xF2800250, 0xFEB80FF0, .NEON, .A32, {cond_in_28=false}, {.I32, .NONE}}, + {.VMOV, {.DPR, .IMM, .NONE, .NONE}, {.VD_D, .NEON_IMM8_ABCDEFGH, .NONE, .NONE}, 0xF2800410, 0xFEB80FF0, .NEON, .A32, {cond_in_28=false}, {.I32, .NONE}}, + {.VMOV, {.QPR, .IMM, .NONE, .NONE}, {.VD_Q, .NEON_IMM8_ABCDEFGH, .NONE, .NONE}, 0xF2800450, 0xFEB80FF0, .NEON, .A32, {cond_in_28=false}, {.I32, .NONE}}, + {.VMOV, {.DPR, .IMM, .NONE, .NONE}, {.VD_D, .NEON_IMM8_ABCDEFGH, .NONE, .NONE}, 0xF2800610, 0xFEB80FF0, .NEON, .A32, {cond_in_28=false}, {.I32, .NONE}}, + {.VMOV, {.QPR, .IMM, .NONE, .NONE}, {.VD_Q, .NEON_IMM8_ABCDEFGH, .NONE, .NONE}, 0xF2800650, 0xFEB80FF0, .NEON, .A32, {cond_in_28=false}, {.I32, .NONE}}, + {.VMOV, {.DPR, .IMM, .NONE, .NONE}, {.VD_D, .NEON_IMM8_ABCDEFGH, .NONE, .NONE}, 0xF2800810, 0xFEB80FF0, .NEON, .A32, {cond_in_28=false}, {.I16, .NONE}}, + {.VMOV, {.QPR, .IMM, .NONE, .NONE}, {.VD_Q, .NEON_IMM8_ABCDEFGH, .NONE, .NONE}, 0xF2800850, 0xFEB80FF0, .NEON, .A32, {cond_in_28=false}, {.I16, .NONE}}, + {.VMOV, {.DPR, .IMM, .NONE, .NONE}, {.VD_D, .NEON_IMM8_ABCDEFGH, .NONE, .NONE}, 0xF2800A10, 0xFEB80FF0, .NEON, .A32, {cond_in_28=false}, {.I16, .NONE}}, + {.VMOV, {.QPR, .IMM, .NONE, .NONE}, {.VD_Q, .NEON_IMM8_ABCDEFGH, .NONE, .NONE}, 0xF2800A50, 0xFEB80FF0, .NEON, .A32, {cond_in_28=false}, {.I16, .NONE}}, + {.VMOV, {.DPR, .IMM, .NONE, .NONE}, {.VD_D, .NEON_IMM8_ABCDEFGH, .NONE, .NONE}, 0xF2800C10, 0xFEB80FF0, .NEON, .A32, {cond_in_28=false}, {.I32, .NONE}}, + {.VMOV, {.QPR, .IMM, .NONE, .NONE}, {.VD_Q, .NEON_IMM8_ABCDEFGH, .NONE, .NONE}, 0xF2800C50, 0xFEB80FF0, .NEON, .A32, {cond_in_28=false}, {.I32, .NONE}}, + {.VMOV, {.DPR, .IMM, .NONE, .NONE}, {.VD_D, .NEON_IMM8_ABCDEFGH, .NONE, .NONE}, 0xF2800D10, 0xFEB80FF0, .NEON, .A32, {cond_in_28=false}, {.I32, .NONE}}, + {.VMOV, {.QPR, .IMM, .NONE, .NONE}, {.VD_Q, .NEON_IMM8_ABCDEFGH, .NONE, .NONE}, 0xF2800D50, 0xFEB80FF0, .NEON, .A32, {cond_in_28=false}, {.I32, .NONE}}, + {.VMOV, {.DPR, .IMM, .NONE, .NONE}, {.VD_D, .NEON_IMM8_ABCDEFGH, .NONE, .NONE}, 0xF2800E10, 0xFEB80FF0, .NEON, .A32, {cond_in_28=false}, {.I8, .NONE}}, + {.VMOV, {.QPR, .IMM, .NONE, .NONE}, {.VD_Q, .NEON_IMM8_ABCDEFGH, .NONE, .NONE}, 0xF2800E50, 0xFEB80FF0, .NEON, .A32, {cond_in_28=false}, {.I8, .NONE}}, + {.VMOV, {.DPR, .IMM, .NONE, .NONE}, {.VD_D, .NEON_IMM8_ABCDEFGH, .NONE, .NONE}, 0xF2800F10, 0xFEB80FF0, .NEON, .A32, {cond_in_28=false}, {.F32, .NONE}}, + {.VMOV, {.QPR, .IMM, .NONE, .NONE}, {.VD_Q, .NEON_IMM8_ABCDEFGH, .NONE, .NONE}, 0xF2800F50, 0xFEB80FF0, .NEON, .A32, {cond_in_28=false}, {.F32, .NONE}}, + {.VMOV, {.DPR, .IMM, .NONE, .NONE}, {.VD_D, .NEON_IMM8_ABCDEFGH, .NONE, .NONE}, 0xF2800E30, 0xFEB80FF0, .NEON, .A32, {cond_in_28=false}, {.I64, .NONE}}, + {.VMOV, {.QPR, .IMM, .NONE, .NONE}, {.VD_Q, .NEON_IMM8_ABCDEFGH, .NONE, .NONE}, 0xF2800E70, 0xFEB80FF0, .NEON, .A32, {cond_in_28=false}, {.I64, .NONE}}, // Q forms (Q=1, bit 6 = 1) - {.VMOV, {.QPR, .IMM, .NONE, .NONE}, {.VD_Q, .NEON_IMM8_ABCDEFGH, .NONE, .NONE}, 0xF2800050, 0xFEB80FF0, .NEON, .A32, {cond_in_28=false}, {.I32, .NONE}}, // .I32 Q - {.VMOV, {.QPR, .IMM, .NONE, .NONE}, {.VD_Q, .NEON_IMM8_ABCDEFGH, .NONE, .NONE}, 0xF2800850, 0xFEB80FF0, .NEON, .A32, {cond_in_28=false}, {.I16, .NONE}}, // .I16 Q - {.VMOV, {.QPR, .IMM, .NONE, .NONE}, {.VD_Q, .NEON_IMM8_ABCDEFGH, .NONE, .NONE}, 0xF2800E50, 0xFEB80FF0, .NEON, .A32, {cond_in_28=false}, {.I8, .NONE}}, // .I8 Q - {.VMOV, {.QPR, .IMM, .NONE, .NONE}, {.VD_Q, .NEON_IMM8_ABCDEFGH, .NONE, .NONE}, 0xF2800F50, 0xFEB80FF0, .NEON, .A32, {cond_in_28=false}, {.F32, .NONE}}, // .F32 Q - {.VMOV, {.QPR, .IMM, .NONE, .NONE}, {.VD_Q, .NEON_IMM8_ABCDEFGH, .NONE, .NONE}, 0xF2800E70, 0xFEB80FF0, .NEON, .A32, {cond_in_28=false}, {.I64, .NONE}}, // .I64 Q // ---- VMOV scalar to/from GPR (lane access) ---- // VMOV. Rt, Dn[idx]: cond 1110 U opc1 1 Vn Rt 1011 N opc2 1 0000 // VMOV. Dn[idx], Rt: cond 1110 0 opc1 0 Vn Rt 1011 N opc2 1 0000 @@ -1507,17 +1520,25 @@ ENCODING_TABLE := #partial [Mnemonic][]Encoding{ {.VMVN, {.DPR, .DPR, .NONE, .NONE}, {.VD_D, .VM_D, .NONE, .NONE}, 0xF3B00580, 0xFFB30FD0, .NEON, .A32, {cond_in_28=false}, {}}, {.VMVN, {.QPR, .QPR, .NONE, .NONE}, {.VD_Q, .VM_Q, .NONE, .NONE}, 0xF3B005C0, 0xFFB30FD0, .NEON, .A32, {cond_in_28=false}, {}}, // VMVN immediate: 1111 0010 1 D 000 imm3 Vd cmode 0 Q 1 1 imm4 (op=1) - {.VMVN, {.DPR, .IMM, .NONE, .NONE}, {.VD_D, .NEON_IMM8_ABCDEFGH, .NONE, .NONE}, 0xF2800030, 0xFEB80F90, .NEON, .A32, {cond_in_28=false}, {.I32, .NONE}}, // .I32 cmode=0000 - {.VMVN, {.DPR, .IMM, .NONE, .NONE}, {.VD_D, .NEON_IMM8_ABCDEFGH, .NONE, .NONE}, 0xF2800230, 0xFEB80F90, .NEON, .A32, {cond_in_28=false}, {.I32, .NONE}}, - {.VMVN, {.DPR, .IMM, .NONE, .NONE}, {.VD_D, .NEON_IMM8_ABCDEFGH, .NONE, .NONE}, 0xF2800430, 0xFEB80F90, .NEON, .A32, {cond_in_28=false}, {.I32, .NONE}}, - {.VMVN, {.DPR, .IMM, .NONE, .NONE}, {.VD_D, .NEON_IMM8_ABCDEFGH, .NONE, .NONE}, 0xF2800630, 0xFEB80F90, .NEON, .A32, {cond_in_28=false}, {.I32, .NONE}}, - {.VMVN, {.DPR, .IMM, .NONE, .NONE}, {.VD_D, .NEON_IMM8_ABCDEFGH, .NONE, .NONE}, 0xF2800830, 0xFEB80F90, .NEON, .A32, {cond_in_28=false}, {.I16, .NONE}}, // .I16 cmode=1000 - {.VMVN, {.DPR, .IMM, .NONE, .NONE}, {.VD_D, .NEON_IMM8_ABCDEFGH, .NONE, .NONE}, 0xF2800A30, 0xFEB80F90, .NEON, .A32, {cond_in_28=false}, {.I16, .NONE}}, - {.VMVN, {.DPR, .IMM, .NONE, .NONE}, {.VD_D, .NEON_IMM8_ABCDEFGH, .NONE, .NONE}, 0xF2800C30, 0xFEB80F90, .NEON, .A32, {cond_in_28=false}, {.I32, .NONE}}, - {.VMVN, {.DPR, .IMM, .NONE, .NONE}, {.VD_D, .NEON_IMM8_ABCDEFGH, .NONE, .NONE}, 0xF2800D30, 0xFEB80F90, .NEON, .A32, {cond_in_28=false}, {.I32, .NONE}}, + // One register and a modified immediate: the cmode picks how the + // eight-bit field expands, and op tells VMOV from VMVN. + {.VMVN, {.DPR, .IMM, .NONE, .NONE}, {.VD_D, .NEON_IMM8_ABCDEFGH, .NONE, .NONE}, 0xF2800030, 0xFEB80FF0, .NEON, .A32, {cond_in_28=false}, {.I32, .NONE}}, + {.VMVN, {.QPR, .IMM, .NONE, .NONE}, {.VD_Q, .NEON_IMM8_ABCDEFGH, .NONE, .NONE}, 0xF2800070, 0xFEB80FF0, .NEON, .A32, {cond_in_28=false}, {.I32, .NONE}}, + {.VMVN, {.DPR, .IMM, .NONE, .NONE}, {.VD_D, .NEON_IMM8_ABCDEFGH, .NONE, .NONE}, 0xF2800230, 0xFEB80FF0, .NEON, .A32, {cond_in_28=false}, {.I32, .NONE}}, + {.VMVN, {.QPR, .IMM, .NONE, .NONE}, {.VD_Q, .NEON_IMM8_ABCDEFGH, .NONE, .NONE}, 0xF2800270, 0xFEB80FF0, .NEON, .A32, {cond_in_28=false}, {.I32, .NONE}}, + {.VMVN, {.DPR, .IMM, .NONE, .NONE}, {.VD_D, .NEON_IMM8_ABCDEFGH, .NONE, .NONE}, 0xF2800430, 0xFEB80FF0, .NEON, .A32, {cond_in_28=false}, {.I32, .NONE}}, + {.VMVN, {.QPR, .IMM, .NONE, .NONE}, {.VD_Q, .NEON_IMM8_ABCDEFGH, .NONE, .NONE}, 0xF2800470, 0xFEB80FF0, .NEON, .A32, {cond_in_28=false}, {.I32, .NONE}}, + {.VMVN, {.DPR, .IMM, .NONE, .NONE}, {.VD_D, .NEON_IMM8_ABCDEFGH, .NONE, .NONE}, 0xF2800630, 0xFEB80FF0, .NEON, .A32, {cond_in_28=false}, {.I32, .NONE}}, + {.VMVN, {.QPR, .IMM, .NONE, .NONE}, {.VD_Q, .NEON_IMM8_ABCDEFGH, .NONE, .NONE}, 0xF2800670, 0xFEB80FF0, .NEON, .A32, {cond_in_28=false}, {.I32, .NONE}}, + {.VMVN, {.DPR, .IMM, .NONE, .NONE}, {.VD_D, .NEON_IMM8_ABCDEFGH, .NONE, .NONE}, 0xF2800830, 0xFEB80FF0, .NEON, .A32, {cond_in_28=false}, {.I16, .NONE}}, + {.VMVN, {.QPR, .IMM, .NONE, .NONE}, {.VD_Q, .NEON_IMM8_ABCDEFGH, .NONE, .NONE}, 0xF2800870, 0xFEB80FF0, .NEON, .A32, {cond_in_28=false}, {.I16, .NONE}}, + {.VMVN, {.DPR, .IMM, .NONE, .NONE}, {.VD_D, .NEON_IMM8_ABCDEFGH, .NONE, .NONE}, 0xF2800A30, 0xFEB80FF0, .NEON, .A32, {cond_in_28=false}, {.I16, .NONE}}, + {.VMVN, {.QPR, .IMM, .NONE, .NONE}, {.VD_Q, .NEON_IMM8_ABCDEFGH, .NONE, .NONE}, 0xF2800A70, 0xFEB80FF0, .NEON, .A32, {cond_in_28=false}, {.I16, .NONE}}, + {.VMVN, {.DPR, .IMM, .NONE, .NONE}, {.VD_D, .NEON_IMM8_ABCDEFGH, .NONE, .NONE}, 0xF2800C30, 0xFEB80FF0, .NEON, .A32, {cond_in_28=false}, {.I32, .NONE}}, + {.VMVN, {.QPR, .IMM, .NONE, .NONE}, {.VD_Q, .NEON_IMM8_ABCDEFGH, .NONE, .NONE}, 0xF2800C70, 0xFEB80FF0, .NEON, .A32, {cond_in_28=false}, {.I32, .NONE}}, + {.VMVN, {.DPR, .IMM, .NONE, .NONE}, {.VD_D, .NEON_IMM8_ABCDEFGH, .NONE, .NONE}, 0xF2800D30, 0xFEB80FF0, .NEON, .A32, {cond_in_28=false}, {.I32, .NONE}}, + {.VMVN, {.QPR, .IMM, .NONE, .NONE}, {.VD_Q, .NEON_IMM8_ABCDEFGH, .NONE, .NONE}, 0xF2800D70, 0xFEB80FF0, .NEON, .A32, {cond_in_28=false}, {.I32, .NONE}}, // Q forms - {.VMVN, {.QPR, .IMM, .NONE, .NONE}, {.VD_Q, .NEON_IMM8_ABCDEFGH, .NONE, .NONE}, 0xF2800070, 0xFEB80FD0, .NEON, .A32, {cond_in_28=false}, {.I32, .NONE}}, - {.VMVN, {.QPR, .IMM, .NONE, .NONE}, {.VD_Q, .NEON_IMM8_ABCDEFGH, .NONE, .NONE}, 0xF2800870, 0xFEB80FD0, .NEON, .A32, {cond_in_28=false}, {.I16, .NONE}}, // MVE VMVN Qd, Qm {.VMVN, {.QPR, .QPR, .NONE, .NONE}, {.VD_Q, .VM_Q, .NONE, .NONE}, 0xFFB005C0, 0xFFB30F51, .MVE_INT, .T32, {thumb32=true, cond_in_28=false}, {}}, }, @@ -1646,13 +1667,25 @@ ENCODING_TABLE := #partial [Mnemonic][]Encoding{ // VLDM / VSTM (multiple S or D regs): cond 110 P U D W L Rn Vd 101 sz imm8 // IA = P=0 U=1 ; DB = P=1 U=0 ; W=1 writeback; L=1 load / 0 store. - .VLDM = { - {.VLDM, {.GPR, .SPR_LIST, .NONE, .NONE}, {.RN_A32, .VFP_S_LIST, .NONE, .NONE}, 0x0C900A00, 0x0F900F00, .VFPV2, .A32, {}, {}}, - {.VLDM, {.GPR, .DPR_LIST, .NONE, .NONE}, {.RN_A32, .VFP_D_LIST, .NONE, .NONE}, 0x0C900B00, 0x0F900F00, .VFPV2, .A32, {}, {}}, + .VLDMIA = { + {.VLDMIA, {.GPR, .SPR_LIST, .NONE, .NONE}, {.RN_A32_WB, .VFP_S_LIST, .NONE, .NONE}, 0x0C900A00, 0x0FB00F00, .VFPV2, .A32, {}, {}}, + {.VLDMIA, {.GPR, .DPR_LIST, .NONE, .NONE}, {.RN_A32_WB, .VFP_D_LIST, .NONE, .NONE}, 0x0C900B00, 0x0FB00F00, .VFPV2, .A32, {}, {}}, + {.VLDMIA, {.GPR, .SPR_LIST, .NONE, .NONE}, {.RN_A32_WB, .VFP_S_LIST, .NONE, .NONE}, 0x0CB00A00, 0x0FB00F00, .VFPV2, .A32, {}, {}}, + {.VLDMIA, {.GPR, .DPR_LIST, .NONE, .NONE}, {.RN_A32_WB, .VFP_D_LIST, .NONE, .NONE}, 0x0CB00B00, 0x0FB00F00, .VFPV2, .A32, {}, {}}, }, - .VSTM = { - {.VSTM, {.GPR, .SPR_LIST, .NONE, .NONE}, {.RN_A32, .VFP_S_LIST, .NONE, .NONE}, 0x0C800A00, 0x0F900F00, .VFPV2, .A32, {}, {}}, - {.VSTM, {.GPR, .DPR_LIST, .NONE, .NONE}, {.RN_A32, .VFP_D_LIST, .NONE, .NONE}, 0x0C800B00, 0x0F900F00, .VFPV2, .A32, {}, {}}, + .VLDMDB = { + {.VLDMDB, {.GPR, .SPR_LIST, .NONE, .NONE}, {.RN_A32_WB, .VFP_S_LIST, .NONE, .NONE}, 0x0D300A00, 0x0FB00F00, .VFPV2, .A32, {}, {}}, + {.VLDMDB, {.GPR, .DPR_LIST, .NONE, .NONE}, {.RN_A32_WB, .VFP_D_LIST, .NONE, .NONE}, 0x0D300B00, 0x0FB00F00, .VFPV2, .A32, {}, {}}, + }, + .VSTMIA = { + {.VSTMIA, {.GPR, .SPR_LIST, .NONE, .NONE}, {.RN_A32_WB, .VFP_S_LIST, .NONE, .NONE}, 0x0C800A00, 0x0FB00F00, .VFPV2, .A32, {}, {}}, + {.VSTMIA, {.GPR, .DPR_LIST, .NONE, .NONE}, {.RN_A32_WB, .VFP_D_LIST, .NONE, .NONE}, 0x0C800B00, 0x0FB00F00, .VFPV2, .A32, {}, {}}, + {.VSTMIA, {.GPR, .SPR_LIST, .NONE, .NONE}, {.RN_A32_WB, .VFP_S_LIST, .NONE, .NONE}, 0x0CA00A00, 0x0FB00F00, .VFPV2, .A32, {}, {}}, + {.VSTMIA, {.GPR, .DPR_LIST, .NONE, .NONE}, {.RN_A32_WB, .VFP_D_LIST, .NONE, .NONE}, 0x0CA00B00, 0x0FB00F00, .VFPV2, .A32, {}, {}}, + }, + .VSTMDB = { + {.VSTMDB, {.GPR, .SPR_LIST, .NONE, .NONE}, {.RN_A32_WB, .VFP_S_LIST, .NONE, .NONE}, 0x0D200A00, 0x0FB00F00, .VFPV2, .A32, {}, {}}, + {.VSTMDB, {.GPR, .DPR_LIST, .NONE, .NONE}, {.RN_A32_WB, .VFP_D_LIST, .NONE, .NONE}, 0x0D200B00, 0x0FB00F00, .VFPV2, .A32, {}, {}}, }, .VPUSH = { {.VPUSH, {.SPR_LIST, .NONE, .NONE, .NONE}, {.VFP_S_LIST, .NONE, .NONE, .NONE}, 0x0D2D0A00, 0x0FFF0F00, .VFPV2, .A32, {}, {}}, @@ -2403,6 +2436,8 @@ ENCODING_TABLE := #partial [Mnemonic][]Encoding{ {.VLD2, {.DPR_LIST, .MEM, .NONE, .NONE}, {.NEON_LANE_D_8_2, .RN_A32, .NONE, .NONE}, 0xF4A0010F, 0xFFB00F1F, .NEON, .A32, {cond_in_28=false}, {.SZ8, .NONE}}, {.VLD2, {.DPR_LIST, .MEM, .NONE, .NONE}, {.NEON_LANE_D_16_2, .RN_A32, .NONE, .NONE}, 0xF4A0050F, 0xFFB00F3F, .NEON, .A32, {cond_in_28=false}, {.SZ16, .NONE}}, {.VLD2, {.DPR_LIST, .MEM, .NONE, .NONE}, {.NEON_LANE_D_32_2, .RN_A32, .NONE, .NONE}, 0xF4A0090F, 0xFFB00F7F, .NEON, .A32, {cond_in_28=false}, {.SZ32, .NONE}}, + // The broadcast form: one element to every lane. + {.VLD2, {.DPR_LIST, .MEM, .NONE, .NONE}, {.NEON_D_LIST_ALL_2, .RN_A32, .NONE, .NONE}, 0xF4A00D0F, 0xFFB00F0F, .NEON, .A32, {cond_in_28=false}, {.SZ8, .NONE}}, }, .VST2 = { {.VST2, {.DPR_LIST, .MEM, .NONE, .NONE}, {.NEON_D_LIST_2, .RN_A32, .NONE, .NONE}, 0xF400080F, 0xFFF00F0F, .NEON, .A32, {cond_in_28=false}, {.SZ8, .NONE}}, @@ -2418,6 +2453,8 @@ ENCODING_TABLE := #partial [Mnemonic][]Encoding{ {.VLD3, {.DPR_LIST, .MEM, .NONE, .NONE}, {.NEON_LANE_D_8_3, .RN_A32, .NONE, .NONE}, 0xF4A0020F, 0xFFB00F1F, .NEON, .A32, {cond_in_28=false}, {.SZ8, .NONE}}, {.VLD3, {.DPR_LIST, .MEM, .NONE, .NONE}, {.NEON_LANE_D_16_3, .RN_A32, .NONE, .NONE}, 0xF4A0060F, 0xFFB00F3F, .NEON, .A32, {cond_in_28=false}, {.SZ16, .NONE}}, {.VLD3, {.DPR_LIST, .MEM, .NONE, .NONE}, {.NEON_LANE_D_32_3, .RN_A32, .NONE, .NONE}, 0xF4A00A0F, 0xFFB00F7F, .NEON, .A32, {cond_in_28=false}, {.SZ32, .NONE}}, + // The broadcast form: one element to every lane. + {.VLD3, {.DPR_LIST, .MEM, .NONE, .NONE}, {.NEON_D_LIST_ALL_3, .RN_A32, .NONE, .NONE}, 0xF4A00E0F, 0xFFB00F0F, .NEON, .A32, {cond_in_28=false}, {.SZ8, .NONE}}, }, .VST3 = { {.VST3, {.DPR_LIST, .MEM, .NONE, .NONE}, {.NEON_D_LIST_3, .RN_A32, .NONE, .NONE}, 0xF400040F, 0xFFF00F0F, .NEON, .A32, {cond_in_28=false}, {.SZ8, .NONE}}, @@ -2432,6 +2469,8 @@ ENCODING_TABLE := #partial [Mnemonic][]Encoding{ {.VLD4, {.DPR_LIST, .MEM, .NONE, .NONE}, {.NEON_LANE_D_8_4, .RN_A32, .NONE, .NONE}, 0xF4A0030F, 0xFFB00F1F, .NEON, .A32, {cond_in_28=false}, {.SZ8, .NONE}}, {.VLD4, {.DPR_LIST, .MEM, .NONE, .NONE}, {.NEON_LANE_D_16_4, .RN_A32, .NONE, .NONE}, 0xF4A0070F, 0xFFB00F3F, .NEON, .A32, {cond_in_28=false}, {.SZ16, .NONE}}, {.VLD4, {.DPR_LIST, .MEM, .NONE, .NONE}, {.NEON_LANE_D_32_4, .RN_A32, .NONE, .NONE}, 0xF4A00B0F, 0xFFB00F7F, .NEON, .A32, {cond_in_28=false}, {.SZ32, .NONE}}, + // The broadcast form: one element to every lane. + {.VLD4, {.DPR_LIST, .MEM, .NONE, .NONE}, {.NEON_D_LIST_ALL_4, .RN_A32, .NONE, .NONE}, 0xF4A00F0F, 0xFFB00F0F, .NEON, .A32, {cond_in_28=false}, {.SZ8, .NONE}}, }, .VST4 = { {.VST4, {.DPR_LIST, .MEM, .NONE, .NONE}, {.NEON_D_LIST_4, .RN_A32, .NONE, .NONE}, 0xF400000F, 0xFFF00F0F, .NEON, .A32, {cond_in_28=false}, {.SZ8, .NONE}}, @@ -2938,23 +2977,6 @@ ENCODING_TABLE := #partial [Mnemonic][]Encoding{ // 1111 0011 1011 size 10 Vd op 0 0 1 Q M 0 Vm (float; op selects EQ/GE/GT/LE/LT) // ========================================================================= - // NEON replicate loads (broadcast single element to all lanes) - // ========================================================================= - // 1111 0100 1 D 10 Rn Vd 11 N size T a Rm - // N=00 VLD1R, 01 VLD2R, 10 VLD3R, 11 VLD4R - // VLD{2,3,4}R replicate forms (LLVM-verified for .8 element size): - // vld2.8 {d1[], d2[]}, [r2] = 0xF4A2_1D0F -> base 0xF4A0_0D0F - // vld3.8 {d1[], d2[], d3[]}, [r2] = 0xF4A2_1E0F -> base 0xF4A0_0E0F - // vld4.8 {d1[], d2[], d3[], d4[]}, [r2] = 0xF4A2_1F0F -> base 0xF4A0_0F0F - .VLD2R = { - {.VLD2R, {.DPR_LIST, .MEM, .NONE, .NONE}, {.VD_D, .RN_A32, .NONE, .NONE}, 0xF4A00D0F, 0xFFB00F0F, .NEON, .A32, {cond_in_28=false}, {.SZ8, .NONE}}, - }, - .VLD3R = { - {.VLD3R, {.DPR_LIST, .MEM, .NONE, .NONE}, {.VD_D, .RN_A32, .NONE, .NONE}, 0xF4A00E0F, 0xFFB00F0F, .NEON, .A32, {cond_in_28=false}, {.SZ8, .NONE}}, - }, - .VLD4R = { - {.VLD4R, {.DPR_LIST, .MEM, .NONE, .NONE}, {.VD_D, .RN_A32, .NONE, .NONE}, 0xF4A00F0F, 0xFFB00F0F, .NEON, .A32, {cond_in_28=false}, {.SZ8, .NONE}}, - }, // ========================================================================= // NEON single-element-lane load/store (one element, with lane index) diff --git a/core/rexcode/isa/arm32/tablegen/generated/decode_tables.odin b/core/rexcode/isa/arm32/tablegen/generated/decode_tables.odin index ad30716ed..4d088fea0 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 := [1701]lib.Decode_Entry{ +DECODE_ENTRIES := [1722]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} }, @@ -186,8 +186,8 @@ DECODE_ENTRIES := [1701]lib.Decode_Entry{ { .VADD, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2000840, 0xFFB00F50, .NEON, .A32, {}, {.I8,.NONE} }, { .VADD, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2000D40, 0xFFB00F50, .NEON, .A32, {}, {.F32,.NONE} }, { .VMUL, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2000950, 0xFFB00F50, .NEON, .A32, {}, {.I8,.NONE} }, - { .VMLA, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2000D50, 0xFFB00F50, .NEON, .A32, {}, {.F32,.NONE} }, { .VMLA, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2000940, 0xFFB00F50, .NEON, .A32, {}, {.I8,.NONE} }, + { .VMLA, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2000D50, 0xFFB00F50, .NEON, .A32, {}, {.F32,.NONE} }, { .VFMA, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2000C50, 0xFFB00F50, .NEON, .A32, {}, {.F32,.NONE} }, { .VHADD, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2000040, 0xFFB00F50, .NEON, .A32, {}, {.S8,.NONE} }, { .VHSUB, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2000240, 0xFFB00F50, .NEON, .A32, {}, {.S8,.NONE} }, @@ -203,8 +203,8 @@ DECODE_ENTRIES := [1701]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} }, @@ -212,11 +212,11 @@ DECODE_ENTRIES := [1701]lib.Decode_Entry{ { .VQSHL, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VM_Q,.VN_Q,.NONE}, 0xF2000450, 0xFFB00F50, .NEON, .A32, {}, {.S8,.NONE} }, { .VQRSHL, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VM_D,.VN_D,.NONE}, 0xF2000510, 0xFFB00F50, .NEON, .A32, {}, {.S8,.NONE} }, { .SHA1C, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2000C40, 0xFFB00F50, .CRYPTO, .A32, {}, {.SZ32,.NONE} }, - { .VADD, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2000800, 0xFFB00F10, .NEON, .A32, {}, {.I8,.NONE} }, { .VADD, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2000D00, 0xFFB00F10, .NEON, .A32, {}, {.F32,.NONE} }, + { .VADD, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2000800, 0xFFB00F10, .NEON, .A32, {}, {.I8,.NONE} }, { .VMUL, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2000910, 0xFFB00F10, .NEON, .A32, {}, {.I8,.NONE} }, - { .VMLA, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2000D10, 0xFFB00F10, .NEON, .A32, {}, {.F32,.NONE} }, { .VMLA, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2000900, 0xFFB00F10, .NEON, .A32, {}, {.I8,.NONE} }, + { .VMLA, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2000D10, 0xFFB00F10, .NEON, .A32, {}, {.F32,.NONE} }, { .VFMA, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2000C10, 0xFFB00F10, .NEON, .A32, {}, {.F32,.NONE} }, { .VHADD, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2000000, 0xFFB00F10, .NEON, .A32, {}, {.S8,.NONE} }, { .VHSUB, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2000200, 0xFFB00F10, .NEON, .A32, {}, {.S8,.NONE} }, @@ -230,8 +230,8 @@ DECODE_ENTRIES := [1701]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}, 0xF2000600, 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} }, { .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} }, @@ -262,8 +262,8 @@ DECODE_ENTRIES := [1701]lib.Decode_Entry{ { .VCGT, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2100340, 0xFFB00F50, .NEON, .A32, {}, {.S16,.NONE} }, { .VCLE, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VM_D,.VN_D,.NONE}, 0xF2100310, 0xFFB00F50, .NEON, .A32, {}, {.S16,.NONE} }, { .VCLT, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VM_D,.VN_D,.NONE}, 0xF2100300, 0xFFB00F50, .NEON, .A32, {}, {.S16,.NONE} }, - { .VMAX, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2100F40, 0xFFB00F50, .NEON_HALF_FP, .A32, {}, {.F16,.NONE} }, { .VMAX, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2100640, 0xFFB00F50, .NEON, .A32, {}, {.S16,.NONE} }, + { .VMAX, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2100F40, 0xFFB00F50, .NEON_HALF_FP, .A32, {}, {.F16,.NONE} }, { .VMIN, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2100650, 0xFFB00F50, .NEON, .A32, {}, {.S16,.NONE} }, { .VQRSHL, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VM_D,.VN_D,.NONE}, 0xF2100510, 0xFFB00F50, .NEON, .A32, {}, {.S16,.NONE} }, { .SHA1P, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2100C40, 0xFFB00F50, .CRYPTO, .A32, {}, {.SZ32,.NONE} }, @@ -314,8 +314,8 @@ DECODE_ENTRIES := [1701]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, {}, {.SZ32,.NONE} }, @@ -367,67 +367,79 @@ DECODE_ENTRIES := [1701]lib.Decode_Entry{ { .SUB, {.GPR,.GPR,.IMM_MOD,.NONE}, {.RD,.RN_A32,.A32_IMM_MOD,.NONE}, 0x02500000, 0x0FF00000, .BASE, .A32, {sets_flags=true}, {.NONE,.NONE} }, { .RSB, {.GPR,.GPR,.IMM_MOD,.NONE}, {.RD,.RN_A32,.A32_IMM_MOD,.NONE}, 0x02600000, 0x0FE00000, .BASE, .A32, {}, {.NONE,.NONE} }, { .RSB, {.GPR,.GPR,.IMM_MOD,.NONE}, {.RD,.RN_A32,.A32_IMM_MOD,.NONE}, 0x02700000, 0x0FF00000, .BASE, .A32, {sets_flags=true}, {.NONE,.NONE} }, + { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800410, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, { .VMOV, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800050, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, + { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800E10, 0xFEB80FF0, .NEON, .A32, {}, {.I8,.NONE} }, + { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800210, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, { .VMOV, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800850, 0xFEB80FF0, .NEON, .A32, {}, {.I16,.NONE} }, - { .VMOV, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800E50, 0xFEB80FF0, .NEON, .A32, {}, {.I8,.NONE} }, + { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800610, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, + { .VMOV, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800450, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, { .VMOV, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800E70, 0xFEB80FF0, .NEON, .A32, {}, {.I64,.NONE} }, + { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800A10, 0xFEB80FF0, .NEON, .A32, {}, {.I16,.NONE} }, + { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800810, 0xFEB80FF0, .NEON, .A32, {}, {.I16,.NONE} }, + { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800E30, 0xFEB80FF0, .NEON, .A32, {}, {.I64,.NONE} }, + { .VMOV, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800C50, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, + { .VMOV, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800250, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, + { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800C10, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, + { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800010, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, + { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800D10, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, + { .VMOV, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800E50, 0xFEB80FF0, .NEON, .A32, {}, {.I8,.NONE} }, + { .VMOV, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800D50, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, + { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800F10, 0xFEB80FF0, .NEON, .A32, {}, {.F32,.NONE} }, + { .VMOV, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800A50, 0xFEB80FF0, .NEON, .A32, {}, {.I16,.NONE} }, { .VMOV, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800F50, 0xFEB80FF0, .NEON, .A32, {}, {.F32,.NONE} }, + { .VMOV, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800650, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, { .VADDW, {.QPR,.QPR,.DPR,.NONE}, {.VD_Q,.VN_Q,.VM_D,.NONE}, 0xF2800100, 0xFFB11F50, .NEON, .A32, {}, {.S8,.NONE} }, { .VSUBW, {.QPR,.QPR,.DPR,.NONE}, {.VD_Q,.VN_Q,.VM_D,.NONE}, 0xF2800300, 0xFFB11F50, .NEON, .A32, {}, {.S8,.NONE} }, - { .VBIC, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800570, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, + { .VBIC, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800770, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, + { .VBIC, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800B70, 0xFEB80FF0, .NEON, .A32, {}, {.I16,.NONE} }, + { .VBIC, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800930, 0xFEB80FF0, .NEON, .A32, {}, {.I16,.NONE} }, + { .VBIC, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800330, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, + { .VBIC, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800970, 0xFEB80FF0, .NEON, .A32, {}, {.I16,.NONE} }, + { .VBIC, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800170, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, { .VBIC, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800130, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, { .VBIC, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800370, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, - { .VBIC, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800730, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, - { .VBIC, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800930, 0xFEB80FF0, .NEON, .A32, {}, {.I16,.NONE} }, - { .VBIC, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800170, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, - { .VBIC, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800B70, 0xFEB80FF0, .NEON, .A32, {}, {.I16,.NONE} }, - { .VBIC, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800970, 0xFEB80FF0, .NEON, .A32, {}, {.I16,.NONE} }, - { .VBIC, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800330, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, + { .VBIC, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800570, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, { .VBIC, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800B30, 0xFEB80FF0, .NEON, .A32, {}, {.I16,.NONE} }, - { .VBIC, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800770, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, { .VBIC, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800530, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, - { .VORR, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800950, 0xFEB80FF0, .NEON, .A32, {}, {.I16,.NONE} }, - { .VORR, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800110, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, - { .VORR, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800B50, 0xFEB80FF0, .NEON, .A32, {}, {.I16,.NONE} }, - { .VORR, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800350, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, - { .VORR, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800910, 0xFEB80FF0, .NEON, .A32, {}, {.I16,.NONE} }, - { .VORR, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800150, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, - { .VORR, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800B10, 0xFEB80FF0, .NEON, .A32, {}, {.I16,.NONE} }, - { .VORR, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800310, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, - { .VORR, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800510, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, - { .VORR, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800550, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, - { .VORR, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800750, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, + { .VBIC, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800730, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, { .VORR, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800710, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, + { .VORR, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800150, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, + { .VORR, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800910, 0xFEB80FF0, .NEON, .A32, {}, {.I16,.NONE} }, + { .VORR, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800350, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, + { .VORR, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800510, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, + { .VORR, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800B50, 0xFEB80FF0, .NEON, .A32, {}, {.I16,.NONE} }, + { .VORR, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800750, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, + { .VORR, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800310, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, + { .VORR, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800110, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, + { .VORR, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800950, 0xFEB80FF0, .NEON, .A32, {}, {.I16,.NONE} }, + { .VORR, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800550, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, + { .VORR, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800B10, 0xFEB80FF0, .NEON, .A32, {}, {.I16,.NONE} }, + { .VMVN, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800670, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, + { .VMVN, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800070, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, + { .VMVN, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800D70, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, + { .VMVN, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800270, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, + { .VMVN, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800A30, 0xFEB80FF0, .NEON, .A32, {}, {.I16,.NONE} }, + { .VMVN, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800030, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, + { .VMVN, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800D30, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, + { .VMVN, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800C30, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, + { .VMVN, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800830, 0xFEB80FF0, .NEON, .A32, {}, {.I16,.NONE} }, + { .VMVN, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800430, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, + { .VMVN, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800630, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, + { .VMVN, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800C70, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, + { .VMVN, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800470, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, + { .VMVN, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800230, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, + { .VMVN, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800A70, 0xFEB80FF0, .NEON, .A32, {}, {.I16,.NONE} }, + { .VMVN, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800870, 0xFEB80FF0, .NEON, .A32, {}, {.I16,.NONE} }, { .VMOVL, {.QPR,.DPR,.NONE,.NONE}, {.VD_Q,.VM_D,.NONE,.NONE}, 0xF2880A10, 0xFFB80FD0, .NEON, .A32, {}, {.S8,.NONE} }, - { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800210, 0xFEB80FB0, .NEON, .A32, {}, {.I32,.NONE} }, - { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800610, 0xFEB80FB0, .NEON, .A32, {}, {.I32,.NONE} }, - { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800010, 0xFEB80FB0, .NEON, .A32, {}, {.I32,.NONE} }, - { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800A10, 0xFEB80FB0, .NEON, .A32, {}, {.I16,.NONE} }, - { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800E30, 0xFEB80FB0, .NEON, .A32, {}, {.I64,.NONE} }, - { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800410, 0xFEB80FB0, .NEON, .A32, {}, {.I32,.NONE} }, - { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800810, 0xFEB80FB0, .NEON, .A32, {}, {.I16,.NONE} }, - { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800F10, 0xFEB80FB0, .NEON, .A32, {}, {.F32,.NONE} }, - { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800E10, 0xFEB80FB0, .NEON, .A32, {}, {.I8,.NONE} }, - { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800D10, 0xFEB80FB0, .NEON, .A32, {}, {.I32,.NONE} }, - { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800C10, 0xFEB80FB0, .NEON, .A32, {}, {.I32,.NONE} }, { .VADDL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2800000, 0xFFB01F50, .NEON, .A32, {}, {.S8,.NONE} }, { .VSUBL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2800200, 0xFFB01F50, .NEON, .A32, {}, {.S8,.NONE} }, { .VABAL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2800500, 0xFFB01F50, .NEON, .A32, {}, {.S8,.NONE} }, { .VABDL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2800700, 0xFFB01F50, .NEON, .A32, {}, {.S8,.NONE} }, - { .VMVN, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800870, 0xFEB80FD0, .NEON, .A32, {}, {.I16,.NONE} }, - { .VMVN, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800070, 0xFEB80FD0, .NEON, .A32, {}, {.I32,.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,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800A30, 0xFEB80F90, .NEON, .A32, {}, {.I16,.NONE} }, - { .VMVN, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800430, 0xFEB80F90, .NEON, .A32, {}, {.I32,.NONE} }, - { .VMVN, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800230, 0xFEB80F90, .NEON, .A32, {}, {.I32,.NONE} }, - { .VMVN, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800830, 0xFEB80F90, .NEON, .A32, {}, {.I16,.NONE} }, - { .VMVN, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800D30, 0xFEB80F90, .NEON, .A32, {}, {.I32,.NONE} }, - { .VMVN, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800030, 0xFEB80F90, .NEON, .A32, {}, {.I32,.NONE} }, - { .VMVN, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800C30, 0xFEB80F90, .NEON, .A32, {}, {.I32,.NONE} }, - { .VMVN, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800630, 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} }, @@ -460,16 +472,16 @@ DECODE_ENTRIES := [1701]lib.Decode_Entry{ { .VMLS, {.DPR,.DPR,.DPR_ELEM,.NONE}, {.VD_D,.VN_D,.NEON_VM_SCALAR_16,.NONE}, 0xF2900440, 0xFFB00F50, .NEON, .A32, {}, {.I16,.NONE} }, { .VMULL, {.QPR,.DPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_D,.NEON_VM_SCALAR_16,.NONE}, 0xF2900A40, 0xFFB00F50, .NEON, .A32, {}, {.S16,.NONE} }, { .VMULL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2900C00, 0xFFB00F50, .NEON, .A32, {}, {.S16,.NONE} }, - { .VMLAL, {.QPR,.DPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_D,.NEON_VM_SCALAR_16,.NONE}, 0xF2900240, 0xFFB00F50, .NEON, .A32, {}, {.S16,.NONE} }, { .VMLAL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2900800, 0xFFB00F50, .NEON, .A32, {}, {.S16,.NONE} }, - { .VMLSL, {.QPR,.DPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_D,.NEON_VM_SCALAR_16,.NONE}, 0xF2900640, 0xFFB00F50, .NEON, .A32, {}, {.S16,.NONE} }, + { .VMLAL, {.QPR,.DPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_D,.NEON_VM_SCALAR_16,.NONE}, 0xF2900240, 0xFFB00F50, .NEON, .A32, {}, {.S16,.NONE} }, { .VMLSL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2900A00, 0xFFB00F50, .NEON, .A32, {}, {.S16,.NONE} }, + { .VMLSL, {.QPR,.DPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_D,.NEON_VM_SCALAR_16,.NONE}, 0xF2900640, 0xFFB00F50, .NEON, .A32, {}, {.S16,.NONE} }, { .VQDMULL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2900D00, 0xFFB00F50, .NEON, .A32, {}, {.S16,.NONE} }, { .VQDMULL, {.QPR,.DPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_D,.NEON_VM_SCALAR_16,.NONE}, 0xF2900B40, 0xFFB00F50, .NEON, .A32, {}, {.S16,.NONE} }, - { .VQDMLAL, {.QPR,.DPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_D,.NEON_VM_SCALAR_16,.NONE}, 0xF2900340, 0xFFB00F50, .NEON, .A32, {}, {.S16,.NONE} }, { .VQDMLAL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2900900, 0xFFB00F50, .NEON, .A32, {}, {.S16,.NONE} }, - { .VQDMLSL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2900B00, 0xFFB00F50, .NEON, .A32, {}, {.S16,.NONE} }, + { .VQDMLAL, {.QPR,.DPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_D,.NEON_VM_SCALAR_16,.NONE}, 0xF2900340, 0xFFB00F50, .NEON, .A32, {}, {.S16,.NONE} }, { .VQDMLSL, {.QPR,.DPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_D,.NEON_VM_SCALAR_16,.NONE}, 0xF2900740, 0xFFB00F50, .NEON, .A32, {}, {.S16,.NONE} }, + { .VQDMLSL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2900B00, 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,.NEON_VM_SCALAR_16,.NONE}, 0xF2900E40, 0xFFB00F50, .V8, .A32, {}, {.S16,.NONE} }, @@ -485,18 +497,18 @@ DECODE_ENTRIES := [1701]lib.Decode_Entry{ { .VMUL, {.DPR,.DPR,.DPR_ELEM,.NONE}, {.VD_D,.VN_D,.NEON_VM_SCALAR_32,.NONE}, 0xF2A00840, 0xFFB00F50, .NEON, .A32, {}, {.I32,.NONE} }, { .VMLA, {.DPR,.DPR,.DPR_ELEM,.NONE}, {.VD_D,.VN_D,.NEON_VM_SCALAR_32,.NONE}, 0xF2A00040, 0xFFB00F50, .NEON, .A32, {}, {.I32,.NONE} }, { .VMLS, {.DPR,.DPR,.DPR_ELEM,.NONE}, {.VD_D,.VN_D,.NEON_VM_SCALAR_32,.NONE}, 0xF2A00440, 0xFFB00F50, .NEON, .A32, {}, {.I32,.NONE} }, - { .VMULL, {.QPR,.DPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_D,.NEON_VM_SCALAR_32,.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,.NEON_VM_SCALAR_32,.NONE}, 0xF2A00A40, 0xFFB00F50, .NEON, .A32, {}, {.S32,.NONE} }, { .VMLAL, {.QPR,.DPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_D,.NEON_VM_SCALAR_32,.NONE}, 0xF2A00240, 0xFFB00F50, .NEON, .A32, {}, {.S32,.NONE} }, + { .VMLAL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2A00800, 0xFFB00F50, .NEON, .A32, {}, {.S32,.NONE} }, { .VMLSL, {.QPR,.DPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_D,.NEON_VM_SCALAR_32,.NONE}, 0xF2A00640, 0xFFB00F50, .NEON, .A32, {}, {.S32,.NONE} }, { .VMLSL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2A00A00, 0xFFB00F50, .NEON, .A32, {}, {.S32,.NONE} }, { .VQDMULL, {.QPR,.DPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_D,.NEON_VM_SCALAR_32,.NONE}, 0xF2A00B40, 0xFFB00F50, .NEON, .A32, {}, {.S32,.NONE} }, { .VQDMULL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2A00D00, 0xFFB00F50, .NEON, .A32, {}, {.S32,.NONE} }, { .VQDMLAL, {.QPR,.DPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_D,.NEON_VM_SCALAR_32,.NONE}, 0xF2A00340, 0xFFB00F50, .NEON, .A32, {}, {.S32,.NONE} }, { .VQDMLAL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2A00900, 0xFFB00F50, .NEON, .A32, {}, {.S32,.NONE} }, - { .VQDMLSL, {.QPR,.DPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_D,.NEON_VM_SCALAR_32,.NONE}, 0xF2A00740, 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,.NEON_VM_SCALAR_32,.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} }, { .VQRDMULH, {.DPR,.DPR,.DPR_ELEM,.NONE}, {.VD_D,.VN_D,.NEON_VM_SCALAR32,.NONE}, 0xF2A00D40, 0xFFB00F50, .NEON, .A32, {}, {.S32,.NONE} }, { .VQRDMLAH, {.DPR,.DPR,.DPR_ELEM,.NONE}, {.VD_D,.VN_D,.NEON_VM_SCALAR_32,.NONE}, 0xF2A00E40, 0xFFB00F50, .V8, .A32, {}, {.S32,.NONE} }, @@ -509,14 +521,14 @@ DECODE_ENTRIES := [1701]lib.Decode_Entry{ { .SBC, {.GPR,.GPR,.IMM_MOD,.NONE}, {.RD,.RN_A32,.A32_IMM_MOD,.NONE}, 0x02D00000, 0x0FF00000, .BASE, .A32, {sets_flags=true}, {.NONE,.NONE} }, { .RSC, {.GPR,.GPR,.IMM_MOD,.NONE}, {.RD,.RN_A32,.A32_IMM_MOD,.NONE}, 0x02E00000, 0x0FE00000, .BASE, .A32, {}, {.NONE,.NONE} }, { .RSC, {.GPR,.GPR,.IMM_MOD,.NONE}, {.RD,.RN_A32,.A32_IMM_MOD,.NONE}, 0x02F00000, 0x0FF00000, .BASE, .A32, {sets_flags=true}, {.NONE,.NONE} }, - { .VCLE, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VM_Q,.VN_Q,.NONE}, 0xF3000350, 0xFFB11F51, .NEON, .A32, {}, {.U8,.NONE} }, { .VCLE, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VM_Q,.VN_Q,.NONE}, 0xF3000E40, 0xFFB11F51, .NEON, .A32, {}, {.F32,.NONE} }, + { .VCLE, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VM_Q,.VN_Q,.NONE}, 0xF3000350, 0xFFB11F51, .NEON, .A32, {}, {.U8,.NONE} }, { .VCLT, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VM_Q,.VN_Q,.NONE}, 0xF3000340, 0xFFB11F51, .NEON, .A32, {}, {.U8,.NONE} }, { .VACLE, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VM_Q,.VN_Q,.NONE}, 0xF3000E50, 0xFFB11F51, .NEON, .A32, {}, {.F32,.NONE} }, { .VQRSHL, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VM_Q,.VN_Q,.NONE}, 0xF3000550, 0xFFB11F51, .NEON, .A32, {}, {.U8,.NONE} }, { .VSUB, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF3000840, 0xFFB00F50, .NEON, .A32, {}, {.I8,.NONE} }, - { .VMUL, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF3000950, 0xFFB00F50, .NEON, .A32, {}, {.P8,.NONE} }, { .VMUL, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF3000D50, 0xFFB00F50, .NEON, .A32, {}, {.F32,.NONE} }, + { .VMUL, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF3000950, 0xFFB00F50, .NEON, .A32, {}, {.P8,.NONE} }, { .VMLS, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF3000940, 0xFFB00F50, .NEON, .A32, {}, {.I8,.NONE} }, { .VHADD, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF3000040, 0xFFB00F50, .NEON, .A32, {}, {.U8,.NONE} }, { .VHSUB, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF3000240, 0xFFB00F50, .NEON, .A32, {}, {.U8,.NONE} }, @@ -529,8 +541,8 @@ DECODE_ENTRIES := [1701]lib.Decode_Entry{ { .VCGE, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF3000E40, 0xFFB00F50, .NEON, .A32, {}, {.F32,.NONE} }, { .VCGE, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF3000350, 0xFFB00F50, .NEON, .A32, {}, {.U8,.NONE} }, { .VCGT, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF3000340, 0xFFB00F50, .NEON, .A32, {}, {.U8,.NONE} }, - { .VCLE, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VM_D,.VN_D,.NONE}, 0xF3000E00, 0xFFB00F50, .NEON, .A32, {}, {.F32,.NONE} }, { .VCLE, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VM_D,.VN_D,.NONE}, 0xF3000310, 0xFFB00F50, .NEON, .A32, {}, {.U8,.NONE} }, + { .VCLE, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VM_D,.VN_D,.NONE}, 0xF3000E00, 0xFFB00F50, .NEON, .A32, {}, {.F32,.NONE} }, { .VCLT, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VM_D,.VN_D,.NONE}, 0xF3000300, 0xFFB00F50, .NEON, .A32, {}, {.U8,.NONE} }, { .VACGE, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF3000E50, 0xFFB00F50, .NEON, .A32, {}, {.F32,.NONE} }, { .VACLE, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VM_D,.VN_D,.NONE}, 0xF3000E10, 0xFFB00F50, .NEON, .A32, {}, {.F32,.NONE} }, @@ -542,8 +554,8 @@ DECODE_ENTRIES := [1701]lib.Decode_Entry{ { .VQRSHL, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VM_D,.VN_D,.NONE}, 0xF3000510, 0xFFB00F50, .NEON, .A32, {}, {.U8,.NONE} }, { .SHA256H, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF3000C40, 0xFFB00F50, .CRYPTO, .A32, {}, {.SZ32,.NONE} }, { .VSUB, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF3000800, 0xFFB00F10, .NEON, .A32, {}, {.I8,.NONE} }, - { .VMUL, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF3000D10, 0xFFB00F10, .NEON, .A32, {}, {.F32,.NONE} }, { .VMUL, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF3000910, 0xFFB00F10, .NEON, .A32, {}, {.P8,.NONE} }, + { .VMUL, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF3000D10, 0xFFB00F10, .NEON, .A32, {}, {.F32,.NONE} }, { .VMLS, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF3000900, 0xFFB00F10, .NEON, .A32, {}, {.I8,.NONE} }, { .VHADD, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF3000000, 0xFFB00F10, .NEON, .A32, {}, {.U8,.NONE} }, { .VHSUB, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF3000200, 0xFFB00F10, .NEON, .A32, {}, {.U8,.NONE} }, @@ -559,8 +571,8 @@ DECODE_ENTRIES := [1701]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} }, @@ -676,8 +688,8 @@ DECODE_ENTRIES := [1701]lib.Decode_Entry{ { .VMUL, {.QPR,.QPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_Q,.NEON_VM_SCALAR_16,.NONE}, 0xF3900840, 0xFFB00F50, .NEON, .A32, {}, {.I16,.NONE} }, { .VMLA, {.QPR,.QPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_Q,.NEON_VM_SCALAR_16,.NONE}, 0xF3900040, 0xFFB00F50, .NEON, .A32, {}, {.I16,.NONE} }, { .VMLS, {.QPR,.QPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_Q,.NEON_VM_SCALAR_16,.NONE}, 0xF3900440, 0xFFB00F50, .NEON, .A32, {}, {.I16,.NONE} }, - { .VMULL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF3900C00, 0xFFB00F50, .NEON, .A32, {}, {.U16,.NONE} }, { .VMULL, {.QPR,.DPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_D,.NEON_VM_SCALAR_16,.NONE}, 0xF3900A40, 0xFFB00F50, .NEON, .A32, {}, {.U16,.NONE} }, + { .VMULL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF3900C00, 0xFFB00F50, .NEON, .A32, {}, {.U16,.NONE} }, { .VMLAL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF3900800, 0xFFB00F50, .NEON, .A32, {}, {.U16,.NONE} }, { .VMLAL, {.QPR,.DPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_D,.NEON_VM_SCALAR_16,.NONE}, 0xF3900240, 0xFFB00F50, .NEON, .A32, {}, {.U16,.NONE} }, { .VMLSL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF3900A00, 0xFFB00F50, .NEON, .A32, {}, {.U16,.NONE} }, @@ -697,107 +709,107 @@ DECODE_ENTRIES := [1701]lib.Decode_Entry{ { .VMUL, {.QPR,.QPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_Q,.NEON_VM_SCALAR_32,.NONE}, 0xF3A00840, 0xFFB00F50, .NEON, .A32, {}, {.I32,.NONE} }, { .VMLA, {.QPR,.QPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_Q,.NEON_VM_SCALAR_32,.NONE}, 0xF3A00040, 0xFFB00F50, .NEON, .A32, {}, {.I32,.NONE} }, { .VMLS, {.QPR,.QPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_Q,.NEON_VM_SCALAR_32,.NONE}, 0xF3A00440, 0xFFB00F50, .NEON, .A32, {}, {.I32,.NONE} }, - { .VMULL, {.QPR,.DPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_D,.NEON_VM_SCALAR_32,.NONE}, 0xF3A00A40, 0xFFB00F50, .NEON, .A32, {}, {.U32,.NONE} }, { .VMULL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF3A00C00, 0xFFB00F50, .NEON, .A32, {}, {.U32,.NONE} }, + { .VMULL, {.QPR,.DPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_D,.NEON_VM_SCALAR_32,.NONE}, 0xF3A00A40, 0xFFB00F50, .NEON, .A32, {}, {.U32,.NONE} }, { .VMLAL, {.QPR,.DPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_D,.NEON_VM_SCALAR_32,.NONE}, 0xF3A00240, 0xFFB00F50, .NEON, .A32, {}, {.U32,.NONE} }, { .VMLAL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF3A00800, 0xFFB00F50, .NEON, .A32, {}, {.U32,.NONE} }, - { .VMLSL, {.QPR,.DPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_D,.NEON_VM_SCALAR_32,.NONE}, 0xF3A00640, 0xFFB00F50, .NEON, .A32, {}, {.U32,.NONE} }, { .VMLSL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF3A00A00, 0xFFB00F50, .NEON, .A32, {}, {.U32,.NONE} }, + { .VMLSL, {.QPR,.DPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_D,.NEON_VM_SCALAR_32,.NONE}, 0xF3A00640, 0xFFB00F50, .NEON, .A32, {}, {.U32,.NONE} }, { .VQRDMLAH, {.QPR,.QPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_Q,.NEON_VM_SCALAR_32,.NONE}, 0xF3A00E40, 0xFFB00F50, .V8, .A32, {}, {.S32,.NONE} }, { .VQRDMLSH, {.QPR,.QPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_Q,.NEON_VM_SCALAR_32,.NONE}, 0xF3A00F40, 0xFFB00F50, .V8, .A32, {}, {.S32,.NONE} }, { .MOV, {.GPR,.IMM_MOD,.NONE,.NONE}, {.RD,.A32_IMM_MOD,.NONE,.NONE}, 0x03A00000, 0x0FEF0000, .BASE, .A32, {}, {.NONE,.NONE} }, - { .VABS, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B90700, 0xFFBF0FD0, .NEON, .A32, {}, {.F32,.NONE} }, - { .VABS, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B90740, 0xFFBF0FD0, .NEON, .A32, {}, {.F32,.NONE} }, + { .VABS, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B90340, 0xFFBF0FD0, .NEON, .A32, {}, {.S32,.NONE} }, + { .VABS, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B90300, 0xFFBF0FD0, .NEON, .A32, {}, {.S32,.NONE} }, { .VABS, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B10340, 0xFFBF0FD0, .NEON, .A32, {}, {.S8,.NONE} }, { .VABS, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B10300, 0xFFBF0FD0, .NEON, .A32, {}, {.S8,.NONE} }, - { .VABS, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B50340, 0xFFBF0FD0, .NEON, .A32, {}, {.S16,.NONE} }, - { .VABS, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B90300, 0xFFBF0FD0, .NEON, .A32, {}, {.S32,.NONE} }, + { .VABS, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B90740, 0xFFBF0FD0, .NEON, .A32, {}, {.F32,.NONE} }, { .VABS, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B50300, 0xFFBF0FD0, .NEON, .A32, {}, {.S16,.NONE} }, - { .VABS, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B90340, 0xFFBF0FD0, .NEON, .A32, {}, {.S32,.NONE} }, - { .VNEG, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B50380, 0xFFBF0FD0, .NEON, .A32, {}, {.S16,.NONE} }, - { .VNEG, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B10380, 0xFFBF0FD0, .NEON, .A32, {}, {.S8,.NONE} }, + { .VABS, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B50340, 0xFFBF0FD0, .NEON, .A32, {}, {.S16,.NONE} }, + { .VABS, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B90700, 0xFFBF0FD0, .NEON, .A32, {}, {.F32,.NONE} }, { .VNEG, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B90380, 0xFFBF0FD0, .NEON, .A32, {}, {.S32,.NONE} }, - { .VNEG, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B103C0, 0xFFBF0FD0, .NEON, .A32, {}, {.S8,.NONE} }, - { .VNEG, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B503C0, 0xFFBF0FD0, .NEON, .A32, {}, {.S16,.NONE} }, - { .VNEG, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B903C0, 0xFFBF0FD0, .NEON, .A32, {}, {.S32,.NONE} }, - { .VNEG, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B90780, 0xFFBF0FD0, .NEON, .A32, {}, {.F32,.NONE} }, { .VNEG, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B907C0, 0xFFBF0FD0, .NEON, .A32, {}, {.F32,.NONE} }, + { .VNEG, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B10380, 0xFFBF0FD0, .NEON, .A32, {}, {.S8,.NONE} }, + { .VNEG, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B103C0, 0xFFBF0FD0, .NEON, .A32, {}, {.S8,.NONE} }, + { .VNEG, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B90780, 0xFFBF0FD0, .NEON, .A32, {}, {.F32,.NONE} }, + { .VNEG, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B50380, 0xFFBF0FD0, .NEON, .A32, {}, {.S16,.NONE} }, + { .VNEG, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B903C0, 0xFFBF0FD0, .NEON, .A32, {}, {.S32,.NONE} }, + { .VNEG, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B503C0, 0xFFBF0FD0, .NEON, .A32, {}, {.S16,.NONE} }, { .VCVT, {.DPR,.QPR,.NONE,.NONE}, {.VD_D,.VM_Q,.NONE,.NONE}, 0xF3B60600, 0xFFBF0FD0, .BF16, .A32, {}, {.F16,.F32} }, - { .VMOVN, {.DPR,.QPR,.NONE,.NONE}, {.VD_D,.VM_Q,.NONE,.NONE}, 0xF3BA0200, 0xFFBF0FD0, .NEON, .A32, {}, {.I64,.NONE} }, { .VMOVN, {.DPR,.QPR,.NONE,.NONE}, {.VD_D,.VM_Q,.NONE,.NONE}, 0xF3B60200, 0xFFBF0FD0, .NEON, .A32, {}, {.I32,.NONE} }, { .VMOVN, {.DPR,.QPR,.NONE,.NONE}, {.VD_D,.VM_Q,.NONE,.NONE}, 0xF3B20200, 0xFFBF0FD0, .NEON, .A32, {}, {.I16,.NONE} }, - { .VQMOVN, {.DPR,.QPR,.NONE,.NONE}, {.VD_D,.VM_Q,.NONE,.NONE}, 0xF3B202C0, 0xFFBF0FD0, .NEON, .A32, {}, {.U16,.NONE} }, + { .VMOVN, {.DPR,.QPR,.NONE,.NONE}, {.VD_D,.VM_Q,.NONE,.NONE}, 0xF3BA0200, 0xFFBF0FD0, .NEON, .A32, {}, {.I64,.NONE} }, { .VQMOVN, {.DPR,.QPR,.NONE,.NONE}, {.VD_D,.VM_Q,.NONE,.NONE}, 0xF3BA0280, 0xFFBF0FD0, .NEON, .A32, {}, {.S64,.NONE} }, { .VQMOVN, {.DPR,.QPR,.NONE,.NONE}, {.VD_D,.VM_Q,.NONE,.NONE}, 0xF3B60280, 0xFFBF0FD0, .NEON, .A32, {}, {.S32,.NONE} }, + { .VQMOVN, {.DPR,.QPR,.NONE,.NONE}, {.VD_D,.VM_Q,.NONE,.NONE}, 0xF3B20280, 0xFFBF0FD0, .NEON, .A32, {}, {.S16,.NONE} }, + { .VQMOVN, {.DPR,.QPR,.NONE,.NONE}, {.VD_D,.VM_Q,.NONE,.NONE}, 0xF3B202C0, 0xFFBF0FD0, .NEON, .A32, {}, {.U16,.NONE} }, { .VQMOVN, {.DPR,.QPR,.NONE,.NONE}, {.VD_D,.VM_Q,.NONE,.NONE}, 0xF3BA02C0, 0xFFBF0FD0, .NEON, .A32, {}, {.U64,.NONE} }, { .VQMOVN, {.DPR,.QPR,.NONE,.NONE}, {.VD_D,.VM_Q,.NONE,.NONE}, 0xF3B602C0, 0xFFBF0FD0, .NEON, .A32, {}, {.U32,.NONE} }, - { .VQMOVN, {.DPR,.QPR,.NONE,.NONE}, {.VD_D,.VM_Q,.NONE,.NONE}, 0xF3B20280, 0xFFBF0FD0, .NEON, .A32, {}, {.S16,.NONE} }, + { .VQMOVUN, {.DPR,.QPR,.NONE,.NONE}, {.VD_D,.VM_Q,.NONE,.NONE}, 0xF3BA0240, 0xFFBF0FD0, .NEON, .A32, {}, {.S64,.NONE} }, { .VQMOVUN, {.DPR,.QPR,.NONE,.NONE}, {.VD_D,.VM_Q,.NONE,.NONE}, 0xF3B20240, 0xFFBF0FD0, .NEON, .A32, {}, {.S16,.NONE} }, { .VQMOVUN, {.DPR,.QPR,.NONE,.NONE}, {.VD_D,.VM_Q,.NONE,.NONE}, 0xF3B60240, 0xFFBF0FD0, .NEON, .A32, {}, {.S32,.NONE} }, - { .VQMOVUN, {.DPR,.QPR,.NONE,.NONE}, {.VD_D,.VM_Q,.NONE,.NONE}, 0xF3BA0240, 0xFFBF0FD0, .NEON, .A32, {}, {.S64,.NONE} }, { .VPADDL, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B00280, 0xFFBF0FD0, .NEON, .A32, {}, {.U8,.NONE} }, { .VPADDL, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B00200, 0xFFBF0FD0, .NEON, .A32, {}, {.S8,.NONE} }, - { .VPADDL, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B40200, 0xFFBF0FD0, .NEON, .A32, {}, {.S16,.NONE} }, { .VPADDL, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B80200, 0xFFBF0FD0, .NEON, .A32, {}, {.S32,.NONE} }, - { .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} }, + { .VPADDL, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B40200, 0xFFBF0FD0, .NEON, .A32, {}, {.S16,.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} }, + { .VRECPE, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3BB0500, 0xFFBF0FD0, .NEON, .A32, {}, {.F32,.NONE} }, { .VRECPE, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3BB0540, 0xFFBF0FD0, .NEON, .A32, {}, {.F32,.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}, 0xF3BB05C0, 0xFFBF0FD0, .NEON, .A32, {}, {.F32,.NONE} }, - { .VRSQRTE, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3BB04C0, 0xFFBF0FD0, .NEON, .A32, {}, {.U32,.NONE} }, { .VRSQRTE, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3BB0480, 0xFFBF0FD0, .NEON, .A32, {}, {.U32,.NONE} }, + { .VRSQRTE, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3BB04C0, 0xFFBF0FD0, .NEON, .A32, {}, {.U32,.NONE} }, { .VSHLL, {.QPR,.DPR,.IMM,.NONE}, {.VD_Q,.VM_D,.NEON_SHLL_8,.NONE}, 0xF3B20300, 0xFFBF0FD0, .NEON, .A32, {}, {.I8,.NONE} }, { .VSHLL, {.QPR,.DPR,.IMM,.NONE}, {.VD_Q,.VM_D,.NEON_SHLL_32,.NONE}, 0xF3BA0300, 0xFFBF0FD0, .NEON, .A32, {}, {.I32,.NONE} }, { .VSHLL, {.QPR,.DPR,.IMM,.NONE}, {.VD_Q,.VM_D,.NEON_SHLL_16,.NONE}, 0xF3B60300, 0xFFBF0FD0, .NEON, .A32, {}, {.I16,.NONE} }, + { .VCLS, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B40440, 0xFFBF0FD0, .NEON, .A32, {}, {.S16,.NONE} }, { .VCLS, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B40400, 0xFFBF0FD0, .NEON, .A32, {}, {.S16,.NONE} }, + { .VCLS, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B00400, 0xFFBF0FD0, .NEON, .A32, {}, {.S8,.NONE} }, { .VCLS, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B80400, 0xFFBF0FD0, .NEON, .A32, {}, {.S32,.NONE} }, { .VCLS, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B80440, 0xFFBF0FD0, .NEON, .A32, {}, {.S32,.NONE} }, { .VCLS, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B00440, 0xFFBF0FD0, .NEON, .A32, {}, {.S8,.NONE} }, - { .VCLS, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B40440, 0xFFBF0FD0, .NEON, .A32, {}, {.S16,.NONE} }, - { .VCLS, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B00400, 0xFFBF0FD0, .NEON, .A32, {}, {.S8,.NONE} }, - { .VCLZ, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B804C0, 0xFFBF0FD0, .NEON, .A32, {}, {.I32,.NONE} }, - { .VCLZ, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B004C0, 0xFFBF0FD0, .NEON, .A32, {}, {.I8,.NONE} }, { .VCLZ, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B80480, 0xFFBF0FD0, .NEON, .A32, {}, {.I32,.NONE} }, - { .VCLZ, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B404C0, 0xFFBF0FD0, .NEON, .A32, {}, {.I16,.NONE} }, + { .VCLZ, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B004C0, 0xFFBF0FD0, .NEON, .A32, {}, {.I8,.NONE} }, { .VCLZ, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B00480, 0xFFBF0FD0, .NEON, .A32, {}, {.I8,.NONE} }, + { .VCLZ, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B804C0, 0xFFBF0FD0, .NEON, .A32, {}, {.I32,.NONE} }, + { .VCLZ, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B404C0, 0xFFBF0FD0, .NEON, .A32, {}, {.I16,.NONE} }, { .VCLZ, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B40480, 0xFFBF0FD0, .NEON, .A32, {}, {.I16,.NONE} }, { .VREV64, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B80000, 0xFFBF0FD0, .NEON, .A32, {}, {.SZ32,.NONE} }, - { .VREV64, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B00040, 0xFFBF0FD0, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VREV64, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B40000, 0xFFBF0FD0, .NEON, .A32, {}, {.SZ16,.NONE} }, - { .VREV64, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B80040, 0xFFBF0FD0, .NEON, .A32, {}, {.SZ32,.NONE} }, - { .VREV64, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B40040, 0xFFBF0FD0, .NEON, .A32, {}, {.SZ16,.NONE} }, { .VREV64, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B00000, 0xFFBF0FD0, .NEON, .A32, {}, {.SZ8,.NONE} }, + { .VREV64, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B00040, 0xFFBF0FD0, .NEON, .A32, {}, {.SZ8,.NONE} }, + { .VREV64, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B40040, 0xFFBF0FD0, .NEON, .A32, {}, {.SZ16,.NONE} }, + { .VREV64, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B80040, 0xFFBF0FD0, .NEON, .A32, {}, {.SZ32,.NONE} }, { .VTRN, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B20080, 0xFFBF0FD0, .NEON, .A32, {}, {.SZ8,.NONE} }, + { .VTRN, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3BA0080, 0xFFBF0FD0, .NEON, .A32, {}, {.SZ32,.NONE} }, { .VTRN, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B60080, 0xFFBF0FD0, .NEON, .A32, {}, {.SZ16,.NONE} }, { .VTRN, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B200C0, 0xFFBF0FD0, .NEON, .A32, {}, {.SZ8,.NONE} }, - { .VTRN, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3BA0080, 0xFFBF0FD0, .NEON, .A32, {}, {.SZ32,.NONE} }, { .VTRN, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B600C0, 0xFFBF0FD0, .NEON, .A32, {}, {.SZ16,.NONE} }, { .VTRN, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3BA00C0, 0xFFBF0FD0, .NEON, .A32, {}, {.SZ32,.NONE} }, - { .VUZP, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B20140, 0xFFBF0FD0, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VUZP, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3BA0140, 0xFFBF0FD0, .NEON, .A32, {}, {.SZ32,.NONE} }, + { .VUZP, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B20140, 0xFFBF0FD0, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VUZP, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B60140, 0xFFBF0FD0, .NEON, .A32, {}, {.SZ16,.NONE} }, + { .VZIP, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B601C0, 0xFFBF0FD0, .NEON, .A32, {}, {.SZ16,.NONE} }, { .VZIP, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B201C0, 0xFFBF0FD0, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VZIP, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3BA01C0, 0xFFBF0FD0, .NEON, .A32, {}, {.SZ32,.NONE} }, - { .VZIP, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B601C0, 0xFFBF0FD0, .NEON, .A32, {}, {.SZ16,.NONE} }, { .SHA1H, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B902C0, 0xFFBF0FD0, .CRYPTO, .A32, {}, {.SZ32,.NONE} }, { .SHA1SU1, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3BA0380, 0xFFBF0FD0, .CRYPTO, .A32, {}, {.SZ32,.NONE} }, { .SHA256SU0, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3BA03C0, 0xFFBF0FD0, .CRYPTO, .A32, {}, {.SZ32,.NONE} }, { .VCEQ, {.DPR,.DPR,.IMM,.NONE}, {.VD_D,.VM_D,.IMPL,.NONE}, 0xF3B90500, 0xFFBB0FD0, .NEON, .A32, {}, {.F32,.NONE} }, + { .VCEQ, {.QPR,.QPR,.IMM,.NONE}, {.VD_Q,.VM_Q,.IMPL,.NONE}, 0xF3B90540, 0xFFBB0FD0, .NEON, .A32, {}, {.F32,.NONE} }, { .VCEQ, {.DPR,.DPR,.IMM,.NONE}, {.VD_D,.VM_D,.IMPL,.NONE}, 0xF3B10100, 0xFFBB0FD0, .NEON, .A32, {}, {.I8,.NONE} }, { .VCEQ, {.QPR,.QPR,.IMM,.NONE}, {.VD_Q,.VM_Q,.IMPL,.NONE}, 0xF3B10140, 0xFFBB0FD0, .NEON, .A32, {}, {.I8,.NONE} }, - { .VCEQ, {.QPR,.QPR,.IMM,.NONE}, {.VD_Q,.VM_Q,.IMPL,.NONE}, 0xF3B90540, 0xFFBB0FD0, .NEON, .A32, {}, {.F32,.NONE} }, - { .VCGE, {.DPR,.DPR,.IMM,.NONE}, {.VD_D,.VM_D,.IMPL,.NONE}, 0xF3B90480, 0xFFBB0FD0, .NEON, .A32, {}, {.F32,.NONE} }, - { .VCGE, {.QPR,.QPR,.IMM,.NONE}, {.VD_Q,.VM_Q,.IMPL,.NONE}, 0xF3B100C0, 0xFFBB0FD0, .NEON, .A32, {}, {.S8,.NONE} }, - { .VCGE, {.DPR,.DPR,.IMM,.NONE}, {.VD_D,.VM_D,.IMPL,.NONE}, 0xF3B10080, 0xFFBB0FD0, .NEON, .A32, {}, {.S8,.NONE} }, { .VCGE, {.QPR,.QPR,.IMM,.NONE}, {.VD_Q,.VM_Q,.IMPL,.NONE}, 0xF3B904C0, 0xFFBB0FD0, .NEON, .A32, {}, {.F32,.NONE} }, + { .VCGE, {.DPR,.DPR,.IMM,.NONE}, {.VD_D,.VM_D,.IMPL,.NONE}, 0xF3B10080, 0xFFBB0FD0, .NEON, .A32, {}, {.S8,.NONE} }, + { .VCGE, {.QPR,.QPR,.IMM,.NONE}, {.VD_Q,.VM_Q,.IMPL,.NONE}, 0xF3B100C0, 0xFFBB0FD0, .NEON, .A32, {}, {.S8,.NONE} }, + { .VCGE, {.DPR,.DPR,.IMM,.NONE}, {.VD_D,.VM_D,.IMPL,.NONE}, 0xF3B90480, 0xFFBB0FD0, .NEON, .A32, {}, {.F32,.NONE} }, { .VCGT, {.DPR,.DPR,.IMM,.NONE}, {.VD_D,.VM_D,.IMPL,.NONE}, 0xF3B90400, 0xFFBB0FD0, .NEON, .A32, {}, {.F32,.NONE} }, - { .VCGT, {.QPR,.QPR,.IMM,.NONE}, {.VD_Q,.VM_Q,.IMPL,.NONE}, 0xF3B90440, 0xFFBB0FD0, .NEON, .A32, {}, {.F32,.NONE} }, { .VCGT, {.QPR,.QPR,.IMM,.NONE}, {.VD_Q,.VM_Q,.IMPL,.NONE}, 0xF3B10040, 0xFFBB0FD0, .NEON, .A32, {}, {.S8,.NONE} }, + { .VCGT, {.QPR,.QPR,.IMM,.NONE}, {.VD_Q,.VM_Q,.IMPL,.NONE}, 0xF3B90440, 0xFFBB0FD0, .NEON, .A32, {}, {.F32,.NONE} }, { .VCGT, {.DPR,.DPR,.IMM,.NONE}, {.VD_D,.VM_D,.IMPL,.NONE}, 0xF3B10000, 0xFFBB0FD0, .NEON, .A32, {}, {.S8,.NONE} }, { .VCLE, {.QPR,.QPR,.IMM,.NONE}, {.VD_Q,.VM_Q,.IMPL,.NONE}, 0xF3B905C0, 0xFFBB0FD0, .NEON, .A32, {}, {.F32,.NONE} }, - { .VCLE, {.DPR,.DPR,.IMM,.NONE}, {.VD_D,.VM_D,.IMPL,.NONE}, 0xF3B10180, 0xFFBB0FD0, .NEON, .A32, {}, {.S8,.NONE} }, { .VCLE, {.DPR,.DPR,.IMM,.NONE}, {.VD_D,.VM_D,.IMPL,.NONE}, 0xF3B90580, 0xFFBB0FD0, .NEON, .A32, {}, {.F32,.NONE} }, + { .VCLE, {.DPR,.DPR,.IMM,.NONE}, {.VD_D,.VM_D,.IMPL,.NONE}, 0xF3B10180, 0xFFBB0FD0, .NEON, .A32, {}, {.S8,.NONE} }, { .VCLE, {.QPR,.QPR,.IMM,.NONE}, {.VD_Q,.VM_Q,.IMPL,.NONE}, 0xF3B101C0, 0xFFBB0FD0, .NEON, .A32, {}, {.S8,.NONE} }, { .VCLT, {.QPR,.QPR,.IMM,.NONE}, {.VD_Q,.VM_Q,.IMPL,.NONE}, 0xF3B90640, 0xFFBB0FD0, .NEON, .A32, {}, {.F32,.NONE} }, { .VCLT, {.QPR,.QPR,.IMM,.NONE}, {.VD_Q,.VM_Q,.IMPL,.NONE}, 0xF3B10240, 0xFFBB0FD0, .NEON, .A32, {}, {.S8,.NONE} }, @@ -805,19 +817,19 @@ DECODE_ENTRIES := [1701]lib.Decode_Entry{ { .VCLT, {.DPR,.DPR,.IMM,.NONE}, {.VD_D,.VM_D,.IMPL,.NONE}, 0xF3B10200, 0xFFBB0FD0, .NEON, .A32, {}, {.S8,.NONE} }, { .VREV32, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B000C0, 0xFFB70FD0, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VREV32, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B400C0, 0xFFB70FD0, .NEON, .A32, {}, {.SZ16,.NONE} }, - { .VREV32, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B40080, 0xFFB70FD0, .NEON, .A32, {}, {.SZ16,.NONE} }, { .VREV32, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B00080, 0xFFB70FD0, .NEON, .A32, {}, {.SZ8,.NONE} }, + { .VREV32, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B40080, 0xFFB70FD0, .NEON, .A32, {}, {.SZ16,.NONE} }, { .VUZP, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B60100, 0xFFB70FD0, .NEON, .A32, {}, {.SZ16,.NONE} }, { .VUZP, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B20100, 0xFFB70FD0, .NEON, .A32, {}, {.SZ8,.NONE} }, - { .VZIP, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B20180, 0xFFB70FD0, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VZIP, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B60180, 0xFFB70FD0, .NEON, .A32, {}, {.SZ16,.NONE} }, - { .VMVN, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B005C0, 0xFFB30FD0, .NEON, .A32, {}, {.NONE,.NONE} }, + { .VZIP, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B20180, 0xFFB70FD0, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VMVN, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B00580, 0xFFB30FD0, .NEON, .A32, {}, {.NONE,.NONE} }, - { .VPADDL, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B002C0, 0xFFB30FD0, .NEON, .A32, {}, {.U8,.NONE} }, + { .VMVN, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B005C0, 0xFFB30FD0, .NEON, .A32, {}, {.NONE,.NONE} }, { .VPADDL, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B00240, 0xFFB30FD0, .NEON, .A32, {}, {.S8,.NONE} }, - { .VPADAL, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B00680, 0xFFB30FD0, .NEON, .A32, {}, {.U8,.NONE} }, - { .VPADAL, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B00600, 0xFFB30FD0, .NEON, .A32, {}, {.S8,.NONE} }, + { .VPADDL, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B002C0, 0xFFB30FD0, .NEON, .A32, {}, {.U8,.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}, 0xF3B00600, 0xFFB30FD0, .NEON, .A32, {}, {.S8,.NONE} }, + { .VPADAL, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B00680, 0xFFB30FD0, .NEON, .A32, {}, {.U8,.NONE} }, { .VPADAL, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B00640, 0xFFB30FD0, .NEON, .A32, {}, {.S8,.NONE} }, { .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} }, @@ -829,30 +841,30 @@ DECODE_ENTRIES := [1701]lib.Decode_Entry{ { .AESD, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B00340, 0xFFB30FD0, .CRYPTO, .A32, {}, {.SZ8,.NONE} }, { .AESMC, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B00380, 0xFFB30FD0, .CRYPTO, .A32, {}, {.SZ8,.NONE} }, { .AESIMC, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B003C0, 0xFFB30FD0, .CRYPTO, .A32, {}, {.SZ8,.NONE} }, + { .VTBL, {.DPR,.DPR_LIST,.DPR,.NONE}, {.VD_D,.NEON_VN_TABLE_3,.VM_D,.NONE}, 0xF3B00A00, 0xFFB00F70, .NEON, .A32, {}, {.SZ8,.NONE} }, + { .VTBL, {.DPR,.DPR_LIST,.DPR,.NONE}, {.VD_D,.NEON_VN_TABLE_4,.VM_D,.NONE}, 0xF3B00B00, 0xFFB00F70, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VTBL, {.DPR,.DPR_LIST,.DPR,.NONE}, {.VD_D,.NEON_VN_TABLE_2,.VM_D,.NONE}, 0xF3B00900, 0xFFB00F70, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VTBL, {.DPR,.DPR_LIST,.DPR,.NONE}, {.VD_D,.NEON_VN_TABLE_1,.VM_D,.NONE}, 0xF3B00800, 0xFFB00F70, .NEON, .A32, {}, {.SZ8,.NONE} }, - { .VTBL, {.DPR,.DPR_LIST,.DPR,.NONE}, {.VD_D,.NEON_VN_TABLE_4,.VM_D,.NONE}, 0xF3B00B00, 0xFFB00F70, .NEON, .A32, {}, {.SZ8,.NONE} }, - { .VTBL, {.DPR,.DPR_LIST,.DPR,.NONE}, {.VD_D,.NEON_VN_TABLE_3,.VM_D,.NONE}, 0xF3B00A00, 0xFFB00F70, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VTBX, {.DPR,.DPR_LIST,.DPR,.NONE}, {.VD_D,.NEON_VN_TABLE_1,.VM_D,.NONE}, 0xF3B00840, 0xFFB00F70, .NEON, .A32, {}, {.SZ8,.NONE} }, + { .VTBX, {.DPR,.DPR_LIST,.DPR,.NONE}, {.VD_D,.NEON_VN_TABLE_2,.VM_D,.NONE}, 0xF3B00940, 0xFFB00F70, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VTBX, {.DPR,.DPR_LIST,.DPR,.NONE}, {.VD_D,.NEON_VN_TABLE_3,.VM_D,.NONE}, 0xF3B00A40, 0xFFB00F70, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VTBX, {.DPR,.DPR_LIST,.DPR,.NONE}, {.VD_D,.NEON_VN_TABLE_4,.VM_D,.NONE}, 0xF3B00B40, 0xFFB00F70, .NEON, .A32, {}, {.SZ8,.NONE} }, - { .VTBX, {.DPR,.DPR_LIST,.DPR,.NONE}, {.VD_D,.NEON_VN_TABLE_2,.VM_D,.NONE}, 0xF3B00940, 0xFFB00F70, .NEON, .A32, {}, {.SZ8,.NONE} }, - { .VDUP, {.DPR,.DPR_ELEM,.NONE,.NONE}, {.VD_D,.NEON_VM_SCALAR_32,.NONE,.NONE}, 0xF3B00C00, 0xFFB00FD0, .NEON, .A32, {}, {.NONE,.NONE} }, { .VDUP, {.QPR,.DPR_ELEM,.NONE,.NONE}, {.VD_Q,.NEON_VM_SCALAR_32,.NONE,.NONE}, 0xF3B00C40, 0xFFB00FD0, .NEON, .A32, {}, {.NONE,.NONE} }, + { .VDUP, {.DPR,.DPR_ELEM,.NONE,.NONE}, {.VD_D,.NEON_VM_SCALAR_32,.NONE,.NONE}, 0xF3B00C00, 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} }, { .BIC, {.GPR,.GPR,.IMM_MOD,.NONE}, {.RD,.RN_A32,.A32_IMM_MOD,.NONE}, 0x03C00000, 0x0FE00000, .BASE, .A32, {}, {.NONE,.NONE} }, { .BIC, {.GPR,.GPR,.IMM_MOD,.NONE}, {.RD,.RN_A32,.A32_IMM_MOD,.NONE}, 0x03D00000, 0x0FF00000, .BASE, .A32, {sets_flags=true}, {.NONE,.NONE} }, { .MVN, {.GPR,.IMM_MOD,.NONE,.NONE}, {.RD,.A32_IMM_MOD,.NONE,.NONE}, 0x03E00000, 0x0FEF0000, .BASE, .A32, {}, {.NONE,.NONE} }, { .MVN, {.GPR,.IMM_MOD,.NONE,.NONE}, {.RD,.A32_IMM_MOD,.NONE,.NONE}, 0x03F00000, 0x0FFF0000, .BASE, .A32, {sets_flags=true}, {.NONE,.NONE} }, { .VST1, {.DPR_LIST,.MEM,.NONE,.NONE}, {.NEON_D_LIST_3,.RN_A32,.NONE,.NONE}, 0xF400060F, 0xFFF00F0F, .NEON, .A32, {}, {.SZ8,.NONE} }, - { .VST1, {.DPR_LIST,.MEM,.NONE,.NONE}, {.NEON_D_LIST_2,.RN_A32,.NONE,.NONE}, 0xF4000A0F, 0xFFF00F0F, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VST1, {.DPR_LIST,.MEM,.NONE,.NONE}, {.NEON_D_LIST_1,.RN_A32,.NONE,.NONE}, 0xF400070F, 0xFFF00F0F, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VST1, {.DPR_LIST,.MEM,.NONE,.NONE}, {.NEON_D_LIST_4,.RN_A32,.NONE,.NONE}, 0xF400020F, 0xFFF00F0F, .NEON, .A32, {}, {.SZ8,.NONE} }, - { .VST2, {.DPR_LIST,.MEM,.NONE,.NONE}, {.NEON_D_LIST_2,.RN_A32,.NONE,.NONE}, 0xF400080F, 0xFFF00F0F, .NEON, .A32, {}, {.SZ8,.NONE} }, + { .VST1, {.DPR_LIST,.MEM,.NONE,.NONE}, {.NEON_D_LIST_2,.RN_A32,.NONE,.NONE}, 0xF4000A0F, 0xFFF00F0F, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VST2, {.DPR_LIST,.MEM,.NONE,.NONE}, {.NEON_D_LIST_4,.RN_A32,.NONE,.NONE}, 0xF400030F, 0xFFF00F0F, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VST2, {.DPR_LIST,.MEM,.NONE,.NONE}, {.NEON_D_LIST_2X,.RN_A32,.NONE,.NONE}, 0xF400090F, 0xFFF00F0F, .NEON, .A32, {}, {.SZ8,.NONE} }, - { .VST3, {.DPR_LIST,.MEM,.NONE,.NONE}, {.NEON_D_LIST_3X,.RN_A32,.NONE,.NONE}, 0xF400050F, 0xFFF00F0F, .NEON, .A32, {}, {.SZ8,.NONE} }, + { .VST2, {.DPR_LIST,.MEM,.NONE,.NONE}, {.NEON_D_LIST_2,.RN_A32,.NONE,.NONE}, 0xF400080F, 0xFFF00F0F, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VST3, {.DPR_LIST,.MEM,.NONE,.NONE}, {.NEON_D_LIST_3,.RN_A32,.NONE,.NONE}, 0xF400040F, 0xFFF00F0F, .NEON, .A32, {}, {.SZ8,.NONE} }, + { .VST3, {.DPR_LIST,.MEM,.NONE,.NONE}, {.NEON_D_LIST_3X,.RN_A32,.NONE,.NONE}, 0xF400050F, 0xFFF00F0F, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VST4, {.DPR_LIST,.MEM,.NONE,.NONE}, {.NEON_D_LIST_4X,.RN_A32,.NONE,.NONE}, 0xF400010F, 0xFFF00F0F, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VST4, {.DPR_LIST,.MEM,.NONE,.NONE}, {.NEON_D_LIST_4,.RN_A32,.NONE,.NONE}, 0xF400000F, 0xFFF00F0F, .NEON, .A32, {}, {.SZ8,.NONE} }, { .STR, {.GPR,.MEM,.NONE,.NONE}, {.RT_A32,.MEM_POST_INDEX,.NONE,.NONE}, 0x04000000, 0x0F700000, .BASE, .A32, {}, {.NONE,.NONE} }, @@ -861,8 +873,8 @@ DECODE_ENTRIES := [1701]lib.Decode_Entry{ { .VLD1, {.DPR_LIST,.MEM,.NONE,.NONE}, {.NEON_D_LIST_3,.RN_A32,.NONE,.NONE}, 0xF420060F, 0xFFF00F0F, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VLD1, {.DPR_LIST,.MEM,.NONE,.NONE}, {.NEON_D_LIST_2,.RN_A32,.NONE,.NONE}, 0xF4200A0F, 0xFFF00F0F, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VLD1, {.DPR_LIST,.MEM,.NONE,.NONE}, {.NEON_D_LIST_4,.RN_A32,.NONE,.NONE}, 0xF420020F, 0xFFF00F0F, .NEON, .A32, {}, {.SZ8,.NONE} }, - { .VLD2, {.DPR_LIST,.MEM,.NONE,.NONE}, {.NEON_D_LIST_2X,.RN_A32,.NONE,.NONE}, 0xF420090F, 0xFFF00F0F, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VLD2, {.DPR_LIST,.MEM,.NONE,.NONE}, {.NEON_D_LIST_2,.RN_A32,.NONE,.NONE}, 0xF420080F, 0xFFF00F0F, .NEON, .A32, {}, {.SZ8,.NONE} }, + { .VLD2, {.DPR_LIST,.MEM,.NONE,.NONE}, {.NEON_D_LIST_2X,.RN_A32,.NONE,.NONE}, 0xF420090F, 0xFFF00F0F, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VLD2, {.DPR_LIST,.MEM,.NONE,.NONE}, {.NEON_D_LIST_4,.RN_A32,.NONE,.NONE}, 0xF420030F, 0xFFF00F0F, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VLD3, {.DPR_LIST,.MEM,.NONE,.NONE}, {.NEON_D_LIST_3,.RN_A32,.NONE,.NONE}, 0xF420040F, 0xFFF00F0F, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VLD3, {.DPR_LIST,.MEM,.NONE,.NONE}, {.NEON_D_LIST_3X,.RN_A32,.NONE,.NONE}, 0xF420050F, 0xFFF00F0F, .NEON, .A32, {}, {.SZ8,.NONE} }, @@ -900,9 +912,9 @@ DECODE_ENTRIES := [1701]lib.Decode_Entry{ { .VLD3, {.DPR_LIST,.MEM,.NONE,.NONE}, {.NEON_LANE_D_8_3,.RN_A32,.NONE,.NONE}, 0xF4A0020F, 0xFFB00F1F, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VLD4, {.DPR_LIST,.MEM,.NONE,.NONE}, {.NEON_LANE_D_8_4,.RN_A32,.NONE,.NONE}, 0xF4A0030F, 0xFFB00F1F, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VLD1, {.DPR_LIST,.MEM,.NONE,.NONE}, {.NEON_D_LIST_ALL,.RN_A32,.NONE,.NONE}, 0xF4A00C0F, 0xFFB00F0F, .NEON, .A32, {}, {.SZ8,.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} }, + { .VLD2, {.DPR_LIST,.MEM,.NONE,.NONE}, {.NEON_D_LIST_ALL_2,.RN_A32,.NONE,.NONE}, 0xF4A00D0F, 0xFFB00F0F, .NEON, .A32, {}, {.SZ8,.NONE} }, + { .VLD3, {.DPR_LIST,.MEM,.NONE,.NONE}, {.NEON_D_LIST_ALL_3,.RN_A32,.NONE,.NONE}, 0xF4A00E0F, 0xFFB00F0F, .NEON, .A32, {}, {.SZ8,.NONE} }, + { .VLD4, {.DPR_LIST,.MEM,.NONE,.NONE}, {.NEON_D_LIST_ALL_4,.RN_A32,.NONE,.NONE}, 0xF4A00F0F, 0xFFB00F0F, .NEON, .A32, {}, {.SZ8,.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} }, @@ -1056,7 +1068,8 @@ DECODE_ENTRIES := [1701]lib.Decode_Entry{ { .VFMAL, {.DPR,.SPR,.SPR,.NONE}, {.VD_D,.VN_S,.VM_S,.NONE}, 0xFC200810, 0xFFB00F10, .FHM, .A32, {}, {.F16,.NONE} }, { .VCMLA, {.QPR,.QPR,.QPR,.IMM}, {.VD_Q,.VN_Q,.VM_Q,.NEON_ROT_4_HI}, 0xFC200840, 0xFC800F50, .FCMA, .A32, {}, {.F16,.NONE} }, { .VCMLA, {.DPR,.DPR,.DPR,.IMM}, {.VD_D,.VN_D,.VM_D,.NEON_ROT_4_HI}, 0xFC200800, 0xFC800F10, .FCMA, .A32, {}, {.F16,.NONE} }, - { .VFMA, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xFC300850, 0xFFB00F50, .BF16, .A32, {}, {.BF16,.NONE} }, + { .VFMAB, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xFC300810, 0xFFB00F70, .BF16, .A32, {}, {.BF16,.NONE} }, + { .VFMAT, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xFC300850, 0xFFB00F70, .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,.VM_S_PLUS1,.RT_A32,.RT2_A32}, 0x0C400A10, 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} }, @@ -1067,24 +1080,32 @@ DECODE_ENTRIES := [1701]lib.Decode_Entry{ { .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,.NEON_ROT_2}, 0xFC800840, 0xFE800F50, .FCMA, .A32, {}, {.F16,.NONE} }, { .VCADD, {.DPR,.DPR,.DPR,.IMM}, {.VD_D,.VN_D,.VM_D,.NEON_ROT_2}, 0xFC800800, 0xFE800F10, .FCMA, .A32, {}, {.F16,.NONE} }, - { .VSTM, {.GPR,.SPR_LIST,.NONE,.NONE}, {.RN_A32,.VFP_S_LIST,.NONE,.NONE}, 0x0C800A00, 0x0F900F00, .VFPV2, .A32, {}, {.NONE,.NONE} }, - { .VSTM, {.GPR,.DPR_LIST,.NONE,.NONE}, {.RN_A32,.VFP_D_LIST,.NONE,.NONE}, 0x0C800B00, 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} }, + { .VSTMIA, {.GPR,.DPR_LIST,.NONE,.NONE}, {.RN_A32_WB,.VFP_D_LIST,.NONE,.NONE}, 0x0C800B00, 0x0FB00F00, .VFPV2, .A32, {}, {.NONE,.NONE} }, + { .VSTMIA, {.GPR,.SPR_LIST,.NONE,.NONE}, {.RN_A32_WB,.VFP_S_LIST,.NONE,.NONE}, 0x0C800A00, 0x0FB00F00, .VFPV2, .A32, {}, {.NONE,.NONE} }, + { .VLDMIA, {.GPR,.SPR_LIST,.NONE,.NONE}, {.RN_A32_WB,.VFP_S_LIST,.NONE,.NONE}, 0x0C900A00, 0x0FB00F00, .VFPV2, .A32, {}, {.NONE,.NONE} }, + { .VLDMIA, {.GPR,.DPR_LIST,.NONE,.NONE}, {.RN_A32_WB,.VFP_D_LIST,.NONE,.NONE}, 0x0C900B00, 0x0FB00F00, .VFPV2, .A32, {}, {.NONE,.NONE} }, { .VFMSL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xFCA00850, 0xFFB00F50, .FHM, .A32, {}, {.F16,.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} }, { .VUSDOT, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xFCA00D40, 0xFFB00F50, .V8, .A32, {}, {.S8,.NONE} }, { .VFMSL, {.DPR,.SPR,.SPR,.NONE}, {.VD_D,.VN_S,.VM_S,.NONE}, 0xFCA00810, 0xFFB00F10, .FHM, .A32, {}, {.F16,.NONE} }, { .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} }, + { .VSTMIA, {.GPR,.SPR_LIST,.NONE,.NONE}, {.RN_A32_WB,.VFP_S_LIST,.NONE,.NONE}, 0x0CA00A00, 0x0FB00F00, .VFPV2, .A32, {}, {.NONE,.NONE} }, + { .VSTMIA, {.GPR,.DPR_LIST,.NONE,.NONE}, {.RN_A32_WB,.VFP_D_LIST,.NONE,.NONE}, 0x0CA00B00, 0x0FB00F00, .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_SCALED4,.NONE,.NONE}, 0x0D000B00, 0x0F300F00, .VFPV2, .A32, {}, {.NONE,.NONE} }, + { .VPOP, {.DPR_LIST,.NONE,.NONE,.NONE}, {.VFP_D_LIST,.NONE,.NONE,.NONE}, 0x0CBD0B00, 0x0FFF0F00, .VFPV2, .A32, {}, {.NONE,.NONE} }, + { .VLDMIA, {.GPR,.DPR_LIST,.NONE,.NONE}, {.RN_A32_WB,.VFP_D_LIST,.NONE,.NONE}, 0x0CB00B00, 0x0FB00F00, .VFPV2, .A32, {}, {.NONE,.NONE} }, + { .VLDMIA, {.GPR,.SPR_LIST,.NONE,.NONE}, {.RN_A32_WB,.VFP_S_LIST,.NONE,.NONE}, 0x0CB00A00, 0x0FB00F00, .VFPV2, .A32, {}, {.NONE,.NONE} }, { .VSTR, {.SPR,.MEM,.NONE,.NONE}, {.VD_S,.MEM_IMM8_SCALED4,.NONE,.NONE}, 0x0D000A00, 0x0F300F00, .VFPV2, .A32, {}, {.NONE,.NONE} }, - { .VLDR, {.SPR,.MEM,.NONE,.NONE}, {.VD_S,.MEM_IMM8_SCALED4,.NONE,.NONE}, 0x0D100A00, 0x0F300F00, .VFPV2, .A32, {}, {.NONE,.NONE} }, + { .VSTR, {.DPR,.MEM,.NONE,.NONE}, {.VD_D,.MEM_IMM8_SCALED4,.NONE,.NONE}, 0x0D000B00, 0x0F300F00, .VFPV2, .A32, {}, {.NONE,.NONE} }, { .VLDR, {.DPR,.MEM,.NONE,.NONE}, {.VD_D,.MEM_IMM8_SCALED4,.NONE,.NONE}, 0x0D100B00, 0x0F300F00, .VFPV2, .A32, {}, {.NONE,.NONE} }, + { .VLDR, {.SPR,.MEM,.NONE,.NONE}, {.VD_S,.MEM_IMM8_SCALED4,.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} }, + { .VSTMDB, {.GPR,.SPR_LIST,.NONE,.NONE}, {.RN_A32_WB,.VFP_S_LIST,.NONE,.NONE}, 0x0D200A00, 0x0FB00F00, .VFPV2, .A32, {}, {.NONE,.NONE} }, + { .VSTMDB, {.GPR,.DPR_LIST,.NONE,.NONE}, {.RN_A32_WB,.VFP_D_LIST,.NONE,.NONE}, 0x0D200B00, 0x0FB00F00, .VFPV2, .A32, {}, {.NONE,.NONE} }, + { .VLDMDB, {.GPR,.SPR_LIST,.NONE,.NONE}, {.RN_A32_WB,.VFP_S_LIST,.NONE,.NONE}, 0x0D300A00, 0x0FB00F00, .VFPV2, .A32, {}, {.NONE,.NONE} }, + { .VLDMDB, {.GPR,.DPR_LIST,.NONE,.NONE}, {.RN_A32_WB,.VFP_D_LIST,.NONE,.NONE}, 0x0D300B00, 0x0FB00F00, .VFPV2, .A32, {}, {.NONE,.NONE} }, { .VMOV, {.SPR,.GPR,.NONE,.NONE}, {.VN_S,.RT_A32,.NONE,.NONE}, 0x0E000A10, 0x0FF00F7F, .VFPV2, .A32, {}, {.NONE,.NONE} }, { .VMOV, {.DPR_ELEM,.GPR,.NONE,.NONE}, {.VMOV_LANE_32,.RT_A32,.NONE,.NONE}, 0x0E000B10, 0x0FD00F7F, .VFPV2, .A32, {}, {.SZ32,.NONE} }, { .VMOV, {.DPR_ELEM,.GPR,.NONE,.NONE}, {.VMOV_LANE_16,.RT_A32,.NONE,.NONE}, 0x0E000B30, 0x0FD00F3F, .VFPV2, .A32, {}, {.SZ16,.NONE} }, @@ -1128,8 +1149,8 @@ DECODE_ENTRIES := [1701]lib.Decode_Entry{ { .VMOV, {.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,.NEON_VM_SCALAR_32,.NONE}, 0xFE800D50, 0xFFB00F50, .V8, .A32, {}, {.U8,.NONE} }, { .VUSDOT, {.QPR,.QPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_Q,.NEON_VM_SCALAR_32,.NONE}, 0xFE800D40, 0xFFB00F50, .V8, .A32, {}, {.S8,.NONE} }, - { .VMAXNM, {.SPR,.SPR,.SPR,.NONE}, {.VD_S,.VN_S,.VM_S,.NONE}, 0xFE800A00, 0xFFB00B50, .V8, .A32, {}, {.F32,.NONE} }, { .VMAXNM, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xFE800B00, 0xFFB00B50, .V8, .A32, {}, {.F64,.NONE} }, + { .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,.NEON_VM_SCALAR_32,.NONE}, 0xFE800D00, 0xFFB00F10, .V8, .A32, {}, {.S8,.NONE} }, @@ -1138,23 +1159,23 @@ DECODE_ENTRIES := [1701]lib.Decode_Entry{ { .VDIV, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0x0E800B00, 0x0FB00B50, .VFPV2, .A32, {}, {.F64,.NONE} }, { .VFNMA, {.SPR,.SPR,.SPR,.NONE}, {.VD_S,.VN_S,.VM_S,.NONE}, 0x0E900940, 0x0FB00F50, .HALF_FP, .A32, {}, {.F16,.NONE} }, { .VFNMS, {.SPR,.SPR,.SPR,.NONE}, {.VD_S,.VN_S,.VM_S,.NONE}, 0x0E900900, 0x0FB00F50, .HALF_FP, .A32, {}, {.F16,.NONE} }, - { .VFNMA, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0x0E900B40, 0x0FB00B50, .VFPV4, .A32, {}, {.F64,.NONE} }, { .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} }, { .VFNMS, {.SPR,.SPR,.SPR,.NONE}, {.VD_S,.VN_S,.VM_S,.NONE}, 0x0E900A00, 0x0FB00B50, .VFPV4, .A32, {}, {.F32,.NONE} }, { .VFNMS, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0x0E900B00, 0x0FB00B50, .VFPV4, .A32, {}, {.F64,.NONE} }, { .VFMA, {.SPR,.SPR,.SPR,.NONE}, {.VD_S,.VN_S,.VM_S,.NONE}, 0x0EA00900, 0x0FB00F50, .HALF_FP, .A32, {}, {.F16,.NONE} }, { .VFMS, {.SPR,.SPR,.SPR,.NONE}, {.VD_S,.VN_S,.VM_S,.NONE}, 0x0EA00940, 0x0FB00F50, .HALF_FP, .A32, {}, {.F16,.NONE} }, { .VFMA, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0x0EA00B00, 0x0FB00B50, .VFPV4, .A32, {}, {.F64,.NONE} }, { .VFMA, {.SPR,.SPR,.SPR,.NONE}, {.VD_S,.VN_S,.VM_S,.NONE}, 0x0EA00A00, 0x0FB00B50, .VFPV4, .A32, {}, {.F32,.NONE} }, - { .VFMS, {.SPR,.SPR,.SPR,.NONE}, {.VD_S,.VN_S,.VM_S,.NONE}, 0x0EA00A40, 0x0FB00B50, .VFPV4, .A32, {}, {.F32,.NONE} }, { .VFMS, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0x0EA00B40, 0x0FB00B50, .VFPV4, .A32, {}, {.F64,.NONE} }, - { .VCMP, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.IMPL,.NONE,.NONE}, 0x0EB50B40, 0x0FBF0FFF, .VFPV2, .A32, {}, {.F64,.NONE} }, + { .VFMS, {.SPR,.SPR,.SPR,.NONE}, {.VD_S,.VN_S,.VM_S,.NONE}, 0x0EA00A40, 0x0FB00B50, .VFPV4, .A32, {}, {.F32,.NONE} }, { .VCMP, {.SPR,.IMM,.NONE,.NONE}, {.VD_S,.IMPL,.NONE,.NONE}, 0x0EB50A40, 0x0FBF0FFF, .VFPV2, .A32, {}, {.F32,.NONE} }, + { .VCMP, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.IMPL,.NONE,.NONE}, 0x0EB50B40, 0x0FBF0FFF, .VFPV2, .A32, {}, {.F64,.NONE} }, { .VCMP, {.SPR,.IMM,.NONE,.NONE}, {.VD_S,.IMPL,.NONE,.NONE}, 0x0EB50940, 0x0FBF0FFF, .HALF_FP, .A32, {}, {.F16,.NONE} }, - { .VCMPE, {.SPR,.IMM,.NONE,.NONE}, {.VD_S,.IMPL,.NONE,.NONE}, 0x0EB50AC0, 0x0FBF0FFF, .VFPV2, .A32, {}, {.F32,.NONE} }, { .VCMPE, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.IMPL,.NONE,.NONE}, 0x0EB50BC0, 0x0FBF0FFF, .VFPV2, .A32, {}, {.F64,.NONE} }, - { .VCVTA, {.SPR,.DPR,.NONE,.NONE}, {.VD_S,.VM_D,.NONE,.NONE}, 0xFEBC0B40, 0xFFBF0FD0, .V8, .A32, {}, {.U32,.F64} }, + { .VCMPE, {.SPR,.IMM,.NONE,.NONE}, {.VD_S,.IMPL,.NONE,.NONE}, 0x0EB50AC0, 0x0FBF0FFF, .VFPV2, .A32, {}, {.F32,.NONE} }, { .VCVTA, {.SPR,.SPR,.NONE,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0xFEBC0A40, 0xFFBF0FD0, .V8, .A32, {}, {.U32,.F32} }, + { .VCVTA, {.SPR,.DPR,.NONE,.NONE}, {.VD_S,.VM_D,.NONE,.NONE}, 0xFEBC0B40, 0xFFBF0FD0, .V8, .A32, {}, {.U32,.F64} }, { .VCVTN, {.SPR,.DPR,.NONE,.NONE}, {.VD_S,.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, {.SPR,.SPR,.NONE,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0xFEBE0A40, 0xFFBF0FD0, .V8, .A32, {}, {.U32,.F32} }, @@ -1163,77 +1184,77 @@ DECODE_ENTRIES := [1701]lib.Decode_Entry{ { .VCVTM, {.SPR,.SPR,.NONE,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0xFEBF0A40, 0xFFBF0FD0, .V8, .A32, {}, {.U32,.F32} }, { .VRINTA, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xFEB80B40, 0xFFBF0FD0, .V8, .A32, {}, {.F64,.NONE} }, { .VRINTA, {.SPR,.SPR,.NONE,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0xFEB80A40, 0xFFBF0FD0, .V8, .A32, {}, {.F32,.NONE} }, - { .VRINTN, {.SPR,.SPR,.NONE,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0xFEB90A40, 0xFFBF0FD0, .V8, .A32, {}, {.F32,.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} }, + { .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} }, + { .VRINTP, {.SPR,.SPR,.NONE,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0xFEBA0A40, 0xFFBF0FD0, .V8, .A32, {}, {.F32,.NONE} }, { .VRINTM, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xFEBB0B40, 0xFFBF0FD0, .V8, .A32, {}, {.F64,.NONE} }, { .VRINTM, {.SPR,.SPR,.NONE,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0xFEBB0A40, 0xFFBF0FD0, .V8, .A32, {}, {.F32,.NONE} }, - { .VABS, {.SPR,.SPR,.NONE,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EB00AC0, 0x0FBF0FD0, .VFPV2, .A32, {}, {.F32,.NONE} }, { .VABS, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0x0EB00BC0, 0x0FBF0FD0, .VFPV2, .A32, {}, {.F64,.NONE} }, - { .VNEG, {.SPR,.SPR,.NONE,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EB10A40, 0x0FBF0FD0, .VFPV2, .A32, {}, {.F32,.NONE} }, + { .VABS, {.SPR,.SPR,.NONE,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EB00AC0, 0x0FBF0FD0, .VFPV2, .A32, {}, {.F32,.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} }, - { .VCMP, {.SPR,.SPR,.NONE,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EB40940, 0x0FBF0FD0, .HALF_FP, .A32, {}, {.F16,.NONE} }, - { .VCMP, {.SPR,.SPR,.NONE,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EB40A40, 0x0FBF0FD0, .VFPV2, .A32, {}, {.F32,.NONE} }, + { .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} }, { .VCMP, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0x0EB40B40, 0x0FBF0FD0, .VFPV2, .A32, {}, {.F64,.NONE} }, - { .VCMPE, {.SPR,.SPR,.NONE,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EB40AC0, 0x0FBF0FD0, .VFPV2, .A32, {}, {.F32,.NONE} }, + { .VCMP, {.SPR,.SPR,.NONE,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EB40A40, 0x0FBF0FD0, .VFPV2, .A32, {}, {.F32,.NONE} }, + { .VCMP, {.SPR,.SPR,.NONE,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EB40940, 0x0FBF0FD0, .HALF_FP, .A32, {}, {.F16,.NONE} }, { .VCMPE, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0x0EB40BC0, 0x0FBF0FD0, .VFPV2, .A32, {}, {.F64,.NONE} }, - { .VCVT, {.DPR,.DPR,.IMM,.NONE}, {.VD_D,.VM_D,.VFP_FBITS,.NONE}, 0x0EBB0BC0, 0x0FBF0FD0, .VFPV3, .A32, {}, {.F64,.U32} }, + { .VCMPE, {.SPR,.SPR,.NONE,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EB40AC0, 0x0FBF0FD0, .VFPV2, .A32, {}, {.F32,.NONE} }, { .VCVT, {.DPR,.DPR,.IMM,.NONE}, {.VD_D,.VM_D,.VFP_FBITS,.NONE}, 0x0EBA0BC0, 0x0FBF0FD0, .VFPV3, .A32, {}, {.F64,.S32} }, - { .VCVT, {.DPR,.DPR,.IMM,.NONE}, {.VD_D,.VM_D,.VFP_FBITS,.NONE}, 0x0EBE0BC0, 0x0FBF0FD0, .VFPV3, .A32, {}, {.S32,.F64} }, - { .VCVT, {.DPR,.DPR,.IMM,.NONE}, {.VD_D,.VM_D,.VFP_FBITS,.NONE}, 0x0EBE0B40, 0x0FBF0FD0, .VFPV3, .A32, {}, {.S16,.F64} }, - { .VCVT, {.DPR,.DPR,.IMM,.NONE}, {.VD_D,.VM_D,.VFP_FBITS,.NONE}, 0x0EBA0B40, 0x0FBF0FD0, .VFPV3, .A32, {}, {.F64,.S16} }, - { .VCVT, {.SPR,.SPR,.IMM,.NONE}, {.VD_S,.VM_S,.VFP_FBITS,.NONE}, 0x0EBF0AC0, 0x0FBF0FD0, .VFPV3, .A32, {}, {.U32,.F32} }, - { .VCVT, {.DPR,.DPR,.IMM,.NONE}, {.VD_D,.VM_D,.VFP_FBITS,.NONE}, 0x0EBB0B40, 0x0FBF0FD0, .VFPV3, .A32, {}, {.F64,.U16} }, { .VCVT, {.DPR,.DPR,.IMM,.NONE}, {.VD_D,.VM_D,.VFP_FBITS,.NONE}, 0x0EBF0B40, 0x0FBF0FD0, .VFPV3, .A32, {}, {.U16,.F64} }, - { .VCVT, {.DPR,.DPR,.IMM,.NONE}, {.VD_D,.VM_D,.VFP_FBITS,.NONE}, 0x0EBF0BC0, 0x0FBF0FD0, .VFPV3, .A32, {}, {.U32,.F64} }, - { .VCVT, {.SPR,.SPR,.IMM,.NONE}, {.VD_S,.VM_S,.VFP_FBITS,.NONE}, 0x0EBA0AC0, 0x0FBF0FD0, .VFPV3, .A32, {}, {.F32,.S32} }, - { .VCVT, {.SPR,.SPR,.IMM,.NONE}, {.VD_S,.VM_S,.VFP_FBITS,.NONE}, 0x0EBE0A40, 0x0FBF0FD0, .VFPV3, .A32, {}, {.S16,.F32} }, - { .VCVT, {.SPR,.SPR,.IMM,.NONE}, {.VD_S,.VM_S,.VFP_FBITS,.NONE}, 0x0EBB0A40, 0x0FBF0FD0, .VFPV3, .A32, {}, {.F32,.U16} }, - { .VCVT, {.SPR,.SPR,.IMM,.NONE}, {.VD_S,.VM_S,.VFP_FBITS,.NONE}, 0x0EBF0A40, 0x0FBF0FD0, .VFPV3, .A32, {}, {.U16,.F32} }, - { .VCVT, {.SPR,.SPR,.IMM,.NONE}, {.VD_S,.VM_S,.VFP_FBITS,.NONE}, 0x0EBB0AC0, 0x0FBF0FD0, .VFPV3, .A32, {}, {.F32,.U32} }, - { .VCVT, {.SPR,.SPR,.IMM,.NONE}, {.VD_S,.VM_S,.VFP_FBITS,.NONE}, 0x0EBE09C0, 0x0FBF0FD0, .HALF_FP, .A32, {}, {.S32,.F16} }, - { .VCVT, {.SPR,.SPR,.IMM,.NONE}, {.VD_S,.VM_S,.VFP_FBITS,.NONE}, 0x0EBB09C0, 0x0FBF0FD0, .HALF_FP, .A32, {}, {.F16,.U32} }, - { .VCVT, {.SPR,.SPR,.IMM,.NONE}, {.VD_S,.VM_S,.VFP_FBITS,.NONE}, 0x0EBF09C0, 0x0FBF0FD0, .HALF_FP, .A32, {}, {.U32,.F16} }, - { .VCVT, {.SPR,.SPR,.IMM,.NONE}, {.VD_S,.VM_S,.VFP_FBITS,.NONE}, 0x0EBF0940, 0x0FBF0FD0, .HALF_FP, .A32, {}, {.U16,.F16} }, - { .VCVT, {.SPR,.SPR,.IMM,.NONE}, {.VD_S,.VM_S,.VFP_FBITS,.NONE}, 0x0EBB0940, 0x0FBF0FD0, .HALF_FP, .A32, {}, {.F16,.U16} }, - { .VCVT, {.SPR,.SPR,.IMM,.NONE}, {.VD_S,.VM_S,.VFP_FBITS,.NONE}, 0x0EBA0940, 0x0FBF0FD0, .HALF_FP, .A32, {}, {.F16,.S16} }, - { .VCVT, {.SPR,.SPR,.IMM,.NONE}, {.VD_S,.VM_S,.VFP_FBITS,.NONE}, 0x0EBE0940, 0x0FBF0FD0, .HALF_FP, .A32, {}, {.S16,.F16} }, - { .VCVT, {.SPR,.SPR,.IMM,.NONE}, {.VD_S,.VM_S,.VFP_FBITS,.NONE}, 0x0EBA09C0, 0x0FBF0FD0, .HALF_FP, .A32, {}, {.F16,.S32} }, - { .VCVT, {.SPR,.SPR,.IMM,.NONE}, {.VD_S,.VM_S,.VFP_FBITS,.NONE}, 0x0EBA0A40, 0x0FBF0FD0, .VFPV3, .A32, {}, {.F32,.S16} }, + { .VCVT, {.DPR,.DPR,.IMM,.NONE}, {.VD_D,.VM_D,.VFP_FBITS,.NONE}, 0x0EBB0BC0, 0x0FBF0FD0, .VFPV3, .A32, {}, {.F64,.U32} }, + { .VCVT, {.DPR,.DPR,.IMM,.NONE}, {.VD_D,.VM_D,.VFP_FBITS,.NONE}, 0x0EBB0B40, 0x0FBF0FD0, .VFPV3, .A32, {}, {.F64,.U16} }, + { .VCVT, {.SPR,.SPR,.IMM,.NONE}, {.VD_S,.VM_S,.VFP_FBITS,.NONE}, 0x0EBF0AC0, 0x0FBF0FD0, .VFPV3, .A32, {}, {.U32,.F32} }, { .VCVT, {.SPR,.SPR,.IMM,.NONE}, {.VD_S,.VM_S,.VFP_FBITS,.NONE}, 0x0EBE0AC0, 0x0FBF0FD0, .VFPV3, .A32, {}, {.S32,.F32} }, - { .VCVT, {.SPR,.SPR,.NONE,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EB80A40, 0x0FBF0FD0, .VFPV2, .A32, {}, {.F32,.U32} }, - { .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, {.DPR,.DPR,.IMM,.NONE}, {.VD_D,.VM_D,.VFP_FBITS,.NONE}, 0x0EBA0B40, 0x0FBF0FD0, .VFPV3, .A32, {}, {.F64,.S16} }, + { .VCVT, {.DPR,.DPR,.IMM,.NONE}, {.VD_D,.VM_D,.VFP_FBITS,.NONE}, 0x0EBE0B40, 0x0FBF0FD0, .VFPV3, .A32, {}, {.S16,.F64} }, + { .VCVT, {.DPR,.DPR,.IMM,.NONE}, {.VD_D,.VM_D,.VFP_FBITS,.NONE}, 0x0EBE0BC0, 0x0FBF0FD0, .VFPV3, .A32, {}, {.S32,.F64} }, + { .VCVT, {.SPR,.SPR,.IMM,.NONE}, {.VD_S,.VM_S,.VFP_FBITS,.NONE}, 0x0EBF0A40, 0x0FBF0FD0, .VFPV3, .A32, {}, {.U16,.F32} }, + { .VCVT, {.SPR,.SPR,.IMM,.NONE}, {.VD_S,.VM_S,.VFP_FBITS,.NONE}, 0x0EBB0A40, 0x0FBF0FD0, .VFPV3, .A32, {}, {.F32,.U16} }, + { .VCVT, {.SPR,.SPR,.IMM,.NONE}, {.VD_S,.VM_S,.VFP_FBITS,.NONE}, 0x0EBA0A40, 0x0FBF0FD0, .VFPV3, .A32, {}, {.F32,.S16} }, + { .VCVT, {.SPR,.SPR,.IMM,.NONE}, {.VD_S,.VM_S,.VFP_FBITS,.NONE}, 0x0EBE0A40, 0x0FBF0FD0, .VFPV3, .A32, {}, {.S16,.F32} }, + { .VCVT, {.SPR,.SPR,.IMM,.NONE}, {.VD_S,.VM_S,.VFP_FBITS,.NONE}, 0x0EBA0AC0, 0x0FBF0FD0, .VFPV3, .A32, {}, {.F32,.S32} }, + { .VCVT, {.SPR,.SPR,.IMM,.NONE}, {.VD_S,.VM_S,.VFP_FBITS,.NONE}, 0x0EBB09C0, 0x0FBF0FD0, .HALF_FP, .A32, {}, {.F16,.U32} }, + { .VCVT, {.SPR,.SPR,.IMM,.NONE}, {.VD_S,.VM_S,.VFP_FBITS,.NONE}, 0x0EBA09C0, 0x0FBF0FD0, .HALF_FP, .A32, {}, {.F16,.S32} }, + { .VCVT, {.SPR,.SPR,.IMM,.NONE}, {.VD_S,.VM_S,.VFP_FBITS,.NONE}, 0x0EBE09C0, 0x0FBF0FD0, .HALF_FP, .A32, {}, {.S32,.F16} }, + { .VCVT, {.SPR,.SPR,.IMM,.NONE}, {.VD_S,.VM_S,.VFP_FBITS,.NONE}, 0x0EBE0940, 0x0FBF0FD0, .HALF_FP, .A32, {}, {.S16,.F16} }, + { .VCVT, {.SPR,.SPR,.IMM,.NONE}, {.VD_S,.VM_S,.VFP_FBITS,.NONE}, 0x0EBA0940, 0x0FBF0FD0, .HALF_FP, .A32, {}, {.F16,.S16} }, + { .VCVT, {.SPR,.SPR,.IMM,.NONE}, {.VD_S,.VM_S,.VFP_FBITS,.NONE}, 0x0EBB0940, 0x0FBF0FD0, .HALF_FP, .A32, {}, {.F16,.U16} }, + { .VCVT, {.SPR,.SPR,.IMM,.NONE}, {.VD_S,.VM_S,.VFP_FBITS,.NONE}, 0x0EBF0940, 0x0FBF0FD0, .HALF_FP, .A32, {}, {.U16,.F16} }, + { .VCVT, {.SPR,.SPR,.IMM,.NONE}, {.VD_S,.VM_S,.VFP_FBITS,.NONE}, 0x0EBF09C0, 0x0FBF0FD0, .HALF_FP, .A32, {}, {.U32,.F16} }, + { .VCVT, {.SPR,.SPR,.IMM,.NONE}, {.VD_S,.VM_S,.VFP_FBITS,.NONE}, 0x0EBB0AC0, 0x0FBF0FD0, .VFPV3, .A32, {}, {.F32,.U32} }, + { .VCVT, {.DPR,.DPR,.IMM,.NONE}, {.VD_D,.VM_D,.VFP_FBITS,.NONE}, 0x0EBF0BC0, 0x0FBF0FD0, .VFPV3, .A32, {}, {.U32,.F64} }, { .VCVT, {.SPR,.SPR,.NONE,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EB80AC0, 0x0FBF0FD0, .VFPV2, .A32, {}, {.F32,.S32} }, - { .VCVT, {.DPR,.SPR,.NONE,.NONE}, {.VD_D,.VM_S,.NONE,.NONE}, 0x0EB80BC0, 0x0FBF0FD0, .VFPV2, .A32, {}, {.F64,.S32} }, - { .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,.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}, 0x0EBC0AC0, 0x0FBF0FD0, .VFPV2, .A32, {}, {.U32,.F32} }, + { .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}, 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}, 0x0EBD0AC0, 0x0FBF0FD0, .VFPV2, .A32, {}, {.S32,.F32} }, + { .VCVT, {.DPR,.SPR,.NONE,.NONE}, {.VD_D,.VM_S,.NONE,.NONE}, 0x0EB80BC0, 0x0FBF0FD0, .VFPV2, .A32, {}, {.F64,.S32} }, { .VCVT, {.DPR,.SPR,.NONE,.NONE}, {.VD_D,.VM_S,.NONE,.NONE}, 0x0EB80B40, 0x0FBF0FD0, .VFPV2, .A32, {}, {.F64,.U32} }, - { .VCVTB, {.SPR,.SPR,.NONE,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EB20A40, 0x0FBF0FD0, .VFPV3, .A32, {}, {.F32,.F16} }, { .VCVTB, {.SPR,.SPR,.NONE,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EB30A40, 0x0FBF0FD0, .VFPV3, .A32, {}, {.F16,.F32} }, - { .VCVTT, {.SPR,.SPR,.NONE,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EB30AC0, 0x0FBF0FD0, .VFPV3, .A32, {}, {.F16,.F32} }, + { .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}, 0x0EB20AC0, 0x0FBF0FD0, .VFPV3, .A32, {}, {.F32,.F16} }, - { .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}, 0x0EBD0A40, 0x0FBF0FD0, .VFPV2, .A32, {}, {.S32,.F32} }, + { .VCVTT, {.SPR,.SPR,.NONE,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EB30AC0, 0x0FBF0FD0, .VFPV3, .A32, {}, {.F16,.F32} }, { .VCVTR, {.SPR,.SPR,.NONE,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EBC0A40, 0x0FBF0FD0, .VFPV2, .A32, {}, {.U32,.F32} }, + { .VCVTR, {.SPR,.SPR,.NONE,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EBD0A40, 0x0FBF0FD0, .VFPV2, .A32, {}, {.S32,.F32} }, + { .VCVTR, {.SPR,.DPR,.NONE,.NONE}, {.VD_S,.VM_D,.NONE,.NONE}, 0x0EBD0B40, 0x0FBF0FD0, .VFPV2, .A32, {}, {.S32,.F64} }, { .VCVTR, {.SPR,.DPR,.NONE,.NONE}, {.VD_S,.VM_D,.NONE,.NONE}, 0x0EBC0B40, 0x0FBF0FD0, .VFPV2, .A32, {}, {.U32,.F64} }, { .VMOV, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0x0EB00B40, 0x0FBF0FD0, .VFPV2, .A32, {}, {.F64,.NONE} }, { .VMOV, {.SPR,.SPR,.NONE,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EB00A40, 0x0FBF0FD0, .VFPV2, .A32, {}, {.F32,.NONE} }, - { .VRINTR, {.SPR,.SPR,.NONE,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EB60A40, 0x0FBF0FD0, .V8, .A32, {}, {.F32,.NONE} }, { .VRINTR, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0x0EB60B40, 0x0FBF0FD0, .V8, .A32, {}, {.F64,.NONE} }, + { .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} }, { .VRINTZ, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0x0EB60BC0, 0x0FBF0FD0, .V8, .A32, {}, {.F64,.NONE} }, { .VRINTX, {.SPR,.SPR,.NONE,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EB70A40, 0x0FBF0FD0, .V8, .A32, {}, {.F32,.NONE} }, { .VRINTX, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0x0EB70B40, 0x0FBF0FD0, .V8, .A32, {}, {.F64,.NONE} }, { .VJCVT, {.SPR,.DPR,.NONE,.NONE}, {.VD_S,.VM_D,.NONE,.NONE}, 0x0EB90BC0, 0x0FBF0FD0, .V8, .A32, {}, {.S32,.F64} }, - { .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}, {.VN_D,.RT_A32,.NONE,.NONE}, 0x0EC00B10, 0x0FF00FD0, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VMSR, {.PSR_FIELD,.GPR,.NONE,.NONE}, {.VFP_SPEC_REG,.RT_A32,.NONE,.NONE}, 0x0EE10A10, 0x0FF00FFF, .VFPV2, .A32, {}, {.NONE,.NONE} }, { .VDUP, {.QPR,.GPR,.NONE,.NONE}, {.VN_Q,.RT_A32,.NONE,.NONE}, 0x0EE00B10, 0x0FF00FD0, .NEON, .A32, {}, {.SZ8,.NONE} }, @@ -1294,12 +1315,12 @@ DECODE_ENTRIES := [1701]lib.Decode_Entry{ { .VMOV, {.QPR_ELEM,.QPR_ELEM,.GPR,.GPR}, {.VD_Q,.VD_Q,.RT_T32,.RT2_T32}, 0xEC000F00, 0xFF900F11, .MVE_INT, .T32, {thumb32=true}, {.NONE,.NONE} }, { .VLDRB, {.QPR,.MEM,.NONE,.NONE}, {.VD_Q,.MEM_IMM12_OFFSET,.NONE,.NONE}, 0xED901E00, 0xFFB01F00, .MVE_INT, .T32, {thumb32=true}, {.U8,.NONE} }, { .VSTRB, {.QPR,.MEM,.NONE,.NONE}, {.VD_Q,.MEM_IMM12_OFFSET,.NONE,.NONE}, 0xED801E00, 0xFFB01F00, .MVE_INT, .T32, {thumb32=true}, {.SZ8,.NONE} }, - { .VCX1, {.IMM_COPROC,.DPR,.IMM,.NONE}, {.CDE_COPROC_FIELD,.VD_D,.CDE_IMM_FIELD,.NONE}, 0xEC300000, 0xFF300000, .CDE, .T32, {thumb32=true}, {.NONE,.NONE} }, { .VCX1, {.IMM_COPROC,.SPR,.IMM,.NONE}, {.CDE_COPROC_FIELD,.VD_S,.CDE_IMM_FIELD,.NONE}, 0xEC200000, 0xFF300000, .CDE, .T32, {thumb32=true}, {.NONE,.NONE} }, + { .VCX1, {.IMM_COPROC,.DPR,.IMM,.NONE}, {.CDE_COPROC_FIELD,.VD_D,.CDE_IMM_FIELD,.NONE}, 0xEC300000, 0xFF300000, .CDE, .T32, {thumb32=true}, {.NONE,.NONE} }, { .VCX2, {.IMM_COPROC,.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,.DPR,.DPR,.DPR}, {.CDE_COPROC_FIELD,.VD_D,.VN_D,.VM_D}, 0xEC900000, 0xFF300000, .CDE, .T32, {thumb32=true}, {.NONE,.NONE} }, { .VCX3, {.IMM_COPROC,.SPR,.SPR,.SPR}, {.CDE_COPROC_FIELD,.VD_S,.VN_S,.VM_S}, 0xEC800000, 0xFF300000, .CDE, .T32, {thumb32=true}, {.NONE,.NONE} }, + { .VCX3, {.IMM_COPROC,.DPR,.DPR,.DPR}, {.CDE_COPROC_FIELD,.VD_D,.VN_D,.VM_D}, 0xEC900000, 0xFF300000, .CDE, .T32, {thumb32=true}, {.NONE,.NONE} }, { .VADDLV, {.GPR,.GPR,.QPR,.NONE}, {.RD_T32,.RN_T32,.VM_Q,.NONE}, 0xEE890F00, 0xEFFF0FD1, .MVE_INT, .T32, {thumb32=true}, {.S32,.NONE} }, { .VADDLVA, {.GPR,.GPR,.QPR,.NONE}, {.RD_T32,.RN_T32,.VM_Q,.NONE}, 0xEE890F20, 0xEFFF0FD1, .MVE_INT, .T32, {thumb32=true}, {.S32,.NONE} }, { .VMAXNMV, {.GPR,.QPR,.NONE,.NONE}, {.RD_T32,.VM_Q,.NONE,.NONE}, 0xEEEE0F00, 0xEFFF0FD1, .MVE_FP, .T32, {thumb32=true}, {.F32,.NONE} }, @@ -1325,8 +1346,8 @@ DECODE_ENTRIES := [1701]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, {.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} }, + { .VMOV, {.GPR,.QPR_ELEM,.NONE,.NONE}, {.RT_T32,.VD_Q,.NONE,.NONE}, 0xEE100B10, 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} }, @@ -1581,8 +1602,8 @@ DECODE_ENTRIES := [1701]lib.Decode_Entry{ { .VCX1A, {.IMM_COPROC,.SPR,.IMM,.NONE}, {.CDE_COPROC_FIELD,.VD_S,.CDE_IMM_FIELD,.NONE}, 0xFC200000, 0xFF300000, .CDE, .T32, {thumb32=true}, {.NONE,.NONE} }, { .VCX2A, {.IMM_COPROC,.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} }, @@ -1713,7 +1734,7 @@ DECODE_ENTRIES := [1701]lib.Decode_Entry{ } @(rodata) -DECODE_FORM_IDX := [1701]u16{ +DECODE_FORM_IDX := [1722]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, @@ -1725,106 +1746,107 @@ DECODE_FORM_IDX := [1701]u16{ 1, 0, 0, 0, 5, 4, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 2, 1, 0, 0, 5, 4, 0, 0, 0, 2, 1, 0, 0, 0, 5, 4, 0, 0, 0, 2, 1, 0, 0, 0, 5, 4, 1, 1, 1, 9, 14, - 8, 10, 6, 4, 3, 3, 1, 4, 4, 3, 3, 1, 3, 7, 3, 3, - 0, 0, 9, 3, 3, 1, 4, 1, 1, 0, 0, 5, 13, 5, 9, 3, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 8, 0, + 8, 6, 10, 4, 3, 3, 1, 4, 4, 3, 3, 1, 3, 7, 3, 3, + 0, 0, 3, 9, 3, 1, 4, 1, 1, 0, 0, 13, 5, 5, 3, 9, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 4, 10, 9, 7, 4, - 4, 5, 5, 2, 4, 4, 13, 4, 9, 4, 4, 2, 2, 11, 4, 4, + 4, 5, 5, 2, 4, 4, 13, 4, 9, 4, 4, 2, 2, 4, 11, 4, 2, 0, 6, 3, 6, 4, 1, 1, 1, 1, 0, 1, 1, 12, 1, 8, 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, 13, 5, 5, 5, 4, 4, - 5, 9, 5, 1, 4, 0, 7, 13, 7, 5, 9, 3, 2, 2, 2, 2, + 5, 5, 9, 1, 4, 0, 7, 13, 7, 5, 9, 3, 2, 2, 2, 2, 1, 2, 2, 12, 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, 21, 22, 23, 25, 24, 0, 0, 5, 0, 3, - 6, 8, 1, 11, 9, 2, 10, 7, 4, 9, 0, 11, 3, 8, 1, 10, - 2, 4, 5, 7, 6, 0, 11, 13, 10, 15, 20, 12, 14, 19, 18, 17, - 16, 0, 0, 0, 0, 11, 10, 6, 0, 0, 0, 7, 4, 3, 6, 9, - 2, 8, 5, 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, 7, 1, 6, 1, 6, 1, 0, 2, 2, 0, 0, 2, 4, 4, 4, - 4, 3, 2, 2, 2, 2, 2, 2, 2, 19, 13, 12, 8, 2, 2, 7, - 7, 2, 3, 1, 3, 1, 3, 1, 6, 6, 5, 5, 0, 1, 0, 3, - 0, 3, 0, 3, 7, 13, 7, 1, 9, 9, 12, 14, 6, 7, 7, 9, - 9, 7, 7, 1, 3, 9, 7, 7, 12, 6, 6, 1, 0, 7, 7, 7, - 3, 3, 8, 0, 5, 13, 11, 3, 6, 6, 8, 8, 6, 6, 0, 0, - 8, 6, 6, 0, 6, 6, 3, 4, 3, 3, 6, 2, 2, 0, 9, 9, - 11, 10, 4, 7, 2, 2, 2, 1, 4, 11, 8, 8, 10, 0, 6, 3, - 4, 0, 0, 0, 0, 1, 10, 4, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 11, 11, 13, 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, 4, 9, 4, 8, 4, - 8, 6, 6, 3, 5, 5, 7, 7, 5, 5, 5, 5, 5, 21, 15, 14, - 10, 5, 9, 5, 9, 5, 7, 7, 0, 8, 9, 5, 2, 6, 4, 3, - 7, 3, 2, 4, 5, 6, 7, 8, 9, 10, 2, 1, 0, 3, 2, 1, - 5, 4, 0, 0, 1, 2, 4, 0, 1, 2, 2, 0, 1, 3, 2, 3, - 1, 0, 1, 3, 2, 1, 2, 5, 3, 4, 0, 5, 3, 2, 4, 0, - 1, 2, 3, 1, 5, 4, 0, 0, 1, 3, 2, 4, 5, 2, 4, 3, - 2, 4, 3, 0, 0, 0, 12, 10, 11, 13, 14, 13, 12, 15, 14, 15, - 13, 12, 17, 14, 16, 15, 17, 15, 16, 14, 2, 3, 1, 0, 1, 0, - 0, 1, 1, 0, 5, 3, 2, 0, 3, 1, 1, 0, 1, 0, 1, 0, - 0, 0, 0, 0, 1, 0, 3, 2, 0, 2, 3, 1, 2, 3, 3, 0, - 3, 0, 3, 2, 1, 0, 3, 0, 2, 1, 1, 0, 1, 0, 2, 2, - 0, 2, 1, 3, 1, 0, 2, 0, 1, 0, 1, 0, 0, 2, 0, 2, - 0, 0, 6, 5, 4, 4, 5, 4, 3, 3, 4, 3, 2, 2, 7, 5, - 4, 4, 6, 4, 3, 3, 5, 3, 2, 2, 4, 0, 0, 0, 0, 0, - 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 3, 3, 0, 3, 0, 3, 14, 11, 26, 12, 19, 16, 15, 31, 20, 18, + 30, 23, 13, 22, 10, 24, 27, 25, 28, 21, 29, 17, 0, 0, 7, 11, + 8, 2, 9, 1, 0, 3, 5, 10, 4, 6, 6, 1, 8, 3, 4, 11, + 7, 2, 0, 9, 5, 10, 9, 3, 17, 5, 12, 2, 16, 14, 10, 6, + 8, 15, 7, 4, 13, 11, 0, 0, 0, 0, 0, 0, 6, 0, 0, 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, 7, 1, 1, + 6, 1, 6, 0, 2, 0, 2, 2, 0, 4, 4, 4, 4, 3, 2, 2, + 2, 2, 2, 2, 2, 19, 13, 12, 2, 8, 7, 2, 7, 2, 3, 1, + 3, 1, 1, 3, 6, 6, 5, 5, 0, 1, 0, 3, 0, 3, 0, 3, + 13, 7, 7, 1, 9, 9, 14, 12, 6, 7, 7, 9, 9, 7, 7, 1, + 3, 9, 7, 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, 5, 10, 9, 5, + 5, 9, 7, 7, 0, 7, 4, 5, 2, 9, 3, 6, 8, 4, 9, 2, + 5, 8, 3, 7, 6, 10, 1, 0, 2, 2, 1, 0, 3, 5, 4, 2, + 0, 1, 4, 0, 2, 1, 1, 0, 2, 3, 2, 3, 0, 1, 1, 3, + 2, 4, 1, 0, 2, 5, 3, 2, 3, 0, 5, 4, 1, 2, 1, 0, + 3, 4, 5, 0, 2, 1, 3, 4, 5, 4, 2, 3, 3, 2, 4, 0, + 0, 0, 12, 13, 10, 11, 15, 12, 13, 14, 14, 13, 15, 12, 17, 16, + 14, 15, 17, 15, 16, 14, 2, 3, 0, 1, 1, 0, 1, 0, 0, 1, + 3, 5, 3, 0, 2, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 2, 3, 1, 0, 0, 1, 2, 3, 3, 2, 3, 0, 3, 0, 3, 2, + 0, 3, 1, 2, 1, 0, 0, 1, 1, 0, 2, 2, 0, 2, 1, 3, + 0, 1, 2, 0, 1, 0, 1, 0, 0, 2, 0, 2, 0, 0, 6, 5, + 4, 4, 5, 4, 3, 3, 4, 3, 2, 2, 7, 5, 4, 4, 6, 4, + 3, 3, 5, 3, 2, 2, 4, 6, 5, 5, 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, 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, 1, 0, 1, 0, 0, 0, 1, 1, 0, 1, + 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1, + 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, + 0, 1, 0, 0, 0, 7, 9, 0, 0, 6, 8, 0, 0, 1, 0, 1, + 0, 0, 1, 1, 0, 0, 1, 0, 0, 2, 3, 0, 1, 3, 2, 0, + 1, 1, 0, 1, 0, 0, 1, 0, 1, 4, 38, 37, 3, 2, 1, 0, + 2, 2, 1, 0, 1, 0, 0, 0, 0, 0, 5, 32, 1, 0, 0, 1, + 0, 0, 3, 3, 2, 2, 2, 1, 0, 1, 0, 2, 2, 1, 0, 1, + 0, 36, 1, 3, 1, 0, 0, 1, 2, 2, 0, 1, 2, 2, 0, 1, + 0, 1, 2, 2, 1, 0, 1, 0, 2, 3, 5, 3, 2, 0, 1, 1, + 0, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, + 0, 2, 0, 1, 1, 0, 4, 1, 0, 31, 30, 32, 28, 26, 25, 27, + 29, 33, 22, 20, 19, 21, 23, 16, 15, 17, 13, 11, 12, 14, 18, 24, + 34, 6, 4, 3, 5, 7, 0, 1, 2, 8, 9, 1, 0, 0, 1, 1, + 0, 2, 3, 1, 0, 1, 0, 0, 1, 0, 1, 0, 3, 2, 0, 0, + 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, + 1, 2, 2, 1, 3, 3, 1, 1, 4, 4, 4, 4, 4, 3, 5, 4, + 7, 5, 11, 10, 8, 10, 9, 8, 7, 8, 8, 8, 8, 1, 1, 1, + 1, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 1, 1, 0, 0, 1, 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, 1, 0, 1, 0, 0, 0, - 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, - 1, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 0, 0, 0, 0, 0, 1, 0, 7, 7, 9, 0, 0, 6, 8, 0, 0, - 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, - 0, 1, 1, 0, 4, 32, 31, 3, 2, 1, 0, 2, 2, 1, 0, 1, - 0, 0, 0, 0, 0, 5, 26, 1, 0, 0, 1, 0, 0, 3, 3, 2, - 2, 2, 1, 0, 1, 0, 2, 2, 1, 0, 1, 0, 30, 1, 3, 0, - 1, 0, 1, 2, 2, 0, 1, 2, 2, 1, 0, 0, 1, 2, 2, 1, - 0, 0, 1, 3, 2, 5, 2, 3, 1, 0, 1, 0, 0, 1, 1, 0, - 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 2, 4, - 0, 1, 0, 1, 32, 31, 33, 29, 27, 26, 28, 30, 34, 23, 21, 20, - 22, 24, 17, 16, 18, 14, 12, 11, 13, 15, 19, 25, 7, 5, 4, 6, - 8, 1, 0, 2, 3, 9, 0, 1, 1, 0, 2, 0, 1, 3, 1, 0, - 0, 1, 0, 1, 0, 1, 0, 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, 29, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 0, - 0, 0, 0, 7, 28, 27, 2, 14, 14, 2, 0, 0, 0, 0, 0, 0, - 0, 17, 17, 17, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 16, 16, 11, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 15, 8, 8, 2, - 10, 10, 12, 12, 8, 4, 6, 0, 0, 2, 2, 2, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 3, - 6, 4, 8, 9, 7, 0, 0, 7, 8, 7, 6, 7, 7, 7, 7, 4, - 3, 1, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 0, 0, 0, - 0, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 0, 0, 0, 2, 9, 8, 7, 7, 7, 7, 6, 6, 1, 1, 1, 10, - 8, 7, 6, 6, 6, 6, 5, 5, 2, 1, 2, 2, 1, 2, 5, 5, - 5, 4, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 0, 0, 1, 4, 0, 0, 0, 0, 7, 33, 34, 2, 14, 14, 2, 0, + 0, 0, 0, 0, 0, 0, 17, 17, 17, 6, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 16, 16, 11, 5, 5, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 15, 15, 8, 8, 2, 10, 10, 12, 12, 8, 4, 6, 0, 0, 2, 2, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 4, 3, 6, 4, 8, 9, 7, 0, 0, 7, 8, 7, 6, + 7, 7, 7, 7, 4, 3, 1, 2, 2, 2, 2, 2, 1, 1, 1, 1, + 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 0, 0, 0, 2, 9, 8, 7, 7, 7, 7, 6, + 6, 1, 1, 1, 10, 8, 7, 6, 6, 6, 6, 5, 5, 2, 1, 2, + 2, 1, 2, 5, 5, 5, 4, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, - 1, 1, 0, 1, 1, 1, 1, 1, 1, 2, 1, 2, 2, 2, 2, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 1, 1, 1, - 1, 0, 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, 1, 1, + 1, 1, 1, 1, 3, 1, 1, 0, 1, 1, 1, 1, 1, 1, 2, 1, + 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 4, 1, 1, 1, 1, 1, 0, 0, 1, 0, 1, 0, 0, 2, 2, 2, + 2, 2, 2, 0, 0, 0, 0, 11, 11, 0, 0, 0, 10, 10, 18, 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 := [5451]u16{ +DECODE_BUCKET_LIST := [5509]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, @@ -1862,310 +1884,314 @@ DECODE_BUCKET_LIST := [5451]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, 361, 360, 362, 359, 363, 364, - 371, 376, 369, 365, 372, 368, 370, 366, 373, 374, 375, 367, 379, 388, 382, 377, - 386, 380, 383, 381, 378, 385, 384, 387, 389, 392, 398, 397, 395, 393, 390, 391, - 400, 399, 396, 394, 401, 402, 403, 404, 406, 405, 407, 408, 409, 410, 414, 416, - 411, 417, 415, 412, 413, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, + 346, 347, 348, 349, 350, 351, 352, 357, 356, 358, 361, 376, 371, 359, 366, 369, + 379, 360, 375, 368, 373, 372, 364, 374, 362, 370, 377, 367, 365, 363, 378, 380, + 381, 382, 390, 385, 392, 387, 383, 386, 384, 393, 388, 389, 391, 396, 404, 400, + 399, 402, 397, 401, 395, 398, 394, 403, 405, 407, 416, 417, 421, 419, 415, 413, + 406, 409, 411, 418, 408, 420, 412, 410, 414, 422, 423, 424, 425, 426, 428, 427, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, - 445, 446, 447, 448, 450, 449, 452, 451, 454, 453, 456, 455, 458, 457, 460, 459, - 461, 462, 463, 464, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, - 431, 432, 433, 434, 435, 436, 437, 465, 438, 466, 467, 468, 469, 470, 471, 472, - 473, 474, 475, 477, 476, 479, 478, 480, 481, 483, 482, 485, 484, 487, 486, 488, - 489, 490, 491, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, - 432, 433, 434, 435, 436, 437, 492, 419, 420, 421, 422, 423, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 493, 494, 495, 492, 362, 360, - 361, 359, 358, 363, 364, 376, 374, 373, 372, 375, 370, 369, 371, 367, 366, 368, - 365, 388, 387, 386, 384, 383, 385, 382, 381, 380, 379, 378, 377, 389, 395, 394, - 397, 393, 396, 391, 390, 392, 400, 399, 398, 401, 402, 403, 404, 406, 405, 407, - 408, 409, 410, 417, 416, 414, 413, 412, 415, 411, 418, 419, 420, 421, 422, 423, - 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 496, 439, - 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 452, 451, 454, 453, 456, - 455, 457, 458, 460, 459, 461, 462, 463, 464, 419, 420, 421, 422, 423, 424, 425, - 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 497, 496, 466, 467, - 468, 469, 470, 471, 472, 473, 474, 475, 477, 476, 478, 479, 480, 481, 482, 483, - 484, 485, 487, 486, 488, 489, 490, 491, 419, 420, 421, 422, 423, 424, 425, 426, - 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 498, 419, 420, 421, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 493, - 494, 499, 498, 500, 501, 502, 503, 504, 505, 507, 506, 508, 509, 510, 511, 512, - 513, 514, 515, 516, 518, 517, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, - 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 545, - 544, 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, 613, 612, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, - 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 500, 501, - 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, - 518, 519, 521, 520, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 534, - 533, 535, 536, 537, 538, 539, 540, 541, 542, 543, 545, 544, 546, 547, 548, 549, - 551, 550, 552, 553, 554, 555, 556, 639, 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, 640, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, - 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, - 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 641, 361, 362, 360, - 359, 358, 642, 643, 375, 376, 374, 373, 371, 372, 370, 369, 367, 366, 365, 368, - 388, 387, 386, 384, 383, 382, 379, 380, 381, 385, 378, 377, 644, 400, 397, 398, - 399, 395, 394, 393, 391, 392, 390, 396, 645, 646, 647, 648, 406, 405, 649, 650, - 651, 418, 415, 416, 417, 414, 413, 412, 411, 652, 653, 419, 420, 421, 422, 423, - 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 654, 655, - 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 668, 667, 669, 670, 671, - 672, 673, 674, 652, 653, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, - 430, 431, 432, 433, 434, 435, 436, 437, 675, 654, 676, 677, 678, 679, 680, 681, - 682, 683, 684, 685, 686, 687, 688, 689, 691, 690, 693, 692, 694, 695, 652, 653, - 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, - 435, 436, 437, 696, 699, 703, 702, 704, 700, 701, 697, 698, 712, 710, 711, 709, - 708, 706, 707, 705, 713, 715, 714, 716, 720, 719, 722, 718, 721, 717, 724, 725, - 723, 726, 727, 728, 729, 730, 732, 731, 733, 735, 734, 737, 736, 740, 739, 738, - 742, 744, 745, 743, 746, 741, 748, 752, 747, 751, 750, 749, 756, 757, 753, 754, - 755, 758, 764, 763, 762, 761, 760, 759, 765, 767, 766, 770, 768, 769, 771, 772, - 773, 775, 776, 774, 777, 780, 779, 778, 781, 783, 784, 785, 782, 789, 788, 786, - 787, 790, 791, 792, 793, 796, 797, 794, 795, 798, 799, 801, 800, 802, 803, 805, - 804, 806, 808, 809, 807, 810, 811, 813, 812, 815, 814, 816, 817, 818, 819, 821, - 822, 820, 823, 825, 826, 824, 827, 829, 828, 652, 653, 419, 420, 421, 422, 423, - 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 830, 696, - 362, 361, 359, 360, 358, 642, 643, 376, 375, 374, 373, 371, 370, 369, 372, 367, - 366, 365, 368, 388, 387, 386, 384, 383, 381, 382, 380, 379, 377, 378, 385, 644, - 399, 400, 398, 397, 395, 392, 393, 394, 391, 390, 396, 645, 646, 647, 648, 405, - 406, 649, 650, 651, 418, 416, 415, 414, 411, 412, 413, 417, 652, 653, 419, 420, - 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, - 437, 831, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 668, 667, - 670, 669, 671, 672, 673, 674, 652, 653, 419, 420, 421, 422, 423, 424, 425, 426, - 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 832, 831, 676, 677, 678, - 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 693, 692, 694, - 695, 652, 653, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, - 432, 433, 434, 435, 436, 437, 833, 704, 702, 703, 701, 700, 697, 698, 699, 712, - 710, 711, 709, 708, 705, 706, 707, 713, 715, 716, 714, 718, 717, 719, 720, 721, - 722, 724, 725, 723, 729, 726, 727, 728, 732, 730, 731, 733, 737, 734, 735, 736, - 740, 739, 738, 745, 742, 743, 744, 746, 741, 752, 751, 750, 748, 747, 749, 758, - 755, 756, 757, 753, 754, 764, 763, 761, 760, 759, 762, 765, 766, 767, 770, 769, - 768, 771, 772, 773, 774, 775, 776, 777, 781, 779, 778, 780, 785, 784, 782, 783, - 789, 786, 787, 788, 793, 791, 792, 790, 794, 795, 796, 797, 799, 798, 801, 800, - 802, 803, 804, 805, 809, 807, 806, 808, 810, 811, 812, 813, 814, 815, 816, 817, - 818, 819, 822, 821, 823, 820, 824, 827, 825, 826, 829, 828, 652, 653, 419, 420, - 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, - 437, 834, 833, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847, - 851, 850, 848, 849, 852, 853, 854, 856, 855, 858, 857, 859, 860, 861, 862, 863, - 864, 865, 866, 867, 868, 869, 870, 871, 872, 873, 874, 875, 876, 877, 846, 847, - 878, 879, 880, 881, 882, 883, 884, 885, 886, 887, 888, 889, 890, 891, 892, 893, - 859, 860, 866, 867, 868, 869, 870, 871, 872, 873, 874, 875, 876, 877, 861, 862, - 863, 878, 879, 880, 881, 882, 883, 884, 885, 886, 887, 888, 889, 890, 891, 892, - 893, 864, 865, 894, 895, 896, 897, 898, 899, 900, 901, 902, 903, 904, 905, 906, - 894, 895, 896, 897, 898, 907, 908, 899, 900, 906, 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, 949, 950, 951, 952, 953, 954, 955, 956, 957, 953, 958, 959, 960, 961, - 962, 963, 964, 965, 966, 967, 963, 968, 969, 970, 971, 972, 973, 974, 975, 976, - 977, 978, 979, 980, 981, 982, 983, 984, 985, 986, 987, 988, 989, 990, 991, 992, - 993, 976, 978, 994, 994, 995, 996, 984, 995, 996, 991, 997, 998, 997, 999, 1000, - 1001, 999, 1002, 1001, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, - 1015, 1016, 1017, 1014, 1018, 1016, 1019, 1020, 1021, 1022, 1023, 1021, 1024, 1023, 1025, 1026, - 1027, 1028, 1027, 1028, 1027, 1028, 1027, 1028, 1027, 1028, 1027, 1028, 1027, 1028, 1027, 1028, - 1027, 1028, 1027, 1028, 1027, 1028, 1027, 1028, 1027, 1028, 1027, 1028, 1027, 1028, 1027, 1028, - 1027, 1029, 1027, 1029, 1027, 1029, 1027, 1029, 1027, 1029, 1027, 1029, 1027, 1029, 1027, 1029, - 1027, 1029, 1027, 1029, 1027, 1029, 1027, 1029, 1027, 1029, 1027, 1029, 1027, 1029, 1027, 1029, - 1030, 1031, 1032, 1045, 1046, 1033, 1034, 1045, 1046, 1035, 1036, 1037, 1038, 1039, 1040, 1041, - 1042, 1043, 1044, 1045, 1046, 1033, 1034, 1047, 1045, 1046, 1035, 1036, 1030, 1031, 1032, 1049, - 1048, 1045, 1050, 1046, 1033, 1051, 1034, 1052, 1053, 1045, 1054, 1046, 1035, 1055, 1036, 1037, - 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1033, 1034, 1047, 1045, 1046, 1035, 1036, - 1056, 1057, 1059, 1058, 1033, 1034, 1056, 1057, 1061, 1060, 1035, 1036, 1062, 1063, 1064, 1065, - 1066, 1067, 1056, 1057, 1058, 1059, 1033, 1034, 1069, 1068, 1056, 1057, 1060, 1061, 1035, 1036, - 1056, 1057, 1059, 1058, 1033, 1034, 1056, 1057, 1060, 1061, 1035, 1036, 1062, 1063, 1064, 1065, - 1066, 1067, 1056, 1057, 1058, 1059, 1033, 1034, 1056, 1057, 1061, 1060, 1035, 1036, 1045, 1046, - 1070, 1071, 1045, 1046, 1072, 1073, 1074, 1075, 1045, 1046, 1045, 1046, 1045, 1046, 1071, 1070, - 1045, 1046, 1072, 1073, 1045, 1046, 1045, 1046, 1056, 1057, 1070, 1071, 1056, 1057, 1073, 1072, - 1056, 1057, 1056, 1057, 1056, 1057, 1071, 1070, 1056, 1057, 1073, 1072, 1056, 1057, 1056, 1057, - 1076, 1077, 1078, 1079, 1080, 1082, 1081, 1083, 1084, 1045, 1086, 1085, 1087, 1088, 1046, 1089, - 1090, 1091, 1092, 1093, 1082, 1081, 1094, 1045, 1095, 1096, 1098, 1097, 1046, 1099, 1090, 1100, - 1092, 1077, 1078, 1101, 1102, 1103, 1104, 1082, 1081, 1105, 1045, 1107, 1106, 1108, 1109, 1046, - 1089, 1090, 1091, 1092, 1082, 1081, 1094, 1110, 1111, 1045, 1113, 1112, 1114, 1115, 1046, 1099, - 1090, 1100, 1092, 1079, 1116, 1080, 1082, 1081, 1083, 1084, 1045, 1085, 1086, 1088, 1087, 1046, - 1089, 1090, 1091, 1092, 1082, 1081, 1094, 1045, 1096, 1095, 1098, 1097, 1046, 1099, 1090, 1100, - 1092, 1101, 1102, 1116, 1103, 1104, 1082, 1081, 1105, 1045, 1107, 1106, 1108, 1109, 1046, 1089, - 1090, 1091, 1092, 1082, 1081, 1094, 1110, 1111, 1045, 1113, 1112, 1114, 1115, 1046, 1099, 1090, - 1100, 1092, 1117, 1118, 1119, 1120, 1121, 1122, 1123, 1124, 1126, 1125, 1089, 1090, 1091, 1092, - 1094, 1127, 1128, 1129, 1130, 1131, 1132, 1099, 1090, 1100, 1092, 1133, 1134, 1136, 1135, 1137, - 1138, 1089, 1090, 1091, 1092, 1139, 1140, 1141, 1143, 1142, 1145, 1144, 1146, 1147, 1149, 1148, - 1150, 1151, 1152, 1153, 1155, 1154, 1157, 1156, 1158, 1159, 1161, 1160, 1163, 1162, 1166, 1165, - 1164, 1169, 1167, 1168, 1170, 1171, 1194, 1187, 1205, 1180, 1174, 1181, 1204, 1172, 1199, 1177, - 1184, 1190, 1186, 1182, 1203, 1188, 1185, 1173, 1195, 1183, 1189, 1201, 1192, 1202, 1179, 1197, - 1196, 1193, 1178, 1198, 1200, 1175, 1191, 1176, 1207, 1206, 1209, 1208, 1210, 1212, 1213, 1211, - 1215, 1214, 1217, 1216, 1218, 1219, 1221, 1220, 1222, 1224, 1223, 1094, 1099, 1090, 1100, 1092, - 1117, 1118, 1120, 1119, 1122, 1121, 1123, 1225, 1124, 1125, 1126, 1089, 1090, 1091, 1092, 1094, - 1127, 1128, 1130, 1129, 1131, 1132, 1099, 1090, 1100, 1092, 1226, 1227, 1133, 1134, 1136, 1135, - 1138, 1137, 1089, 1090, 1091, 1092, 1141, 1139, 1140, 1143, 1142, 1144, 1145, 1147, 1146, 1148, - 1149, 1150, 1151, 1152, 1153, 1155, 1154, 1156, 1157, 1158, 1159, 1228, 1161, 1160, 1162, 1163, - 1164, 1165, 1166, 1169, 1168, 1167, 1171, 1170, 1185, 1184, 1182, 1179, 1180, 1181, 1183, 1186, - 1177, 1174, 1175, 1176, 1178, 1172, 1173, 1187, 1189, 1188, 1205, 1196, 1199, 1197, 1198, 1200, - 1193, 1194, 1195, 1191, 1192, 1190, 1204, 1201, 1202, 1203, 1206, 1207, 1209, 1208, 1211, 1213, - 1212, 1210, 1214, 1215, 1217, 1216, 1219, 1218, 1221, 1220, 1222, 1224, 1223, 1094, 1099, 1090, - 1100, 1092, 1045, 1046, 1229, 1045, 1046, 1229, 1045, 1046, 1229, 1045, 1046, 1229, 1045, 1046, - 1229, 1045, 1046, 1229, 1045, 1046, 1229, 1045, 1046, 1229, 1229, 1229, 1229, 1229, 1229, 1229, - 1229, 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, 1410, 1411, 1412, 1413, 1414, 1415, 1416, 1417, 1418, 1419, - 1420, 1421, 1422, 1423, 1424, 1425, 1426, 1427, 1428, 1429, 1430, 1431, 1432, 1433, 1434, 1435, - 1436, 1437, 1438, 1439, 1440, 1441, 1442, 1443, 1444, 1445, 1399, 1400, 1446, 1447, 1448, 1404, - 1405, 1449, 1450, 1451, 1452, 1453, 1414, 1454, 1455, 1424, 1423, 1425, 1399, 1400, 1404, 1405, - 1406, 1407, 1408, 1409, 1411, 1410, 1412, 1414, 1415, 1416, 1417, 1418, 1419, 1420, 1421, 1422, - 1424, 1423, 1425, 1456, 1457, 1458, 1399, 1400, 1404, 1405, 1459, 1414, 1454, 1455, 1424, 1423, - 1425, 1460, 1461, 1462, 1463, 1464, 1465, 1466, 1467, 1468, 1469, 1470, 1471, 1472, 1473, 1474, - 1475, 1476, 1477, 1478, 1479, 1480, 1481, 1482, 1483, 1484, 1485, 1486, 1487, 1488, 1489, 1490, - 1491, 1492, 1493, 1494, 1495, 1496, 1497, 1498, 1499, 1500, 1501, 1502, 1503, 1504, 1505, 1506, - 1507, 1508, 1509, 1510, 1511, 1512, 1513, 1514, 1515, 1516, 1517, 1518, 1519, 1520, 1521, 1522, - 1523, 1524, 1525, 1526, 1527, 1528, 1529, 1530, 1531, 1532, 1533, 1534, 1535, 1536, 1537, 1538, - 1539, 1540, 1541, 1542, 1543, 1544, 1545, 1546, 1547, 1548, 1549, 1550, 1551, 1552, 1553, 1554, - 1555, 1556, 1557, 1558, 1559, 1560, 1561, 1562, 1563, 1564, 1565, 1566, 1567, 1569, 1568, 1571, - 1570, 1573, 1572, 1574, 1575, 1291, 1292, 1293, 1294, 1295, 1296, 1576, 1577, 1578, 1579, 1580, - 1581, 1582, 1583, 1584, 1585, 1586, 1587, 1588, 1589, 1590, 1303, 1304, 1305, 1306, 1307, 1308, - 1591, 1592, 1593, 1313, 1314, 1315, 1594, 1322, 1323, 1324, 1325, 1326, 1327, 1329, 1330, 1595, - 1331, 1332, 1596, 1333, 1334, 1335, 1336, 1337, 1338, 1339, 1340, 1341, 1342, 1343, 1597, 1598, - 1599, 1600, 1601, 1602, 1603, 1604, 1344, 1605, 1345, 1346, 1347, 1348, 1606, 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, 1607, - 1608, 1609, 1610, 1611, 1612, 1613, 1614, 1385, 1386, 1387, 1388, 1615, 1616, 1617, 1618, 1619, - 1620, 1621, 1621, 1622, 1622, 1623, 1623, 1624, 1625, 1626, 1627, 1628, 1628, 1629, 1629, 1630, - 1630, 1631, 1631, 1632, 1633, 1634, 1635, 1636, 1637, 1638, 1639, 1640, 1641, 1642, 1643, 1644, - 1645, 1646, 1647, 1648, 1649, 1650, 1651, 1652, 1653, 1654, 1655, 1655, 1656, 1657, 1658, 1659, - 1660, 1661, 1662, 1663, 1664, 1664, 1665, 1665, 1666, 1666, 1667, 1667, 1668, 1668, 1669, 1669, - 1670, 1670, 1671, 1671, 1672, 1672, 1673, 1673, 1674, 1675, 1676, 1677, 1678, 1679, 1680, 1681, - 1682, 1683, 1684, 1685, 1686, 1687, 1688, 1689, 1690, 1691, 1692, 1693, 1694, 1695, 1695, 1696, - 1696, 1697, 1697, 1697, 1698, 1699, 1697, 1700, 1700, 1238, 1239, 1240, 1241, 1246, 1252, 1242, - 1251, 1252, 1251, 1248, 1247, 1248, 1245, 1247, 1235, 1236, 1243, 1252, 1231, 1232, 1233, 1234, - 1237, 1251, 1252, 1251, 1250, 1249, 1244, 1250, 1249, 1252, 1251, 1252, 1230, 1251, 1252, 1251, - 1252, 1251, 1265, 1257, 1264, 1271, 1271, 1253, 1254, 1255, 1256, 1262, 1270, 1261, 1270, 1263, - 1263, 1266, 1258, 1266, 1260, 1268, 1268, 1269, 1269, 1259, 1267, 1267, 1282, 1290, 1289, 1282, - 1286, 1288, 1285, 1287, 1282, 1290, 1289, 1272, 1273, 1274, 1275, 1282, 1286, 1288, 1285, 1287, - 1290, 1289, 1286, 1288, 1285, 1287, 1290, 1289, 1286, 1288, 1285, 1287, 1272, 1273, 1274, 1275, - 1279, 1280, 1281, 1284, 1276, 1277, 1278, 1283, 1279, 1280, 1281, 1284, 1276, 1277, 1278, 1283, - 1309, 1313, 1314, 1317, 1328, 1329, 1330, 1331, 1342, 1343, 1346, 1349, 1350, 1353, 1354, 1355, - 1356, 1357, 1358, 1367, 1368, 1369, 1370, 1393, 1309, 1313, 1314, 1316, 1328, 1329, 1330, 1331, - 1343, 1346, 1349, 1350, 1353, 1354, 1355, 1356, 1357, 1358, 1367, 1368, 1369, 1370, 1393, 1313, - 1314, 1317, 1328, 1329, 1330, 1331, 1343, 1346, 1349, 1350, 1353, 1354, 1355, 1356, 1357, 1358, - 1367, 1368, 1369, 1370, 1393, 1299, 1300, 1301, 1302, 1313, 1314, 1315, 1316, 1328, 1329, 1330, - 1331, 1332, 1341, 1343, 1346, 1349, 1350, 1353, 1354, 1355, 1356, 1357, 1358, 1367, 1368, 1369, - 1370, 1393, 1313, 1314, 1317, 1329, 1330, 1331, 1342, 1343, 1346, 1349, 1350, 1353, 1354, 1355, - 1356, 1357, 1358, 1367, 1368, 1369, 1370, 1389, 1393, 1313, 1314, 1316, 1329, 1330, 1331, 1343, - 1346, 1349, 1350, 1353, 1354, 1355, 1356, 1357, 1358, 1367, 1368, 1369, 1370, 1389, 1393, 1313, - 1314, 1317, 1329, 1330, 1331, 1343, 1346, 1349, 1350, 1353, 1354, 1355, 1356, 1357, 1358, 1367, - 1368, 1369, 1370, 1389, 1393, 1299, 1300, 1301, 1302, 1313, 1314, 1315, 1316, 1329, 1330, 1331, - 1332, 1341, 1343, 1346, 1349, 1350, 1353, 1354, 1355, 1356, 1357, 1358, 1367, 1368, 1369, 1370, - 1389, 1393, 1291, 1292, 1310, 1311, 1312, 1324, 1325, 1326, 1327, 1335, 1336, 1337, 1338, 1351, - 1352, 1359, 1360, 1361, 1362, 1363, 1364, 1365, 1366, 1383, 1384, 1388, 1391, 1394, 1351, 1352, - 1359, 1360, 1361, 1362, 1363, 1364, 1365, 1366, 1391, 1394, 1310, 1351, 1352, 1359, 1360, 1361, - 1362, 1363, 1364, 1365, 1366, 1391, 1394, 1322, 1323, 1333, 1334, 1339, 1340, 1351, 1352, 1359, - 1360, 1361, 1362, 1363, 1364, 1365, 1366, 1391, 1394, 1310, 1311, 1312, 1324, 1325, 1326, 1327, - 1335, 1336, 1337, 1338, 1351, 1352, 1359, 1360, 1361, 1362, 1363, 1364, 1365, 1366, 1383, 1384, - 1388, 1390, 1392, 1394, 1351, 1352, 1359, 1360, 1361, 1362, 1363, 1364, 1365, 1366, 1390, 1392, - 1394, 1293, 1294, 1295, 1296, 1305, 1306, 1307, 1308, 1310, 1351, 1352, 1359, 1360, 1361, 1362, - 1363, 1364, 1365, 1366, 1390, 1392, 1394, 1297, 1298, 1303, 1304, 1322, 1323, 1333, 1334, 1339, - 1340, 1351, 1352, 1359, 1360, 1361, 1362, 1363, 1364, 1365, 1366, 1390, 1392, 1394, 1318, 1344, - 1347, 1371, 1372, 1373, 1374, 1375, 1376, 1377, 1378, 1379, 1380, 1381, 1382, 1319, 1344, 1347, - 1371, 1372, 1373, 1374, 1375, 1376, 1377, 1378, 1379, 1380, 1381, 1382, 1320, 1345, 1348, 1371, - 1372, 1373, 1374, 1375, 1376, 1377, 1378, 1379, 1380, 1381, 1382, 1321, 1345, 1348, 1371, 1372, - 1373, 1374, 1375, 1376, 1377, 1378, 1379, 1380, 1381, 1382, 1318, 1344, 1347, 1371, 1372, 1373, - 1374, 1375, 1376, 1377, 1378, 1379, 1380, 1381, 1382, 1319, 1344, 1347, 1371, 1372, 1373, 1374, - 1375, 1376, 1377, 1378, 1379, 1380, 1381, 1382, 1320, 1345, 1348, 1371, 1372, 1373, 1374, 1375, - 1376, 1377, 1378, 1379, 1380, 1381, 1382, 1321, 1345, 1348, 1371, 1372, 1373, 1374, 1375, 1376, - 1377, 1378, 1379, 1380, 1381, 1382, 1385, 1386, 1387, 1385, 1386, 1387, 1385, 1386, 1387, 1385, - 1386, 1387, 1385, 1386, 1387, 1385, 1386, 1387, 1385, 1386, 1387, 1385, 1386, 1387, 1395, 1397, - 1398, 1401, 1405, 1413, 1414, 1415, 1423, 1424, 1425, 1397, 1398, 1402, 1406, 1413, 1414, 1416, - 1423, 1424, 1425, 1397, 1398, 1413, 1414, 1422, 1423, 1424, 1425, 1397, 1398, 1413, 1414, 1422, - 1424, 1423, 1425, 1396, 1403, 1404, 1410, 1421, 1424, 1423, 1425, 1411, 1421, 1423, 1424, 1425, - 1399, 1412, 1423, 1424, 1425, 1400, 1412, 1424, 1423, 1425, 1405, 1414, 1417, 1423, 1424, 1425, - 1407, 1414, 1417, 1423, 1424, 1425, 1414, 1424, 1423, 1425, 1414, 1423, 1424, 1425, 1404, 1424, - 1423, 1425, 1423, 1424, 1425, 1399, 1423, 1424, 1425, 1400, 1424, 1423, 1425, 1398, 1405, 1413, - 1414, 1424, 1423, 1425, 1398, 1409, 1413, 1414, 1424, 1423, 1425, 1398, 1413, 1414, 1424, 1423, - 1425, 1398, 1413, 1414, 1424, 1423, 1425, 1404, 1419, 1423, 1424, 1425, 1419, 1423, 1424, 1425, - 1399, 1420, 1424, 1423, 1425, 1400, 1420, 1424, 1423, 1425, 1405, 1414, 1423, 1424, 1425, 1414, - 1424, 1423, 1425, 1414, 1424, 1423, 1425, 1408, 1414, 1423, 1424, 1425, 1404, 1418, 1423, 1424, - 1425, 1418, 1423, 1424, 1425, 1399, 1423, 1424, 1425, 1400, 1423, 1424, 1425, 1405, 1414, 1423, - 1424, 1425, 1414, 1423, 1424, 1425, 1414, 1423, 1424, 1425, 1414, 1424, 1423, 1425, 1404, 1454, - 1423, 1424, 1425, 1423, 1424, 1425, 1399, 1423, 1424, 1425, 1400, 1423, 1424, 1425, 1405, 1414, - 1424, 1423, 1425, 1414, 1424, 1423, 1425, 1414, 1423, 1424, 1425, 1414, 1423, 1424, 1425, 1404, - 1455, 1423, 1424, 1425, 1423, 1424, 1425, 1399, 1423, 1424, 1425, 1400, 1423, 1424, 1425, 1405, - 1452, 1414, 1423, 1424, 1425, 1414, 1424, 1423, 1425, 1446, 1452, 1414, 1423, 1424, 1425, 1414, - 1423, 1424, 1425, 1404, 1450, 1424, 1423, 1425, 1424, 1423, 1425, 1399, 1448, 1449, 1423, 1424, - 1425, 1400, 1424, 1423, 1425, 1445, 1405, 1453, 1414, 1424, 1423, 1425, 1414, 1424, 1423, 1425, - 1426, 1427, 1428, 1429, 1430, 1432, 1433, 1434, 1435, 1437, 1438, 1439, 1440, 1447, 1453, 1414, - 1424, 1423, 1425, 1431, 1436, 1442, 1443, 1444, 1414, 1423, 1424, 1425, 1404, 1451, 1424, 1423, - 1425, 1424, 1423, 1425, 1441, 1399, 1424, 1423, 1425, 1400, 1424, 1423, 1425, 1405, 1414, 1415, - 1424, 1423, 1425, 1406, 1414, 1416, 1424, 1423, 1425, 1414, 1422, 1423, 1424, 1425, 1414, 1422, - 1423, 1424, 1425, 1404, 1410, 1421, 1424, 1423, 1425, 1411, 1421, 1423, 1424, 1425, 1399, 1412, - 1423, 1424, 1425, 1400, 1412, 1424, 1423, 1425, 1405, 1414, 1417, 1423, 1424, 1425, 1407, 1414, - 1417, 1424, 1423, 1425, 1414, 1423, 1424, 1425, 1414, 1424, 1423, 1425, 1404, 1423, 1424, 1425, - 1423, 1424, 1425, 1399, 1424, 1423, 1425, 1400, 1424, 1423, 1425, 1405, 1414, 1423, 1424, 1425, - 1409, 1414, 1424, 1423, 1425, 1414, 1424, 1423, 1425, 1414, 1424, 1423, 1425, 1404, 1419, 1424, - 1423, 1425, 1419, 1424, 1423, 1425, 1399, 1420, 1424, 1423, 1425, 1400, 1420, 1424, 1423, 1425, - 1405, 1414, 1424, 1423, 1425, 1414, 1423, 1424, 1425, 1414, 1424, 1423, 1425, 1408, 1414, 1424, - 1423, 1425, 1404, 1418, 1423, 1424, 1425, 1418, 1423, 1424, 1425, 1399, 1423, 1424, 1425, 1400, - 1424, 1423, 1425, 1405, 1414, 1423, 1424, 1425, 1414, 1424, 1423, 1425, 1414, 1423, 1424, 1425, - 1414, 1423, 1424, 1425, 1404, 1454, 1424, 1423, 1425, 1423, 1424, 1425, 1399, 1423, 1424, 1425, - 1400, 1423, 1424, 1425, 1405, 1414, 1424, 1423, 1425, 1414, 1424, 1423, 1425, 1414, 1424, 1423, - 1425, 1414, 1424, 1423, 1425, 1404, 1455, 1423, 1424, 1425, 1423, 1424, 1425, 1399, 1424, 1423, - 1425, 1400, 1423, 1424, 1425, 1405, 1414, 1424, 1423, 1425, 1414, 1424, 1423, 1425, 1414, 1424, - 1423, 1425, 1414, 1424, 1423, 1425, 1404, 1423, 1424, 1425, 1424, 1423, 1425, 1399, 1424, 1423, - 1425, 1400, 1423, 1424, 1425, 1456, 1457, 1458, 1405, 1414, 1424, 1423, 1425, 1414, 1424, 1423, - 1425, 1414, 1424, 1423, 1425, 1414, 1424, 1423, 1425, 1404, 1424, 1423, 1425, 1424, 1423, 1425, - 1399, 1424, 1423, 1425, 1400, 1459, 1423, 1424, 1425, 1463, 1462, 1465, 1464, 1469, 1461, 1460, - 1471, 1475, 1468, 1474, 1477, 1476, 1473, 1471, 1472, 1466, 1467, 1470, 1478, 1479, 1482, 1486, - 1541, 1485, 1544, 1481, 1487, 1540, 1484, 1543, 1480, 1488, 1539, 1483, 1542, 1489, 1495, 1496, - 1497, 1498, 1499, 1505, 1511, 1517, 1523, 1529, 1491, 1492, 1493, 1494, 1500, 1506, 1512, 1518, - 1524, 1530, 1501, 1507, 1513, 1519, 1525, 1531, 1490, 1503, 1509, 1515, 1521, 1527, 1533, 1504, - 1510, 1516, 1522, 1528, 1534, 1502, 1508, 1514, 1520, 1526, 1532, 1535, 1545, 1546, 1538, 1549, - 1536, 1547, 1537, 1550, 1548, 1573, 1572, 1563, 1569, 1570, 1563, 1568, 1571, 1573, 1572, 1569, - 1570, 1568, 1571, 1557, 1558, 1559, 1560, 1561, 1562, 1573, 1551, 1552, 1553, 1554, 1555, 1556, - 1564, 1565, 1566, 1567, 1572, 1563, 1569, 1570, 1563, 1568, 1571, 1557, 1558, 1559, 1560, 1561, - 1562, 1573, 1551, 1552, 1553, 1554, 1555, 1556, 1572, 1569, 1570, 1568, 1571, 1563, 1563, 1564, - 1565, 1566, 1567, 1563, 1563, 1590, 1313, 1314, 1329, 1330, 1331, 1596, 1342, 1343, 1601, 1602, - 1603, 1604, 1346, 1606, 1349, 1350, 1353, 1354, 1355, 1356, 1357, 1358, 1367, 1368, 1369, 1370, - 1619, 1313, 1314, 1329, 1330, 1331, 1596, 1343, 1601, 1602, 1603, 1604, 1346, 1606, 1349, 1350, - 1353, 1354, 1355, 1356, 1357, 1358, 1367, 1368, 1369, 1370, 1619, 1313, 1314, 1329, 1330, 1331, - 1596, 1343, 1601, 1602, 1603, 1604, 1346, 1606, 1349, 1350, 1353, 1354, 1355, 1356, 1357, 1358, - 1367, 1368, 1369, 1370, 1619, 1575, 1584, 1585, 1313, 1314, 1315, 1329, 1330, 1331, 1332, 1596, - 1341, 1343, 1601, 1602, 1603, 1604, 1346, 1606, 1349, 1350, 1353, 1354, 1355, 1356, 1357, 1358, - 1367, 1368, 1369, 1370, 1619, 1590, 1313, 1314, 1329, 1330, 1331, 1596, 1342, 1343, 1601, 1602, - 1603, 1604, 1346, 1606, 1349, 1350, 1353, 1354, 1355, 1356, 1357, 1358, 1367, 1368, 1369, 1370, - 1615, 1619, 1313, 1314, 1329, 1330, 1331, 1596, 1343, 1601, 1602, 1603, 1604, 1346, 1606, 1349, - 1350, 1353, 1354, 1355, 1356, 1357, 1358, 1367, 1368, 1369, 1370, 1615, 1619, 1313, 1314, 1329, - 1330, 1331, 1596, 1343, 1601, 1602, 1603, 1604, 1346, 1606, 1349, 1350, 1353, 1354, 1355, 1356, - 1357, 1358, 1367, 1368, 1369, 1370, 1615, 1619, 1574, 1584, 1585, 1313, 1314, 1315, 1329, 1330, - 1331, 1332, 1596, 1341, 1343, 1601, 1602, 1603, 1604, 1346, 1606, 1349, 1350, 1353, 1354, 1355, - 1356, 1357, 1358, 1367, 1368, 1369, 1370, 1615, 1619, 1291, 1292, 1324, 1325, 1326, 1327, 1335, - 1336, 1337, 1338, 1597, 1598, 1599, 1600, 1606, 1351, 1352, 1359, 1360, 1361, 1362, 1363, 1364, - 1365, 1366, 1611, 1612, 1613, 1614, 1388, 1617, 1620, 1597, 1598, 1599, 1600, 1606, 1351, 1352, - 1359, 1360, 1361, 1362, 1363, 1364, 1365, 1366, 1617, 1620, 1597, 1598, 1599, 1600, 1606, 1351, - 1352, 1359, 1360, 1361, 1362, 1363, 1364, 1365, 1366, 1617, 1620, 1582, 1583, 1322, 1323, 1333, - 1334, 1339, 1340, 1597, 1598, 1599, 1600, 1606, 1351, 1352, 1359, 1360, 1361, 1362, 1363, 1364, - 1365, 1366, 1607, 1608, 1609, 1610, 1617, 1620, 1324, 1325, 1326, 1327, 1335, 1336, 1337, 1338, - 1597, 1598, 1599, 1600, 1606, 1351, 1352, 1359, 1360, 1361, 1362, 1363, 1364, 1365, 1366, 1611, - 1612, 1613, 1614, 1388, 1616, 1618, 1620, 1597, 1598, 1599, 1600, 1606, 1351, 1352, 1359, 1360, - 1361, 1362, 1363, 1364, 1365, 1366, 1616, 1618, 1620, 1293, 1294, 1295, 1296, 1305, 1306, 1307, - 1308, 1597, 1598, 1599, 1600, 1606, 1351, 1352, 1359, 1360, 1361, 1362, 1363, 1364, 1365, 1366, - 1616, 1618, 1620, 1582, 1583, 1303, 1304, 1322, 1323, 1333, 1334, 1339, 1340, 1597, 1598, 1599, - 1600, 1606, 1351, 1352, 1359, 1360, 1361, 1362, 1363, 1364, 1365, 1366, 1607, 1608, 1609, 1610, - 1616, 1618, 1620, 1594, 1595, 1596, 1344, 1605, 1347, 1606, 1371, 1372, 1373, 1374, 1375, 1376, - 1377, 1378, 1379, 1380, 1381, 1382, 1595, 1596, 1344, 1605, 1347, 1606, 1371, 1372, 1373, 1374, - 1375, 1376, 1377, 1378, 1379, 1380, 1381, 1382, 1596, 1605, 1345, 1348, 1606, 1371, 1372, 1373, - 1374, 1375, 1376, 1377, 1378, 1379, 1380, 1381, 1382, 1596, 1345, 1605, 1348, 1606, 1371, 1372, - 1373, 1374, 1375, 1376, 1377, 1378, 1379, 1380, 1381, 1382, 1594, 1595, 1596, 1344, 1605, 1347, - 1606, 1371, 1372, 1373, 1374, 1375, 1376, 1377, 1378, 1379, 1380, 1381, 1382, 1595, 1596, 1344, - 1605, 1347, 1606, 1371, 1372, 1373, 1374, 1375, 1376, 1377, 1378, 1379, 1380, 1381, 1382, 1596, - 1605, 1345, 1348, 1606, 1371, 1372, 1373, 1374, 1375, 1376, 1377, 1378, 1379, 1380, 1381, 1382, - 1596, 1605, 1345, 1348, 1606, 1371, 1372, 1373, 1374, 1375, 1376, 1377, 1378, 1379, 1380, 1381, - 1382, 1606, 1385, 1386, 1387, 1606, 1385, 1386, 1387, 1606, 1385, 1386, 1387, 1576, 1577, 1578, - 1579, 1580, 1581, 1586, 1587, 1588, 1589, 1591, 1592, 1593, 1606, 1385, 1386, 1387, 1606, 1385, - 1386, 1387, 1606, 1385, 1386, 1387, 1606, 1385, 1386, 1387, 1576, 1577, 1578, 1579, 1580, 1581, - 1586, 1587, 1588, 1589, 1591, 1592, 1593, 1606, 1385, 1386, 1387, + 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, + 461, 462, 463, 464, 465, 466, 468, 467, 470, 469, 472, 471, 473, 474, 475, 476, + 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, + 447, 448, 449, 477, 450, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 489, + 488, 491, 490, 492, 493, 495, 494, 497, 496, 499, 498, 500, 501, 502, 503, 431, + 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, + 448, 449, 504, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, + 444, 445, 446, 447, 448, 449, 505, 506, 507, 504, 379, 377, 376, 375, 373, 372, + 371, 374, 369, 368, 370, 378, 366, 365, 367, 364, 363, 362, 360, 361, 359, 358, + 380, 381, 393, 392, 391, 390, 389, 388, 387, 386, 384, 383, 385, 382, 395, 396, + 394, 404, 403, 405, 402, 401, 400, 399, 398, 397, 421, 420, 419, 418, 416, 415, + 414, 417, 412, 411, 410, 413, 408, 407, 409, 406, 422, 423, 424, 425, 426, 427, + 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, + 444, 445, 446, 447, 448, 449, 508, 451, 452, 453, 454, 455, 456, 457, 458, 459, + 460, 461, 462, 464, 463, 466, 465, 467, 468, 470, 469, 472, 471, 473, 474, 475, + 476, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, + 446, 447, 448, 449, 509, 508, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, + 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, + 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, + 447, 448, 449, 510, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, + 443, 444, 445, 446, 447, 448, 449, 505, 506, 511, 510, 512, 513, 514, 515, 516, + 517, 519, 518, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, + 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 546, 545, 547, 548, + 549, 550, 551, 552, 553, 554, 555, 557, 556, 558, 559, 560, 561, 563, 562, 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, 611, 610, 612, + 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 625, 624, 626, 627, 628, + 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, + 645, 646, 647, 648, 649, 650, 513, 512, 514, 515, 516, 517, 518, 519, 520, 521, + 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, + 538, 539, 540, 541, 542, 543, 544, 546, 545, 547, 548, 549, 550, 551, 552, 553, + 554, 555, 556, 557, 558, 559, 560, 561, 563, 562, 564, 565, 566, 567, 568, 651, + 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, 652, 609, 611, 610, 612, 613, + 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, + 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, + 646, 647, 648, 649, 653, 378, 379, 377, 374, 375, 376, 373, 372, 370, 371, 369, + 368, 366, 365, 364, 361, 362, 363, 367, 360, 359, 358, 654, 655, 393, 392, 391, + 390, 388, 387, 389, 386, 384, 383, 382, 385, 405, 404, 403, 402, 401, 399, 398, + 400, 397, 394, 395, 396, 421, 420, 417, 418, 419, 416, 415, 414, 412, 411, 409, + 410, 408, 407, 406, 413, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 431, + 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, + 448, 449, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, + 680, 681, 682, 684, 683, 685, 686, 664, 665, 431, 432, 433, 434, 435, 436, 437, + 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 687, 666, 688, 689, + 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 703, 702, 705, 704, + 706, 707, 664, 665, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, + 443, 444, 445, 446, 447, 448, 449, 708, 709, 715, 712, 714, 713, 710, 716, 711, + 723, 724, 721, 720, 717, 722, 719, 718, 725, 726, 728, 727, 732, 730, 733, 734, + 729, 731, 736, 735, 737, 739, 738, 740, 741, 744, 745, 743, 742, 746, 747, 749, + 748, 751, 750, 752, 754, 755, 757, 756, 753, 758, 760, 761, 762, 764, 759, 763, + 765, 766, 768, 767, 769, 770, 773, 772, 775, 776, 774, 771, 779, 778, 777, 780, + 781, 782, 783, 784, 785, 788, 787, 786, 789, 792, 793, 791, 790, 797, 796, 795, + 794, 800, 798, 801, 799, 804, 802, 803, 805, 807, 806, 808, 809, 810, 811, 812, + 813, 814, 815, 817, 816, 821, 819, 820, 818, 823, 822, 825, 824, 827, 826, 828, + 829, 830, 831, 834, 835, 833, 832, 838, 837, 839, 836, 841, 840, 664, 665, 431, + 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, + 448, 449, 842, 708, 379, 378, 376, 377, 375, 374, 373, 372, 370, 369, 368, 371, + 366, 365, 363, 364, 362, 361, 359, 360, 358, 367, 654, 655, 393, 392, 389, 390, + 391, 388, 387, 386, 384, 383, 382, 385, 405, 404, 403, 400, 401, 402, 399, 398, + 397, 394, 395, 396, 421, 420, 418, 417, 416, 413, 414, 415, 419, 412, 411, 409, + 408, 407, 410, 406, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 431, 432, + 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, + 449, 843, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, + 682, 681, 683, 684, 685, 686, 664, 665, 431, 432, 433, 434, 435, 436, 437, 438, + 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 844, 843, 688, 689, 690, + 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 703, 702, 704, 705, 706, + 707, 664, 665, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, + 444, 445, 446, 447, 448, 449, 845, 709, 714, 715, 716, 712, 713, 711, 710, 722, + 723, 724, 720, 717, 718, 719, 721, 725, 728, 727, 726, 733, 730, 731, 732, 734, + 729, 736, 735, 737, 740, 741, 739, 738, 743, 744, 745, 742, 749, 748, 746, 747, + 752, 751, 750, 758, 757, 756, 753, 754, 755, 760, 761, 762, 759, 763, 764, 770, + 769, 767, 765, 766, 768, 774, 775, 773, 772, 771, 776, 779, 778, 777, 781, 782, + 780, 783, 784, 785, 789, 787, 788, 786, 792, 793, 790, 791, 797, 795, 794, 796, + 801, 798, 799, 800, 804, 803, 802, 805, 808, 809, 807, 806, 811, 810, 813, 812, + 815, 814, 816, 817, 818, 821, 820, 819, 822, 823, 825, 824, 827, 826, 828, 829, + 830, 831, 832, 835, 834, 833, 838, 839, 837, 836, 840, 841, 664, 665, 431, 432, + 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, + 449, 846, 845, 847, 848, 849, 850, 851, 852, 853, 854, 855, 856, 857, 858, 859, + 860, 861, 862, 863, 865, 866, 864, 867, 868, 870, 869, 871, 872, 873, 874, 875, + 876, 877, 878, 879, 880, 881, 882, 883, 884, 885, 886, 887, 888, 889, 858, 859, + 890, 891, 892, 893, 894, 895, 896, 897, 898, 899, 900, 901, 902, 903, 904, 905, + 871, 872, 878, 879, 880, 881, 882, 883, 884, 885, 886, 887, 888, 889, 873, 874, + 875, 890, 891, 892, 893, 894, 895, 896, 897, 898, 899, 900, 901, 902, 903, 904, + 905, 876, 877, 906, 907, 908, 909, 910, 911, 912, 913, 914, 915, 916, 917, 918, + 906, 907, 908, 909, 910, 919, 920, 911, 912, 918, 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, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, + 959, 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 965, 970, 971, 972, 973, + 974, 975, 976, 977, 978, 979, 975, 980, 981, 982, 983, 984, 985, 986, 987, 988, + 989, 990, 991, 992, 993, 994, 995, 996, 997, 998, 999, 1000, 1001, 1002, 1003, 1004, + 1005, 988, 990, 1006, 1006, 1007, 1008, 996, 1007, 1008, 1003, 1009, 1010, 1009, 1011, 1012, + 1013, 1011, 1014, 1013, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024, 1025, 1026, + 1027, 1028, 1029, 1026, 1030, 1028, 1031, 1032, 1033, 1034, 1035, 1033, 1036, 1035, 1037, 1038, + 1039, 1040, 1039, 1040, 1039, 1040, 1039, 1040, 1039, 1040, 1039, 1040, 1039, 1040, 1039, 1040, + 1039, 1040, 1039, 1040, 1039, 1040, 1039, 1040, 1039, 1040, 1039, 1040, 1039, 1040, 1039, 1040, + 1039, 1041, 1039, 1041, 1039, 1041, 1039, 1041, 1039, 1041, 1039, 1041, 1039, 1041, 1039, 1041, + 1039, 1041, 1039, 1041, 1039, 1041, 1039, 1041, 1039, 1041, 1039, 1041, 1039, 1041, 1039, 1041, + 1042, 1043, 1044, 1057, 1058, 1045, 1046, 1057, 1058, 1047, 1048, 1049, 1050, 1051, 1052, 1053, + 1054, 1055, 1056, 1057, 1058, 1045, 1046, 1059, 1060, 1057, 1058, 1047, 1048, 1042, 1043, 1044, + 1062, 1061, 1057, 1063, 1058, 1045, 1064, 1046, 1066, 1065, 1057, 1067, 1058, 1047, 1068, 1048, + 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1045, 1046, 1059, 1060, 1057, 1058, + 1047, 1048, 1069, 1070, 1072, 1071, 1045, 1046, 1069, 1070, 1074, 1073, 1047, 1048, 1075, 1076, + 1077, 1078, 1079, 1080, 1069, 1070, 1081, 1082, 1045, 1046, 1084, 1083, 1069, 1070, 1086, 1085, + 1047, 1048, 1069, 1070, 1072, 1071, 1045, 1046, 1069, 1070, 1073, 1074, 1047, 1048, 1075, 1076, + 1077, 1078, 1079, 1080, 1069, 1070, 1082, 1081, 1045, 1046, 1069, 1070, 1086, 1085, 1047, 1048, + 1057, 1058, 1088, 1087, 1057, 1058, 1089, 1090, 1091, 1092, 1057, 1058, 1093, 1094, 1057, 1058, + 1096, 1095, 1057, 1058, 1088, 1087, 1057, 1058, 1089, 1090, 1057, 1058, 1093, 1094, 1057, 1058, + 1096, 1095, 1069, 1070, 1088, 1087, 1069, 1070, 1089, 1090, 1069, 1070, 1069, 1070, 1069, 1070, + 1087, 1088, 1069, 1070, 1090, 1089, 1069, 1070, 1069, 1070, 1097, 1098, 1099, 1100, 1101, 1102, + 1103, 1104, 1105, 1057, 1106, 1107, 1109, 1108, 1058, 1110, 1111, 1112, 1113, 1114, 1103, 1102, + 1115, 1057, 1117, 1116, 1118, 1119, 1058, 1120, 1111, 1121, 1113, 1098, 1099, 1122, 1123, 1124, + 1125, 1103, 1102, 1126, 1057, 1127, 1128, 1129, 1130, 1058, 1110, 1111, 1112, 1113, 1102, 1103, + 1115, 1131, 1132, 1057, 1134, 1133, 1136, 1135, 1058, 1120, 1111, 1121, 1113, 1100, 1137, 1101, + 1102, 1103, 1104, 1105, 1057, 1106, 1107, 1109, 1108, 1058, 1110, 1111, 1112, 1113, 1102, 1103, + 1115, 1057, 1116, 1117, 1119, 1118, 1058, 1120, 1111, 1121, 1113, 1122, 1123, 1137, 1124, 1125, + 1102, 1103, 1126, 1057, 1128, 1127, 1129, 1130, 1058, 1110, 1111, 1112, 1113, 1103, 1102, 1115, + 1131, 1132, 1057, 1134, 1133, 1135, 1136, 1058, 1120, 1111, 1121, 1113, 1138, 1139, 1141, 1140, + 1143, 1142, 1144, 1145, 1146, 1147, 1110, 1111, 1112, 1113, 1115, 1148, 1149, 1150, 1151, 1153, + 1152, 1120, 1111, 1121, 1113, 1154, 1155, 1157, 1156, 1159, 1158, 1110, 1111, 1112, 1113, 1162, + 1161, 1160, 1163, 1164, 1166, 1165, 1168, 1167, 1170, 1169, 1171, 1172, 1173, 1174, 1175, 1176, + 1177, 1178, 1180, 1179, 1181, 1182, 1183, 1184, 1187, 1186, 1185, 1190, 1189, 1188, 1191, 1192, + 1212, 1202, 1218, 1219, 1225, 1207, 1226, 1200, 1194, 1205, 1214, 1215, 1195, 1206, 1210, 1204, + 1196, 1221, 1201, 1208, 1203, 1197, 1213, 1211, 1193, 1209, 1216, 1224, 1220, 1217, 1223, 1199, + 1222, 1198, 1227, 1228, 1230, 1229, 1232, 1233, 1231, 1234, 1236, 1235, 1238, 1237, 1239, 1240, + 1242, 1241, 1243, 1244, 1245, 1115, 1120, 1111, 1121, 1113, 1138, 1139, 1140, 1141, 1142, 1143, + 1144, 1246, 1145, 1147, 1146, 1110, 1111, 1112, 1113, 1115, 1148, 1149, 1150, 1151, 1153, 1152, + 1120, 1111, 1121, 1113, 1247, 1248, 1154, 1155, 1156, 1157, 1159, 1158, 1110, 1111, 1112, 1113, + 1161, 1162, 1160, 1163, 1164, 1166, 1165, 1167, 1168, 1169, 1170, 1171, 1172, 1174, 1173, 1176, + 1175, 1177, 1178, 1179, 1180, 1249, 1182, 1181, 1183, 1184, 1185, 1186, 1187, 1188, 1189, 1190, + 1192, 1191, 1226, 1200, 1211, 1212, 1210, 1209, 1207, 1206, 1204, 1201, 1202, 1203, 1205, 1208, + 1213, 1199, 1198, 1196, 1193, 1194, 1195, 1197, 1220, 1219, 1217, 1214, 1215, 1223, 1224, 1225, + 1222, 1216, 1218, 1221, 1227, 1228, 1230, 1229, 1234, 1233, 1232, 1231, 1236, 1235, 1237, 1238, + 1240, 1239, 1242, 1241, 1243, 1244, 1245, 1115, 1120, 1111, 1121, 1113, 1057, 1058, 1250, 1057, + 1058, 1250, 1057, 1058, 1250, 1057, 1058, 1250, 1057, 1058, 1250, 1057, 1058, 1250, 1057, 1058, + 1250, 1057, 1058, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 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, 1410, 1411, 1412, 1413, 1414, + 1415, 1416, 1417, 1418, 1419, 1420, 1421, 1422, 1423, 1424, 1425, 1426, 1427, 1428, 1429, 1430, + 1431, 1432, 1433, 1434, 1435, 1436, 1437, 1438, 1439, 1440, 1441, 1442, 1443, 1444, 1445, 1446, + 1447, 1448, 1449, 1450, 1451, 1452, 1453, 1454, 1455, 1456, 1457, 1458, 1459, 1460, 1461, 1462, + 1463, 1464, 1465, 1466, 1420, 1421, 1467, 1468, 1469, 1425, 1426, 1470, 1471, 1472, 1473, 1474, + 1435, 1475, 1476, 1445, 1444, 1446, 1420, 1421, 1425, 1426, 1427, 1428, 1429, 1430, 1432, 1431, + 1433, 1435, 1436, 1437, 1438, 1439, 1440, 1441, 1442, 1443, 1445, 1444, 1446, 1477, 1478, 1479, + 1420, 1421, 1425, 1426, 1480, 1435, 1475, 1476, 1445, 1444, 1446, 1481, 1482, 1483, 1484, 1485, + 1486, 1487, 1488, 1489, 1490, 1491, 1492, 1493, 1494, 1495, 1496, 1497, 1498, 1499, 1500, 1501, + 1502, 1503, 1504, 1505, 1506, 1507, 1508, 1509, 1510, 1511, 1512, 1513, 1514, 1515, 1516, 1517, + 1518, 1519, 1520, 1521, 1522, 1523, 1524, 1525, 1526, 1527, 1528, 1529, 1530, 1531, 1532, 1533, + 1534, 1535, 1536, 1537, 1538, 1539, 1540, 1541, 1542, 1543, 1544, 1545, 1546, 1547, 1548, 1549, + 1550, 1551, 1552, 1553, 1554, 1555, 1556, 1557, 1558, 1559, 1560, 1561, 1562, 1563, 1564, 1565, + 1566, 1567, 1568, 1569, 1570, 1571, 1572, 1573, 1574, 1575, 1576, 1577, 1578, 1579, 1580, 1581, + 1582, 1583, 1584, 1585, 1586, 1587, 1588, 1590, 1589, 1592, 1591, 1594, 1593, 1595, 1596, 1312, + 1313, 1314, 1315, 1316, 1317, 1597, 1598, 1599, 1600, 1601, 1602, 1603, 1604, 1605, 1606, 1607, + 1608, 1609, 1610, 1611, 1324, 1325, 1326, 1327, 1328, 1329, 1612, 1613, 1614, 1334, 1335, 1336, + 1615, 1343, 1344, 1345, 1346, 1347, 1348, 1350, 1351, 1616, 1352, 1353, 1617, 1354, 1355, 1356, + 1357, 1358, 1359, 1360, 1361, 1362, 1363, 1364, 1618, 1619, 1620, 1621, 1622, 1623, 1624, 1625, + 1365, 1626, 1366, 1367, 1368, 1369, 1627, 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, 1628, 1629, 1630, 1631, 1632, 1633, 1634, + 1635, 1406, 1407, 1408, 1409, 1636, 1637, 1638, 1639, 1640, 1641, 1642, 1642, 1643, 1643, 1644, + 1644, 1645, 1646, 1647, 1648, 1649, 1649, 1650, 1650, 1651, 1651, 1652, 1652, 1653, 1654, 1655, + 1656, 1657, 1658, 1659, 1660, 1661, 1662, 1663, 1664, 1665, 1666, 1667, 1668, 1669, 1670, 1671, + 1672, 1673, 1674, 1675, 1676, 1676, 1677, 1678, 1679, 1680, 1681, 1682, 1683, 1684, 1685, 1685, + 1686, 1686, 1687, 1687, 1688, 1688, 1689, 1689, 1690, 1690, 1691, 1691, 1692, 1692, 1693, 1693, + 1694, 1694, 1695, 1696, 1697, 1698, 1699, 1700, 1701, 1702, 1703, 1704, 1705, 1706, 1707, 1708, + 1709, 1710, 1711, 1712, 1713, 1714, 1715, 1716, 1716, 1717, 1717, 1718, 1718, 1718, 1719, 1720, + 1718, 1721, 1721, 1259, 1260, 1261, 1262, 1267, 1273, 1263, 1272, 1273, 1272, 1269, 1268, 1269, + 1266, 1268, 1256, 1257, 1264, 1273, 1252, 1253, 1254, 1255, 1258, 1272, 1273, 1272, 1271, 1270, + 1265, 1271, 1270, 1273, 1272, 1273, 1251, 1272, 1273, 1272, 1273, 1272, 1286, 1278, 1285, 1292, + 1292, 1274, 1275, 1276, 1277, 1283, 1291, 1282, 1291, 1284, 1284, 1287, 1279, 1287, 1281, 1289, + 1289, 1290, 1290, 1280, 1288, 1288, 1303, 1310, 1311, 1303, 1306, 1309, 1307, 1308, 1303, 1310, + 1311, 1293, 1294, 1295, 1296, 1303, 1306, 1309, 1307, 1308, 1310, 1311, 1306, 1309, 1307, 1308, + 1310, 1311, 1306, 1309, 1307, 1308, 1293, 1294, 1295, 1296, 1300, 1301, 1302, 1305, 1297, 1298, + 1299, 1304, 1300, 1301, 1302, 1305, 1297, 1298, 1299, 1304, 1330, 1334, 1335, 1337, 1349, 1350, + 1351, 1352, 1363, 1364, 1367, 1370, 1371, 1374, 1375, 1376, 1377, 1378, 1379, 1388, 1389, 1390, + 1391, 1414, 1330, 1334, 1335, 1338, 1349, 1350, 1351, 1352, 1364, 1367, 1370, 1371, 1374, 1375, + 1376, 1377, 1378, 1379, 1388, 1389, 1390, 1391, 1414, 1334, 1335, 1337, 1349, 1350, 1351, 1352, + 1364, 1367, 1370, 1371, 1374, 1375, 1376, 1377, 1378, 1379, 1388, 1389, 1390, 1391, 1414, 1320, + 1321, 1322, 1323, 1334, 1335, 1336, 1338, 1349, 1350, 1351, 1352, 1353, 1362, 1364, 1367, 1370, + 1371, 1374, 1375, 1376, 1377, 1378, 1379, 1388, 1389, 1390, 1391, 1414, 1334, 1335, 1337, 1350, + 1351, 1352, 1363, 1364, 1367, 1370, 1371, 1374, 1375, 1376, 1377, 1378, 1379, 1388, 1389, 1390, + 1391, 1410, 1414, 1334, 1335, 1338, 1350, 1351, 1352, 1364, 1367, 1370, 1371, 1374, 1375, 1376, + 1377, 1378, 1379, 1388, 1389, 1390, 1391, 1410, 1414, 1334, 1335, 1337, 1350, 1351, 1352, 1364, + 1367, 1370, 1371, 1374, 1375, 1376, 1377, 1378, 1379, 1388, 1389, 1390, 1391, 1410, 1414, 1320, + 1321, 1322, 1323, 1334, 1335, 1336, 1338, 1350, 1351, 1352, 1353, 1362, 1364, 1367, 1370, 1371, + 1374, 1375, 1376, 1377, 1378, 1379, 1388, 1389, 1390, 1391, 1410, 1414, 1312, 1313, 1331, 1332, + 1333, 1345, 1346, 1347, 1348, 1356, 1357, 1358, 1359, 1372, 1373, 1380, 1381, 1382, 1383, 1384, + 1385, 1386, 1387, 1404, 1405, 1409, 1412, 1415, 1372, 1373, 1380, 1381, 1382, 1383, 1384, 1385, + 1386, 1387, 1412, 1415, 1331, 1372, 1373, 1380, 1381, 1382, 1383, 1384, 1385, 1386, 1387, 1412, + 1415, 1343, 1344, 1354, 1355, 1360, 1361, 1372, 1373, 1380, 1381, 1382, 1383, 1384, 1385, 1386, + 1387, 1412, 1415, 1331, 1332, 1333, 1345, 1346, 1347, 1348, 1356, 1357, 1358, 1359, 1372, 1373, + 1380, 1381, 1382, 1383, 1384, 1385, 1386, 1387, 1404, 1405, 1409, 1411, 1413, 1415, 1372, 1373, + 1380, 1381, 1382, 1383, 1384, 1385, 1386, 1387, 1411, 1413, 1415, 1314, 1315, 1316, 1317, 1326, + 1327, 1328, 1329, 1331, 1372, 1373, 1380, 1381, 1382, 1383, 1384, 1385, 1386, 1387, 1411, 1413, + 1415, 1318, 1319, 1324, 1325, 1343, 1344, 1354, 1355, 1360, 1361, 1372, 1373, 1380, 1381, 1382, + 1383, 1384, 1385, 1386, 1387, 1411, 1413, 1415, 1339, 1365, 1368, 1392, 1393, 1394, 1395, 1396, + 1397, 1398, 1399, 1400, 1401, 1402, 1403, 1340, 1365, 1368, 1392, 1393, 1394, 1395, 1396, 1397, + 1398, 1399, 1400, 1401, 1402, 1403, 1341, 1366, 1369, 1392, 1393, 1394, 1395, 1396, 1397, 1398, + 1399, 1400, 1401, 1402, 1403, 1342, 1366, 1369, 1392, 1393, 1394, 1395, 1396, 1397, 1398, 1399, + 1400, 1401, 1402, 1403, 1339, 1365, 1368, 1392, 1393, 1394, 1395, 1396, 1397, 1398, 1399, 1400, + 1401, 1402, 1403, 1340, 1365, 1368, 1392, 1393, 1394, 1395, 1396, 1397, 1398, 1399, 1400, 1401, + 1402, 1403, 1341, 1366, 1369, 1392, 1393, 1394, 1395, 1396, 1397, 1398, 1399, 1400, 1401, 1402, + 1403, 1342, 1366, 1369, 1392, 1393, 1394, 1395, 1396, 1397, 1398, 1399, 1400, 1401, 1402, 1403, + 1406, 1407, 1408, 1406, 1407, 1408, 1406, 1407, 1408, 1406, 1407, 1408, 1406, 1407, 1408, 1406, + 1407, 1408, 1406, 1407, 1408, 1406, 1407, 1408, 1416, 1418, 1419, 1422, 1426, 1434, 1435, 1436, + 1445, 1444, 1446, 1418, 1419, 1423, 1427, 1434, 1435, 1437, 1445, 1444, 1446, 1418, 1419, 1434, + 1435, 1443, 1445, 1444, 1446, 1418, 1419, 1434, 1435, 1443, 1445, 1444, 1446, 1417, 1424, 1425, + 1431, 1442, 1445, 1444, 1446, 1432, 1442, 1444, 1445, 1446, 1420, 1433, 1444, 1445, 1446, 1421, + 1433, 1445, 1444, 1446, 1426, 1435, 1438, 1444, 1445, 1446, 1428, 1435, 1438, 1445, 1444, 1446, + 1435, 1445, 1444, 1446, 1435, 1444, 1445, 1446, 1425, 1445, 1444, 1446, 1444, 1445, 1446, 1420, + 1444, 1445, 1446, 1421, 1445, 1444, 1446, 1419, 1426, 1434, 1435, 1444, 1445, 1446, 1419, 1430, + 1434, 1435, 1445, 1444, 1446, 1419, 1434, 1435, 1445, 1444, 1446, 1419, 1434, 1435, 1445, 1444, + 1446, 1425, 1440, 1444, 1445, 1446, 1440, 1445, 1444, 1446, 1420, 1441, 1444, 1445, 1446, 1421, + 1441, 1445, 1444, 1446, 1426, 1435, 1445, 1444, 1446, 1435, 1445, 1444, 1446, 1435, 1445, 1444, + 1446, 1429, 1435, 1444, 1445, 1446, 1425, 1439, 1444, 1445, 1446, 1439, 1444, 1445, 1446, 1420, + 1444, 1445, 1446, 1421, 1444, 1445, 1446, 1426, 1435, 1444, 1445, 1446, 1435, 1444, 1445, 1446, + 1435, 1444, 1445, 1446, 1435, 1445, 1444, 1446, 1425, 1475, 1444, 1445, 1446, 1445, 1444, 1446, + 1420, 1444, 1445, 1446, 1421, 1444, 1445, 1446, 1426, 1435, 1445, 1444, 1446, 1435, 1445, 1444, + 1446, 1435, 1444, 1445, 1446, 1435, 1444, 1445, 1446, 1425, 1476, 1444, 1445, 1446, 1444, 1445, + 1446, 1420, 1444, 1445, 1446, 1421, 1444, 1445, 1446, 1426, 1473, 1435, 1444, 1445, 1446, 1435, + 1445, 1444, 1446, 1467, 1473, 1435, 1444, 1445, 1446, 1435, 1444, 1445, 1446, 1425, 1471, 1445, + 1444, 1446, 1445, 1444, 1446, 1420, 1469, 1470, 1444, 1445, 1446, 1421, 1445, 1444, 1446, 1466, + 1426, 1474, 1435, 1445, 1444, 1446, 1435, 1445, 1444, 1446, 1447, 1448, 1449, 1450, 1451, 1453, + 1454, 1455, 1456, 1458, 1459, 1460, 1461, 1468, 1474, 1435, 1445, 1444, 1446, 1452, 1457, 1463, + 1464, 1465, 1435, 1444, 1445, 1446, 1425, 1472, 1445, 1444, 1446, 1445, 1444, 1446, 1462, 1420, + 1445, 1444, 1446, 1421, 1445, 1444, 1446, 1426, 1435, 1436, 1445, 1444, 1446, 1427, 1435, 1437, + 1445, 1444, 1446, 1435, 1443, 1444, 1445, 1446, 1435, 1443, 1444, 1445, 1446, 1425, 1431, 1442, + 1445, 1444, 1446, 1432, 1442, 1444, 1445, 1446, 1420, 1433, 1444, 1445, 1446, 1421, 1433, 1445, + 1444, 1446, 1426, 1435, 1438, 1444, 1445, 1446, 1428, 1435, 1438, 1445, 1444, 1446, 1435, 1444, + 1445, 1446, 1435, 1445, 1444, 1446, 1425, 1444, 1445, 1446, 1444, 1445, 1446, 1420, 1445, 1444, + 1446, 1421, 1445, 1444, 1446, 1426, 1435, 1444, 1445, 1446, 1430, 1435, 1445, 1444, 1446, 1435, + 1445, 1444, 1446, 1435, 1445, 1444, 1446, 1425, 1440, 1445, 1444, 1446, 1440, 1445, 1444, 1446, + 1420, 1441, 1445, 1444, 1446, 1421, 1441, 1445, 1444, 1446, 1426, 1435, 1445, 1444, 1446, 1435, + 1444, 1445, 1446, 1435, 1445, 1444, 1446, 1429, 1435, 1445, 1444, 1446, 1425, 1439, 1444, 1445, + 1446, 1439, 1444, 1445, 1446, 1420, 1444, 1445, 1446, 1421, 1445, 1444, 1446, 1426, 1435, 1444, + 1445, 1446, 1435, 1445, 1444, 1446, 1435, 1444, 1445, 1446, 1435, 1444, 1445, 1446, 1425, 1475, + 1445, 1444, 1446, 1444, 1445, 1446, 1420, 1444, 1445, 1446, 1421, 1444, 1445, 1446, 1426, 1435, + 1445, 1444, 1446, 1435, 1445, 1444, 1446, 1435, 1445, 1444, 1446, 1435, 1445, 1444, 1446, 1425, + 1476, 1444, 1445, 1446, 1444, 1445, 1446, 1420, 1445, 1444, 1446, 1421, 1444, 1445, 1446, 1426, + 1435, 1445, 1444, 1446, 1435, 1445, 1444, 1446, 1435, 1445, 1444, 1446, 1435, 1445, 1444, 1446, + 1425, 1444, 1445, 1446, 1445, 1444, 1446, 1420, 1445, 1444, 1446, 1421, 1444, 1445, 1446, 1477, + 1478, 1479, 1426, 1435, 1444, 1445, 1446, 1435, 1444, 1445, 1446, 1435, 1445, 1444, 1446, 1435, + 1445, 1444, 1446, 1425, 1445, 1444, 1446, 1445, 1444, 1446, 1420, 1445, 1444, 1446, 1421, 1480, + 1444, 1445, 1446, 1484, 1483, 1486, 1485, 1490, 1482, 1481, 1492, 1496, 1489, 1495, 1498, 1497, + 1494, 1492, 1493, 1487, 1488, 1491, 1499, 1500, 1503, 1507, 1562, 1506, 1565, 1502, 1508, 1561, + 1505, 1564, 1501, 1509, 1560, 1504, 1563, 1510, 1516, 1517, 1518, 1519, 1520, 1526, 1532, 1538, + 1544, 1550, 1512, 1513, 1514, 1515, 1521, 1527, 1533, 1539, 1545, 1551, 1522, 1528, 1534, 1540, + 1546, 1552, 1511, 1524, 1530, 1536, 1542, 1548, 1554, 1525, 1531, 1537, 1543, 1549, 1555, 1523, + 1529, 1535, 1541, 1547, 1553, 1556, 1566, 1567, 1559, 1570, 1557, 1568, 1558, 1571, 1569, 1593, + 1594, 1584, 1590, 1591, 1584, 1589, 1592, 1593, 1594, 1590, 1591, 1589, 1592, 1578, 1579, 1580, + 1581, 1582, 1583, 1593, 1572, 1573, 1574, 1575, 1576, 1577, 1585, 1586, 1587, 1588, 1594, 1584, + 1590, 1591, 1584, 1589, 1592, 1578, 1579, 1580, 1581, 1582, 1583, 1593, 1572, 1573, 1574, 1575, + 1576, 1577, 1594, 1590, 1591, 1589, 1592, 1584, 1584, 1585, 1586, 1587, 1588, 1584, 1584, 1611, + 1334, 1335, 1350, 1351, 1352, 1617, 1363, 1364, 1622, 1623, 1624, 1625, 1367, 1627, 1370, 1371, + 1374, 1375, 1376, 1377, 1378, 1379, 1388, 1389, 1390, 1391, 1640, 1334, 1335, 1350, 1351, 1352, + 1617, 1364, 1622, 1623, 1624, 1625, 1367, 1627, 1370, 1371, 1374, 1375, 1376, 1377, 1378, 1379, + 1388, 1389, 1390, 1391, 1640, 1334, 1335, 1350, 1351, 1352, 1617, 1364, 1622, 1623, 1624, 1625, + 1367, 1627, 1370, 1371, 1374, 1375, 1376, 1377, 1378, 1379, 1388, 1389, 1390, 1391, 1640, 1596, + 1605, 1606, 1334, 1335, 1336, 1350, 1351, 1352, 1353, 1617, 1362, 1364, 1622, 1623, 1624, 1625, + 1367, 1627, 1370, 1371, 1374, 1375, 1376, 1377, 1378, 1379, 1388, 1389, 1390, 1391, 1640, 1611, + 1334, 1335, 1350, 1351, 1352, 1617, 1363, 1364, 1622, 1623, 1624, 1625, 1367, 1627, 1370, 1371, + 1374, 1375, 1376, 1377, 1378, 1379, 1388, 1389, 1390, 1391, 1636, 1640, 1334, 1335, 1350, 1351, + 1352, 1617, 1364, 1622, 1623, 1624, 1625, 1367, 1627, 1370, 1371, 1374, 1375, 1376, 1377, 1378, + 1379, 1388, 1389, 1390, 1391, 1636, 1640, 1334, 1335, 1350, 1351, 1352, 1617, 1364, 1622, 1623, + 1624, 1625, 1367, 1627, 1370, 1371, 1374, 1375, 1376, 1377, 1378, 1379, 1388, 1389, 1390, 1391, + 1636, 1640, 1595, 1605, 1606, 1334, 1335, 1336, 1350, 1351, 1352, 1353, 1617, 1362, 1364, 1622, + 1623, 1624, 1625, 1367, 1627, 1370, 1371, 1374, 1375, 1376, 1377, 1378, 1379, 1388, 1389, 1390, + 1391, 1636, 1640, 1312, 1313, 1345, 1346, 1347, 1348, 1356, 1357, 1358, 1359, 1618, 1619, 1620, + 1621, 1627, 1372, 1373, 1380, 1381, 1382, 1383, 1384, 1385, 1386, 1387, 1632, 1633, 1634, 1635, + 1409, 1638, 1641, 1618, 1619, 1620, 1621, 1627, 1372, 1373, 1380, 1381, 1382, 1383, 1384, 1385, + 1386, 1387, 1638, 1641, 1618, 1619, 1620, 1621, 1627, 1372, 1373, 1380, 1381, 1382, 1383, 1384, + 1385, 1386, 1387, 1638, 1641, 1603, 1604, 1343, 1344, 1354, 1355, 1360, 1361, 1618, 1619, 1620, + 1621, 1627, 1372, 1373, 1380, 1381, 1382, 1383, 1384, 1385, 1386, 1387, 1628, 1629, 1630, 1631, + 1638, 1641, 1345, 1346, 1347, 1348, 1356, 1357, 1358, 1359, 1618, 1619, 1620, 1621, 1627, 1372, + 1373, 1380, 1381, 1382, 1383, 1384, 1385, 1386, 1387, 1632, 1633, 1634, 1635, 1409, 1637, 1639, + 1641, 1618, 1619, 1620, 1621, 1627, 1372, 1373, 1380, 1381, 1382, 1383, 1384, 1385, 1386, 1387, + 1637, 1639, 1641, 1314, 1315, 1316, 1317, 1326, 1327, 1328, 1329, 1618, 1619, 1620, 1621, 1627, + 1372, 1373, 1380, 1381, 1382, 1383, 1384, 1385, 1386, 1387, 1637, 1639, 1641, 1603, 1604, 1324, + 1325, 1343, 1344, 1354, 1355, 1360, 1361, 1618, 1619, 1620, 1621, 1627, 1372, 1373, 1380, 1381, + 1382, 1383, 1384, 1385, 1386, 1387, 1628, 1629, 1630, 1631, 1637, 1639, 1641, 1615, 1616, 1617, + 1365, 1626, 1368, 1627, 1392, 1393, 1394, 1395, 1396, 1397, 1398, 1399, 1400, 1401, 1402, 1403, + 1616, 1617, 1365, 1626, 1368, 1627, 1392, 1393, 1394, 1395, 1396, 1397, 1398, 1399, 1400, 1401, + 1402, 1403, 1617, 1626, 1366, 1369, 1627, 1392, 1393, 1394, 1395, 1396, 1397, 1398, 1399, 1400, + 1401, 1402, 1403, 1617, 1366, 1626, 1369, 1627, 1392, 1393, 1394, 1395, 1396, 1397, 1398, 1399, + 1400, 1401, 1402, 1403, 1615, 1616, 1617, 1365, 1626, 1368, 1627, 1392, 1393, 1394, 1395, 1396, + 1397, 1398, 1399, 1400, 1401, 1402, 1403, 1616, 1617, 1365, 1626, 1368, 1627, 1392, 1393, 1394, + 1395, 1396, 1397, 1398, 1399, 1400, 1401, 1402, 1403, 1617, 1626, 1366, 1369, 1627, 1392, 1393, + 1394, 1395, 1396, 1397, 1398, 1399, 1400, 1401, 1402, 1403, 1617, 1626, 1366, 1369, 1627, 1392, + 1393, 1394, 1395, 1396, 1397, 1398, 1399, 1400, 1401, 1402, 1403, 1627, 1406, 1407, 1408, 1627, + 1406, 1407, 1408, 1627, 1406, 1407, 1408, 1597, 1598, 1599, 1600, 1601, 1602, 1607, 1608, 1609, + 1610, 1612, 1613, 1614, 1627, 1406, 1407, 1408, 1627, 1406, 1407, 1408, 1627, 1406, 1407, 1408, + 1627, 1406, 1407, 1408, 1597, 1598, 1599, 1600, 1601, 1602, 1607, 1608, 1609, 1610, 1612, 1613, + 1614, 1627, 1406, 1407, 1408, } DECODE_INDEX_A32 := [256]lib.Decode_Index{ @@ -2209,599 +2235,599 @@ DECODE_INDEX_A32 := [256]lib.Decode_Index{ 0x25 = { 477, 51}, 0x26 = { 528, 54}, 0x27 = { 582, 19}, - 0x28 = { 601, 81}, - 0x29 = { 682, 47}, - 0x2A = { 729, 46}, - 0x2B = { 775, 23}, - 0x2C = { 798, 81}, - 0x2D = { 879, 47}, - 0x2E = { 926, 46}, - 0x2F = { 972, 23}, - 0x30 = { 995, 58}, - 0x31 = { 1053, 27}, - 0x32 = { 1080, 45}, - 0x33 = { 1125, 9}, - 0x34 = { 1134, 58}, - 0x35 = { 1192, 27}, - 0x36 = { 1219, 33}, - 0x37 = { 1252, 9}, - 0x38 = { 1261, 82}, - 0x39 = { 1343, 43}, - 0x3A = { 1386, 42}, - 0x3B = { 1428, 156}, - 0x3C = { 1584, 82}, - 0x3D = { 1666, 43}, - 0x3E = { 1709, 42}, - 0x3F = { 1751, 156}, - 0x40 = { 1907, 12}, - 0x41 = { 1919, 1}, - 0x42 = { 1920, 12}, - 0x43 = { 1932, 1}, - 0x44 = { 1933, 1}, - 0x45 = { 1934, 2}, - 0x46 = { 1936, 1}, - 0x47 = { 1937, 1}, - 0x48 = { 1938, 13}, - 0x49 = { 1951, 1}, - 0x4A = { 1952, 17}, - 0x4B = { 1969, 1}, - 0x4C = { 1970, 13}, - 0x4D = { 1983, 2}, - 0x4E = { 1985, 17}, - 0x4F = { 2002, 1}, - 0x50 = { 2003, 1}, - 0x51 = { 2004, 1}, - 0x52 = { 2005, 1}, - 0x53 = { 2006, 1}, - 0x54 = { 2007, 1}, - 0x55 = { 2008, 1}, - 0x56 = { 2009, 1}, - 0x57 = { 2010, 6}, - 0x58 = { 2016, 1}, - 0x59 = { 2017, 1}, - 0x5A = { 2018, 1}, - 0x5B = { 2019, 1}, - 0x5C = { 2020, 1}, - 0x5D = { 2021, 3}, - 0x5E = { 2024, 1}, - 0x5F = { 2025, 1}, - 0x61 = { 2026, 6}, - 0x62 = { 2032, 6}, - 0x63 = { 2038, 6}, - 0x65 = { 2044, 6}, - 0x66 = { 2050, 6}, - 0x67 = { 2056, 6}, - 0x68 = { 2062, 5}, - 0x6A = { 2067, 4}, - 0x6B = { 2071, 5}, - 0x6C = { 2076, 2}, - 0x6E = { 2078, 4}, - 0x6F = { 2082, 5}, - 0x70 = { 2087, 9}, - 0x71 = { 2096, 2}, - 0x73 = { 2098, 1}, - 0x74 = { 2099, 5}, - 0x75 = { 2104, 7}, - 0x78 = { 2111, 3}, - 0x79 = { 2114, 1}, - 0x7A = { 2115, 1}, - 0x7B = { 2116, 1}, - 0x7C = { 2117, 3}, - 0x7D = { 2120, 3}, - 0x7E = { 2123, 1}, - 0x7F = { 2124, 2}, - 0x80 = { 2126, 1}, - 0x81 = { 2127, 2}, - 0x82 = { 2129, 1}, - 0x83 = { 2130, 2}, - 0x84 = { 2132, 1}, - 0x86 = { 2133, 1}, - 0x88 = { 2134, 1}, - 0x89 = { 2135, 2}, - 0x8A = { 2137, 1}, - 0x8B = { 2138, 3}, - 0x8C = { 2141, 1}, - 0x8E = { 2142, 1}, - 0x90 = { 2143, 1}, - 0x91 = { 2144, 2}, - 0x92 = { 2146, 2}, - 0x93 = { 2148, 2}, - 0x94 = { 2150, 1}, - 0x96 = { 2151, 1}, - 0x98 = { 2152, 1}, - 0x99 = { 2153, 2}, - 0x9A = { 2155, 1}, - 0x9B = { 2156, 2}, - 0x9C = { 2158, 1}, - 0x9E = { 2159, 1}, - 0xA0 = { 2160, 2}, - 0xA1 = { 2162, 2}, - 0xA2 = { 2164, 2}, - 0xA3 = { 2166, 2}, - 0xA4 = { 2168, 2}, - 0xA5 = { 2170, 2}, - 0xA6 = { 2172, 2}, - 0xA7 = { 2174, 2}, - 0xA8 = { 2176, 2}, - 0xA9 = { 2178, 2}, - 0xAA = { 2180, 2}, - 0xAB = { 2182, 2}, - 0xAC = { 2184, 2}, - 0xAD = { 2186, 2}, - 0xAE = { 2188, 2}, - 0xAF = { 2190, 2}, - 0xB0 = { 2192, 2}, - 0xB1 = { 2194, 2}, - 0xB2 = { 2196, 2}, - 0xB3 = { 2198, 2}, - 0xB4 = { 2200, 2}, - 0xB5 = { 2202, 2}, - 0xB6 = { 2204, 2}, - 0xB7 = { 2206, 2}, - 0xB8 = { 2208, 2}, - 0xB9 = { 2210, 2}, - 0xBA = { 2212, 2}, - 0xBB = { 2214, 2}, - 0xBC = { 2216, 2}, - 0xBD = { 2218, 2}, - 0xBE = { 2220, 2}, - 0xBF = { 2222, 2}, - 0xC0 = { 2224, 7}, - 0xC1 = { 2231, 4}, - 0xC2 = { 2235, 12}, - 0xC3 = { 2247, 5}, - 0xC4 = { 2252, 11}, - 0xC5 = { 2263, 8}, - 0xC6 = { 2271, 12}, - 0xC7 = { 2283, 5}, - 0xC8 = { 2288, 6}, - 0xC9 = { 2294, 6}, - 0xCA = { 2300, 12}, - 0xCB = { 2312, 8}, - 0xCC = { 2320, 6}, - 0xCD = { 2326, 6}, - 0xCE = { 2332, 12}, - 0xCF = { 2344, 6}, - 0xD0 = { 2350, 4}, - 0xD1 = { 2354, 4}, - 0xD2 = { 2358, 4}, - 0xD3 = { 2362, 2}, - 0xD4 = { 2364, 4}, - 0xD5 = { 2368, 4}, - 0xD6 = { 2372, 2}, - 0xD7 = { 2374, 2}, - 0xD8 = { 2376, 4}, - 0xD9 = { 2380, 4}, - 0xDA = { 2384, 2}, - 0xDB = { 2386, 2}, - 0xDC = { 2388, 4}, - 0xDD = { 2392, 4}, - 0xDE = { 2396, 2}, - 0xDF = { 2398, 2}, - 0xE0 = { 2400, 19}, - 0xE1 = { 2419, 14}, - 0xE2 = { 2433, 19}, - 0xE3 = { 2452, 15}, - 0xE4 = { 2467, 17}, - 0xE5 = { 2484, 13}, - 0xE6 = { 2497, 18}, - 0xE7 = { 2515, 15}, - 0xE8 = { 2530, 14}, - 0xE9 = { 2544, 11}, - 0xEA = { 2555, 10}, - 0xEB = { 2565, 91}, - 0xEC = { 2656, 15}, - 0xED = { 2671, 11}, - 0xEE = { 2682, 12}, - 0xEF = { 2694, 92}, - 0xF0 = { 2786, 3}, - 0xF1 = { 2789, 3}, - 0xF2 = { 2792, 3}, - 0xF3 = { 2795, 3}, - 0xF4 = { 2798, 3}, - 0xF5 = { 2801, 3}, - 0xF6 = { 2804, 3}, - 0xF7 = { 2807, 3}, - 0xF8 = { 2810, 1}, - 0xF9 = { 2811, 1}, - 0xFA = { 2812, 1}, - 0xFB = { 2813, 1}, - 0xFC = { 2814, 1}, - 0xFD = { 2815, 1}, - 0xFE = { 2816, 1}, - 0xFF = { 2817, 1}, + 0x28 = { 601, 93}, + 0x29 = { 694, 47}, + 0x2A = { 741, 46}, + 0x2B = { 787, 23}, + 0x2C = { 810, 93}, + 0x2D = { 903, 47}, + 0x2E = { 950, 46}, + 0x2F = { 996, 23}, + 0x30 = { 1019, 58}, + 0x31 = { 1077, 27}, + 0x32 = { 1104, 45}, + 0x33 = { 1149, 9}, + 0x34 = { 1158, 58}, + 0x35 = { 1216, 27}, + 0x36 = { 1243, 33}, + 0x37 = { 1276, 9}, + 0x38 = { 1285, 94}, + 0x39 = { 1379, 43}, + 0x3A = { 1422, 42}, + 0x3B = { 1464, 156}, + 0x3C = { 1620, 94}, + 0x3D = { 1714, 43}, + 0x3E = { 1757, 42}, + 0x3F = { 1799, 156}, + 0x40 = { 1955, 12}, + 0x41 = { 1967, 1}, + 0x42 = { 1968, 12}, + 0x43 = { 1980, 1}, + 0x44 = { 1981, 1}, + 0x45 = { 1982, 2}, + 0x46 = { 1984, 1}, + 0x47 = { 1985, 1}, + 0x48 = { 1986, 13}, + 0x49 = { 1999, 1}, + 0x4A = { 2000, 17}, + 0x4B = { 2017, 1}, + 0x4C = { 2018, 13}, + 0x4D = { 2031, 2}, + 0x4E = { 2033, 17}, + 0x4F = { 2050, 1}, + 0x50 = { 2051, 1}, + 0x51 = { 2052, 1}, + 0x52 = { 2053, 1}, + 0x53 = { 2054, 1}, + 0x54 = { 2055, 1}, + 0x55 = { 2056, 1}, + 0x56 = { 2057, 1}, + 0x57 = { 2058, 6}, + 0x58 = { 2064, 1}, + 0x59 = { 2065, 1}, + 0x5A = { 2066, 1}, + 0x5B = { 2067, 1}, + 0x5C = { 2068, 1}, + 0x5D = { 2069, 3}, + 0x5E = { 2072, 1}, + 0x5F = { 2073, 1}, + 0x61 = { 2074, 6}, + 0x62 = { 2080, 6}, + 0x63 = { 2086, 6}, + 0x65 = { 2092, 6}, + 0x66 = { 2098, 6}, + 0x67 = { 2104, 6}, + 0x68 = { 2110, 5}, + 0x6A = { 2115, 4}, + 0x6B = { 2119, 5}, + 0x6C = { 2124, 2}, + 0x6E = { 2126, 4}, + 0x6F = { 2130, 5}, + 0x70 = { 2135, 9}, + 0x71 = { 2144, 2}, + 0x73 = { 2146, 1}, + 0x74 = { 2147, 5}, + 0x75 = { 2152, 7}, + 0x78 = { 2159, 3}, + 0x79 = { 2162, 1}, + 0x7A = { 2163, 1}, + 0x7B = { 2164, 1}, + 0x7C = { 2165, 3}, + 0x7D = { 2168, 3}, + 0x7E = { 2171, 1}, + 0x7F = { 2172, 2}, + 0x80 = { 2174, 1}, + 0x81 = { 2175, 2}, + 0x82 = { 2177, 1}, + 0x83 = { 2178, 2}, + 0x84 = { 2180, 1}, + 0x86 = { 2181, 1}, + 0x88 = { 2182, 1}, + 0x89 = { 2183, 2}, + 0x8A = { 2185, 1}, + 0x8B = { 2186, 3}, + 0x8C = { 2189, 1}, + 0x8E = { 2190, 1}, + 0x90 = { 2191, 1}, + 0x91 = { 2192, 2}, + 0x92 = { 2194, 2}, + 0x93 = { 2196, 2}, + 0x94 = { 2198, 1}, + 0x96 = { 2199, 1}, + 0x98 = { 2200, 1}, + 0x99 = { 2201, 2}, + 0x9A = { 2203, 1}, + 0x9B = { 2204, 2}, + 0x9C = { 2206, 1}, + 0x9E = { 2207, 1}, + 0xA0 = { 2208, 2}, + 0xA1 = { 2210, 2}, + 0xA2 = { 2212, 2}, + 0xA3 = { 2214, 2}, + 0xA4 = { 2216, 2}, + 0xA5 = { 2218, 2}, + 0xA6 = { 2220, 2}, + 0xA7 = { 2222, 2}, + 0xA8 = { 2224, 2}, + 0xA9 = { 2226, 2}, + 0xAA = { 2228, 2}, + 0xAB = { 2230, 2}, + 0xAC = { 2232, 2}, + 0xAD = { 2234, 2}, + 0xAE = { 2236, 2}, + 0xAF = { 2238, 2}, + 0xB0 = { 2240, 2}, + 0xB1 = { 2242, 2}, + 0xB2 = { 2244, 2}, + 0xB3 = { 2246, 2}, + 0xB4 = { 2248, 2}, + 0xB5 = { 2250, 2}, + 0xB6 = { 2252, 2}, + 0xB7 = { 2254, 2}, + 0xB8 = { 2256, 2}, + 0xB9 = { 2258, 2}, + 0xBA = { 2260, 2}, + 0xBB = { 2262, 2}, + 0xBC = { 2264, 2}, + 0xBD = { 2266, 2}, + 0xBE = { 2268, 2}, + 0xBF = { 2270, 2}, + 0xC0 = { 2272, 7}, + 0xC1 = { 2279, 4}, + 0xC2 = { 2283, 12}, + 0xC3 = { 2295, 6}, + 0xC4 = { 2301, 11}, + 0xC5 = { 2312, 8}, + 0xC6 = { 2320, 12}, + 0xC7 = { 2332, 6}, + 0xC8 = { 2338, 6}, + 0xC9 = { 2344, 6}, + 0xCA = { 2350, 12}, + 0xCB = { 2362, 8}, + 0xCC = { 2370, 6}, + 0xCD = { 2376, 6}, + 0xCE = { 2382, 12}, + 0xCF = { 2394, 6}, + 0xD0 = { 2400, 4}, + 0xD1 = { 2404, 4}, + 0xD2 = { 2408, 6}, + 0xD3 = { 2414, 4}, + 0xD4 = { 2418, 4}, + 0xD5 = { 2422, 4}, + 0xD6 = { 2426, 4}, + 0xD7 = { 2430, 4}, + 0xD8 = { 2434, 4}, + 0xD9 = { 2438, 4}, + 0xDA = { 2442, 2}, + 0xDB = { 2444, 2}, + 0xDC = { 2446, 4}, + 0xDD = { 2450, 4}, + 0xDE = { 2454, 2}, + 0xDF = { 2456, 2}, + 0xE0 = { 2458, 19}, + 0xE1 = { 2477, 14}, + 0xE2 = { 2491, 19}, + 0xE3 = { 2510, 15}, + 0xE4 = { 2525, 17}, + 0xE5 = { 2542, 13}, + 0xE6 = { 2555, 18}, + 0xE7 = { 2573, 15}, + 0xE8 = { 2588, 14}, + 0xE9 = { 2602, 11}, + 0xEA = { 2613, 10}, + 0xEB = { 2623, 91}, + 0xEC = { 2714, 15}, + 0xED = { 2729, 11}, + 0xEE = { 2740, 12}, + 0xEF = { 2752, 92}, + 0xF0 = { 2844, 3}, + 0xF1 = { 2847, 3}, + 0xF2 = { 2850, 3}, + 0xF3 = { 2853, 3}, + 0xF4 = { 2856, 3}, + 0xF5 = { 2859, 3}, + 0xF6 = { 2862, 3}, + 0xF7 = { 2865, 3}, + 0xF8 = { 2868, 1}, + 0xF9 = { 2869, 1}, + 0xFA = { 2870, 1}, + 0xFB = { 2871, 1}, + 0xFC = { 2872, 1}, + 0xFD = { 2873, 1}, + 0xFE = { 2874, 1}, + 0xFF = { 2875, 1}, } DECODE_INDEX_T32 := [128]lib.Decode_Index{ - 0x74 = { 2818, 23}, - 0x75 = { 2841, 19}, - 0x76 = { 2860, 19}, - 0x77 = { 2879, 104}, - 0x78 = { 2983, 31}, - 0x79 = { 3014, 38}, - 0x7A = { 3052, 23}, - 0x7B = { 3075, 14}, - 0x7C = { 3089, 20}, - 0x7D = { 3109, 71}, - 0x7E = { 3180, 23}, - 0x7F = { 3203, 126}, + 0x74 = { 2876, 23}, + 0x75 = { 2899, 19}, + 0x76 = { 2918, 19}, + 0x77 = { 2937, 104}, + 0x78 = { 3041, 31}, + 0x79 = { 3072, 38}, + 0x7A = { 3110, 23}, + 0x7B = { 3133, 14}, + 0x7C = { 3147, 20}, + 0x7D = { 3167, 71}, + 0x7E = { 3238, 23}, + 0x7F = { 3261, 126}, } DECODE_INDEX_T16 := [64]lib.Decode_Index{ - 0x00 = { 3329, 1}, - 0x01 = { 3330, 1}, - 0x02 = { 3331, 1}, - 0x03 = { 3332, 1}, - 0x04 = { 3333, 1}, - 0x05 = { 3334, 1}, - 0x06 = { 3335, 2}, - 0x07 = { 3337, 2}, - 0x08 = { 3339, 1}, - 0x09 = { 3340, 1}, - 0x0A = { 3341, 1}, - 0x0B = { 3342, 1}, - 0x0C = { 3343, 1}, - 0x0D = { 3344, 1}, - 0x0E = { 3345, 1}, - 0x0F = { 3346, 1}, - 0x10 = { 3347, 16}, - 0x11 = { 3363, 7}, - 0x12 = { 3370, 1}, - 0x13 = { 3371, 1}, - 0x14 = { 3372, 2}, - 0x15 = { 3374, 2}, - 0x16 = { 3376, 2}, - 0x17 = { 3378, 2}, - 0x18 = { 3380, 1}, - 0x19 = { 3381, 1}, - 0x1A = { 3382, 1}, - 0x1B = { 3383, 1}, - 0x1C = { 3384, 1}, - 0x1D = { 3385, 1}, - 0x1E = { 3386, 1}, - 0x1F = { 3387, 1}, - 0x20 = { 3388, 1}, - 0x21 = { 3389, 1}, - 0x22 = { 3390, 1}, - 0x23 = { 3391, 1}, - 0x24 = { 3392, 1}, - 0x25 = { 3393, 1}, - 0x26 = { 3394, 1}, - 0x27 = { 3395, 1}, - 0x28 = { 3396, 1}, - 0x29 = { 3397, 1}, - 0x2A = { 3398, 1}, - 0x2B = { 3399, 1}, - 0x2C = { 3400, 7}, - 0x2D = { 3407, 2}, - 0x2E = { 3409, 4}, - 0x2F = { 3413, 8}, - 0x30 = { 3421, 1}, - 0x31 = { 3422, 1}, - 0x32 = { 3423, 1}, - 0x33 = { 3424, 1}, - 0x34 = { 3425, 1}, - 0x35 = { 3426, 1}, - 0x36 = { 3427, 1}, - 0x37 = { 3428, 3}, - 0x38 = { 3431, 1}, - 0x39 = { 3432, 1}, + 0x00 = { 3387, 1}, + 0x01 = { 3388, 1}, + 0x02 = { 3389, 1}, + 0x03 = { 3390, 1}, + 0x04 = { 3391, 1}, + 0x05 = { 3392, 1}, + 0x06 = { 3393, 2}, + 0x07 = { 3395, 2}, + 0x08 = { 3397, 1}, + 0x09 = { 3398, 1}, + 0x0A = { 3399, 1}, + 0x0B = { 3400, 1}, + 0x0C = { 3401, 1}, + 0x0D = { 3402, 1}, + 0x0E = { 3403, 1}, + 0x0F = { 3404, 1}, + 0x10 = { 3405, 16}, + 0x11 = { 3421, 7}, + 0x12 = { 3428, 1}, + 0x13 = { 3429, 1}, + 0x14 = { 3430, 2}, + 0x15 = { 3432, 2}, + 0x16 = { 3434, 2}, + 0x17 = { 3436, 2}, + 0x18 = { 3438, 1}, + 0x19 = { 3439, 1}, + 0x1A = { 3440, 1}, + 0x1B = { 3441, 1}, + 0x1C = { 3442, 1}, + 0x1D = { 3443, 1}, + 0x1E = { 3444, 1}, + 0x1F = { 3445, 1}, + 0x20 = { 3446, 1}, + 0x21 = { 3447, 1}, + 0x22 = { 3448, 1}, + 0x23 = { 3449, 1}, + 0x24 = { 3450, 1}, + 0x25 = { 3451, 1}, + 0x26 = { 3452, 1}, + 0x27 = { 3453, 1}, + 0x28 = { 3454, 1}, + 0x29 = { 3455, 1}, + 0x2A = { 3456, 1}, + 0x2B = { 3457, 1}, + 0x2C = { 3458, 7}, + 0x2D = { 3465, 2}, + 0x2E = { 3467, 4}, + 0x2F = { 3471, 8}, + 0x30 = { 3479, 1}, + 0x31 = { 3480, 1}, + 0x32 = { 3481, 1}, + 0x33 = { 3482, 1}, + 0x34 = { 3483, 1}, + 0x35 = { 3484, 1}, + 0x36 = { 3485, 1}, + 0x37 = { 3486, 3}, + 0x38 = { 3489, 1}, + 0x39 = { 3490, 1}, } DECODE_INDEX_T32_SUB := [4096]lib.Decode_Index{ - 0xE84 = { 3433, 6}, - 0xE85 = { 3439, 2}, - 0xE86 = { 3441, 1}, - 0xE87 = { 3442, 1}, - 0xE88 = { 3443, 1}, - 0xE89 = { 3444, 1}, - 0xE8A = { 3445, 1}, - 0xE8B = { 3446, 2}, - 0xE8C = { 3448, 4}, - 0xE8D = { 3452, 6}, - 0xE8E = { 3458, 1}, - 0xE8F = { 3459, 1}, - 0xE90 = { 3460, 1}, - 0xE91 = { 3461, 1}, - 0xE92 = { 3462, 2}, - 0xE93 = { 3464, 1}, - 0xE94 = { 3465, 1}, - 0xE95 = { 3466, 1}, - 0xE96 = { 3467, 1}, - 0xE97 = { 3468, 2}, - 0xE9C = { 3470, 1}, - 0xE9D = { 3471, 1}, - 0xE9E = { 3472, 1}, - 0xE9F = { 3473, 1}, - 0xEA0 = { 3474, 1}, - 0xEA1 = { 3475, 2}, - 0xEA2 = { 3477, 1}, - 0xEA3 = { 3478, 1}, - 0xEA4 = { 3479, 6}, - 0xEA5 = { 3485, 2}, - 0xEA6 = { 3487, 1}, - 0xEA7 = { 3488, 1}, - 0xEA8 = { 3489, 1}, - 0xEA9 = { 3490, 2}, - 0xEB1 = { 3492, 1}, - 0xEB4 = { 3493, 1}, - 0xEB5 = { 3494, 1}, - 0xEB6 = { 3495, 1}, - 0xEB7 = { 3496, 1}, - 0xEBB = { 3497, 1}, - 0xEBC = { 3498, 1}, - 0xEBD = { 3499, 1}, - 0xEC0 = { 3500, 2}, - 0xEC1 = { 3502, 1}, - 0xEC2 = { 3503, 3}, - 0xEC3 = { 3506, 2}, - 0xEC4 = { 3508, 2}, - 0xEC5 = { 3510, 1}, - 0xEC6 = { 3511, 7}, - 0xEC7 = { 3518, 2}, - 0xEC8 = { 3520, 1}, - 0xEC9 = { 3521, 1}, - 0xECA = { 3522, 2}, - 0xECB = { 3524, 2}, - 0xECC = { 3526, 1}, - 0xECD = { 3527, 1}, - 0xECE = { 3528, 2}, - 0xECF = { 3530, 2}, - 0xED6 = { 3532, 4}, - 0xED8 = { 3536, 4}, - 0xED9 = { 3540, 4}, - 0xEDC = { 3544, 4}, - 0xEDD = { 3548, 4}, - 0xEE0 = { 3552, 24}, - 0xEE1 = { 3576, 23}, - 0xEE2 = { 3599, 22}, - 0xEE3 = { 3621, 29}, - 0xEE4 = { 3650, 23}, - 0xEE5 = { 3673, 22}, - 0xEE6 = { 3695, 22}, - 0xEE7 = { 3717, 29}, - 0xEE8 = { 3746, 28}, - 0xEE9 = { 3774, 12}, - 0xEEA = { 3786, 13}, - 0xEEB = { 3799, 18}, - 0xEEC = { 3817, 27}, - 0xEED = { 3844, 13}, - 0xEEE = { 3857, 22}, - 0xEEF = { 3879, 23}, - 0xEF0 = { 3902, 15}, - 0xEF1 = { 3917, 15}, - 0xEF2 = { 3932, 15}, - 0xEF3 = { 3947, 15}, - 0xEF4 = { 3962, 15}, - 0xEF5 = { 3977, 15}, - 0xEF6 = { 3992, 15}, - 0xEF7 = { 4007, 15}, - 0xEF8 = { 4022, 3}, - 0xEF9 = { 4025, 3}, - 0xEFA = { 4028, 3}, - 0xEFB = { 4031, 3}, - 0xEFC = { 4034, 3}, - 0xEFD = { 4037, 3}, - 0xEFE = { 4040, 3}, - 0xEFF = { 4043, 3}, - 0xF00 = { 4046, 11}, - 0xF01 = { 4057, 10}, - 0xF02 = { 4067, 8}, - 0xF03 = { 4075, 8}, - 0xF04 = { 4083, 8}, - 0xF05 = { 4091, 5}, - 0xF06 = { 4096, 5}, - 0xF07 = { 4101, 5}, - 0xF08 = { 4106, 6}, - 0xF09 = { 4112, 6}, - 0xF0A = { 4118, 4}, - 0xF0B = { 4122, 4}, - 0xF0C = { 4126, 4}, - 0xF0D = { 4130, 3}, - 0xF0E = { 4133, 4}, - 0xF0F = { 4137, 4}, - 0xF10 = { 4141, 7}, - 0xF11 = { 4148, 7}, - 0xF12 = { 4155, 6}, - 0xF13 = { 4161, 6}, - 0xF14 = { 4167, 5}, - 0xF15 = { 4172, 4}, - 0xF16 = { 4176, 5}, - 0xF17 = { 4181, 5}, - 0xF18 = { 4186, 5}, - 0xF19 = { 4191, 4}, - 0xF1A = { 4195, 4}, - 0xF1B = { 4199, 5}, - 0xF1C = { 4204, 5}, - 0xF1D = { 4209, 4}, - 0xF1E = { 4213, 4}, - 0xF1F = { 4217, 4}, - 0xF20 = { 4221, 5}, - 0xF21 = { 4226, 4}, - 0xF22 = { 4230, 4}, - 0xF23 = { 4234, 4}, - 0xF24 = { 4238, 5}, - 0xF25 = { 4243, 3}, - 0xF26 = { 4246, 4}, - 0xF27 = { 4250, 4}, - 0xF28 = { 4254, 5}, - 0xF29 = { 4259, 4}, - 0xF2A = { 4263, 4}, - 0xF2B = { 4267, 4}, - 0xF2C = { 4271, 5}, - 0xF2D = { 4276, 3}, - 0xF2E = { 4279, 4}, - 0xF2F = { 4283, 4}, - 0xF30 = { 4287, 6}, - 0xF31 = { 4293, 4}, - 0xF32 = { 4297, 6}, - 0xF33 = { 4303, 4}, - 0xF34 = { 4307, 5}, - 0xF35 = { 4312, 3}, - 0xF36 = { 4315, 6}, - 0xF37 = { 4321, 4}, - 0xF38 = { 4325, 7}, - 0xF39 = { 4332, 4}, - 0xF3A = { 4336, 19}, - 0xF3B = { 4355, 9}, - 0xF3C = { 4364, 5}, - 0xF3D = { 4369, 3}, - 0xF3E = { 4372, 5}, - 0xF3F = { 4377, 4}, - 0xF40 = { 4381, 6}, - 0xF41 = { 4387, 6}, - 0xF42 = { 4393, 5}, - 0xF43 = { 4398, 5}, - 0xF44 = { 4403, 6}, - 0xF45 = { 4409, 5}, - 0xF46 = { 4414, 5}, - 0xF47 = { 4419, 5}, - 0xF48 = { 4424, 6}, - 0xF49 = { 4430, 6}, - 0xF4A = { 4436, 4}, - 0xF4B = { 4440, 4}, - 0xF4C = { 4444, 4}, - 0xF4D = { 4448, 3}, - 0xF4E = { 4451, 4}, - 0xF4F = { 4455, 4}, - 0xF50 = { 4459, 5}, - 0xF51 = { 4464, 5}, - 0xF52 = { 4469, 4}, - 0xF53 = { 4473, 4}, - 0xF54 = { 4477, 5}, - 0xF55 = { 4482, 4}, - 0xF56 = { 4486, 5}, - 0xF57 = { 4491, 5}, - 0xF58 = { 4496, 5}, - 0xF59 = { 4501, 4}, - 0xF5A = { 4505, 4}, - 0xF5B = { 4509, 5}, - 0xF5C = { 4514, 5}, - 0xF5D = { 4519, 4}, - 0xF5E = { 4523, 4}, - 0xF5F = { 4527, 4}, - 0xF60 = { 4531, 5}, - 0xF61 = { 4536, 4}, - 0xF62 = { 4540, 4}, - 0xF63 = { 4544, 4}, - 0xF64 = { 4548, 5}, - 0xF65 = { 4553, 3}, - 0xF66 = { 4556, 4}, - 0xF67 = { 4560, 4}, - 0xF68 = { 4564, 5}, - 0xF69 = { 4569, 4}, - 0xF6A = { 4573, 4}, - 0xF6B = { 4577, 4}, - 0xF6C = { 4581, 5}, - 0xF6D = { 4586, 3}, - 0xF6E = { 4589, 4}, - 0xF6F = { 4593, 4}, - 0xF70 = { 4597, 5}, - 0xF71 = { 4602, 4}, - 0xF72 = { 4606, 4}, - 0xF73 = { 4610, 4}, - 0xF74 = { 4614, 4}, - 0xF75 = { 4618, 3}, - 0xF76 = { 4621, 4}, - 0xF77 = { 4625, 4}, - 0xF78 = { 4629, 8}, - 0xF79 = { 4637, 4}, - 0xF7A = { 4641, 4}, - 0xF7B = { 4645, 4}, - 0xF7C = { 4649, 4}, - 0xF7D = { 4653, 3}, - 0xF7E = { 4656, 4}, - 0xF7F = { 4660, 5}, - 0xF80 = { 4665, 1}, - 0xF81 = { 4666, 1}, - 0xF82 = { 4667, 1}, - 0xF83 = { 4668, 2}, - 0xF84 = { 4670, 1}, - 0xF85 = { 4671, 2}, - 0xF88 = { 4673, 1}, - 0xF89 = { 4674, 2}, - 0xF8A = { 4676, 1}, - 0xF8B = { 4677, 1}, - 0xF8C = { 4678, 1}, - 0xF8D = { 4679, 2}, - 0xF91 = { 4681, 1}, - 0xF93 = { 4682, 1}, - 0xF99 = { 4683, 2}, - 0xF9B = { 4685, 1}, - 0xFA0 = { 4686, 3}, - 0xFA1 = { 4689, 2}, - 0xFA2 = { 4691, 3}, - 0xFA3 = { 4694, 2}, - 0xFA4 = { 4696, 3}, - 0xFA5 = { 4699, 2}, - 0xFA6 = { 4701, 1}, - 0xFA8 = { 4702, 10}, - 0xFA9 = { 4712, 10}, - 0xFAA = { 4722, 6}, - 0xFAB = { 4728, 1}, - 0xFAC = { 4729, 6}, - 0xFAD = { 4735, 6}, - 0xFAE = { 4741, 6}, - 0xFB0 = { 4747, 3}, - 0xFB5 = { 4750, 1}, - 0xFB8 = { 4751, 1}, - 0xFB9 = { 4752, 1}, - 0xFBA = { 4753, 1}, - 0xFBB = { 4754, 1}, - 0xFBC = { 4755, 1}, - 0xFBE = { 4756, 1}, - 0xFC0 = { 4757, 1}, - 0xFC1 = { 4758, 1}, - 0xFC2 = { 4759, 3}, - 0xFC3 = { 4762, 3}, - 0xFC4 = { 4765, 1}, - 0xFC5 = { 4766, 1}, - 0xFC6 = { 4767, 2}, - 0xFC7 = { 4769, 2}, - 0xFC8 = { 4771, 7}, - 0xFC9 = { 4778, 11}, - 0xFCA = { 4789, 3}, - 0xFCB = { 4792, 3}, - 0xFCC = { 4795, 7}, - 0xFCD = { 4802, 7}, - 0xFCE = { 4809, 2}, - 0xFCF = { 4811, 2}, - 0xFD2 = { 4813, 1}, - 0xFD3 = { 4814, 1}, - 0xFD9 = { 4815, 4}, - 0xFDA = { 4819, 1}, - 0xFDB = { 4820, 1}, - 0xFE0 = { 4821, 28}, - 0xFE1 = { 4849, 26}, - 0xFE2 = { 4875, 26}, - 0xFE3 = { 4901, 32}, - 0xFE4 = { 4933, 29}, - 0xFE5 = { 4962, 27}, - 0xFE6 = { 4989, 27}, - 0xFE7 = { 5016, 33}, - 0xFE8 = { 5049, 32}, - 0xFE9 = { 5081, 17}, - 0xFEA = { 5098, 17}, - 0xFEB = { 5115, 29}, - 0xFEC = { 5144, 31}, - 0xFED = { 5175, 18}, - 0xFEE = { 5193, 26}, - 0xFEF = { 5219, 32}, - 0xFF0 = { 5251, 19}, - 0xFF1 = { 5270, 18}, - 0xFF2 = { 5288, 17}, - 0xFF3 = { 5305, 17}, - 0xFF4 = { 5322, 19}, - 0xFF5 = { 5341, 18}, - 0xFF6 = { 5359, 17}, - 0xFF7 = { 5376, 17}, - 0xFF8 = { 5393, 4}, - 0xFF9 = { 5397, 4}, - 0xFFA = { 5401, 4}, - 0xFFB = { 5405, 17}, - 0xFFC = { 5422, 4}, - 0xFFD = { 5426, 4}, - 0xFFE = { 5430, 4}, - 0xFFF = { 5434, 17}, + 0xE84 = { 3491, 6}, + 0xE85 = { 3497, 2}, + 0xE86 = { 3499, 1}, + 0xE87 = { 3500, 1}, + 0xE88 = { 3501, 1}, + 0xE89 = { 3502, 1}, + 0xE8A = { 3503, 1}, + 0xE8B = { 3504, 2}, + 0xE8C = { 3506, 4}, + 0xE8D = { 3510, 6}, + 0xE8E = { 3516, 1}, + 0xE8F = { 3517, 1}, + 0xE90 = { 3518, 1}, + 0xE91 = { 3519, 1}, + 0xE92 = { 3520, 2}, + 0xE93 = { 3522, 1}, + 0xE94 = { 3523, 1}, + 0xE95 = { 3524, 1}, + 0xE96 = { 3525, 1}, + 0xE97 = { 3526, 2}, + 0xE9C = { 3528, 1}, + 0xE9D = { 3529, 1}, + 0xE9E = { 3530, 1}, + 0xE9F = { 3531, 1}, + 0xEA0 = { 3532, 1}, + 0xEA1 = { 3533, 2}, + 0xEA2 = { 3535, 1}, + 0xEA3 = { 3536, 1}, + 0xEA4 = { 3537, 6}, + 0xEA5 = { 3543, 2}, + 0xEA6 = { 3545, 1}, + 0xEA7 = { 3546, 1}, + 0xEA8 = { 3547, 1}, + 0xEA9 = { 3548, 2}, + 0xEB1 = { 3550, 1}, + 0xEB4 = { 3551, 1}, + 0xEB5 = { 3552, 1}, + 0xEB6 = { 3553, 1}, + 0xEB7 = { 3554, 1}, + 0xEBB = { 3555, 1}, + 0xEBC = { 3556, 1}, + 0xEBD = { 3557, 1}, + 0xEC0 = { 3558, 2}, + 0xEC1 = { 3560, 1}, + 0xEC2 = { 3561, 3}, + 0xEC3 = { 3564, 2}, + 0xEC4 = { 3566, 2}, + 0xEC5 = { 3568, 1}, + 0xEC6 = { 3569, 7}, + 0xEC7 = { 3576, 2}, + 0xEC8 = { 3578, 1}, + 0xEC9 = { 3579, 1}, + 0xECA = { 3580, 2}, + 0xECB = { 3582, 2}, + 0xECC = { 3584, 1}, + 0xECD = { 3585, 1}, + 0xECE = { 3586, 2}, + 0xECF = { 3588, 2}, + 0xED6 = { 3590, 4}, + 0xED8 = { 3594, 4}, + 0xED9 = { 3598, 4}, + 0xEDC = { 3602, 4}, + 0xEDD = { 3606, 4}, + 0xEE0 = { 3610, 24}, + 0xEE1 = { 3634, 23}, + 0xEE2 = { 3657, 22}, + 0xEE3 = { 3679, 29}, + 0xEE4 = { 3708, 23}, + 0xEE5 = { 3731, 22}, + 0xEE6 = { 3753, 22}, + 0xEE7 = { 3775, 29}, + 0xEE8 = { 3804, 28}, + 0xEE9 = { 3832, 12}, + 0xEEA = { 3844, 13}, + 0xEEB = { 3857, 18}, + 0xEEC = { 3875, 27}, + 0xEED = { 3902, 13}, + 0xEEE = { 3915, 22}, + 0xEEF = { 3937, 23}, + 0xEF0 = { 3960, 15}, + 0xEF1 = { 3975, 15}, + 0xEF2 = { 3990, 15}, + 0xEF3 = { 4005, 15}, + 0xEF4 = { 4020, 15}, + 0xEF5 = { 4035, 15}, + 0xEF6 = { 4050, 15}, + 0xEF7 = { 4065, 15}, + 0xEF8 = { 4080, 3}, + 0xEF9 = { 4083, 3}, + 0xEFA = { 4086, 3}, + 0xEFB = { 4089, 3}, + 0xEFC = { 4092, 3}, + 0xEFD = { 4095, 3}, + 0xEFE = { 4098, 3}, + 0xEFF = { 4101, 3}, + 0xF00 = { 4104, 11}, + 0xF01 = { 4115, 10}, + 0xF02 = { 4125, 8}, + 0xF03 = { 4133, 8}, + 0xF04 = { 4141, 8}, + 0xF05 = { 4149, 5}, + 0xF06 = { 4154, 5}, + 0xF07 = { 4159, 5}, + 0xF08 = { 4164, 6}, + 0xF09 = { 4170, 6}, + 0xF0A = { 4176, 4}, + 0xF0B = { 4180, 4}, + 0xF0C = { 4184, 4}, + 0xF0D = { 4188, 3}, + 0xF0E = { 4191, 4}, + 0xF0F = { 4195, 4}, + 0xF10 = { 4199, 7}, + 0xF11 = { 4206, 7}, + 0xF12 = { 4213, 6}, + 0xF13 = { 4219, 6}, + 0xF14 = { 4225, 5}, + 0xF15 = { 4230, 4}, + 0xF16 = { 4234, 5}, + 0xF17 = { 4239, 5}, + 0xF18 = { 4244, 5}, + 0xF19 = { 4249, 4}, + 0xF1A = { 4253, 4}, + 0xF1B = { 4257, 5}, + 0xF1C = { 4262, 5}, + 0xF1D = { 4267, 4}, + 0xF1E = { 4271, 4}, + 0xF1F = { 4275, 4}, + 0xF20 = { 4279, 5}, + 0xF21 = { 4284, 4}, + 0xF22 = { 4288, 4}, + 0xF23 = { 4292, 4}, + 0xF24 = { 4296, 5}, + 0xF25 = { 4301, 3}, + 0xF26 = { 4304, 4}, + 0xF27 = { 4308, 4}, + 0xF28 = { 4312, 5}, + 0xF29 = { 4317, 4}, + 0xF2A = { 4321, 4}, + 0xF2B = { 4325, 4}, + 0xF2C = { 4329, 5}, + 0xF2D = { 4334, 3}, + 0xF2E = { 4337, 4}, + 0xF2F = { 4341, 4}, + 0xF30 = { 4345, 6}, + 0xF31 = { 4351, 4}, + 0xF32 = { 4355, 6}, + 0xF33 = { 4361, 4}, + 0xF34 = { 4365, 5}, + 0xF35 = { 4370, 3}, + 0xF36 = { 4373, 6}, + 0xF37 = { 4379, 4}, + 0xF38 = { 4383, 7}, + 0xF39 = { 4390, 4}, + 0xF3A = { 4394, 19}, + 0xF3B = { 4413, 9}, + 0xF3C = { 4422, 5}, + 0xF3D = { 4427, 3}, + 0xF3E = { 4430, 5}, + 0xF3F = { 4435, 4}, + 0xF40 = { 4439, 6}, + 0xF41 = { 4445, 6}, + 0xF42 = { 4451, 5}, + 0xF43 = { 4456, 5}, + 0xF44 = { 4461, 6}, + 0xF45 = { 4467, 5}, + 0xF46 = { 4472, 5}, + 0xF47 = { 4477, 5}, + 0xF48 = { 4482, 6}, + 0xF49 = { 4488, 6}, + 0xF4A = { 4494, 4}, + 0xF4B = { 4498, 4}, + 0xF4C = { 4502, 4}, + 0xF4D = { 4506, 3}, + 0xF4E = { 4509, 4}, + 0xF4F = { 4513, 4}, + 0xF50 = { 4517, 5}, + 0xF51 = { 4522, 5}, + 0xF52 = { 4527, 4}, + 0xF53 = { 4531, 4}, + 0xF54 = { 4535, 5}, + 0xF55 = { 4540, 4}, + 0xF56 = { 4544, 5}, + 0xF57 = { 4549, 5}, + 0xF58 = { 4554, 5}, + 0xF59 = { 4559, 4}, + 0xF5A = { 4563, 4}, + 0xF5B = { 4567, 5}, + 0xF5C = { 4572, 5}, + 0xF5D = { 4577, 4}, + 0xF5E = { 4581, 4}, + 0xF5F = { 4585, 4}, + 0xF60 = { 4589, 5}, + 0xF61 = { 4594, 4}, + 0xF62 = { 4598, 4}, + 0xF63 = { 4602, 4}, + 0xF64 = { 4606, 5}, + 0xF65 = { 4611, 3}, + 0xF66 = { 4614, 4}, + 0xF67 = { 4618, 4}, + 0xF68 = { 4622, 5}, + 0xF69 = { 4627, 4}, + 0xF6A = { 4631, 4}, + 0xF6B = { 4635, 4}, + 0xF6C = { 4639, 5}, + 0xF6D = { 4644, 3}, + 0xF6E = { 4647, 4}, + 0xF6F = { 4651, 4}, + 0xF70 = { 4655, 5}, + 0xF71 = { 4660, 4}, + 0xF72 = { 4664, 4}, + 0xF73 = { 4668, 4}, + 0xF74 = { 4672, 4}, + 0xF75 = { 4676, 3}, + 0xF76 = { 4679, 4}, + 0xF77 = { 4683, 4}, + 0xF78 = { 4687, 8}, + 0xF79 = { 4695, 4}, + 0xF7A = { 4699, 4}, + 0xF7B = { 4703, 4}, + 0xF7C = { 4707, 4}, + 0xF7D = { 4711, 3}, + 0xF7E = { 4714, 4}, + 0xF7F = { 4718, 5}, + 0xF80 = { 4723, 1}, + 0xF81 = { 4724, 1}, + 0xF82 = { 4725, 1}, + 0xF83 = { 4726, 2}, + 0xF84 = { 4728, 1}, + 0xF85 = { 4729, 2}, + 0xF88 = { 4731, 1}, + 0xF89 = { 4732, 2}, + 0xF8A = { 4734, 1}, + 0xF8B = { 4735, 1}, + 0xF8C = { 4736, 1}, + 0xF8D = { 4737, 2}, + 0xF91 = { 4739, 1}, + 0xF93 = { 4740, 1}, + 0xF99 = { 4741, 2}, + 0xF9B = { 4743, 1}, + 0xFA0 = { 4744, 3}, + 0xFA1 = { 4747, 2}, + 0xFA2 = { 4749, 3}, + 0xFA3 = { 4752, 2}, + 0xFA4 = { 4754, 3}, + 0xFA5 = { 4757, 2}, + 0xFA6 = { 4759, 1}, + 0xFA8 = { 4760, 10}, + 0xFA9 = { 4770, 10}, + 0xFAA = { 4780, 6}, + 0xFAB = { 4786, 1}, + 0xFAC = { 4787, 6}, + 0xFAD = { 4793, 6}, + 0xFAE = { 4799, 6}, + 0xFB0 = { 4805, 3}, + 0xFB5 = { 4808, 1}, + 0xFB8 = { 4809, 1}, + 0xFB9 = { 4810, 1}, + 0xFBA = { 4811, 1}, + 0xFBB = { 4812, 1}, + 0xFBC = { 4813, 1}, + 0xFBE = { 4814, 1}, + 0xFC0 = { 4815, 1}, + 0xFC1 = { 4816, 1}, + 0xFC2 = { 4817, 3}, + 0xFC3 = { 4820, 3}, + 0xFC4 = { 4823, 1}, + 0xFC5 = { 4824, 1}, + 0xFC6 = { 4825, 2}, + 0xFC7 = { 4827, 2}, + 0xFC8 = { 4829, 7}, + 0xFC9 = { 4836, 11}, + 0xFCA = { 4847, 3}, + 0xFCB = { 4850, 3}, + 0xFCC = { 4853, 7}, + 0xFCD = { 4860, 7}, + 0xFCE = { 4867, 2}, + 0xFCF = { 4869, 2}, + 0xFD2 = { 4871, 1}, + 0xFD3 = { 4872, 1}, + 0xFD9 = { 4873, 4}, + 0xFDA = { 4877, 1}, + 0xFDB = { 4878, 1}, + 0xFE0 = { 4879, 28}, + 0xFE1 = { 4907, 26}, + 0xFE2 = { 4933, 26}, + 0xFE3 = { 4959, 32}, + 0xFE4 = { 4991, 29}, + 0xFE5 = { 5020, 27}, + 0xFE6 = { 5047, 27}, + 0xFE7 = { 5074, 33}, + 0xFE8 = { 5107, 32}, + 0xFE9 = { 5139, 17}, + 0xFEA = { 5156, 17}, + 0xFEB = { 5173, 29}, + 0xFEC = { 5202, 31}, + 0xFED = { 5233, 18}, + 0xFEE = { 5251, 26}, + 0xFEF = { 5277, 32}, + 0xFF0 = { 5309, 19}, + 0xFF1 = { 5328, 18}, + 0xFF2 = { 5346, 17}, + 0xFF3 = { 5363, 17}, + 0xFF4 = { 5380, 19}, + 0xFF5 = { 5399, 18}, + 0xFF6 = { 5417, 17}, + 0xFF7 = { 5434, 17}, + 0xFF8 = { 5451, 4}, + 0xFF9 = { 5455, 4}, + 0xFFA = { 5459, 4}, + 0xFFB = { 5463, 17}, + 0xFFC = { 5480, 4}, + 0xFFD = { 5484, 4}, + 0xFFE = { 5488, 4}, + 0xFFF = { 5492, 17}, } diff --git a/core/rexcode/isa/arm32/tablegen/generated/encode_tables.odin b/core/rexcode/isa/arm32/tablegen/generated/encode_tables.odin index b2bc611f0..35d119e3d 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 := [1701]lib.Encoding{ +ENCODE_FORMS := [1722]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} }, @@ -1013,7 +1013,6 @@ ENCODE_FORMS := [1701]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, {.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} }, { .VFMS, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0x0EA00B40, 0x0FB00B50, .VFPV4, .A32, {}, {.F64,.NONE} }, @@ -1029,6 +1028,10 @@ ENCODE_FORMS := [1701]lib.Encoding{ { .VFNMS, {.SPR,.SPR,.SPR,.NONE}, {.VD_S,.VN_S,.VM_S,.NONE}, 0x0E900A00, 0x0FB00B50, .VFPV4, .A32, {}, {.F32,.NONE} }, { .VFNMS, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0x0E900B00, 0x0FB00B50, .VFPV4, .A32, {}, {.F64,.NONE} }, { .VFNMS, {.SPR,.SPR,.SPR,.NONE}, {.VD_S,.VN_S,.VM_S,.NONE}, 0x0E900900, 0x0FB00F50, .HALF_FP, .A32, {}, {.F16,.NONE} }, + // .VFMAB + { .VFMAB, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xFC300810, 0xFFB00F70, .BF16, .A32, {}, {.BF16,.NONE} }, + // .VFMAT + { .VFMAT, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xFC300850, 0xFFB00F70, .BF16, .A32, {}, {.BF16,.NONE} }, // .VABS { .VABS, {.SPR,.SPR,.NONE,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EB00AC0, 0x0FBF0FD0, .VFPV2, .A32, {}, {.F32,.NONE} }, { .VABS, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0x0EB00BC0, 0x0FBF0FD0, .VFPV2, .A32, {}, {.F64,.NONE} }, @@ -1143,21 +1146,27 @@ ENCODE_FORMS := [1701]lib.Encoding{ { .VMOV, {.DPR,.GPR,.GPR,.NONE}, {.VM_D,.RT_A32,.RT2_A32,.NONE}, 0x0C400B10, 0x0FF00FD0, .VFPV2, .A32, {}, {.NONE,.NONE} }, { .VMOV, {.GPR,.GPR,.SPR,.SPR}, {.RT_A32,.RT2_A32,.VM_S,.VM_S_PLUS1}, 0x0C500A10, 0x0FF00FD0, .VFPV2, .A32, {}, {.NONE,.NONE} }, { .VMOV, {.SPR,.SPR,.GPR,.GPR}, {.VM_S,.VM_S_PLUS1,.RT_A32,.RT2_A32}, 0x0C400A10, 0x0FF00FD0, .VFPV2, .A32, {}, {.NONE,.NONE} }, - { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800010, 0xFEB80FB0, .NEON, .A32, {}, {.I32,.NONE} }, - { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800210, 0xFEB80FB0, .NEON, .A32, {}, {.I32,.NONE} }, - { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800410, 0xFEB80FB0, .NEON, .A32, {}, {.I32,.NONE} }, - { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800610, 0xFEB80FB0, .NEON, .A32, {}, {.I32,.NONE} }, - { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800810, 0xFEB80FB0, .NEON, .A32, {}, {.I16,.NONE} }, - { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800A10, 0xFEB80FB0, .NEON, .A32, {}, {.I16,.NONE} }, - { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800C10, 0xFEB80FB0, .NEON, .A32, {}, {.I32,.NONE} }, - { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800D10, 0xFEB80FB0, .NEON, .A32, {}, {.I32,.NONE} }, - { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800E10, 0xFEB80FB0, .NEON, .A32, {}, {.I8,.NONE} }, - { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800F10, 0xFEB80FB0, .NEON, .A32, {}, {.F32,.NONE} }, - { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800E30, 0xFEB80FB0, .NEON, .A32, {}, {.I64,.NONE} }, + { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800010, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, { .VMOV, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800050, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, + { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800210, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, + { .VMOV, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800250, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, + { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800410, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, + { .VMOV, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800450, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, + { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800610, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, + { .VMOV, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800650, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, + { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800810, 0xFEB80FF0, .NEON, .A32, {}, {.I16,.NONE} }, { .VMOV, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800850, 0xFEB80FF0, .NEON, .A32, {}, {.I16,.NONE} }, + { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800A10, 0xFEB80FF0, .NEON, .A32, {}, {.I16,.NONE} }, + { .VMOV, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800A50, 0xFEB80FF0, .NEON, .A32, {}, {.I16,.NONE} }, + { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800C10, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, + { .VMOV, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800C50, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, + { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800D10, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, + { .VMOV, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800D50, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, + { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800E10, 0xFEB80FF0, .NEON, .A32, {}, {.I8,.NONE} }, { .VMOV, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800E50, 0xFEB80FF0, .NEON, .A32, {}, {.I8,.NONE} }, + { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800F10, 0xFEB80FF0, .NEON, .A32, {}, {.F32,.NONE} }, { .VMOV, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800F50, 0xFEB80FF0, .NEON, .A32, {}, {.F32,.NONE} }, + { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800E30, 0xFEB80FF0, .NEON, .A32, {}, {.I64,.NONE} }, { .VMOV, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800E70, 0xFEB80FF0, .NEON, .A32, {}, {.I64,.NONE} }, { .VMOV, {.GPR,.DPR_ELEM,.NONE,.NONE}, {.RT_A32,.NEON_LANE_VN_32,.NONE,.NONE}, 0x0E100B10, 0x0F100F1F, .NEON, .A32, {}, {.SZ32,.NONE} }, { .VMOV, {.QPR_ELEM,.GPR,.NONE,.NONE}, {.VD_Q,.RT_T32,.NONE,.NONE}, 0xEE000B10, 0xFF900F1F, .MVE_INT, .T32, {thumb32=true}, {.SZ32,.NONE} }, @@ -1176,12 +1185,22 @@ ENCODE_FORMS := [1701]lib.Encoding{ // .VSTR { .VSTR, {.SPR,.MEM,.NONE,.NONE}, {.VD_S,.MEM_IMM8_SCALED4,.NONE,.NONE}, 0x0D000A00, 0x0F300F00, .VFPV2, .A32, {}, {.NONE,.NONE} }, { .VSTR, {.DPR,.MEM,.NONE,.NONE}, {.VD_D,.MEM_IMM8_SCALED4,.NONE,.NONE}, 0x0D000B00, 0x0F300F00, .VFPV2, .A32, {}, {.NONE,.NONE} }, - // .VLDM - { .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} }, - // .VSTM - { .VSTM, {.GPR,.SPR_LIST,.NONE,.NONE}, {.RN_A32,.VFP_S_LIST,.NONE,.NONE}, 0x0C800A00, 0x0F900F00, .VFPV2, .A32, {}, {.NONE,.NONE} }, - { .VSTM, {.GPR,.DPR_LIST,.NONE,.NONE}, {.RN_A32,.VFP_D_LIST,.NONE,.NONE}, 0x0C800B00, 0x0F900F00, .VFPV2, .A32, {}, {.NONE,.NONE} }, + // .VLDMIA + { .VLDMIA, {.GPR,.SPR_LIST,.NONE,.NONE}, {.RN_A32_WB,.VFP_S_LIST,.NONE,.NONE}, 0x0C900A00, 0x0FB00F00, .VFPV2, .A32, {}, {.NONE,.NONE} }, + { .VLDMIA, {.GPR,.DPR_LIST,.NONE,.NONE}, {.RN_A32_WB,.VFP_D_LIST,.NONE,.NONE}, 0x0C900B00, 0x0FB00F00, .VFPV2, .A32, {}, {.NONE,.NONE} }, + { .VLDMIA, {.GPR,.SPR_LIST,.NONE,.NONE}, {.RN_A32_WB,.VFP_S_LIST,.NONE,.NONE}, 0x0CB00A00, 0x0FB00F00, .VFPV2, .A32, {}, {.NONE,.NONE} }, + { .VLDMIA, {.GPR,.DPR_LIST,.NONE,.NONE}, {.RN_A32_WB,.VFP_D_LIST,.NONE,.NONE}, 0x0CB00B00, 0x0FB00F00, .VFPV2, .A32, {}, {.NONE,.NONE} }, + // .VLDMDB + { .VLDMDB, {.GPR,.SPR_LIST,.NONE,.NONE}, {.RN_A32_WB,.VFP_S_LIST,.NONE,.NONE}, 0x0D300A00, 0x0FB00F00, .VFPV2, .A32, {}, {.NONE,.NONE} }, + { .VLDMDB, {.GPR,.DPR_LIST,.NONE,.NONE}, {.RN_A32_WB,.VFP_D_LIST,.NONE,.NONE}, 0x0D300B00, 0x0FB00F00, .VFPV2, .A32, {}, {.NONE,.NONE} }, + // .VSTMIA + { .VSTMIA, {.GPR,.SPR_LIST,.NONE,.NONE}, {.RN_A32_WB,.VFP_S_LIST,.NONE,.NONE}, 0x0C800A00, 0x0FB00F00, .VFPV2, .A32, {}, {.NONE,.NONE} }, + { .VSTMIA, {.GPR,.DPR_LIST,.NONE,.NONE}, {.RN_A32_WB,.VFP_D_LIST,.NONE,.NONE}, 0x0C800B00, 0x0FB00F00, .VFPV2, .A32, {}, {.NONE,.NONE} }, + { .VSTMIA, {.GPR,.SPR_LIST,.NONE,.NONE}, {.RN_A32_WB,.VFP_S_LIST,.NONE,.NONE}, 0x0CA00A00, 0x0FB00F00, .VFPV2, .A32, {}, {.NONE,.NONE} }, + { .VSTMIA, {.GPR,.DPR_LIST,.NONE,.NONE}, {.RN_A32_WB,.VFP_D_LIST,.NONE,.NONE}, 0x0CA00B00, 0x0FB00F00, .VFPV2, .A32, {}, {.NONE,.NONE} }, + // .VSTMDB + { .VSTMDB, {.GPR,.SPR_LIST,.NONE,.NONE}, {.RN_A32_WB,.VFP_S_LIST,.NONE,.NONE}, 0x0D200A00, 0x0FB00F00, .VFPV2, .A32, {}, {.NONE,.NONE} }, + { .VSTMDB, {.GPR,.DPR_LIST,.NONE,.NONE}, {.RN_A32_WB,.VFP_D_LIST,.NONE,.NONE}, 0x0D200B00, 0x0FB00F00, .VFPV2, .A32, {}, {.NONE,.NONE} }, // .VPUSH { .VPUSH, {.SPR_LIST,.NONE,.NONE,.NONE}, {.VFP_S_LIST,.NONE,.NONE,.NONE}, 0x0D2D0A00, 0x0FFF0F00, .VFPV2, .A32, {}, {.NONE,.NONE} }, { .VPUSH, {.DPR_LIST,.NONE,.NONE,.NONE}, {.VFP_D_LIST,.NONE,.NONE,.NONE}, 0x0D2D0B00, 0x0FFF0F00, .VFPV2, .A32, {}, {.NONE,.NONE} }, @@ -1475,16 +1494,22 @@ ENCODE_FORMS := [1701]lib.Encoding{ // .VMVN { .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} }, - { .VMVN, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800030, 0xFEB80F90, .NEON, .A32, {}, {.I32,.NONE} }, - { .VMVN, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800230, 0xFEB80F90, .NEON, .A32, {}, {.I32,.NONE} }, - { .VMVN, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800430, 0xFEB80F90, .NEON, .A32, {}, {.I32,.NONE} }, - { .VMVN, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800630, 0xFEB80F90, .NEON, .A32, {}, {.I32,.NONE} }, - { .VMVN, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800830, 0xFEB80F90, .NEON, .A32, {}, {.I16,.NONE} }, - { .VMVN, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800A30, 0xFEB80F90, .NEON, .A32, {}, {.I16,.NONE} }, - { .VMVN, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800C30, 0xFEB80F90, .NEON, .A32, {}, {.I32,.NONE} }, - { .VMVN, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800D30, 0xFEB80F90, .NEON, .A32, {}, {.I32,.NONE} }, - { .VMVN, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800070, 0xFEB80FD0, .NEON, .A32, {}, {.I32,.NONE} }, - { .VMVN, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800870, 0xFEB80FD0, .NEON, .A32, {}, {.I16,.NONE} }, + { .VMVN, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800030, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, + { .VMVN, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800070, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, + { .VMVN, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800230, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, + { .VMVN, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800270, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, + { .VMVN, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800430, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, + { .VMVN, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800470, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, + { .VMVN, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800630, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, + { .VMVN, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800670, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, + { .VMVN, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800830, 0xFEB80FF0, .NEON, .A32, {}, {.I16,.NONE} }, + { .VMVN, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800870, 0xFEB80FF0, .NEON, .A32, {}, {.I16,.NONE} }, + { .VMVN, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800A30, 0xFEB80FF0, .NEON, .A32, {}, {.I16,.NONE} }, + { .VMVN, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800A70, 0xFEB80FF0, .NEON, .A32, {}, {.I16,.NONE} }, + { .VMVN, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800C30, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, + { .VMVN, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800C70, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, + { .VMVN, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800D30, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, + { .VMVN, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800D70, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, { .VMVN, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xFFB005C0, 0xFFB30F51, .MVE_INT, .T32, {thumb32=true}, {.NONE,.NONE} }, // .VMOVN { .VMOVN, {.DPR,.QPR,.NONE,.NONE}, {.VD_D,.VM_Q,.NONE,.NONE}, 0xF3B20200, 0xFFBF0FD0, .NEON, .A32, {}, {.I16,.NONE} }, @@ -1856,18 +1881,21 @@ ENCODE_FORMS := [1701]lib.Encoding{ { .VLD2, {.DPR_LIST,.MEM,.NONE,.NONE}, {.NEON_LANE_D_8_2,.RN_A32,.NONE,.NONE}, 0xF4A0010F, 0xFFB00F1F, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VLD2, {.DPR_LIST,.MEM,.NONE,.NONE}, {.NEON_LANE_D_16_2,.RN_A32,.NONE,.NONE}, 0xF4A0050F, 0xFFB00F3F, .NEON, .A32, {}, {.SZ16,.NONE} }, { .VLD2, {.DPR_LIST,.MEM,.NONE,.NONE}, {.NEON_LANE_D_32_2,.RN_A32,.NONE,.NONE}, 0xF4A0090F, 0xFFB00F7F, .NEON, .A32, {}, {.SZ32,.NONE} }, + { .VLD2, {.DPR_LIST,.MEM,.NONE,.NONE}, {.NEON_D_LIST_ALL_2,.RN_A32,.NONE,.NONE}, 0xF4A00D0F, 0xFFB00F0F, .NEON, .A32, {}, {.SZ8,.NONE} }, // .VLD3 { .VLD3, {.DPR_LIST,.MEM,.NONE,.NONE}, {.NEON_D_LIST_3,.RN_A32,.NONE,.NONE}, 0xF420040F, 0xFFF00F0F, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VLD3, {.DPR_LIST,.MEM,.NONE,.NONE}, {.NEON_D_LIST_3X,.RN_A32,.NONE,.NONE}, 0xF420050F, 0xFFF00F0F, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VLD3, {.DPR_LIST,.MEM,.NONE,.NONE}, {.NEON_LANE_D_8_3,.RN_A32,.NONE,.NONE}, 0xF4A0020F, 0xFFB00F1F, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VLD3, {.DPR_LIST,.MEM,.NONE,.NONE}, {.NEON_LANE_D_16_3,.RN_A32,.NONE,.NONE}, 0xF4A0060F, 0xFFB00F3F, .NEON, .A32, {}, {.SZ16,.NONE} }, { .VLD3, {.DPR_LIST,.MEM,.NONE,.NONE}, {.NEON_LANE_D_32_3,.RN_A32,.NONE,.NONE}, 0xF4A00A0F, 0xFFB00F7F, .NEON, .A32, {}, {.SZ32,.NONE} }, + { .VLD3, {.DPR_LIST,.MEM,.NONE,.NONE}, {.NEON_D_LIST_ALL_3,.RN_A32,.NONE,.NONE}, 0xF4A00E0F, 0xFFB00F0F, .NEON, .A32, {}, {.SZ8,.NONE} }, // .VLD4 { .VLD4, {.DPR_LIST,.MEM,.NONE,.NONE}, {.NEON_D_LIST_4,.RN_A32,.NONE,.NONE}, 0xF420000F, 0xFFF00F0F, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VLD4, {.DPR_LIST,.MEM,.NONE,.NONE}, {.NEON_D_LIST_4X,.RN_A32,.NONE,.NONE}, 0xF420010F, 0xFFF00F0F, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VLD4, {.DPR_LIST,.MEM,.NONE,.NONE}, {.NEON_LANE_D_8_4,.RN_A32,.NONE,.NONE}, 0xF4A0030F, 0xFFB00F1F, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VLD4, {.DPR_LIST,.MEM,.NONE,.NONE}, {.NEON_LANE_D_16_4,.RN_A32,.NONE,.NONE}, 0xF4A0070F, 0xFFB00F3F, .NEON, .A32, {}, {.SZ16,.NONE} }, { .VLD4, {.DPR_LIST,.MEM,.NONE,.NONE}, {.NEON_LANE_D_32_4,.RN_A32,.NONE,.NONE}, 0xF4A00B0F, 0xFFB00F7F, .NEON, .A32, {}, {.SZ32,.NONE} }, + { .VLD4, {.DPR_LIST,.MEM,.NONE,.NONE}, {.NEON_D_LIST_ALL_4,.RN_A32,.NONE,.NONE}, 0xF4A00F0F, 0xFFB00F0F, .NEON, .A32, {}, {.SZ8,.NONE} }, // .VST1 { .VST1, {.DPR_LIST,.MEM,.NONE,.NONE}, {.NEON_D_LIST_1,.RN_A32,.NONE,.NONE}, 0xF400070F, 0xFFF00F0F, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VST1, {.DPR_LIST,.MEM,.NONE,.NONE}, {.NEON_D_LIST_2,.RN_A32,.NONE,.NONE}, 0xF4000A0F, 0xFFF00F0F, .NEON, .A32, {}, {.SZ8,.NONE} }, @@ -1977,12 +2005,6 @@ ENCODE_FORMS := [1701]lib.Encoding{ { .VMOVX, {.SPR,.SPR,.NONE,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0xFEB00A40, 0xFFBF0FD0, .HALF_FP, .T32, {thumb32=true}, {.F16,.NONE} }, // .VINS { .VINS, {.SPR,.SPR,.NONE,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0xFEB00AC0, 0xFFBF0FD0, .HALF_FP, .T32, {thumb32=true}, {.F16,.NONE} }, - // .VLD2R - { .VLD2R, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VD_D,.RN_A32,.NONE,.NONE}, 0xF4A00D0F, 0xFFB00F0F, .NEON, .A32, {}, {.SZ8,.NONE} }, - // .VLD3R - { .VLD3R, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VD_D,.RN_A32,.NONE,.NONE}, 0xF4A00E0F, 0xFFB00F0F, .NEON, .A32, {}, {.SZ8,.NONE} }, - // .VLD4R - { .VLD4R, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VD_D,.RN_A32,.NONE,.NONE}, 0xF4A00F0F, 0xFFB00F0F, .NEON, .A32, {}, {.SZ8,.NONE} }, // .IT { .IT, {.COND,.IMM4,.NONE,.NONE}, {.NONE,.IT_MASK,.NONE,.NONE}, 0x0000BF00, 0x0000FF00, .V6T2, .T32, {}, {.NONE,.NONE} }, // .TT @@ -2576,323 +2598,324 @@ ENCODE_RUNS := [lib.Mnemonic]lib.Encode_Run{ .VNMUL = { 718, 2}, .VNMLA = { 720, 2}, .VNMLS = { 722, 2}, - .VFMA = { 724, 8}, - .VFMS = { 732, 6}, - .VFNMA = { 738, 3}, - .VFNMS = { 741, 3}, - .VABS = { 744, 12}, - .VNEG = { 756, 12}, - .VSQRT = { 768, 3}, - .VCMP = { 771, 8}, - .VCMPE = { 779, 4}, - .VCVT = { 783, 35}, - .VCVTB = { 818, 2}, - .VCVTT = { 820, 2}, - .VCVTA = { 822, 2}, - .VCVTN = { 824, 2}, - .VCVTP = { 826, 2}, - .VCVTM = { 828, 2}, - .VCVTR = { 830, 4}, - .VMOV = { 834, 33}, - .VMRS = { 867, 1}, - .VMSR = { 868, 1}, - .VLDR = { 869, 2}, - .VSTR = { 871, 2}, - .VLDM = { 873, 2}, - .VSTM = { 875, 2}, - .VPUSH = { 877, 2}, - .VPOP = { 879, 2}, - .VSEL = { 881, 2}, - .VMAXNM = { 883, 2}, - .VMINNM = { 885, 2}, - .VRINTA = { 887, 3}, - .VRINTN = { 890, 3}, - .VRINTP = { 893, 3}, - .VRINTM = { 896, 3}, - .VRINTR = { 899, 2}, - .VRINTZ = { 901, 3}, - .VRINTX = { 904, 3}, - .VADDL = { 907, 6}, - .VADDW = { 913, 6}, - .VSUBL = { 919, 6}, - .VSUBW = { 925, 6}, - .VHADD = { 931, 9}, - .VHSUB = { 940, 9}, - .VRHADD = { 949, 3}, - .VQADD = { 952, 11}, - .VQSUB = { 963, 11}, - .VMULL = { 974, 11}, - .VMLAL = { 985, 10}, - .VMLSL = { 995, 10}, - .VQDMULL = { 1005, 4}, - .VQDMLAL = { 1009, 4}, - .VQDMLSL = { 1013, 4}, - .VQDMULH = { 1017, 8}, - .VQRDMULH = { 1025, 8}, - .VQRDMLAH = { 1033, 8}, - .VQRDMLSH = { 1041, 8}, - .VABA = { 1049, 8}, - .VABAL = { 1057, 6}, - .VABD = { 1063, 10}, - .VABDL = { 1073, 6}, - .VAND = { 1079, 3}, - .VBIC = { 1082, 15}, - .VORR = { 1097, 15}, - .VORN = { 1112, 3}, - .VEOR = { 1115, 3}, - .VBSL = { 1118, 2}, - .VBIT = { 1120, 2}, - .VBIF = { 1122, 2}, - .VMVN = { 1124, 13}, - .VMOVN = { 1137, 3}, - .VQMOVN = { 1140, 6}, - .VQMOVUN = { 1146, 3}, - .VMOVL = { 1149, 6}, - .VTST = { 1155, 6}, - .VCEQ = { 1161, 14}, - .VCGE = { 1175, 16}, - .VCGT = { 1191, 16}, - .VCLE = { 1207, 18}, - .VCLT = { 1225, 18}, - .VACGE = { 1243, 2}, - .VACGT = { 1245, 2}, - .VACLE = { 1247, 2}, - .VACLT = { 1249, 2}, - .VMAX = { 1251, 13}, - .VMIN = { 1264, 13}, - .VPMAX = { 1277, 5}, - .VPMIN = { 1282, 5}, - .VPADD = { 1287, 5}, - .VPADDL = { 1292, 6}, - .VPADAL = { 1298, 4}, - .VRECPE = { 1302, 4}, - .VRECPS = { 1306, 2}, - .VRSQRTE = { 1308, 4}, - .VRSQRTS = { 1312, 2}, - .VSHL = { 1314, 9}, - .VSHR = { 1323, 3}, - .VSRA = { 1326, 3}, - .VRSHL = { 1329, 5}, - .VRSHR = { 1334, 3}, - .VRSRA = { 1337, 2}, - .VSLI = { 1339, 2}, - .VSRI = { 1341, 2}, - .VQSHL = { 1343, 7}, - .VQSHRN = { 1350, 1}, - .VQSHRUN = { 1351, 1}, - .VQRSHL = { 1352, 16}, - .VQRSHRN = { 1368, 1}, - .VQRSHRUN = { 1369, 1}, - .VSHRN = { 1370, 1}, - .VRSHRN = { 1371, 1}, - .VSHLL = { 1372, 4}, - .VCLS = { 1376, 6}, - .VCLZ = { 1382, 6}, - .VCNT = { 1388, 2}, - .VREV16 = { 1390, 2}, - .VREV32 = { 1392, 4}, - .VREV64 = { 1396, 6}, - .VEXT = { 1402, 2}, - .VTBL = { 1404, 4}, - .VTBX = { 1408, 4}, - .VTRN = { 1412, 6}, - .VUZP = { 1418, 5}, - .VZIP = { 1423, 5}, - .VDUP = { 1428, 5}, - .VSWP = { 1433, 2}, - .VLD1 = { 1435, 8}, - .VLD2 = { 1443, 6}, - .VLD3 = { 1449, 5}, - .VLD4 = { 1454, 5}, - .VST1 = { 1459, 7}, - .VST2 = { 1466, 6}, - .VST3 = { 1472, 5}, - .VST4 = { 1477, 5}, - .AESE = { 1482, 1}, - .AESD = { 1483, 1}, - .AESMC = { 1484, 1}, - .AESIMC = { 1485, 1}, - .SHA1H = { 1486, 1}, - .SHA1SU0 = { 1487, 1}, - .SHA1SU1 = { 1488, 1}, - .SHA1C = { 1489, 1}, - .SHA1M = { 1490, 1}, - .SHA1P = { 1491, 1}, - .SHA256H = { 1492, 1}, - .SHA256H2 = { 1493, 1}, - .SHA256SU0 = { 1494, 1}, - .SHA256SU1 = { 1495, 1}, - .VJCVT = { 1496, 1}, - .VSDOT = { 1497, 4}, - .VUDOT = { 1501, 4}, - .VDOT = { 1505, 2}, - .VMMLA = { 1507, 1}, - .VFMAL = { 1508, 2}, - .VFMSL = { 1510, 2}, - .VCMLA = { 1512, 5}, - .VCADD = { 1517, 2}, - .VSMMLA = { 1519, 1}, - .VUMMLA = { 1520, 1}, - .VUSMMLA = { 1521, 1}, - .VSUDOT = { 1522, 2}, - .VUSDOT = { 1524, 4}, - .VQABS = { 1528, 1}, - .VQNEG = { 1529, 1}, - .VMOVX = { 1530, 1}, - .VINS = { 1531, 1}, - .VLD2R = { 1532, 1}, - .VLD3R = { 1533, 1}, - .VLD4R = { 1534, 1}, - .IT = { 1535, 1}, - .TT = { 1536, 1}, - .TTT = { 1537, 1}, - .TTA = { 1538, 1}, - .TTAT = { 1539, 1}, - .SG = { 1540, 1}, - .BXNS = { 1541, 1}, - .BLXNS = { 1542, 1}, - .PAC = { 1543, 1}, - .PACBTI = { 1544, 1}, - .AUT = { 1545, 1}, - .AUTG = { 1546, 1}, - .BTI = { 1547, 1}, - .WLS = { 1548, 1}, - .WLSTP = { 1549, 1}, - .DLS = { 1550, 1}, - .DLSTP = { 1551, 1}, - .LE = { 1552, 1}, - .LETP = { 1553, 1}, - .LCTP = { 1554, 1}, - .BF = { 1555, 1}, - .BFX = { 1556, 1}, - .BFL = { 1557, 1}, - .BFLX = { 1558, 1}, - .BFCSEL = { 1559, 1}, - .CX1 = { 1560, 1}, - .CX1A = { 1561, 1}, - .CX1D = { 1562, 1}, - .CX1DA = { 1563, 1}, - .CX2 = { 1564, 1}, - .CX2A = { 1565, 1}, - .CX2D = { 1566, 1}, - .CX2DA = { 1567, 1}, - .CX3 = { 1568, 1}, - .CX3A = { 1569, 1}, - .CX3D = { 1570, 1}, - .CX3DA = { 1571, 1}, - .VCX1 = { 1572, 2}, - .VCX1A = { 1574, 2}, - .VCX2 = { 1576, 2}, - .VCX2A = { 1578, 2}, - .VCX3 = { 1580, 2}, - .VCX3A = { 1582, 2}, - .VPT = { 1584, 1}, - .VPST = { 1585, 1}, - .VPSEL = { 1586, 1}, - .VPNOT = { 1587, 1}, - .VCTP = { 1588, 1}, - .VADDV = { 1589, 1}, - .VADDVA = { 1590, 1}, - .VADDLV = { 1591, 1}, - .VADDLVA = { 1592, 1}, - .VMAXV = { 1593, 1}, - .VMAXAV = { 1594, 1}, - .VMINV = { 1595, 1}, - .VMINAV = { 1596, 1}, - .VMAXNMV = { 1597, 1}, - .VMAXNMAV = { 1598, 1}, - .VMINNMV = { 1599, 1}, - .VMINNMAV = { 1600, 1}, - .VABAV = { 1601, 1}, - .VMLADAV = { 1602, 1}, - .VMLADAVA = { 1603, 1}, - .VMLADAVX = { 1604, 1}, - .VMLADAVAX = { 1605, 1}, - .VMLALDAV = { 1606, 1}, - .VMLALDAVA = { 1607, 1}, - .VMLALDAVX = { 1608, 1}, - .VMLALDAVAX = { 1609, 1}, - .VMLSDAV = { 1610, 1}, - .VMLSDAVA = { 1611, 1}, - .VMLSDAVX = { 1612, 1}, - .VMLSDAVAX = { 1613, 1}, - .VMLSLDAV = { 1614, 1}, - .VMLSLDAVA = { 1615, 1}, - .VMLSLDAVX = { 1616, 1}, - .VMLSLDAVAX = { 1617, 1}, - .VRMLALDAVH = { 1618, 1}, - .VRMLALDAVHA = { 1619, 1}, - .VRMLALDAVHX = { 1620, 1}, - .VRMLALDAVHAX = { 1621, 1}, - .VRMLSLDAVH = { 1622, 1}, - .VRMLSLDAVHA = { 1623, 1}, - .VRMLSLDAVHX = { 1624, 1}, - .VRMLSLDAVHAX = { 1625, 1}, - .VMLAV = { 1626, 1}, - .VMLAVA = { 1627, 1}, - .VMLSV = { 1628, 1}, - .VMLSVA = { 1629, 1}, - .VCMUL = { 1630, 1}, - .VHCADD = { 1631, 2}, - .VBRSR = { 1633, 1}, - .VSHLC = { 1634, 1}, - .VDDUP = { 1635, 1}, - .VIDUP = { 1636, 1}, - .VDWDUP = { 1637, 1}, - .VIWDUP = { 1638, 1}, - .VMOVNB = { 1639, 1}, - .VMOVNT = { 1640, 1}, - .VQMOVNB = { 1641, 1}, - .VQMOVNT = { 1642, 1}, - .VQMOVUNB = { 1643, 1}, - .VQMOVUNT = { 1644, 1}, - .VSHLLB = { 1645, 1}, - .VSHLLT = { 1646, 1}, - .VMULLB = { 1647, 1}, - .VMULLT = { 1648, 1}, - .VMLALB = { 1649, 1}, - .VMLALT = { 1650, 1}, - .VMLSLB = { 1651, 1}, - .VMLSLT = { 1652, 1}, - .VSHRNB = { 1653, 1}, - .VSHRNT = { 1654, 1}, - .VRSHRNB = { 1655, 1}, - .VRSHRNT = { 1656, 1}, - .VQSHRNB = { 1657, 1}, - .VQSHRNT = { 1658, 1}, - .VQRSHRNB = { 1659, 1}, - .VQRSHRNT = { 1660, 1}, - .VQSHRUNB = { 1661, 1}, - .VQSHRUNT = { 1662, 1}, - .VQRSHRUNB = { 1663, 1}, - .VQRSHRUNT = { 1664, 1}, - .VQDMLADH = { 1665, 1}, - .VQDMLADHX = { 1666, 1}, - .VQDMLSDH = { 1667, 1}, - .VQDMLSDHX = { 1668, 1}, - .VQRDMLADH = { 1669, 1}, - .VQRDMLADHX = { 1670, 1}, - .VQRDMLSDH = { 1671, 1}, - .VQRDMLSDHX = { 1672, 1}, - .VLDRB = { 1673, 2}, - .VLDRH = { 1675, 2}, - .VLDRW = { 1677, 2}, - .VLDRD = { 1679, 2}, - .VSTRB = { 1681, 2}, - .VSTRH = { 1683, 2}, - .VSTRW = { 1685, 2}, - .VSTRD = { 1687, 2}, - .VLD20 = { 1689, 1}, - .VLD21 = { 1690, 1}, - .VLD40 = { 1691, 1}, - .VLD41 = { 1692, 1}, - .VLD42 = { 1693, 1}, - .VLD43 = { 1694, 1}, - .VST20 = { 1695, 1}, - .VST21 = { 1696, 1}, - .VST40 = { 1697, 1}, - .VST41 = { 1698, 1}, - .VST42 = { 1699, 1}, - .VST43 = { 1700, 1}, - ._COUNT = { 1701, 0}, + .VFMA = { 724, 7}, + .VFMS = { 731, 6}, + .VFNMA = { 737, 3}, + .VFNMS = { 740, 3}, + .VFMAB = { 743, 1}, + .VFMAT = { 744, 1}, + .VABS = { 745, 12}, + .VNEG = { 757, 12}, + .VSQRT = { 769, 3}, + .VCMP = { 772, 8}, + .VCMPE = { 780, 4}, + .VCVT = { 784, 35}, + .VCVTB = { 819, 2}, + .VCVTT = { 821, 2}, + .VCVTA = { 823, 2}, + .VCVTN = { 825, 2}, + .VCVTP = { 827, 2}, + .VCVTM = { 829, 2}, + .VCVTR = { 831, 4}, + .VMOV = { 835, 39}, + .VMRS = { 874, 1}, + .VMSR = { 875, 1}, + .VLDR = { 876, 2}, + .VSTR = { 878, 2}, + .VLDMIA = { 880, 4}, + .VLDMDB = { 884, 2}, + .VSTMIA = { 886, 4}, + .VSTMDB = { 890, 2}, + .VPUSH = { 892, 2}, + .VPOP = { 894, 2}, + .VSEL = { 896, 2}, + .VMAXNM = { 898, 2}, + .VMINNM = { 900, 2}, + .VRINTA = { 902, 3}, + .VRINTN = { 905, 3}, + .VRINTP = { 908, 3}, + .VRINTM = { 911, 3}, + .VRINTR = { 914, 2}, + .VRINTZ = { 916, 3}, + .VRINTX = { 919, 3}, + .VADDL = { 922, 6}, + .VADDW = { 928, 6}, + .VSUBL = { 934, 6}, + .VSUBW = { 940, 6}, + .VHADD = { 946, 9}, + .VHSUB = { 955, 9}, + .VRHADD = { 964, 3}, + .VQADD = { 967, 11}, + .VQSUB = { 978, 11}, + .VMULL = { 989, 11}, + .VMLAL = { 1000, 10}, + .VMLSL = { 1010, 10}, + .VQDMULL = { 1020, 4}, + .VQDMLAL = { 1024, 4}, + .VQDMLSL = { 1028, 4}, + .VQDMULH = { 1032, 8}, + .VQRDMULH = { 1040, 8}, + .VQRDMLAH = { 1048, 8}, + .VQRDMLSH = { 1056, 8}, + .VABA = { 1064, 8}, + .VABAL = { 1072, 6}, + .VABD = { 1078, 10}, + .VABDL = { 1088, 6}, + .VAND = { 1094, 3}, + .VBIC = { 1097, 15}, + .VORR = { 1112, 15}, + .VORN = { 1127, 3}, + .VEOR = { 1130, 3}, + .VBSL = { 1133, 2}, + .VBIT = { 1135, 2}, + .VBIF = { 1137, 2}, + .VMVN = { 1139, 19}, + .VMOVN = { 1158, 3}, + .VQMOVN = { 1161, 6}, + .VQMOVUN = { 1167, 3}, + .VMOVL = { 1170, 6}, + .VTST = { 1176, 6}, + .VCEQ = { 1182, 14}, + .VCGE = { 1196, 16}, + .VCGT = { 1212, 16}, + .VCLE = { 1228, 18}, + .VCLT = { 1246, 18}, + .VACGE = { 1264, 2}, + .VACGT = { 1266, 2}, + .VACLE = { 1268, 2}, + .VACLT = { 1270, 2}, + .VMAX = { 1272, 13}, + .VMIN = { 1285, 13}, + .VPMAX = { 1298, 5}, + .VPMIN = { 1303, 5}, + .VPADD = { 1308, 5}, + .VPADDL = { 1313, 6}, + .VPADAL = { 1319, 4}, + .VRECPE = { 1323, 4}, + .VRECPS = { 1327, 2}, + .VRSQRTE = { 1329, 4}, + .VRSQRTS = { 1333, 2}, + .VSHL = { 1335, 9}, + .VSHR = { 1344, 3}, + .VSRA = { 1347, 3}, + .VRSHL = { 1350, 5}, + .VRSHR = { 1355, 3}, + .VRSRA = { 1358, 2}, + .VSLI = { 1360, 2}, + .VSRI = { 1362, 2}, + .VQSHL = { 1364, 7}, + .VQSHRN = { 1371, 1}, + .VQSHRUN = { 1372, 1}, + .VQRSHL = { 1373, 16}, + .VQRSHRN = { 1389, 1}, + .VQRSHRUN = { 1390, 1}, + .VSHRN = { 1391, 1}, + .VRSHRN = { 1392, 1}, + .VSHLL = { 1393, 4}, + .VCLS = { 1397, 6}, + .VCLZ = { 1403, 6}, + .VCNT = { 1409, 2}, + .VREV16 = { 1411, 2}, + .VREV32 = { 1413, 4}, + .VREV64 = { 1417, 6}, + .VEXT = { 1423, 2}, + .VTBL = { 1425, 4}, + .VTBX = { 1429, 4}, + .VTRN = { 1433, 6}, + .VUZP = { 1439, 5}, + .VZIP = { 1444, 5}, + .VDUP = { 1449, 5}, + .VSWP = { 1454, 2}, + .VLD1 = { 1456, 8}, + .VLD2 = { 1464, 7}, + .VLD3 = { 1471, 6}, + .VLD4 = { 1477, 6}, + .VST1 = { 1483, 7}, + .VST2 = { 1490, 6}, + .VST3 = { 1496, 5}, + .VST4 = { 1501, 5}, + .AESE = { 1506, 1}, + .AESD = { 1507, 1}, + .AESMC = { 1508, 1}, + .AESIMC = { 1509, 1}, + .SHA1H = { 1510, 1}, + .SHA1SU0 = { 1511, 1}, + .SHA1SU1 = { 1512, 1}, + .SHA1C = { 1513, 1}, + .SHA1M = { 1514, 1}, + .SHA1P = { 1515, 1}, + .SHA256H = { 1516, 1}, + .SHA256H2 = { 1517, 1}, + .SHA256SU0 = { 1518, 1}, + .SHA256SU1 = { 1519, 1}, + .VJCVT = { 1520, 1}, + .VSDOT = { 1521, 4}, + .VUDOT = { 1525, 4}, + .VDOT = { 1529, 2}, + .VMMLA = { 1531, 1}, + .VFMAL = { 1532, 2}, + .VFMSL = { 1534, 2}, + .VCMLA = { 1536, 5}, + .VCADD = { 1541, 2}, + .VSMMLA = { 1543, 1}, + .VUMMLA = { 1544, 1}, + .VUSMMLA = { 1545, 1}, + .VSUDOT = { 1546, 2}, + .VUSDOT = { 1548, 4}, + .VQABS = { 1552, 1}, + .VQNEG = { 1553, 1}, + .VMOVX = { 1554, 1}, + .VINS = { 1555, 1}, + .IT = { 1556, 1}, + .TT = { 1557, 1}, + .TTT = { 1558, 1}, + .TTA = { 1559, 1}, + .TTAT = { 1560, 1}, + .SG = { 1561, 1}, + .BXNS = { 1562, 1}, + .BLXNS = { 1563, 1}, + .PAC = { 1564, 1}, + .PACBTI = { 1565, 1}, + .AUT = { 1566, 1}, + .AUTG = { 1567, 1}, + .BTI = { 1568, 1}, + .WLS = { 1569, 1}, + .WLSTP = { 1570, 1}, + .DLS = { 1571, 1}, + .DLSTP = { 1572, 1}, + .LE = { 1573, 1}, + .LETP = { 1574, 1}, + .LCTP = { 1575, 1}, + .BF = { 1576, 1}, + .BFX = { 1577, 1}, + .BFL = { 1578, 1}, + .BFLX = { 1579, 1}, + .BFCSEL = { 1580, 1}, + .CX1 = { 1581, 1}, + .CX1A = { 1582, 1}, + .CX1D = { 1583, 1}, + .CX1DA = { 1584, 1}, + .CX2 = { 1585, 1}, + .CX2A = { 1586, 1}, + .CX2D = { 1587, 1}, + .CX2DA = { 1588, 1}, + .CX3 = { 1589, 1}, + .CX3A = { 1590, 1}, + .CX3D = { 1591, 1}, + .CX3DA = { 1592, 1}, + .VCX1 = { 1593, 2}, + .VCX1A = { 1595, 2}, + .VCX2 = { 1597, 2}, + .VCX2A = { 1599, 2}, + .VCX3 = { 1601, 2}, + .VCX3A = { 1603, 2}, + .VPT = { 1605, 1}, + .VPST = { 1606, 1}, + .VPSEL = { 1607, 1}, + .VPNOT = { 1608, 1}, + .VCTP = { 1609, 1}, + .VADDV = { 1610, 1}, + .VADDVA = { 1611, 1}, + .VADDLV = { 1612, 1}, + .VADDLVA = { 1613, 1}, + .VMAXV = { 1614, 1}, + .VMAXAV = { 1615, 1}, + .VMINV = { 1616, 1}, + .VMINAV = { 1617, 1}, + .VMAXNMV = { 1618, 1}, + .VMAXNMAV = { 1619, 1}, + .VMINNMV = { 1620, 1}, + .VMINNMAV = { 1621, 1}, + .VABAV = { 1622, 1}, + .VMLADAV = { 1623, 1}, + .VMLADAVA = { 1624, 1}, + .VMLADAVX = { 1625, 1}, + .VMLADAVAX = { 1626, 1}, + .VMLALDAV = { 1627, 1}, + .VMLALDAVA = { 1628, 1}, + .VMLALDAVX = { 1629, 1}, + .VMLALDAVAX = { 1630, 1}, + .VMLSDAV = { 1631, 1}, + .VMLSDAVA = { 1632, 1}, + .VMLSDAVX = { 1633, 1}, + .VMLSDAVAX = { 1634, 1}, + .VMLSLDAV = { 1635, 1}, + .VMLSLDAVA = { 1636, 1}, + .VMLSLDAVX = { 1637, 1}, + .VMLSLDAVAX = { 1638, 1}, + .VRMLALDAVH = { 1639, 1}, + .VRMLALDAVHA = { 1640, 1}, + .VRMLALDAVHX = { 1641, 1}, + .VRMLALDAVHAX = { 1642, 1}, + .VRMLSLDAVH = { 1643, 1}, + .VRMLSLDAVHA = { 1644, 1}, + .VRMLSLDAVHX = { 1645, 1}, + .VRMLSLDAVHAX = { 1646, 1}, + .VMLAV = { 1647, 1}, + .VMLAVA = { 1648, 1}, + .VMLSV = { 1649, 1}, + .VMLSVA = { 1650, 1}, + .VCMUL = { 1651, 1}, + .VHCADD = { 1652, 2}, + .VBRSR = { 1654, 1}, + .VSHLC = { 1655, 1}, + .VDDUP = { 1656, 1}, + .VIDUP = { 1657, 1}, + .VDWDUP = { 1658, 1}, + .VIWDUP = { 1659, 1}, + .VMOVNB = { 1660, 1}, + .VMOVNT = { 1661, 1}, + .VQMOVNB = { 1662, 1}, + .VQMOVNT = { 1663, 1}, + .VQMOVUNB = { 1664, 1}, + .VQMOVUNT = { 1665, 1}, + .VSHLLB = { 1666, 1}, + .VSHLLT = { 1667, 1}, + .VMULLB = { 1668, 1}, + .VMULLT = { 1669, 1}, + .VMLALB = { 1670, 1}, + .VMLALT = { 1671, 1}, + .VMLSLB = { 1672, 1}, + .VMLSLT = { 1673, 1}, + .VSHRNB = { 1674, 1}, + .VSHRNT = { 1675, 1}, + .VRSHRNB = { 1676, 1}, + .VRSHRNT = { 1677, 1}, + .VQSHRNB = { 1678, 1}, + .VQSHRNT = { 1679, 1}, + .VQRSHRNB = { 1680, 1}, + .VQRSHRNT = { 1681, 1}, + .VQSHRUNB = { 1682, 1}, + .VQSHRUNT = { 1683, 1}, + .VQRSHRUNB = { 1684, 1}, + .VQRSHRUNT = { 1685, 1}, + .VQDMLADH = { 1686, 1}, + .VQDMLADHX = { 1687, 1}, + .VQDMLSDH = { 1688, 1}, + .VQDMLSDHX = { 1689, 1}, + .VQRDMLADH = { 1690, 1}, + .VQRDMLADHX = { 1691, 1}, + .VQRDMLSDH = { 1692, 1}, + .VQRDMLSDHX = { 1693, 1}, + .VLDRB = { 1694, 2}, + .VLDRH = { 1696, 2}, + .VLDRW = { 1698, 2}, + .VLDRD = { 1700, 2}, + .VSTRB = { 1702, 2}, + .VSTRH = { 1704, 2}, + .VSTRW = { 1706, 2}, + .VSTRD = { 1708, 2}, + .VLD20 = { 1710, 1}, + .VLD21 = { 1711, 1}, + .VLD40 = { 1712, 1}, + .VLD41 = { 1713, 1}, + .VLD42 = { 1714, 1}, + .VLD43 = { 1715, 1}, + .VST20 = { 1716, 1}, + .VST21 = { 1717, 1}, + .VST40 = { 1718, 1}, + .VST41 = { 1719, 1}, + .VST42 = { 1720, 1}, + .VST43 = { 1721, 1}, + ._COUNT = { 1722, 0}, } diff --git a/core/rexcode/isa/arm32/tables/arm32.bucket_list.bin b/core/rexcode/isa/arm32/tables/arm32.bucket_list.bin index 260b508c6ca49d9342ad7c480db2d6723aba3dae..090e3ecb97680768b3aaecfb7344eb1357b8cbe6 100644 GIT binary patch literal 11018 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�dfn2iOZ>sv*MMJRs!>pW(ex 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 literal 39123 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 WK5$`0WMN;pup_dtA6z&QSr`CK&^#Uh diff --git a/core/rexcode/isa/arm32/tables/arm32.encode_runs.bin b/core/rexcode/isa/arm32/tables/arm32.encode_runs.bin index 0f8d5c2d66301a27e7373aebe2f51059a1fbccb5..395bb43b1c7581bb5582f2cdb337526184f7aa57 100644 GIT binary patch delta 1740 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 delta 1057 zcmew&bxLYO5+gGg1KZ?OMtNyY24)6k21W)J21W)(1`uFn;ALQC;ACK)JfBgTnSp_0 z;zi-f7Z|mexfxg{|7A>N=44=!9a53;Rh%oRl@G%H82r&pU2!PE3 z5!?)1U{xSC$Q+Q_AX7QOHZd?TOg_%ZKe>omN0^O)kpYAm7?>ECK*|}ICU0bxx90%! z*%{awn802Hc@u=$7}ywC!KQ#b%nWun$nES5ybSCNj0~I%oFErX=4X+VK%oM%fti7cfsuigfd%XbMsQd$Fo0-~uNWCX@*wwv#6WD2 z3@ZaOSUrdanaWTP)&Nq5FbJd=6zm`c5H`ruAX|7CxEQz@cp3N@co}#Y_!;;Z_`xhe z20jJ>27U%X27U$s20my2f-DBTI3MFQ6UV>N(aV*3!Aj1)uiGg|YZq8zUSx^{&9SU+3<77j2bwN-z i2MaSWFt9VoFi3AM<@(FW%*ennxs*qpk!SK;p6dYgRxm>V diff --git a/core/rexcode/isa/arm32/tables/arm32.idx_a32.bin b/core/rexcode/isa/arm32/tables/arm32.idx_a32.bin index 3a5dfbf652f60d8c5566aeabfb7cbb9f16edfb78..c9c9fba7973340d7e76dc74b445c4d47b6d4bfaf 100644 GIT binary patch delta 844 zcmZqRXyBNzs6Liq8U1p^sIIVF&9Rh7h(mhD~hR40qYI7}(k8 zFf3;0VOY=3$gqK(hhYypBg0;HMuvUtObiFu85s_;Gcp{iXXj-&&(6qjfnAW{Av+_( zBX(Yf_v}mzAK3*Nm^c_2m^m03SU4CNSUDIO*f&B4e}!@8yTFfmMnicg2qGdLI- zW^ynw%;sQZn8U%uFb^s|A3{&Q&!k+>#IT8jiD3%|6T>zRCWajxOboj?m>BkOFfr`o zU}8AH!NhQggNfk?2NT0F4km^Z983(SIG7mDa4<2P<6vUAz`?|DiGzvZ3I`LzH4Y|* z8yrjww>X#>?r<oghQA!#3>=&s3<8`y3^JT-3`+H! zYz!KlYz%swJPcNx91KpJYz!WpYz%&!JPc8sYzzsUEDR}}EDRZ(Yz%pvEDS}QEDU9w zEDTkgEDUv=EDTMYEDUX&EDT+oObk7oObmUTEDV!4Ss12qGBM2HWMY`bDa^2zlaFCH zr!d1gPJV{FoPrGRIC&X3~Sl67_PI; zVJK$jVW?+kWN2XLVd!CJWawpQWawjOVwk|r$S{$ekzrCjJ1@h0c1DH;?1Bs%*%=u& zvGX$QXJ=wK$S%lmiJg(*GCL!~6?R63tL%&n*Vq{uuCp^T++b&9xXI4QaEqOd;Q>1% z!$WpPhDYp-43F6v8J@5+GCXBxW_ZEQ$ncV#kpTo=v9mFJU}t0a#?A)fGW=m@V_@Q7 zW8mOmW2oojU=SavUrSN*t^V>KvR522e304n_uJ4ps&W4tB5_ z5Mj^3%;3bq$l%Pu$l$`k$l%Js%;3Sn%;3$z$l$}l#Nfxl$l%Yx#1P2A$PmQA#1O&( zaa1UTu4f42U}OmAU}A{mU}T8mU}lJgNHD}f>39xCh6D~Kh9nLqh7=AahBT;nI+V`f zU}VVTU}DJTU}VVQU}DIFiswV=0uCmIA`T{o5)LMYG7ct&3JxZQDh?)w8V)9gIu1uB zh6WBMh9(Xsh87MchBgi+h7JxUhAs{!h8_+khCU7^h6x-@43jvR7^ZMAF-+rNVwl0f z#4wA4iD3>06T>_Xrpfh8%Ju9F+c{Vmc60DB9OqzVIK#osaGisL;XVfs!)p#!h7TNU z4Bt4|82)hZFmP~kFbHt6F^F-pG01T8FlcbHG3ar!Fc@*NFqm<&Fj#RiG1zdjFgS3s zFt~6sF}QIuF?evYF!*q?Fa&TiF$8fkF@$ikFhp>&FvM^&F~o5)F(lM;3NsXQ@-Z}W z3NuXM1%{NiF{_|3)0@P~_$;V%~> V!#^%YhW}iQ3=G_i42;~23;^BGdLIA) diff --git a/core/rexcode/isa/arm32/tables/arm32.idx_t16.bin b/core/rexcode/isa/arm32/tables/arm32.idx_t16.bin index 2a721b27e279bd42fd17f6614e35e4633afe65da..d5bf2176d0b8cdc91c028e422fb367e391be4813 100644 GIT binary patch delta 239 zcmZo*YG9gJBUR7D;LOX!;L6L$;Ks|y;Lgj);K9qt;K|F#;Kj?x;LXd(;KR$v;L9t( z5X;NXkiyHzkjl%*kjBfzkipBukj2Zyki*NwkjKl&kk8A=P{7N`P{_;3P{hl~P|VB7 zP{PZ|P|C~5P{zy1P|nN9P{GT{P|3^4P{qs0P|eH8P?OHf$WY76$WX`2$WYJA$k4#c z$k52k$k4>g&d|xr#L&&l!qCsl!7!bdkzoceBg0HyMuu6uj104R85!pAGBV8NWn`Gg R%gnHlmyux+FCzmk004ld9XkL3 literal 256 zcmZSNWn^IDWn^IHWn^ICWn^IGWn^IEWn^IIWn$puWn$pwWn|#tWn|#xWn|#vWn|#z zWn>WGWn>WKWn>WIWn>WM6<|>2WoOXhWn|FiWn|FdWn$3dWnwVkWnwVmWnwVlWn?hr zWn?hpWn?htWn{46Wn{4AWn{48Wn{4CWn{47Wn{4BWn{49Wn{4DWn^&RWn^&VWn^&T zWn^&XWn^&SWn^&WWn^&UWn^&YWn}Q+WoPi`Wnu{AWnl>A$cv7&h^;Fl^&xW7xyX$gr1}kzpS%Bg1}PMur2t zObmy385s`qGBOSIX7_Rd&G2G;3WVpr4$Z(sNk>L&&bC3x;+gETm;w{yad=70t8qXLIhYCA_Q0%Vg#5O;ssb3k_A{8(goNV@&wo!N(I;$ss-2> z8U-5@ciO5M*QM6J%kSB*?-rO^}6QmLN03TtOCwg@P;$O9fdORtd5)tQTZq*euAx zuw9UqVUHjS!vR57hNFV445tKH8O{r`FkBX7VYn{H%5X=JmEoZv3&T@E7KWFCEDUc2 zSs6YFvM_uTWMTLv$inbXkd=X1h?#*+h=qYmh=qYqh?PNDh=oC1h=oB~h=oC3h?PM_ zh?zlMh=oC0h=oC4h?T)ah=svIh=svMh=svHh=svLh?&7%h=svhh=svlh=U@X0h>@XGh>@X8h>4*>h>@XE2$8Og%}wcgcunbk>o*Xx>*R4|5~6lNDLXbLe;lpk?#;DfIWY{dk#;{X}jbXnK8`z4YLd;+qnK%K} z3lcji#K>?;h>_v65F^7GAx4I?P`PtZ`n(V$!v!HmhKoYX3|EAh8LkU4GTabiWVk8B z#Bf`PiQ%pgJHrzpZie?l%nYA|m>Iqbu`~P;VrO6$W@2C!MuZc)Fe3wpFeDs6_9A0W zVHO5nVMYc%Eb{!qG7Q?nQVg!bQVj9J3JmqavJ7*Cr5UyhOEX*&R%G}rtiT{FBFLa3 zBFJDWBFhjYBF|7LBE--vBE>LQM1f(ih%mzi5g~?0B7zK`MFbgGM1>i|MTHnNMFknG nL%6OR=DtK8KYIxZgns^x*nt2%+T6h^5T6q~6+IX25 zI(QiwI(Zoxx_B8Gx_KEHdU%;I{MyIM$k5Nr$S{GIkzpb)Bf}(KMuy3}Obk3MiO7c%fzsbmyuyTFEhg?UM7Yuyi5$+co`YC^RhGS<7Hwvz{|*Rke89+ z5HAzM5nd*SW4w$E$9WkUPVh1@oWkR-GrTMyD;X~EvM^kMvOxkjcv%?kAn_mYN-+H3 z6=&e*6Jt>2lVxz?6K9Cz6JyBd6Ju!QlVw=MC&RFhkB8wDA1}joJ|Tvee9{ao{Jac; z{9+91{NfCD{QL~Q{QL|t{QL~r{QL}6{QL}^{QL|v`1u)@^Yb%o<7Z~r$5X4Auf{42}Y94DJG~ z3_b!Z3;_bH450$73{e8C4DkXi49Nm44Cw-_3^@X<421$L45b1r43z>b47CER3{3(o z3~d4|3|#^&41EHu43h3&Uyw7KZf#tPEQOm>ISU zurTZvU}4xVz{YS?fQ8|t02{-30TzbK0;~)-1eh6a3$QUf6kuU^D!|V0Mu3IkgMcst zvmhq}k02|9pdd4Yh#)J2q#z4}tRNeMvLG9SrXVYWo**lOu^=0Rr64PVoggcNvmh&j zhaek+pCB7Uh#(6?gdht;j35g`f*>hjq7(NO~F>nh@F{lbFFt`fKG9(F0Gt>%8Gt3ZHWY{UJz;IJokl~fEAj5BA zSq2Fac?NS4AqGzoDTZVb1%_r3VTNfULJTWJ1Q~XU2r`@!5oWk6BE;}sM38|&RFFYX jl!ZZ5l!ZZ3l!ZZ7RFFYWl!d`al!d`el!d`cRFDAxky5=g diff --git a/core/rexcode/isa/arm32/tests/smoke.odin b/core/rexcode/isa/arm32/tests/smoke.odin index 6c73e3d7a..6108f8518 100644 --- a/core/rexcode/isa/arm32/tests/smoke.odin +++ b/core/rexcode/isa/arm32/tests/smoke.odin @@ -392,7 +392,9 @@ 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, 7, 0xFC300850, 0xFFB00F50) + // Bfloat16 names which half of each pair it takes on the mnemonic. + check("VFMAB BF16 Q", .VFMAB, 0, 0xFC300810, 0xFFB00F70) + check("VFMAT BF16 Q", .VFMAT, 0, 0xFC300850, 0xFFB00F70) check("VMMLA BF16 Q", .VMMLA, 0, 0xFC000C40, 0xFFB00F50) // ---- Barriers / hints: ESB, PSB CSYNC, TSB CSYNC, CSDB, SB ---- @@ -553,9 +555,11 @@ run_smoke :: proc() { check("VCLT D", .VCLT, 14, 0xF3B10200, 0xFFBB0FD0) // ---- NEON replicate loads ---- - check("VLD2R", .VLD2R, 0, 0xF4A00D0F, 0xFFB00F0F) - check("VLD3R", .VLD3R, 0, 0xF4A00E0F, 0xFFB00F0F) - check("VLD4R", .VLD4R, 0, 0xF4A00F0F, 0xFFB00F0F) + // The broadcast loads are VLD2/VLD3/VLD4 with an all-lanes list, and + // that form leads each of their entry lists. + check("VLD2 all-lanes", .VLD2, 6, 0xF4A00D0F, 0xFFB00F0F) + check("VLD3 all-lanes", .VLD3, 5, 0xF4A00E0F, 0xFFB00F0F) + check("VLD4 all-lanes", .VLD4, 5, 0xF4A00F0F, 0xFFB00F0F) // ---- NEON single-element lane loads/stores ---- check("VLD1 lane .8", .VLD1, 5, 0xF4A0000F, 0xFFB00F1F)