diff --git a/core/rexcode/arm32/decoder.odin b/core/rexcode/arm32/decoder.odin index 9ee267889..1fbc09ee1 100644 --- a/core/rexcode/arm32/decoder.odin +++ b/core/rexcode/arm32/decoder.odin @@ -336,6 +336,11 @@ unpack_operand :: proc(word: u32, enc: Operand_Encoding, ot: Operand_Type) -> Op case .VM_D: n := ((word >> 5) & 1) << 4 | (word & 0xF) return op_reg(Register(REG_DPR | u16(n))) + case .NEON_VM_SCALAR16: + lane := ((word >> 5) & 1) << 1 | ((word >> 3) & 1) + return op_dpr_lane(Register(REG_DPR | u16(word & 0x7)), u8(lane)) + case .NEON_VM_SCALAR32: + return op_dpr_lane(Register(REG_DPR | u16(word & 0xF)), u8((word >> 5) & 1)) case .VD_Q: n := (((word >> 22) & 1) << 4 | ((word >> 12) & 0xF)) >> 1 return op_reg(Register(REG_QPR | u16(n))) diff --git a/core/rexcode/arm32/encoder.odin b/core/rexcode/arm32/encoder.odin index 94dcf851b..93f16d722 100644 --- a/core/rexcode/arm32/encoder.odin +++ b/core/rexcode/arm32/encoder.odin @@ -418,6 +418,12 @@ pack_operand_inline :: #force_inline proc( n := u32(reg_hw(op.reg)) & 0x1F if reg_class(op.reg) == REG_QPR { n = (n & 0xF) * 2 } return (n & 0xF) | ((n >> 4) & 1) << 5 + case .NEON_VM_SCALAR16: + // Dm in D0..D7 at bits 2:0; lane = bit5(lane[1]) : bit3(lane[0]). + return (u32(reg_hw(op.reg)) & 0x7) | ((u32(op.lane) >> 1) & 1) << 5 | (u32(op.lane) & 1) << 3 + case .NEON_VM_SCALAR32: + // Dm in D0..D15 at bits 3:0; lane = bit5. + return (u32(reg_hw(op.reg)) & 0xF) | (u32(op.lane) & 1) << 5 case .VFP_IMM8: // Run the VFP 8-bit float encoder; the user supplies the wire-format // 32-bit float bit pattern (for F32). The encoder finds the abcdefgh. diff --git a/core/rexcode/arm32/encoding_types.odin b/core/rexcode/arm32/encoding_types.odin index f8614cb88..69cefae04 100644 --- a/core/rexcode/arm32/encoding_types.odin +++ b/core/rexcode/arm32/encoding_types.odin @@ -300,6 +300,11 @@ Operand_Encoding :: enum u8 { VD_Q, // Q: D=bit 22, Vd<3:0>=bits 15-12 (must be even) VN_Q, // Q: N=bit 7, Vn<3:0>=bits 19-16 (must be even) VM_Q, // Q: M=bit 5, Vm<3:0>=bits 3-0 (must be even) + // NEON by-element scalar Dm[lane] (VQDMULH/VQRDMULH-by-scalar): + // .16: Dm in D0..D7 at bits 2:0, lane = bit5:bit3 + // .32: Dm in D0..D15 at bits 3:0, lane = bit5 + NEON_VM_SCALAR16, + NEON_VM_SCALAR32, VFP_IMM8, // VFP immediate (VMOV.F32/F64 #imm) NEON_IMM8_ABCDEFGH, // bits 18-16 (abc) + bits 3-0 (defgh) NEON_CMODE, // bits 11-8 (cmode for VMOV/VMVN immediate) diff --git a/core/rexcode/arm32/mnemonic_builders.odin b/core/rexcode/arm32/mnemonic_builders.odin index 6fc7d33ec..018ae3e9d 100644 --- a/core/rexcode/arm32/mnemonic_builders.odin +++ b/core/rexcode/arm32/mnemonic_builders.odin @@ -794,6 +794,10 @@ inst_vqdmulh_d_d_d :: #force_inline proc "contextless" (dst: Regis emit_vqdmulh_d_d_d :: #force_inline proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register) { append(instructions, inst_vqdmulh_d_d_d(dst, src, src2)) } inst_vqrdmulh_d_d_d :: #force_inline proc "contextless" (dst: Register, src: Register, src2: Register) -> Instruction { return Instruction{mnemonic = .VQRDMULH, operand_count = 3, mode = .A32, cond = 14, length = 4, ops = {op_reg(dst), op_reg(src), op_reg(src2), {}}} } emit_vqrdmulh_d_d_d :: #force_inline proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register) { append(instructions, inst_vqrdmulh_d_d_d(dst, src, src2)) } +inst_vqdmulh_lane_d_d_dlane :: #force_inline proc "contextless" (dst: Register, src: Register, src2: Register, lane: u8) -> Instruction { return Instruction{mnemonic = .VQDMULH_LANE, operand_count = 3, mode = .A32, cond = 14, length = 4, ops = {op_reg(dst), op_reg(src), op_dpr_lane(src2, lane), {}}} } +emit_vqdmulh_lane_d_d_dlane :: #force_inline proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, lane: u8) { append(instructions, inst_vqdmulh_lane_d_d_dlane(dst, src, src2, lane)) } +inst_vqrdmulh_lane_d_d_dlane :: #force_inline proc "contextless" (dst: Register, src: Register, src2: Register, lane: u8) -> Instruction { return Instruction{mnemonic = .VQRDMULH_LANE, operand_count = 3, mode = .A32, cond = 14, length = 4, ops = {op_reg(dst), op_reg(src), op_dpr_lane(src2, lane), {}}} } +emit_vqrdmulh_lane_d_d_dlane :: #force_inline proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register, lane: u8) { append(instructions, inst_vqrdmulh_lane_d_d_dlane(dst, src, src2, lane)) } inst_vqrdmlah_d_d_d :: #force_inline proc "contextless" (dst: Register, src: Register, src2: Register) -> Instruction { return Instruction{mnemonic = .VQRDMLAH, operand_count = 3, mode = .A32, cond = 14, length = 4, ops = {op_reg(dst), op_reg(src), op_reg(src2), {}}} } emit_vqrdmlah_d_d_d :: #force_inline proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register) { append(instructions, inst_vqrdmlah_d_d_d(dst, src, src2)) } inst_vqrdmlsh_d_d_d :: #force_inline proc "contextless" (dst: Register, src: Register, src2: Register) -> Instruction { return Instruction{mnemonic = .VQRDMLSH, operand_count = 3, mode = .A32, cond = 14, length = 4, ops = {op_reg(dst), op_reg(src), op_reg(src2), {}}} } @@ -2053,6 +2057,10 @@ inst_vqdmulh :: inst_vqdmulh_d_d_d emit_vqdmulh :: emit_vqdmulh_d_d_d inst_vqrdmulh :: inst_vqrdmulh_d_d_d emit_vqrdmulh :: emit_vqrdmulh_d_d_d +inst_vqdmulh_lane :: inst_vqdmulh_lane_d_d_dlane +emit_vqdmulh_lane :: emit_vqdmulh_lane_d_d_dlane +inst_vqrdmulh_lane :: inst_vqrdmulh_lane_d_d_dlane +emit_vqrdmulh_lane :: emit_vqrdmulh_lane_d_d_dlane inst_vqrdmlah :: inst_vqrdmlah_d_d_d emit_vqrdmlah :: emit_vqrdmlah_d_d_d inst_vqrdmlsh :: inst_vqrdmlsh_d_d_d diff --git a/core/rexcode/arm32/tablegen/encoding_table.odin b/core/rexcode/arm32/tablegen/encoding_table.odin index 41d91f479..dfc550d58 100644 --- a/core/rexcode/arm32/tablegen/encoding_table.odin +++ b/core/rexcode/arm32/tablegen/encoding_table.odin @@ -3666,6 +3666,21 @@ ENCODING_TABLE := #partial [Mnemonic][]Encoding{ .DCPS2 = { {.DCPS2, {.NONE, .NONE, .NONE, .NONE}, {.NONE, .NONE, .NONE, .NONE}, 0xF78F8002, 0xFFFFFFFF, .V8, .T32, {thumb32=true, cond_in_28=false}} }, .DCPS3 = { {.DCPS3, {.NONE, .NONE, .NONE, .NONE}, {.NONE, .NONE, .NONE, .NONE}, 0xF78F8003, 0xFFFFFFFF, .V8, .T32, {thumb32=true, cond_in_28=false}} }, + // NEON (saturating) doubling multiply-high by scalar Dm[lane]: + // .16 -> Dm in D0..D7 (bits 2:0), lane at bit5:bit3; .32 -> D0..D15, lane bit5. + .VQDMULH_LANE = { + {.VQDMULH_LANE, {.DPR, .DPR, .DPR_ELEM, .NONE}, {.VD_D, .VN_D, .NEON_VM_SCALAR16, .NONE}, 0xF2900C40, 0xFFB00F50, .NEON, .A32, {cond_in_28=false}}, + {.VQDMULH_LANE, {.QPR, .QPR, .DPR_ELEM, .NONE}, {.VD_Q, .VN_Q, .NEON_VM_SCALAR16, .NONE}, 0xF3900C40, 0xFFB11F50, .NEON, .A32, {cond_in_28=false}}, + {.VQDMULH_LANE, {.DPR, .DPR, .DPR_ELEM, .NONE}, {.VD_D, .VN_D, .NEON_VM_SCALAR32, .NONE}, 0xF2A00C40, 0xFFB00F50, .NEON, .A32, {cond_in_28=false}}, + {.VQDMULH_LANE, {.QPR, .QPR, .DPR_ELEM, .NONE}, {.VD_Q, .VN_Q, .NEON_VM_SCALAR32, .NONE}, 0xF3A00C40, 0xFFB11F50, .NEON, .A32, {cond_in_28=false}}, + }, + .VQRDMULH_LANE = { + {.VQRDMULH_LANE, {.DPR, .DPR, .DPR_ELEM, .NONE}, {.VD_D, .VN_D, .NEON_VM_SCALAR16, .NONE}, 0xF2900D40, 0xFFB00F50, .NEON, .A32, {cond_in_28=false}}, + {.VQRDMULH_LANE, {.QPR, .QPR, .DPR_ELEM, .NONE}, {.VD_Q, .VN_Q, .NEON_VM_SCALAR16, .NONE}, 0xF3900D40, 0xFFB11F50, .NEON, .A32, {cond_in_28=false}}, + {.VQRDMULH_LANE, {.DPR, .DPR, .DPR_ELEM, .NONE}, {.VD_D, .VN_D, .NEON_VM_SCALAR32, .NONE}, 0xF2A00D40, 0xFFB00F50, .NEON, .A32, {cond_in_28=false}}, + {.VQRDMULH_LANE, {.QPR, .QPR, .DPR_ELEM, .NONE}, {.VD_Q, .VN_Q, .NEON_VM_SCALAR32, .NONE}, 0xF3A00D40, 0xFFB11F50, .NEON, .A32, {cond_in_28=false}}, + }, + // SPECGEN:BEGIN .VADDL = { {.VADDL, {.QPR, .DPR, .DPR, .NONE}, {.VD_Q, .VN_D, .VM_D, .NONE}, 0xF2800000, 0xFFB01F50, .NEON, .A32, {cond_in_28=false}}, diff --git a/core/rexcode/arm32/tablegen/generated/decode_tables.odin b/core/rexcode/arm32/tablegen/generated/decode_tables.odin index 196058eff..7d6157997 100644 --- a/core/rexcode/arm32/tablegen/generated/decode_tables.odin +++ b/core/rexcode/arm32/tablegen/generated/decode_tables.odin @@ -8,7 +8,7 @@ package rexcode_arm32_generated import lib "../.." @(rodata) -DECODE_ENTRIES := [1660]lib.Decode_Entry{ +DECODE_ENTRIES := [1668]lib.Decode_Entry{ { .MUL, {.GPR,.GPR,.GPR,.NONE}, {.RN_A32,.RM_A32,.RS_A32,.NONE}, 0x00000090, 0x0FE000F0, .BASE, .A32, {} }, { .AND, {.GPR,.GPR,.GPR_RSR,.NONE}, {.RD,.RN_A32,.RM_A32,.NONE}, 0x00000010, 0x0FE00090, .BASE, .A32, {} }, { .AND, {.GPR,.GPR,.GPR_SHIFTED,.NONE}, {.RD,.RN_A32,.RM_A32,.NONE}, 0x00000000, 0x0FE00010, .BASE, .A32, {} }, @@ -203,8 +203,8 @@ DECODE_ENTRIES := [1660]lib.Decode_Entry{ { .VCGT, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2000340, 0xFFB00F50, .NEON, .A32, {} }, { .VCLE, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VM_D,.VN_D,.NONE}, 0xF2000310, 0xFFB00F50, .NEON, .A32, {} }, { .VCLT, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VM_D,.VN_D,.NONE}, 0xF2000300, 0xFFB00F50, .NEON, .A32, {} }, - { .VMAX, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2000640, 0xFFB00F50, .NEON, .A32, {} }, { .VMAX, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2000F40, 0xFFB00F50, .NEON, .A32, {} }, + { .VMAX, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2000640, 0xFFB00F50, .NEON, .A32, {} }, { .VMIN, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2000650, 0xFFB00F50, .NEON, .A32, {} }, { .VRECPS, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2000F50, 0xFFB00F50, .NEON, .A32, {} }, { .VSHL, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VM_Q,.VN_Q,.NONE}, 0xF2000440, 0xFFB00F50, .NEON, .A32, {} }, @@ -212,8 +212,8 @@ DECODE_ENTRIES := [1660]lib.Decode_Entry{ { .VQSHL, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VM_Q,.VN_Q,.NONE}, 0xF2000450, 0xFFB00F50, .NEON, .A32, {} }, { .VQRSHL, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VM_D,.VN_D,.NONE}, 0xF2000510, 0xFFB00F50, .NEON, .A32, {} }, { .SHA1C, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2000C40, 0xFFB00F50, .CRYPTO, .A32, {} }, - { .VADD, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2000800, 0xFFB00F10, .NEON, .A32, {} }, { .VADD, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2000D00, 0xFFB00F10, .NEON, .A32, {} }, + { .VADD, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2000800, 0xFFB00F10, .NEON, .A32, {} }, { .VMUL, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2000910, 0xFFB00F10, .NEON, .A32, {} }, { .VMLA, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2000900, 0xFFB00F10, .NEON, .A32, {} }, { .VMLA, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2000D10, 0xFFB00F10, .NEON, .A32, {} }, @@ -262,8 +262,8 @@ DECODE_ENTRIES := [1660]lib.Decode_Entry{ { .VCGT, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2100340, 0xFFB00F50, .NEON, .A32, {} }, { .VCLE, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VM_D,.VN_D,.NONE}, 0xF2100310, 0xFFB00F50, .NEON, .A32, {} }, { .VCLT, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VM_D,.VN_D,.NONE}, 0xF2100300, 0xFFB00F50, .NEON, .A32, {} }, - { .VMAX, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2100640, 0xFFB00F50, .NEON, .A32, {} }, { .VMAX, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2100F40, 0xFFB00F50, .NEON_HALF_FP, .A32, {} }, + { .VMAX, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2100640, 0xFFB00F50, .NEON, .A32, {} }, { .VMIN, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2100650, 0xFFB00F50, .NEON, .A32, {} }, { .VQRSHL, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VM_D,.VN_D,.NONE}, 0xF2100510, 0xFFB00F50, .NEON, .A32, {} }, { .SHA1P, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2100C40, 0xFFB00F50, .CRYPTO, .A32, {} }, @@ -283,8 +283,8 @@ DECODE_ENTRIES := [1660]lib.Decode_Entry{ { .VCEQ, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2100E00, 0xFFB00F10, .NEON_HALF_FP, .A32, {} }, { .VCGE, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2100310, 0xFFB00F10, .NEON, .A32, {} }, { .VCGT, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2100300, 0xFFB00F10, .NEON, .A32, {} }, - { .VMAX, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2100F00, 0xFFB00F10, .NEON_HALF_FP, .A32, {} }, { .VMAX, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2100600, 0xFFB00F10, .NEON, .A32, {} }, + { .VMAX, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2100F00, 0xFFB00F10, .NEON_HALF_FP, .A32, {} }, { .VMIN, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2100610, 0xFFB00F10, .NEON, .A32, {} }, { .VPMAX, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2100A00, 0xFFB00F10, .NEON, .A32, {} }, { .VPMIN, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2100A10, 0xFFB00F10, .NEON, .A32, {} }, @@ -314,8 +314,8 @@ DECODE_ENTRIES := [1660]lib.Decode_Entry{ { .VCLE, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VM_D,.VN_D,.NONE}, 0xF2200310, 0xFFB00F50, .NEON, .A32, {} }, { .VCLT, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VM_D,.VN_D,.NONE}, 0xF2200300, 0xFFB00F50, .NEON, .A32, {} }, { .VMAX, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2200640, 0xFFB00F50, .NEON, .A32, {} }, - { .VMIN, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2200650, 0xFFB00F50, .NEON, .A32, {} }, { .VMIN, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2200F40, 0xFFB00F50, .NEON, .A32, {} }, + { .VMIN, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2200650, 0xFFB00F50, .NEON, .A32, {} }, { .VRSQRTS, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2200F50, 0xFFB00F50, .NEON, .A32, {} }, { .VQRSHL, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VM_D,.VN_D,.NONE}, 0xF2200510, 0xFFB00F50, .NEON, .A32, {} }, { .SHA1M, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2200C40, 0xFFB00F50, .CRYPTO, .A32, {} }, @@ -370,40 +370,40 @@ DECODE_ENTRIES := [1660]lib.Decode_Entry{ { .VADDW, {.QPR,.QPR,.DPR,.NONE}, {.VD_Q,.VN_Q,.VM_D,.NONE}, 0xF2800100, 0xFFB11F50, .NEON, .A32, {} }, { .VSUBW, {.QPR,.QPR,.DPR,.NONE}, {.VD_Q,.VN_Q,.VM_D,.NONE}, 0xF2800300, 0xFFB11F50, .NEON, .A32, {} }, { .VMOVL, {.QPR,.DPR,.NONE,.NONE}, {.VD_Q,.VM_D,.NONE,.NONE}, 0xF2880A10, 0xFFB80FD0, .NEON, .A32, {} }, + { .VMOV, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NONE,.NONE,.NONE}, 0xF2800E70, 0xFEB80FD0, .NEON, .A32, {} }, + { .VMOV, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NONE,.NONE,.NONE}, 0xF2800050, 0xFEB80FD0, .NEON, .A32, {} }, { .VMOV, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NONE,.NONE,.NONE}, 0xF2800F50, 0xFEB80FD0, .NEON, .A32, {} }, { .VMOV, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NONE,.NONE,.NONE}, 0xF2800E50, 0xFEB80FD0, .NEON, .A32, {} }, - { .VMOV, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NONE,.NONE,.NONE}, 0xF2800050, 0xFEB80FD0, .NEON, .A32, {} }, - { .VMOV, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NONE,.NONE,.NONE}, 0xF2800E70, 0xFEB80FD0, .NEON, .A32, {} }, { .VMOV, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NONE,.NONE,.NONE}, 0xF2800850, 0xFEB80FD0, .NEON, .A32, {} }, { .VADDL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2800000, 0xFFB01F50, .NEON, .A32, {} }, { .VSUBL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2800200, 0xFFB01F50, .NEON, .A32, {} }, { .VABAL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2800500, 0xFFB01F50, .NEON, .A32, {} }, { .VABDL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2800700, 0xFFB01F50, .NEON, .A32, {} }, - { .VMVN, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NONE,.NONE,.NONE}, 0xF2800870, 0xFEB80FD0, .NEON, .A32, {} }, { .VMVN, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NONE,.NONE,.NONE}, 0xF2800070, 0xFEB80FD0, .NEON, .A32, {} }, - { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800810, 0xFEB80F90, .NEON, .A32, {} }, - { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800410, 0xFEB80F90, .NEON, .A32, {} }, - { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800D10, 0xFEB80F90, .NEON, .A32, {} }, - { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800F10, 0xFEB80F90, .NEON, .A32, {} }, - { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800A10, 0xFEB80F90, .NEON, .A32, {} }, - { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800C10, 0xFEB80F90, .NEON, .A32, {} }, - { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800E30, 0xFEB80F90, .NEON, .A32, {} }, + { .VMVN, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NONE,.NONE,.NONE}, 0xF2800870, 0xFEB80FD0, .NEON, .A32, {} }, { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800E10, 0xFEB80F90, .NEON, .A32, {} }, - { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800610, 0xFEB80F90, .NEON, .A32, {} }, + { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800E30, 0xFEB80F90, .NEON, .A32, {} }, { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800210, 0xFEB80F90, .NEON, .A32, {} }, + { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800610, 0xFEB80F90, .NEON, .A32, {} }, { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800010, 0xFEB80F90, .NEON, .A32, {} }, + { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800F10, 0xFEB80F90, .NEON, .A32, {} }, + { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800D10, 0xFEB80F90, .NEON, .A32, {} }, + { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800810, 0xFEB80F90, .NEON, .A32, {} }, + { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800A10, 0xFEB80F90, .NEON, .A32, {} }, + { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800410, 0xFEB80F90, .NEON, .A32, {} }, + { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800C10, 0xFEB80F90, .NEON, .A32, {} }, { .VMULL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2800E00, 0xFFB00F50, .NEON, .A32, {} }, { .VMULL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2800C00, 0xFFB00F50, .NEON, .A32, {} }, { .VMLAL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2800800, 0xFFB00F50, .NEON, .A32, {} }, { .VMLSL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2800A00, 0xFFB00F50, .NEON, .A32, {} }, - { .VMVN, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800C30, 0xFEB80F90, .NEON, .A32, {} }, - { .VMVN, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800D30, 0xFEB80F90, .NEON, .A32, {} }, - { .VMVN, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800A30, 0xFEB80F90, .NEON, .A32, {} }, { .VMVN, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800430, 0xFEB80F90, .NEON, .A32, {} }, + { .VMVN, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800C30, 0xFEB80F90, .NEON, .A32, {} }, + { .VMVN, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800230, 0xFEB80F90, .NEON, .A32, {} }, { .VMVN, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800030, 0xFEB80F90, .NEON, .A32, {} }, { .VMVN, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800830, 0xFEB80F90, .NEON, .A32, {} }, - { .VMVN, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800230, 0xFEB80F90, .NEON, .A32, {} }, + { .VMVN, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800A30, 0xFEB80F90, .NEON, .A32, {} }, { .VMVN, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800630, 0xFEB80F90, .NEON, .A32, {} }, + { .VMVN, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NONE,.NONE,.NONE}, 0xF2800D30, 0xFEB80F90, .NEON, .A32, {} }, { .VQSHRN, {.DPR,.QPR,.IMM,.NONE}, {.VD_D,.VM_Q,.NEON_SHIFT_IMM6,.NONE}, 0xF2800910, 0xFE800FD0, .NEON, .A32, {} }, { .VQRSHRN, {.DPR,.QPR,.IMM,.NONE}, {.VD_D,.VM_Q,.NEON_SHIFT_IMM6,.NONE}, 0xF2800950, 0xFE800FD0, .NEON, .A32, {} }, { .VSHRN, {.DPR,.QPR,.IMM,.NONE}, {.VD_D,.VM_Q,.NEON_SHIFT_IMM6,.NONE}, 0xF2800810, 0xFE800FD0, .NEON, .A32, {} }, @@ -433,6 +433,8 @@ DECODE_ENTRIES := [1660]lib.Decode_Entry{ { .VQDMULL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2900D00, 0xFFB00F50, .NEON, .A32, {} }, { .VQDMLAL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2900900, 0xFFB00F50, .NEON, .A32, {} }, { .VQDMLSL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2900B00, 0xFFB00F50, .NEON, .A32, {} }, + { .VQDMULH_LANE, {.DPR,.DPR,.DPR_ELEM,.NONE}, {.VD_D,.VN_D,.NEON_VM_SCALAR16,.NONE}, 0xF2900C40, 0xFFB00F50, .NEON, .A32, {} }, + { .VQRDMULH_LANE, {.DPR,.DPR,.DPR_ELEM,.NONE}, {.VD_D,.VN_D,.NEON_VM_SCALAR16,.NONE}, 0xF2900D40, 0xFFB00F50, .NEON, .A32, {} }, { .VMUL_LANE, {.DPR,.DPR,.DPR_ELEM,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2900840, 0xFFB00F50, .NEON, .A32, {} }, { .VMLA_LANE, {.DPR,.DPR,.DPR_ELEM,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2900040, 0xFFB00F50, .NEON, .A32, {} }, { .VMLS_LANE, {.DPR,.DPR,.DPR_ELEM,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2900440, 0xFFB00F50, .NEON, .A32, {} }, @@ -458,10 +460,12 @@ DECODE_ENTRIES := [1660]lib.Decode_Entry{ { .VQDMULL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2A00D00, 0xFFB00F50, .NEON, .A32, {} }, { .VQDMLAL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2A00900, 0xFFB00F50, .NEON, .A32, {} }, { .VQDMLSL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2A00B00, 0xFFB00F50, .NEON, .A32, {} }, + { .VQDMULH_LANE, {.DPR,.DPR,.DPR_ELEM,.NONE}, {.VD_D,.VN_D,.NEON_VM_SCALAR32,.NONE}, 0xF2A00C40, 0xFFB00F50, .NEON, .A32, {} }, + { .VQRDMULH_LANE, {.DPR,.DPR,.DPR_ELEM,.NONE}, {.VD_D,.VN_D,.NEON_VM_SCALAR32,.NONE}, 0xF2A00D40, 0xFFB00F50, .NEON, .A32, {} }, { .VMUL_LANE, {.DPR,.DPR,.DPR_ELEM,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2A00840, 0xFFB00F50, .NEON, .A32, {} }, { .VMUL_LANE, {.DPR,.DPR,.DPR_ELEM,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2A008C0, 0xFFB00F50, .NEON, .A32, {} }, - { .VMLA_LANE, {.DPR,.DPR,.DPR_ELEM,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2A000C0, 0xFFB00F50, .NEON, .A32, {} }, { .VMLA_LANE, {.DPR,.DPR,.DPR_ELEM,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2A00040, 0xFFB00F50, .NEON, .A32, {} }, + { .VMLA_LANE, {.DPR,.DPR,.DPR_ELEM,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2A000C0, 0xFFB00F50, .NEON, .A32, {} }, { .VMLS_LANE, {.DPR,.DPR,.DPR_ELEM,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2A004C0, 0xFFB00F50, .NEON, .A32, {} }, { .VMLS_LANE, {.DPR,.DPR,.DPR_ELEM,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2A00440, 0xFFB00F50, .NEON, .A32, {} }, { .VMULL_LANE, {.QPR,.DPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2A00A40, 0xFFB00F50, .NEON, .A32, {} }, @@ -488,8 +492,8 @@ DECODE_ENTRIES := [1660]lib.Decode_Entry{ { .VACLE, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VM_Q,.VN_Q,.NONE}, 0xF3000E50, 0xFFB11F51, .NEON, .A32, {} }, { .VQRSHL, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VM_Q,.VN_Q,.NONE}, 0xF3000550, 0xFFB11F51, .NEON, .A32, {} }, { .VSUB, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF3000840, 0xFFB00F50, .NEON, .A32, {} }, - { .VMUL, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF3000950, 0xFFB00F50, .NEON, .A32, {} }, { .VMUL, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF3000D50, 0xFFB00F50, .NEON, .A32, {} }, + { .VMUL, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF3000950, 0xFFB00F50, .NEON, .A32, {} }, { .VMLS, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF3000940, 0xFFB00F50, .NEON, .A32, {} }, { .VHADD, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF3000040, 0xFFB00F50, .NEON, .A32, {} }, { .VHSUB, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF3000240, 0xFFB00F50, .NEON, .A32, {} }, @@ -515,8 +519,8 @@ DECODE_ENTRIES := [1660]lib.Decode_Entry{ { .VQRSHL, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VM_D,.VN_D,.NONE}, 0xF3000510, 0xFFB00F50, .NEON, .A32, {} }, { .SHA256H, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF3000C40, 0xFFB00F50, .CRYPTO, .A32, {} }, { .VSUB, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF3000800, 0xFFB00F10, .NEON, .A32, {} }, - { .VMUL, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF3000910, 0xFFB00F10, .NEON, .A32, {} }, { .VMUL, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF3000D10, 0xFFB00F10, .NEON, .A32, {} }, + { .VMUL, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF3000910, 0xFFB00F10, .NEON, .A32, {} }, { .VMLS, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF3000900, 0xFFB00F10, .NEON, .A32, {} }, { .VHADD, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF3000000, 0xFFB00F10, .NEON, .A32, {} }, { .VHSUB, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF3000200, 0xFFB00F10, .NEON, .A32, {} }, @@ -526,8 +530,8 @@ DECODE_ENTRIES := [1660]lib.Decode_Entry{ { .VABD, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF3000700, 0xFFB00F10, .NEON, .A32, {} }, { .VEOR, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF3000110, 0xFFB00F10, .NEON, .A32, {} }, { .VCEQ, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF3000810, 0xFFB00F10, .NEON, .A32, {} }, - { .VCGE, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF3000310, 0xFFB00F10, .NEON, .A32, {} }, { .VCGE, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF3000E00, 0xFFB00F10, .NEON, .A32, {} }, + { .VCGE, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF3000310, 0xFFB00F10, .NEON, .A32, {} }, { .VCGT, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF3000300, 0xFFB00F10, .NEON, .A32, {} }, { .VACGE, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF3000E10, 0xFFB00F10, .NEON, .A32, {} }, { .VMAX, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF3000600, 0xFFB00F10, .NEON, .A32, {} }, @@ -653,6 +657,8 @@ DECODE_ENTRIES := [1660]lib.Decode_Entry{ { .ORR, {.GPR,.GPR,.IMM_MOD,.NONE}, {.RD,.RN_A32,.A32_IMM_MOD,.NONE}, 0x03800000, 0x0FE00000, .BASE, .A32, {} }, { .VADDW, {.QPR,.QPR,.DPR,.NONE}, {.VD_Q,.VN_Q,.VM_D,.NONE}, 0xF3900100, 0xFFB11F50, .NEON, .A32, {} }, { .VSUBW, {.QPR,.QPR,.DPR,.NONE}, {.VD_Q,.VN_Q,.VM_D,.NONE}, 0xF3900300, 0xFFB11F50, .NEON, .A32, {} }, + { .VQDMULH_LANE, {.QPR,.QPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_Q,.NEON_VM_SCALAR16,.NONE}, 0xF3900C40, 0xFFB11F50, .NEON, .A32, {} }, + { .VQRDMULH_LANE, {.QPR,.QPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_Q,.NEON_VM_SCALAR16,.NONE}, 0xF3900D40, 0xFFB11F50, .NEON, .A32, {} }, { .VMOVL, {.QPR,.DPR,.NONE,.NONE}, {.VD_Q,.VM_D,.NONE,.NONE}, 0xF3900A10, 0xFFB80FD0, .NEON, .A32, {} }, { .VADDL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF3900000, 0xFFB01F50, .NEON, .A32, {} }, { .VSUBL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF3900200, 0xFFB01F50, .NEON, .A32, {} }, @@ -672,6 +678,8 @@ DECODE_ENTRIES := [1660]lib.Decode_Entry{ { .ORR, {.GPR,.GPR,.IMM_MOD,.NONE}, {.RD,.RN_A32,.A32_IMM_MOD,.NONE}, 0x03900000, 0x0FF00000, .BASE, .A32, {sets_flags=true} }, { .VADDW, {.QPR,.QPR,.DPR,.NONE}, {.VD_Q,.VN_Q,.VM_D,.NONE}, 0xF3A00100, 0xFFB11F50, .NEON, .A32, {} }, { .VSUBW, {.QPR,.QPR,.DPR,.NONE}, {.VD_Q,.VN_Q,.VM_D,.NONE}, 0xF3A00300, 0xFFB11F50, .NEON, .A32, {} }, + { .VQDMULH_LANE, {.QPR,.QPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_Q,.NEON_VM_SCALAR32,.NONE}, 0xF3A00C40, 0xFFB11F50, .NEON, .A32, {} }, + { .VQRDMULH_LANE, {.QPR,.QPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_Q,.NEON_VM_SCALAR32,.NONE}, 0xF3A00D40, 0xFFB11F50, .NEON, .A32, {} }, { .VMOVL, {.QPR,.DPR,.NONE,.NONE}, {.VD_Q,.VM_D,.NONE,.NONE}, 0xF3A00A10, 0xFFB80FD0, .NEON, .A32, {} }, { .VADDL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF3A00000, 0xFFB01F50, .NEON, .A32, {} }, { .VSUBL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF3A00200, 0xFFB01F50, .NEON, .A32, {} }, @@ -694,140 +702,140 @@ DECODE_ENTRIES := [1660]lib.Decode_Entry{ { .VQRDMLAH_LANE, {.QPR,.QPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_Q,.VM_D,.NONE}, 0xF3A00E40, 0xFFB00F50, .V8, .A32, {} }, { .VQRDMLSH_LANE, {.QPR,.QPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_Q,.VM_D,.NONE}, 0xF3A00F40, 0xFFB00F50, .V8, .A32, {} }, { .MOV, {.GPR,.IMM_MOD,.NONE,.NONE}, {.RD,.A32_IMM_MOD,.NONE,.NONE}, 0x03A00000, 0x0FEF0000, .BASE, .A32, {} }, - { .VRECPE, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3BB0440, 0xFFBF0FD0, .NEON, .A32, {} }, - { .VRECPE, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3BB0500, 0xFFBF0FD0, .NEON, .A32, {} }, - { .VRECPE, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3BB0400, 0xFFBF0FD0, .NEON, .A32, {} }, { .VRECPE, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3BB0540, 0xFFBF0FD0, .NEON, .A32, {} }, - { .VRSQRTE, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3BB0480, 0xFFBF0FD0, .NEON, .A32, {} }, + { .VRECPE, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3BB0500, 0xFFBF0FD0, .NEON, .A32, {} }, + { .VRECPE, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3BB0440, 0xFFBF0FD0, .NEON, .A32, {} }, + { .VRECPE, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3BB0400, 0xFFBF0FD0, .NEON, .A32, {} }, + { .VRSQRTE, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3BB0580, 0xFFBF0FD0, .NEON, .A32, {} }, { .VRSQRTE, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3BB04C0, 0xFFBF0FD0, .NEON, .A32, {} }, { .VRSQRTE, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3BB05C0, 0xFFBF0FD0, .NEON, .A32, {} }, - { .VRSQRTE, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3BB0580, 0xFFBF0FD0, .NEON, .A32, {} }, + { .VRSQRTE, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3BB0480, 0xFFBF0FD0, .NEON, .A32, {} }, { .VRECPE_F, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3BB0500, 0xFFBF0FD0, .NEON, .A32, {} }, { .VRECPE_F, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3BB0540, 0xFFBF0FD0, .NEON, .A32, {} }, - { .VRSQRTE_F, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3BB0580, 0xFFBF0FD0, .NEON, .A32, {} }, { .VRSQRTE_F, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3BB05C0, 0xFFBF0FD0, .NEON, .A32, {} }, + { .VRSQRTE_F, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3BB0580, 0xFFBF0FD0, .NEON, .A32, {} }, { .SHA1H, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B902C0, 0xFFBF0FD0, .CRYPTO, .A32, {} }, { .SHA1SU1, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3BA0380, 0xFFBF0FD0, .CRYPTO, .A32, {} }, { .SHA256SU0, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3BA03C0, 0xFFBF0FD0, .CRYPTO, .A32, {} }, { .VCVT_BF16, {.DPR,.QPR,.NONE,.NONE}, {.VD_D,.VM_Q,.NONE,.NONE}, 0xF3B60600, 0xFFBF0FD0, .BF16, .A32, {} }, - { .VABS, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B90740, 0xFFB30FD0, .NEON, .A32, {} }, - { .VABS, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B90340, 0xFFB30FD0, .NEON, .A32, {} }, { .VABS, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B50300, 0xFFB30FD0, .NEON, .A32, {} }, { .VABS, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B50340, 0xFFB30FD0, .NEON, .A32, {} }, { .VABS, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B10340, 0xFFB30FD0, .NEON, .A32, {} }, - { .VABS, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B10300, 0xFFB30FD0, .NEON, .A32, {} }, - { .VABS, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B90700, 0xFFB30FD0, .NEON, .A32, {} }, { .VABS, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B90300, 0xFFB30FD0, .NEON, .A32, {} }, - { .VNEG, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B90380, 0xFFB30FD0, .NEON, .A32, {} }, + { .VABS, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B90740, 0xFFB30FD0, .NEON, .A32, {} }, + { .VABS, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B90700, 0xFFB30FD0, .NEON, .A32, {} }, + { .VABS, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B90340, 0xFFB30FD0, .NEON, .A32, {} }, + { .VABS, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B10300, 0xFFB30FD0, .NEON, .A32, {} }, + { .VNEG, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B50380, 0xFFB30FD0, .NEON, .A32, {} }, { .VNEG, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B907C0, 0xFFB30FD0, .NEON, .A32, {} }, - { .VNEG, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B903C0, 0xFFB30FD0, .NEON, .A32, {} }, + { .VNEG, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B90380, 0xFFB30FD0, .NEON, .A32, {} }, { .VNEG, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B503C0, 0xFFB30FD0, .NEON, .A32, {} }, { .VNEG, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B90780, 0xFFB30FD0, .NEON, .A32, {} }, - { .VNEG, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B50380, 0xFFB30FD0, .NEON, .A32, {} }, - { .VNEG, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B10380, 0xFFB30FD0, .NEON, .A32, {} }, + { .VNEG, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B903C0, 0xFFB30FD0, .NEON, .A32, {} }, { .VNEG, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B103C0, 0xFFB30FD0, .NEON, .A32, {} }, + { .VNEG, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B10380, 0xFFB30FD0, .NEON, .A32, {} }, { .VMVN, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B005C0, 0xFFB30FD0, .NEON, .A32, {} }, { .VMVN, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B00580, 0xFFB30FD0, .NEON, .A32, {} }, - { .VMOVN, {.DPR,.QPR,.NONE,.NONE}, {.VD_D,.VM_Q,.NONE,.NONE}, 0xF3BA0200, 0xFFB30FD0, .NEON, .A32, {} }, - { .VMOVN, {.DPR,.QPR,.NONE,.NONE}, {.VD_D,.VM_Q,.NONE,.NONE}, 0xF3B20200, 0xFFB30FD0, .NEON, .A32, {} }, { .VMOVN, {.DPR,.QPR,.NONE,.NONE}, {.VD_D,.VM_Q,.NONE,.NONE}, 0xF3B60200, 0xFFB30FD0, .NEON, .A32, {} }, + { .VMOVN, {.DPR,.QPR,.NONE,.NONE}, {.VD_D,.VM_Q,.NONE,.NONE}, 0xF3B20200, 0xFFB30FD0, .NEON, .A32, {} }, + { .VMOVN, {.DPR,.QPR,.NONE,.NONE}, {.VD_D,.VM_Q,.NONE,.NONE}, 0xF3BA0200, 0xFFB30FD0, .NEON, .A32, {} }, { .VQMOVN, {.DPR,.QPR,.NONE,.NONE}, {.VD_D,.VM_Q,.NONE,.NONE}, 0xF3BA0280, 0xFFB30FD0, .NEON, .A32, {} }, - { .VQMOVN, {.DPR,.QPR,.NONE,.NONE}, {.VD_D,.VM_Q,.NONE,.NONE}, 0xF3B602C0, 0xFFB30FD0, .NEON, .A32, {} }, - { .VQMOVN, {.DPR,.QPR,.NONE,.NONE}, {.VD_D,.VM_Q,.NONE,.NONE}, 0xF3B60280, 0xFFB30FD0, .NEON, .A32, {} }, - { .VQMOVN, {.DPR,.QPR,.NONE,.NONE}, {.VD_D,.VM_Q,.NONE,.NONE}, 0xF3B202C0, 0xFFB30FD0, .NEON, .A32, {} }, { .VQMOVN, {.DPR,.QPR,.NONE,.NONE}, {.VD_D,.VM_Q,.NONE,.NONE}, 0xF3BA02C0, 0xFFB30FD0, .NEON, .A32, {} }, + { .VQMOVN, {.DPR,.QPR,.NONE,.NONE}, {.VD_D,.VM_Q,.NONE,.NONE}, 0xF3B202C0, 0xFFB30FD0, .NEON, .A32, {} }, { .VQMOVN, {.DPR,.QPR,.NONE,.NONE}, {.VD_D,.VM_Q,.NONE,.NONE}, 0xF3B20280, 0xFFB30FD0, .NEON, .A32, {} }, - { .VQMOVUN, {.DPR,.QPR,.NONE,.NONE}, {.VD_D,.VM_Q,.NONE,.NONE}, 0xF3B60240, 0xFFB30FD0, .NEON, .A32, {} }, - { .VQMOVUN, {.DPR,.QPR,.NONE,.NONE}, {.VD_D,.VM_Q,.NONE,.NONE}, 0xF3B20240, 0xFFB30FD0, .NEON, .A32, {} }, + { .VQMOVN, {.DPR,.QPR,.NONE,.NONE}, {.VD_D,.VM_Q,.NONE,.NONE}, 0xF3B60280, 0xFFB30FD0, .NEON, .A32, {} }, + { .VQMOVN, {.DPR,.QPR,.NONE,.NONE}, {.VD_D,.VM_Q,.NONE,.NONE}, 0xF3B602C0, 0xFFB30FD0, .NEON, .A32, {} }, { .VQMOVUN, {.DPR,.QPR,.NONE,.NONE}, {.VD_D,.VM_Q,.NONE,.NONE}, 0xF3BA0240, 0xFFB30FD0, .NEON, .A32, {} }, + { .VQMOVUN, {.DPR,.QPR,.NONE,.NONE}, {.VD_D,.VM_Q,.NONE,.NONE}, 0xF3B20240, 0xFFB30FD0, .NEON, .A32, {} }, + { .VQMOVUN, {.DPR,.QPR,.NONE,.NONE}, {.VD_D,.VM_Q,.NONE,.NONE}, 0xF3B60240, 0xFFB30FD0, .NEON, .A32, {} }, { .VPADDL, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B40200, 0xFFB30FD0, .NEON, .A32, {} }, - { .VPADDL, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B002C0, 0xFFB30FD0, .NEON, .A32, {} }, - { .VPADDL, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B00280, 0xFFB30FD0, .NEON, .A32, {} }, { .VPADDL, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B80200, 0xFFB30FD0, .NEON, .A32, {} }, + { .VPADDL, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B002C0, 0xFFB30FD0, .NEON, .A32, {} }, { .VPADDL, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B00240, 0xFFB30FD0, .NEON, .A32, {} }, { .VPADDL, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B00200, 0xFFB30FD0, .NEON, .A32, {} }, + { .VPADDL, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B00280, 0xFFB30FD0, .NEON, .A32, {} }, { .VPADAL, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B00680, 0xFFB30FD0, .NEON, .A32, {} }, + { .VPADAL, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B006C0, 0xFFB30FD0, .NEON, .A32, {} }, { .VPADAL, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B00640, 0xFFB30FD0, .NEON, .A32, {} }, { .VPADAL, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B00600, 0xFFB30FD0, .NEON, .A32, {} }, - { .VPADAL, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B006C0, 0xFFB30FD0, .NEON, .A32, {} }, + { .VSHLL, {.QPR,.DPR,.NONE,.NONE}, {.VD_Q,.VM_D,.NONE,.NONE}, 0xF3B60300, 0xFFB30FD0, .NEON, .A32, {} }, { .VSHLL, {.QPR,.DPR,.NONE,.NONE}, {.VD_Q,.VM_D,.NONE,.NONE}, 0xF3BA0300, 0xFFB30FD0, .NEON, .A32, {} }, { .VSHLL, {.QPR,.DPR,.NONE,.NONE}, {.VD_Q,.VM_D,.NONE,.NONE}, 0xF3B20300, 0xFFB30FD0, .NEON, .A32, {} }, - { .VSHLL, {.QPR,.DPR,.NONE,.NONE}, {.VD_Q,.VM_D,.NONE,.NONE}, 0xF3B60300, 0xFFB30FD0, .NEON, .A32, {} }, - { .VCLS, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B00400, 0xFFB30FD0, .NEON, .A32, {} }, - { .VCLS, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B80400, 0xFFB30FD0, .NEON, .A32, {} }, - { .VCLS, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B40400, 0xFFB30FD0, .NEON, .A32, {} }, - { .VCLS, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B00440, 0xFFB30FD0, .NEON, .A32, {} }, { .VCLS, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B80440, 0xFFB30FD0, .NEON, .A32, {} }, { .VCLS, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B40440, 0xFFB30FD0, .NEON, .A32, {} }, + { .VCLS, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B00440, 0xFFB30FD0, .NEON, .A32, {} }, + { .VCLS, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B40400, 0xFFB30FD0, .NEON, .A32, {} }, + { .VCLS, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B00400, 0xFFB30FD0, .NEON, .A32, {} }, + { .VCLS, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B80400, 0xFFB30FD0, .NEON, .A32, {} }, + { .VCLZ, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B80480, 0xFFB30FD0, .NEON, .A32, {} }, + { .VCLZ, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B40480, 0xFFB30FD0, .NEON, .A32, {} }, + { .VCLZ, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B404C0, 0xFFB30FD0, .NEON, .A32, {} }, { .VCLZ, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B804C0, 0xFFB30FD0, .NEON, .A32, {} }, { .VCLZ, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B004C0, 0xFFB30FD0, .NEON, .A32, {} }, - { .VCLZ, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B404C0, 0xFFB30FD0, .NEON, .A32, {} }, { .VCLZ, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B00480, 0xFFB30FD0, .NEON, .A32, {} }, - { .VCLZ, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B40480, 0xFFB30FD0, .NEON, .A32, {} }, - { .VCLZ, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B80480, 0xFFB30FD0, .NEON, .A32, {} }, - { .VCNT, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B00540, 0xFFB30FD0, .NEON, .A32, {} }, { .VCNT, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B00500, 0xFFB30FD0, .NEON, .A32, {} }, + { .VCNT, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B00540, 0xFFB30FD0, .NEON, .A32, {} }, { .VREV16, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B00140, 0xFFB30FD0, .NEON, .A32, {} }, { .VREV16, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B00100, 0xFFB30FD0, .NEON, .A32, {} }, - { .VREV32, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B400C0, 0xFFB30FD0, .NEON, .A32, {} }, { .VREV32, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B00080, 0xFFB30FD0, .NEON, .A32, {} }, - { .VREV32, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B40080, 0xFFB30FD0, .NEON, .A32, {} }, { .VREV32, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B000C0, 0xFFB30FD0, .NEON, .A32, {} }, - { .VREV64, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B40000, 0xFFB30FD0, .NEON, .A32, {} }, + { .VREV32, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B40080, 0xFFB30FD0, .NEON, .A32, {} }, + { .VREV32, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B400C0, 0xFFB30FD0, .NEON, .A32, {} }, { .VREV64, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B00000, 0xFFB30FD0, .NEON, .A32, {} }, - { .VREV64, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B80040, 0xFFB30FD0, .NEON, .A32, {} }, + { .VREV64, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B40000, 0xFFB30FD0, .NEON, .A32, {} }, { .VREV64, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B80000, 0xFFB30FD0, .NEON, .A32, {} }, - { .VREV64, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B40040, 0xFFB30FD0, .NEON, .A32, {} }, + { .VREV64, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B80040, 0xFFB30FD0, .NEON, .A32, {} }, { .VREV64, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B00040, 0xFFB30FD0, .NEON, .A32, {} }, - { .VTRN, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B20080, 0xFFB30FD0, .NEON, .A32, {} }, - { .VTRN, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B600C0, 0xFFB30FD0, .NEON, .A32, {} }, + { .VREV64, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B40040, 0xFFB30FD0, .NEON, .A32, {} }, { .VTRN, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B60080, 0xFFB30FD0, .NEON, .A32, {} }, - { .VTRN, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B200C0, 0xFFB30FD0, .NEON, .A32, {} }, + { .VTRN, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B600C0, 0xFFB30FD0, .NEON, .A32, {} }, + { .VTRN, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B20080, 0xFFB30FD0, .NEON, .A32, {} }, { .VTRN, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3BA0080, 0xFFB30FD0, .NEON, .A32, {} }, + { .VTRN, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B200C0, 0xFFB30FD0, .NEON, .A32, {} }, { .VTRN, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3BA00C0, 0xFFB30FD0, .NEON, .A32, {} }, - { .VUZP, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B60140, 0xFFB30FD0, .NEON, .A32, {} }, - { .VUZP, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B60100, 0xFFB30FD0, .NEON, .A32, {} }, - { .VUZP, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B20140, 0xFFB30FD0, .NEON, .A32, {} }, { .VUZP, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B20100, 0xFFB30FD0, .NEON, .A32, {} }, { .VUZP, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3BA0140, 0xFFB30FD0, .NEON, .A32, {} }, - { .VZIP, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B20180, 0xFFB30FD0, .NEON, .A32, {} }, + { .VUZP, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B60140, 0xFFB30FD0, .NEON, .A32, {} }, + { .VUZP, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B20140, 0xFFB30FD0, .NEON, .A32, {} }, + { .VUZP, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B60100, 0xFFB30FD0, .NEON, .A32, {} }, { .VZIP, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B201C0, 0xFFB30FD0, .NEON, .A32, {} }, - { .VZIP, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B601C0, 0xFFB30FD0, .NEON, .A32, {} }, { .VZIP, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3BA01C0, 0xFFB30FD0, .NEON, .A32, {} }, + { .VZIP, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B20180, 0xFFB30FD0, .NEON, .A32, {} }, { .VZIP, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B60180, 0xFFB30FD0, .NEON, .A32, {} }, - { .VSWP, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B20000, 0xFFB30FD0, .NEON, .A32, {} }, + { .VZIP, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B601C0, 0xFFB30FD0, .NEON, .A32, {} }, { .VSWP, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B20040, 0xFFB30FD0, .NEON, .A32, {} }, + { .VSWP, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B20000, 0xFFB30FD0, .NEON, .A32, {} }, { .AESE, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B00300, 0xFFB30FD0, .CRYPTO, .A32, {} }, { .AESD, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B00340, 0xFFB30FD0, .CRYPTO, .A32, {} }, { .AESMC, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B00380, 0xFFB30FD0, .CRYPTO, .A32, {} }, { .AESIMC, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B003C0, 0xFFB30FD0, .CRYPTO, .A32, {} }, - { .VCEQ_Z, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B10140, 0xFFB30FD0, .NEON, .A32, {} }, - { .VCEQ_Z, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B10100, 0xFFB30FD0, .NEON, .A32, {} }, { .VCEQ_Z, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B90540, 0xFFB30FD0, .NEON, .A32, {} }, { .VCEQ_Z, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B90500, 0xFFB30FD0, .NEON, .A32, {} }, + { .VCEQ_Z, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B10100, 0xFFB30FD0, .NEON, .A32, {} }, + { .VCEQ_Z, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B10140, 0xFFB30FD0, .NEON, .A32, {} }, + { .VCGE_Z, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B10080, 0xFFB30FD0, .NEON, .A32, {} }, { .VCGE_Z, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B90480, 0xFFB30FD0, .NEON, .A32, {} }, { .VCGE_Z, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B904C0, 0xFFB30FD0, .NEON, .A32, {} }, - { .VCGE_Z, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B10080, 0xFFB30FD0, .NEON, .A32, {} }, { .VCGE_Z, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B100C0, 0xFFB30FD0, .NEON, .A32, {} }, - { .VCGT_Z, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B90440, 0xFFB30FD0, .NEON, .A32, {} }, - { .VCGT_Z, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B90400, 0xFFB30FD0, .NEON, .A32, {} }, - { .VCGT_Z, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B10000, 0xFFB30FD0, .NEON, .A32, {} }, { .VCGT_Z, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B10040, 0xFFB30FD0, .NEON, .A32, {} }, - { .VCLE_Z, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B10180, 0xFFB30FD0, .NEON, .A32, {} }, - { .VCLE_Z, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B905C0, 0xFFB30FD0, .NEON, .A32, {} }, + { .VCGT_Z, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B90400, 0xFFB30FD0, .NEON, .A32, {} }, + { .VCGT_Z, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B90440, 0xFFB30FD0, .NEON, .A32, {} }, + { .VCGT_Z, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B10000, 0xFFB30FD0, .NEON, .A32, {} }, { .VCLE_Z, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B101C0, 0xFFB30FD0, .NEON, .A32, {} }, + { .VCLE_Z, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B10180, 0xFFB30FD0, .NEON, .A32, {} }, { .VCLE_Z, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B90580, 0xFFB30FD0, .NEON, .A32, {} }, - { .VCLT_Z, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B10200, 0xFFB30FD0, .NEON, .A32, {} }, - { .VCLT_Z, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B90640, 0xFFB30FD0, .NEON, .A32, {} }, - { .VCLT_Z, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B90600, 0xFFB30FD0, .NEON, .A32, {} }, + { .VCLE_Z, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B905C0, 0xFFB30FD0, .NEON, .A32, {} }, { .VCLT_Z, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B10240, 0xFFB30FD0, .NEON, .A32, {} }, - { .VTBL, {.DPR,.DPR_LIST,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF3B00900, 0xFFB00F70, .NEON, .A32, {} }, + { .VCLT_Z, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B90640, 0xFFB30FD0, .NEON, .A32, {} }, + { .VCLT_Z, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B10200, 0xFFB30FD0, .NEON, .A32, {} }, + { .VCLT_Z, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B90600, 0xFFB30FD0, .NEON, .A32, {} }, { .VTBL, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF3B00800, 0xFFB00F70, .NEON, .A32, {} }, - { .VTBL, {.DPR,.DPR_LIST,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF3B00B00, 0xFFB00F70, .NEON, .A32, {} }, + { .VTBL, {.DPR,.DPR_LIST,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF3B00900, 0xFFB00F70, .NEON, .A32, {} }, { .VTBL, {.DPR,.DPR_LIST,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF3B00A00, 0xFFB00F70, .NEON, .A32, {} }, - { .VTBX, {.DPR,.DPR_LIST,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF3B00940, 0xFFB00F70, .NEON, .A32, {} }, + { .VTBL, {.DPR,.DPR_LIST,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF3B00B00, 0xFFB00F70, .NEON, .A32, {} }, { .VTBX, {.DPR,.DPR_LIST,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF3B00A40, 0xFFB00F70, .NEON, .A32, {} }, { .VTBX, {.DPR,.DPR_LIST,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF3B00B40, 0xFFB00F70, .NEON, .A32, {} }, + { .VTBX, {.DPR,.DPR_LIST,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF3B00940, 0xFFB00F70, .NEON, .A32, {} }, { .VTBX, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF3B00840, 0xFFB00F70, .NEON, .A32, {} }, { .VDUP, {.DPR,.DPR_ELEM,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B00C00, 0xFFB00FD0, .NEON, .A32, {} }, { .VDUP, {.QPR,.DPR_ELEM,.NONE,.NONE}, {.VD_Q,.VM_D,.NONE,.NONE}, 0xF3B00C40, 0xFFB00FD0, .NEON, .A32, {} }, @@ -836,64 +844,64 @@ DECODE_ENTRIES := [1660]lib.Decode_Entry{ { .BIC, {.GPR,.GPR,.IMM_MOD,.NONE}, {.RD,.RN_A32,.A32_IMM_MOD,.NONE}, 0x03D00000, 0x0FF00000, .BASE, .A32, {sets_flags=true} }, { .MVN, {.GPR,.IMM_MOD,.NONE,.NONE}, {.RD,.A32_IMM_MOD,.NONE,.NONE}, 0x03E00000, 0x0FEF0000, .BASE, .A32, {} }, { .MVN, {.GPR,.IMM_MOD,.NONE,.NONE}, {.RD,.A32_IMM_MOD,.NONE,.NONE}, 0x03F00000, 0x0FFF0000, .BASE, .A32, {sets_flags=true} }, + { .VST1, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VFP_D_LIST,.RN_A32,.NONE,.NONE}, 0xF4000200, 0xFFF00F00, .NEON, .A32, {} }, { .VST1, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VFP_D_LIST,.RN_A32,.NONE,.NONE}, 0xF4000600, 0xFFF00F00, .NEON, .A32, {} }, { .VST1, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VFP_D_LIST,.RN_A32,.NONE,.NONE}, 0xF4000A00, 0xFFF00F00, .NEON, .A32, {} }, - { .VST1, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VFP_D_LIST,.RN_A32,.NONE,.NONE}, 0xF4000200, 0xFFF00F00, .NEON, .A32, {} }, { .VST1, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VFP_D_LIST,.RN_A32,.NONE,.NONE}, 0xF4000700, 0xFFF00F00, .NEON, .A32, {} }, - { .VST2, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VFP_D_LIST,.RN_A32,.NONE,.NONE}, 0xF4000300, 0xFFF00F00, .NEON, .A32, {} }, { .VST2, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VFP_D_LIST,.RN_A32,.NONE,.NONE}, 0xF4000900, 0xFFF00F00, .NEON, .A32, {} }, + { .VST2, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VFP_D_LIST,.RN_A32,.NONE,.NONE}, 0xF4000300, 0xFFF00F00, .NEON, .A32, {} }, { .VST2, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VFP_D_LIST,.RN_A32,.NONE,.NONE}, 0xF4000800, 0xFFF00F00, .NEON, .A32, {} }, - { .VST3, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VFP_D_LIST,.RN_A32,.NONE,.NONE}, 0xF4000400, 0xFFF00F00, .NEON, .A32, {} }, { .VST3, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VFP_D_LIST,.RN_A32,.NONE,.NONE}, 0xF4000500, 0xFFF00F00, .NEON, .A32, {} }, + { .VST3, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VFP_D_LIST,.RN_A32,.NONE,.NONE}, 0xF4000400, 0xFFF00F00, .NEON, .A32, {} }, { .VST4, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VFP_D_LIST,.RN_A32,.NONE,.NONE}, 0xF4000000, 0xFFF00F00, .NEON, .A32, {} }, { .VST4, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VFP_D_LIST,.RN_A32,.NONE,.NONE}, 0xF4000100, 0xFFF00F00, .NEON, .A32, {} }, { .VLD1, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VFP_D_LIST,.RN_A32,.NONE,.NONE}, 0xF4200600, 0xFFF00F00, .NEON, .A32, {} }, - { .VLD1, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VFP_D_LIST,.RN_A32,.NONE,.NONE}, 0xF4200200, 0xFFF00F00, .NEON, .A32, {} }, { .VLD1, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VFP_D_LIST,.RN_A32,.NONE,.NONE}, 0xF4200700, 0xFFF00F00, .NEON, .A32, {} }, { .VLD1, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VFP_D_LIST,.RN_A32,.NONE,.NONE}, 0xF4200A00, 0xFFF00F00, .NEON, .A32, {} }, - { .VLD2, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VFP_D_LIST,.RN_A32,.NONE,.NONE}, 0xF4200800, 0xFFF00F00, .NEON, .A32, {} }, - { .VLD2, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VFP_D_LIST,.RN_A32,.NONE,.NONE}, 0xF4200300, 0xFFF00F00, .NEON, .A32, {} }, + { .VLD1, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VFP_D_LIST,.RN_A32,.NONE,.NONE}, 0xF4200200, 0xFFF00F00, .NEON, .A32, {} }, { .VLD2, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VFP_D_LIST,.RN_A32,.NONE,.NONE}, 0xF4200900, 0xFFF00F00, .NEON, .A32, {} }, - { .VLD3, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VFP_D_LIST,.RN_A32,.NONE,.NONE}, 0xF4200500, 0xFFF00F00, .NEON, .A32, {} }, + { .VLD2, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VFP_D_LIST,.RN_A32,.NONE,.NONE}, 0xF4200300, 0xFFF00F00, .NEON, .A32, {} }, + { .VLD2, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VFP_D_LIST,.RN_A32,.NONE,.NONE}, 0xF4200800, 0xFFF00F00, .NEON, .A32, {} }, { .VLD3, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VFP_D_LIST,.RN_A32,.NONE,.NONE}, 0xF4200400, 0xFFF00F00, .NEON, .A32, {} }, - { .VLD4, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VFP_D_LIST,.RN_A32,.NONE,.NONE}, 0xF4200100, 0xFFF00F00, .NEON, .A32, {} }, + { .VLD3, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VFP_D_LIST,.RN_A32,.NONE,.NONE}, 0xF4200500, 0xFFF00F00, .NEON, .A32, {} }, { .VLD4, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VFP_D_LIST,.RN_A32,.NONE,.NONE}, 0xF4200000, 0xFFF00F00, .NEON, .A32, {} }, + { .VLD4, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VFP_D_LIST,.RN_A32,.NONE,.NONE}, 0xF4200100, 0xFFF00F00, .NEON, .A32, {} }, + { .VST1, {.DPR_ELEM,.MEM,.NONE,.NONE}, {.VD_D,.RN_A32,.NONE,.NONE}, 0xF4800000, 0xFFB00F00, .NEON, .A32, {} }, { .VST1, {.DPR_ELEM,.MEM,.NONE,.NONE}, {.VD_D,.RN_A32,.NONE,.NONE}, 0xF4800800, 0xFFB00F00, .NEON, .A32, {} }, { .VST1, {.DPR_ELEM,.MEM,.NONE,.NONE}, {.VD_D,.RN_A32,.NONE,.NONE}, 0xF4800400, 0xFFB00F00, .NEON, .A32, {} }, - { .VST1, {.DPR_ELEM,.MEM,.NONE,.NONE}, {.VD_D,.RN_A32,.NONE,.NONE}, 0xF4800000, 0xFFB00F00, .NEON, .A32, {} }, - { .VST2_LANE, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VD_D,.RN_A32,.NONE,.NONE}, 0xF4800100, 0xFFB00D00, .NEON, .A32, {} }, - { .VST2_LANE, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VD_D,.RN_A32,.NONE,.NONE}, 0xF4800500, 0xFFB00D00, .NEON, .A32, {} }, { .VST2_LANE, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VD_D,.RN_A32,.NONE,.NONE}, 0xF4800900, 0xFFB00D00, .NEON, .A32, {} }, - { .VST3_LANE, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VD_D,.RN_A32,.NONE,.NONE}, 0xF4800200, 0xFFB00D00, .NEON, .A32, {} }, + { .VST2_LANE, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VD_D,.RN_A32,.NONE,.NONE}, 0xF4800500, 0xFFB00D00, .NEON, .A32, {} }, + { .VST2_LANE, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VD_D,.RN_A32,.NONE,.NONE}, 0xF4800100, 0xFFB00D00, .NEON, .A32, {} }, { .VST3_LANE, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VD_D,.RN_A32,.NONE,.NONE}, 0xF4800600, 0xFFB00D00, .NEON, .A32, {} }, + { .VST3_LANE, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VD_D,.RN_A32,.NONE,.NONE}, 0xF4800200, 0xFFB00D00, .NEON, .A32, {} }, { .VST3_LANE, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VD_D,.RN_A32,.NONE,.NONE}, 0xF4800A00, 0xFFB00D00, .NEON, .A32, {} }, + { .VST4_LANE, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VD_D,.RN_A32,.NONE,.NONE}, 0xF4800B00, 0xFFB00D00, .NEON, .A32, {} }, { .VST4_LANE, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VD_D,.RN_A32,.NONE,.NONE}, 0xF4800300, 0xFFB00D00, .NEON, .A32, {} }, { .VST4_LANE, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VD_D,.RN_A32,.NONE,.NONE}, 0xF4800700, 0xFFB00D00, .NEON, .A32, {} }, - { .VST4_LANE, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VD_D,.RN_A32,.NONE,.NONE}, 0xF4800B00, 0xFFB00D00, .NEON, .A32, {} }, { .VST1_LANE, {.DPR_ELEM,.MEM,.NONE,.NONE}, {.VD_D,.RN_A32,.NONE,.NONE}, 0xF4800000, 0xFFB00C00, .NEON, .A32, {} }, - { .VST1_LANE, {.DPR_ELEM,.MEM,.NONE,.NONE}, {.VD_D,.RN_A32,.NONE,.NONE}, 0xF4800400, 0xFFB00C00, .NEON, .A32, {} }, { .VST1_LANE, {.DPR_ELEM,.MEM,.NONE,.NONE}, {.VD_D,.RN_A32,.NONE,.NONE}, 0xF4800800, 0xFFB00C00, .NEON, .A32, {} }, + { .VST1_LANE, {.DPR_ELEM,.MEM,.NONE,.NONE}, {.VD_D,.RN_A32,.NONE,.NONE}, 0xF4800400, 0xFFB00C00, .NEON, .A32, {} }, { .STR, {.GPR,.MEM,.NONE,.NONE}, {.RT_A32,.MEM_POST_INDEX,.NONE,.NONE}, 0x04800000, 0x0F700000, .BASE, .A32, {} }, { .LDR, {.GPR,.MEM,.NONE,.NONE}, {.RT_A32,.MEM_POST_INDEX,.NONE,.NONE}, 0x04900000, 0x0F700000, .BASE, .A32, {} }, { .VLD2R, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VD_D,.RN_A32,.NONE,.NONE}, 0xF4A00D0F, 0xFFB00F0F, .NEON, .A32, {} }, { .VLD3R, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VD_D,.RN_A32,.NONE,.NONE}, 0xF4A00E0F, 0xFFB00F0F, .NEON, .A32, {} }, { .VLD4R, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VD_D,.RN_A32,.NONE,.NONE}, 0xF4A00F0F, 0xFFB00F0F, .NEON, .A32, {} }, { .VLD1, {.DPR_ELEM,.MEM,.NONE,.NONE}, {.VD_D,.RN_A32,.NONE,.NONE}, 0xF4A00400, 0xFFB00F00, .NEON, .A32, {} }, + { .VLD1, {.DPR_ELEM,.MEM,.NONE,.NONE}, {.VD_D,.RN_A32,.NONE,.NONE}, 0xF4A00800, 0xFFB00F00, .NEON, .A32, {} }, { .VLD1, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VFP_D_LIST,.RN_A32,.NONE,.NONE}, 0xF4A00C00, 0xFFB00F00, .NEON, .A32, {} }, { .VLD1, {.DPR_ELEM,.MEM,.NONE,.NONE}, {.VD_D,.RN_A32,.NONE,.NONE}, 0xF4A00000, 0xFFB00F00, .NEON, .A32, {} }, - { .VLD1, {.DPR_ELEM,.MEM,.NONE,.NONE}, {.VD_D,.RN_A32,.NONE,.NONE}, 0xF4A00800, 0xFFB00F00, .NEON, .A32, {} }, - { .VLD2_LANE, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VD_D,.RN_A32,.NONE,.NONE}, 0xF4A00900, 0xFFB00D00, .NEON, .A32, {} }, { .VLD2_LANE, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VD_D,.RN_A32,.NONE,.NONE}, 0xF4A00500, 0xFFB00D00, .NEON, .A32, {} }, { .VLD2_LANE, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VD_D,.RN_A32,.NONE,.NONE}, 0xF4A00100, 0xFFB00D00, .NEON, .A32, {} }, - { .VLD3_LANE, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VD_D,.RN_A32,.NONE,.NONE}, 0xF4A00600, 0xFFB00D00, .NEON, .A32, {} }, + { .VLD2_LANE, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VD_D,.RN_A32,.NONE,.NONE}, 0xF4A00900, 0xFFB00D00, .NEON, .A32, {} }, { .VLD3_LANE, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VD_D,.RN_A32,.NONE,.NONE}, 0xF4A00A00, 0xFFB00D00, .NEON, .A32, {} }, + { .VLD3_LANE, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VD_D,.RN_A32,.NONE,.NONE}, 0xF4A00600, 0xFFB00D00, .NEON, .A32, {} }, { .VLD3_LANE, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VD_D,.RN_A32,.NONE,.NONE}, 0xF4A00200, 0xFFB00D00, .NEON, .A32, {} }, - { .VLD4_LANE, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VD_D,.RN_A32,.NONE,.NONE}, 0xF4A00300, 0xFFB00D00, .NEON, .A32, {} }, { .VLD4_LANE, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VD_D,.RN_A32,.NONE,.NONE}, 0xF4A00700, 0xFFB00D00, .NEON, .A32, {} }, + { .VLD4_LANE, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VD_D,.RN_A32,.NONE,.NONE}, 0xF4A00300, 0xFFB00D00, .NEON, .A32, {} }, { .VLD4_LANE, {.DPR_LIST,.MEM,.NONE,.NONE}, {.VD_D,.RN_A32,.NONE,.NONE}, 0xF4A00B00, 0xFFB00D00, .NEON, .A32, {} }, + { .VLD1_LANE, {.DPR_ELEM,.MEM,.NONE,.NONE}, {.VD_D,.RN_A32,.NONE,.NONE}, 0xF4A00400, 0xFFB00C00, .NEON, .A32, {} }, { .VLD1_LANE, {.DPR_ELEM,.MEM,.NONE,.NONE}, {.VD_D,.RN_A32,.NONE,.NONE}, 0xF4A00000, 0xFFB00C00, .NEON, .A32, {} }, { .VLD1_LANE, {.DPR_ELEM,.MEM,.NONE,.NONE}, {.VD_D,.RN_A32,.NONE,.NONE}, 0xF4A00800, 0xFFB00C00, .NEON, .A32, {} }, - { .VLD1_LANE, {.DPR_ELEM,.MEM,.NONE,.NONE}, {.VD_D,.RN_A32,.NONE,.NONE}, 0xF4A00400, 0xFFB00C00, .NEON, .A32, {} }, { .STRT, {.GPR,.MEM,.NONE,.NONE}, {.RT_A32,.MEM_POST_INDEX,.NONE,.NONE}, 0x04A00000, 0x0F700000, .BASE, .A32, {} }, { .LDRT, {.GPR,.MEM,.NONE,.NONE}, {.RT_A32,.MEM_POST_INDEX,.NONE,.NONE}, 0x04B00000, 0x0F700000, .BASE, .A32, {} }, { .STRB, {.GPR,.MEM,.NONE,.NONE}, {.RT_A32,.MEM_POST_INDEX,.NONE,.NONE}, 0x04C00000, 0x0F700000, .BASE, .A32, {} }, @@ -1045,8 +1053,8 @@ DECODE_ENTRIES := [1660]lib.Decode_Entry{ { .VMOV, {.DPR,.GPR,.GPR,.NONE}, {.VM_D,.RT_A32,.RT2_A32,.NONE}, 0x0C400B10, 0x0FF00FD0, .VFPV2, .A32, {} }, { .MCRR2, {.COPROC_NUM,.IMM_COPROC_OP,.GPR,.GPR}, {.COPROC_NUM_FIELD,.COPROC_OPC_MCRR,.RT_A32,.RT2_A32}, 0xFC400000, 0xFFF00000, .V6, .A32, {} }, { .MCRR, {.COPROC_NUM,.IMM_COPROC_OP,.GPR,.GPR}, {.COPROC_NUM_FIELD,.COPROC_OPC_MCRR,.RT_A32,.RT2_A32}, 0x0C400000, 0x0FF00000, .V6, .A32, {} }, - { .VMOV, {.GPR,.GPR,.DPR,.NONE}, {.RT_A32,.RT2_A32,.VM_D,.NONE}, 0x0C500B10, 0x0FF00FD0, .VFPV2, .A32, {} }, { .VMOV, {.GPR,.GPR,.SPR,.SPR}, {.RT_A32,.RT2_A32,.VM_S,.NONE}, 0x0C500A10, 0x0FF00FD0, .VFPV2, .A32, {} }, + { .VMOV, {.GPR,.GPR,.DPR,.NONE}, {.RT_A32,.RT2_A32,.VM_D,.NONE}, 0x0C500B10, 0x0FF00FD0, .VFPV2, .A32, {} }, { .MRRC2, {.COPROC_NUM,.IMM_COPROC_OP,.GPR,.GPR}, {.COPROC_NUM_FIELD,.COPROC_OPC_MCRR,.RT_A32,.RT2_A32}, 0xFC500000, 0xFFF00000, .V6, .A32, {} }, { .MRRC, {.COPROC_NUM,.IMM_COPROC_OP,.GPR,.GPR}, {.COPROC_NUM_FIELD,.COPROC_OPC_MCRR,.RT_A32,.RT2_A32}, 0x0C500000, 0x0FF00000, .V6, .A32, {} }, { .VCADD, {.QPR,.QPR,.QPR,.IMM}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xFC800840, 0xFE800F50, .FCMA, .A32, {} }, @@ -1185,21 +1193,21 @@ DECODE_ENTRIES := [1660]lib.Decode_Entry{ { .VRINTX, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0x0EB70B40, 0x0FBF0FD0, .V8, .A32, {} }, { .VRINTX, {.SPR,.SPR,.NONE,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EB70A40, 0x0FBF0FD0, .V8, .A32, {} }, { .VJCVT, {.SPR,.DPR,.NONE,.NONE}, {.VD_S,.VM_D,.NONE,.NONE}, 0x0EB90BC0, 0x0FBF0FD0, .V8, .A32, {} }, - { .VCVT_FIXED, {.DPR,.DPR,.IMM,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0x0EBA0B40, 0x0FBF0FD0, .VFPV3, .A32, {} }, - { .VCVT_FIXED, {.SPR,.SPR,.IMM,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EBE0940, 0x0FBF0FD0, .HALF_FP, .A32, {} }, - { .VCVT_FIXED, {.SPR,.SPR,.IMM,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EBA0A40, 0x0FBF0FD0, .VFPV3, .A32, {} }, - { .VCVT_FIXED, {.SPR,.SPR,.IMM,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EBB0A40, 0x0FBF0FD0, .VFPV3, .A32, {} }, { .VCVT_FIXED, {.SPR,.SPR,.IMM,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EBE0A40, 0x0FBF0FD0, .VFPV3, .A32, {} }, + { .VCVT_FIXED, {.SPR,.SPR,.IMM,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EBA0A40, 0x0FBF0FD0, .VFPV3, .A32, {} }, { .VCVT_FIXED, {.SPR,.SPR,.IMM,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EBF0A40, 0x0FBF0FD0, .VFPV3, .A32, {} }, - { .VCVT_FIXED, {.DPR,.DPR,.IMM,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0x0EBE0B40, 0x0FBF0FD0, .VFPV3, .A32, {} }, + { .VCVT_FIXED, {.SPR,.SPR,.IMM,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EBE0940, 0x0FBF0FD0, .HALF_FP, .A32, {} }, + { .VCVT_FIXED, {.SPR,.SPR,.IMM,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EBB0A40, 0x0FBF0FD0, .VFPV3, .A32, {} }, { .VCVT_FIXED, {.SPR,.SPR,.IMM,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EBA0940, 0x0FBF0FD0, .HALF_FP, .A32, {} }, + { .VCVT_FIXED, {.DPR,.DPR,.IMM,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0x0EBE0B40, 0x0FBF0FD0, .VFPV3, .A32, {} }, + { .VCVT_FIXED, {.DPR,.DPR,.IMM,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0x0EBA0B40, 0x0FBF0FD0, .VFPV3, .A32, {} }, { .VCMP, {.SPR,.SPR,.NONE,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EB40A40, 0x0FBF0F50, .VFPV2, .A32, {} }, { .VCMP, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0x0EB40B40, 0x0FBF0F50, .VFPV2, .A32, {} }, { .VCMP, {.SPR,.SPR,.NONE,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EB40940, 0x0FBF0F50, .HALF_FP, .A32, {} }, { .VCMPE, {.SPR,.SPR,.NONE,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EB40AC0, 0x0FBF0F50, .VFPV2, .A32, {} }, { .VCMPE, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0x0EB40BC0, 0x0FBF0F50, .VFPV2, .A32, {} }, - { .VCVT_FIXED, {.SPR,.SPR,.IMM,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EBE0A40, 0x0FBF0FC0, .VFPV3, .A32, {} }, { .VCVT_FIXED, {.SPR,.SPR,.IMM,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EBA0A40, 0x0FBF0FC0, .VFPV3, .A32, {} }, + { .VCVT_FIXED, {.SPR,.SPR,.IMM,.NONE}, {.VD_S,.VM_S,.NONE,.NONE}, 0x0EBE0A40, 0x0FBF0FC0, .VFPV3, .A32, {} }, { .VMOV, {.SPR,.IMM8,.NONE,.NONE}, {.VD_S,.VFP_IMM8,.NONE,.NONE}, 0x0EB00A00, 0x0FB00FF0, .VFPV3, .A32, {} }, { .VMOV, {.DPR,.IMM8,.NONE,.NONE}, {.VD_D,.VFP_IMM8,.NONE,.NONE}, 0x0EB00B00, 0x0FB00FF0, .VFPV3, .A32, {} }, { .VDUP, {.DPR,.GPR,.NONE,.NONE}, {.VD_D,.RT_A32,.NONE,.NONE}, 0x0EC00B10, 0x0FF00FD0, .NEON, .A32, {} }, @@ -1536,12 +1544,12 @@ DECODE_ENTRIES := [1660]lib.Decode_Entry{ { .VLDRW_GATHER, {.QPR,.MEM,.QPR,.NONE}, {.VD_Q,.RN_T32,.VM_Q,.NONE}, 0xFC900F40, 0xFEF00FF1, .MVE_INT, .T32, {thumb32=true} }, { .VLDRD_GATHER, {.QPR,.MEM,.QPR,.NONE}, {.VD_Q,.RN_T32,.VM_Q,.NONE}, 0xFC900FD0, 0xFEF00FF1, .MVE_INT, .T32, {thumb32=true} }, { .VLDRB_GATHER, {.QPR,.MEM,.QPR,.NONE}, {.VD_Q,.RN_T32,.VM_Q,.NONE}, 0xFC900E00, 0xFEF00FD1, .MVE_INT, .T32, {thumb32=true} }, - { .VCX1A, {.IMM_COPROC,.SPR,.IMM,.NONE}, {.CDE_COPROC_FIELD,.VD_S,.CDE_IMM_FIELD,.NONE}, 0xFC200000, 0xFF300000, .CDE, .T32, {thumb32=true} }, { .VCX1A, {.IMM_COPROC,.DPR,.IMM,.NONE}, {.CDE_COPROC_FIELD,.VD_D,.CDE_IMM_FIELD,.NONE}, 0xFC300000, 0xFF300000, .CDE, .T32, {thumb32=true} }, + { .VCX1A, {.IMM_COPROC,.SPR,.IMM,.NONE}, {.CDE_COPROC_FIELD,.VD_S,.CDE_IMM_FIELD,.NONE}, 0xFC200000, 0xFF300000, .CDE, .T32, {thumb32=true} }, { .VCX2A, {.IMM_COPROC,.SPR,.SPR,.IMM}, {.CDE_COPROC_FIELD,.VD_S,.VM_S,.CDE_IMM_FIELD}, 0xFC600000, 0xFF300000, .CDE, .T32, {thumb32=true} }, { .VCX2A, {.IMM_COPROC,.DPR,.DPR,.IMM}, {.CDE_COPROC_FIELD,.VD_D,.VM_D,.CDE_IMM_FIELD}, 0xFC700000, 0xFF300000, .CDE, .T32, {thumb32=true} }, - { .VCX3A, {.IMM_COPROC,.SPR,.SPR,.SPR}, {.CDE_COPROC_FIELD,.VD_S,.VN_S,.VM_S}, 0xFC800000, 0xFF300000, .CDE, .T32, {thumb32=true} }, { .VCX3A, {.IMM_COPROC,.DPR,.DPR,.DPR}, {.CDE_COPROC_FIELD,.VD_D,.VN_D,.VM_D}, 0xFC900000, 0xFF300000, .CDE, .T32, {thumb32=true} }, + { .VCX3A, {.IMM_COPROC,.SPR,.SPR,.SPR}, {.CDE_COPROC_FIELD,.VD_S,.VN_S,.VM_S}, 0xFC800000, 0xFF300000, .CDE, .T32, {thumb32=true} }, { .VPST, {.MVE_VPT_MASK,.NONE,.NONE,.NONE}, {.MVE_VPT_MASK_FIELD,.NONE,.NONE,.NONE}, 0xFE710F4D, 0xFFFFFFFF, .MVE_INT, .T32, {thumb32=true} }, { .VPNOT, {.NONE,.NONE,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xFE310F4D, 0xFFFFFFFF, .MVE_INT, .T32, {thumb32=true} }, { .VRINTA, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xFFBA0540, 0xFFBB0FD1, .MVE_FP, .T32, {thumb32=true} }, @@ -1672,7 +1680,7 @@ DECODE_ENTRIES := [1660]lib.Decode_Entry{ } @(rodata) -DECODE_FORM_IDX := [1660]u16{ +DECODE_FORM_IDX := [1668]u16{ 0, 2, 1, 1, 5, 4, 0, 2, 1, 1, 5, 4, 0, 2, 1, 5, 4, 0, 2, 1, 5, 4, 0, 2, 1, 1, 5, 4, 0, 2, 1, 1, 5, 4, 0, 2, 2, 2, 2, 1, 1, 2, 2, 2, 5, 4, 0, 0, @@ -1685,102 +1693,103 @@ DECODE_FORM_IDX := [1660]u16{ 0, 2, 1, 0, 0, 0, 0, 0, 0, 5, 4, 0, 0, 0, 2, 1, 1, 1, 1, 0, 0, 0, 5, 4, 1, 1, 1, 1, 1, 1, 9, 14, 8, 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, 5, 13, 5, 3, 9, + 0, 0, 9, 3, 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, 1, 4, 9, 4, 4, 2, 2, 4, 11, 4, + 4, 5, 5, 2, 4, 4, 1, 4, 9, 4, 4, 2, 2, 11, 4, 4, 2, 0, 3, 6, 6, 4, 1, 1, 1, 1, 0, 1, 1, 0, 1, 8, - 1, 1, 10, 1, 1, 1, 1, 1, 1, 3, 5, 5, 5, 11, 14, 10, + 1, 1, 1, 10, 1, 1, 1, 1, 1, 3, 5, 5, 5, 11, 14, 10, 8, 10, 4, 5, 5, 6, 6, 3, 5, 5, 1, 5, 5, 5, 4, 4, - 5, 5, 9, 1, 4, 0, 7, 13, 7, 5, 9, 3, 2, 2, 2, 2, + 5, 9, 5, 1, 4, 0, 7, 13, 7, 5, 9, 3, 2, 2, 2, 2, 1, 2, 2, 0, 2, 2, 2, 2, 8, 2, 2, 2, 2, 0, 2, 0, 7, 12, 4, 7, 7, 1, 11, 5, 6, 0, 8, 3, 3, 3, 0, 10, - 3, 3, 0, 3, 0, 3, 0, 0, 0, 24, 23, 21, 25, 22, 0, 0, - 0, 0, 11, 10, 14, 12, 17, 19, 15, 16, 20, 18, 13, 11, 10, 6, - 0, 0, 0, 8, 9, 7, 4, 2, 6, 3, 5, 0, 0, 0, 0, 0, + 3, 3, 0, 3, 0, 3, 0, 0, 0, 25, 21, 24, 23, 22, 0, 0, + 0, 0, 10, 11, 18, 20, 11, 13, 10, 19, 17, 14, 15, 12, 16, 6, + 0, 0, 0, 4, 8, 3, 2, 6, 7, 5, 9, 0, 0, 0, 0, 0, 1, 1, 1, 1, 5, 0, 0, 0, 0, 4, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, - 1, 1, 4, 4, 1, 4, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, - 1, 0, 1, 0, 3, 0, 3, 0, 3, 7, 13, 7, 1, 9, 9, 12, - 14, 6, 7, 7, 9, 9, 7, 7, 1, 3, 7, 9, 7, 6, 12, 6, - 1, 0, 7, 7, 7, 3, 3, 8, 0, 5, 11, 13, 3, 6, 6, 8, - 8, 6, 6, 0, 0, 6, 8, 6, 0, 6, 6, 4, 3, 3, 3, 6, - 2, 2, 0, 0, 9, 9, 11, 10, 4, 7, 2, 2, 2, 1, 4, 11, - 8, 8, 10, 0, 6, 3, 4, 0, 0, 0, 0, 1, 10, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 11, 13, 1, 13, - 11, 8, 3, 3, 3, 9, 1, 5, 9, 10, 12, 10, 1, 0, 12, 0, - 7, 5, 1, 1, 1, 8, 0, 2, 8, 0, 4, 0, 15, 12, 1, 11, - 14, 8, 0, 10, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 0, 0, 1, 1, 1, 3, 3, 3, 1, 1, 2, 2, 2, 0, - 0, 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 2, 2, 2, 2, - 2, 2, 2, 2, 3, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 3, - 5, 3, 5, 3, 5, 3, 3, 3, 1, 1, 3, 3, 0, 1, 2, 0, - 3, 0, 1, 3, 2, 0, 1, 0, 1, 0, 0, 0, 0, 9, 7, 3, - 6, 5, 2, 8, 4, 4, 9, 7, 6, 8, 3, 2, 5, 1, 0, 2, - 0, 1, 2, 4, 1, 3, 5, 0, 1, 0, 2, 1, 5, 4, 2, 3, - 0, 2, 1, 0, 3, 4, 2, 3, 0, 2, 1, 3, 5, 4, 5, 3, - 4, 0, 1, 2, 1, 0, 1, 0, 3, 0, 1, 2, 1, 0, 5, 2, - 4, 3, 0, 4, 1, 3, 2, 5, 3, 1, 2, 0, 4, 0, 2, 3, - 4, 1, 0, 1, 0, 0, 0, 0, 1, 0, 3, 2, 2, 3, 0, 1, - 3, 2, 0, 1, 0, 3, 1, 2, 0, 3, 2, 1, 1, 0, 3, 2, - 1, 2, 3, 0, 2, 3, 3, 0, 3, 0, 3, 2, 1, 3, 0, 2, - 1, 0, 0, 1, 0, 1, 2, 3, 0, 1, 0, 2, 1, 1, 0, 1, - 0, 6, 5, 4, 0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2, - 2, 2, 0, 0, 0, 6, 4, 5, 7, 2, 1, 0, 1, 2, 0, 0, - 1, 2, 0, 2, 1, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 1, 1, 1, 2, 2, 1, 4, 1, 4, 4, 1, 1, 1, 1, 1, 1, + 1, 0, 0, 1, 1, 0, 1, 0, 3, 0, 3, 0, 3, 7, 13, 7, + 1, 9, 9, 14, 12, 6, 7, 7, 9, 9, 7, 7, 1, 3, 7, 9, + 7, 6, 12, 6, 1, 0, 7, 7, 7, 3, 3, 8, 0, 5, 13, 11, + 3, 6, 6, 8, 8, 6, 6, 0, 0, 8, 6, 6, 0, 6, 6, 4, + 3, 3, 3, 6, 2, 2, 0, 0, 9, 9, 11, 10, 4, 7, 2, 2, + 2, 1, 4, 11, 8, 8, 10, 0, 6, 3, 4, 0, 0, 0, 0, 1, + 10, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, + 11, 13, 1, 13, 11, 8, 3, 3, 3, 9, 1, 5, 9, 10, 12, 10, + 1, 0, 12, 0, 7, 5, 1, 1, 1, 8, 0, 2, 8, 0, 4, 0, + 15, 12, 1, 11, 14, 8, 0, 10, 0, 0, 0, 0, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 0, 0, 1, 1, 1, 3, 3, 3, 1, 1, + 2, 2, 2, 0, 0, 0, 4, 4, 1, 1, 4, 4, 4, 4, 4, 4, + 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 3, 5, 5, 3, 3, 5, + 5, 5, 5, 5, 5, 5, 5, 3, 5, 3, 5, 3, 5, 3, 3, 3, + 1, 1, 3, 3, 0, 3, 2, 1, 0, 2, 1, 3, 0, 0, 1, 1, + 0, 0, 0, 0, 0, 3, 6, 5, 4, 9, 8, 7, 2, 3, 9, 4, + 6, 8, 7, 5, 2, 1, 0, 1, 0, 2, 2, 5, 3, 0, 1, 4, + 2, 0, 1, 1, 2, 5, 3, 0, 4, 2, 3, 1, 0, 3, 4, 2, + 5, 4, 3, 1, 0, 2, 2, 1, 4, 5, 3, 0, 0, 1, 1, 0, + 0, 2, 1, 3, 0, 1, 2, 5, 3, 4, 1, 4, 0, 2, 3, 5, + 0, 4, 3, 2, 1, 2, 4, 0, 1, 3, 1, 0, 0, 0, 0, 0, + 3, 2, 0, 1, 0, 2, 3, 1, 1, 2, 3, 0, 1, 0, 2, 3, + 1, 3, 0, 2, 0, 1, 2, 3, 2, 3, 1, 0, 2, 3, 3, 0, + 3, 0, 3, 3, 2, 1, 0, 1, 2, 0, 1, 0, 0, 1, 2, 0, + 1, 3, 1, 2, 0, 0, 1, 0, 1, 4, 6, 5, 2, 1, 0, 1, + 0, 2, 2, 0, 1, 0, 2, 1, 2, 2, 0, 0, 0, 6, 7, 4, + 5, 1, 0, 2, 2, 1, 0, 1, 0, 2, 1, 0, 2, 0, 0, 2, + 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, + 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 3, 0, 0, - 0, 3, 3, 0, 0, 3, 0, 3, 0, 0, 0, 1, 0, 1, 4, 4, - 0, 2, 2, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 0, 0, 0, 0, 0, 1, 0, 0, 9, 7, 0, 0, 6, 8, 0, 0, - 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, - 0, 1, 1, 0, 4, 1, 0, 1, 0, 27, 2, 2, 1, 0, 0, 1, - 0, 0, 0, 0, 5, 26, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, - 2, 0, 1, 1, 0, 2, 2, 0, 1, 1, 0, 0, 1, 0, 1, 1, - 0, 0, 2, 1, 0, 2, 2, 1, 0, 1, 0, 2, 2, 1, 0, 1, - 0, 2, 3, 5, 2, 3, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, - 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 2, 1, 0, 9, 7, 6, - 8, 3, 2, 4, 0, 1, 5, 0, 1, 1, 0, 3, 1, 0, 2, 1, - 0, 0, 1, 1, 0, 1, 0, 0, 7, 8, 2, 3, 0, 1, 6, 9, - 0, 1, 4, 0, 1, 4, 5, 2, 3, 0, 0, 1, 0, 0, 0, 0, - 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 2, 2, 1, 6, - 7, 6, 7, 4, 4, 4, 4, 4, 3, 5, 4, 7, 5, 11, 10, 8, - 10, 9, 8, 7, 8, 8, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, - 7, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 17, - 17, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 16, 11, - 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 15, 15, 8, 8, 2, 10, 10, 12, - 12, 8, 4, 6, 0, 0, 4, 4, 4, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 4, 3, 6, 4, 8, 9, 7, 0, 7, - 8, 7, 6, 7, 7, 7, 7, 4, 3, 1, 2, 2, 2, 2, 2, 1, - 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 2, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 2, 9, 8, 7, 7, - 7, 7, 6, 6, 1, 1, 1, 10, 8, 7, 6, 6, 6, 6, 5, 5, - 2, 1, 2, 2, 1, 2, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, + 0, 0, 0, 0, 3, 3, 0, 0, 0, 3, 3, 0, 0, 3, 0, 3, + 0, 0, 0, 1, 0, 1, 4, 4, 0, 2, 2, 1, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, + 9, 7, 0, 0, 8, 6, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, + 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 1, 0, 4, 1, 0, 1, + 0, 27, 2, 2, 1, 0, 0, 1, 0, 0, 0, 0, 5, 26, 1, 0, + 0, 1, 0, 0, 1, 1, 0, 0, 2, 0, 1, 1, 0, 2, 2, 0, + 1, 1, 0, 0, 1, 0, 1, 1, 0, 0, 2, 1, 0, 2, 2, 1, + 0, 1, 0, 2, 2, 1, 0, 1, 0, 2, 3, 5, 2, 3, 1, 0, + 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, + 1, 0, 2, 1, 0, 9, 7, 6, 8, 3, 2, 4, 0, 1, 5, 0, + 1, 1, 0, 3, 1, 0, 2, 1, 0, 0, 1, 1, 0, 1, 0, 0, + 0, 2, 1, 8, 3, 9, 6, 7, 0, 1, 4, 0, 1, 5, 4, 2, + 3, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, + 0, 0, 1, 1, 2, 2, 1, 6, 7, 6, 7, 4, 4, 4, 4, 4, + 3, 5, 4, 7, 5, 11, 10, 8, 10, 9, 8, 7, 8, 8, 8, 8, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, + 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 4, 0, 0, 0, 0, 7, 2, 2, 2, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 17, 17, 17, 6, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 16, 16, 11, 5, 5, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 15, 15, 8, 8, 2, 10, 10, 12, 12, 8, 4, 6, 0, 0, 4, 4, + 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, + 3, 6, 4, 8, 9, 7, 0, 7, 8, 7, 6, 7, 7, 7, 7, 4, + 3, 1, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 0, 0, 0, + 0, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 0, 0, 0, 2, 9, 8, 7, 7, 7, 7, 6, 6, 1, 1, 1, 10, + 8, 7, 6, 6, 6, 6, 5, 5, 2, 1, 2, 2, 1, 2, 1, 1, + 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 3, 1, 1, 0, 5, 5, 5, 4, 1, 1, 1, 1, 1, - 1, 2, 1, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 2, - 2, 2, 2, 2, 2, 0, 0, 0, 0, 11, 11, 0, 0, 0, 10, 10, - 12, 2, 16, 6, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 6, - 6, 7, 7, 6, 3, 8, 8, 6, 6, 6, 6, 3, 4, 3, 6, 6, - 6, 3, 3, 3, 2, 0, 2, 1, 2, 0, 0, 9, 5, 7, 4, 4, - 4, 4, 4, 5, 4, 4, 4, 5, 6, 5, 5, 5, 5, 6, 7, 0, - 10, 1, 1, 1, 1, 9, 11, 0, 1, 1, 1, 1, 1, 0, 1, 1, - 1, 1, 1, 1, 0, 1, 5, 5, 1, 1, 1, 2, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 0, 5, + 5, 5, 4, 1, 1, 1, 1, 1, 1, 2, 1, 2, 2, 2, 2, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, + 0, 0, 1, 1, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, + 0, 11, 11, 0, 0, 0, 10, 10, 12, 2, 16, 6, 0, 0, 0, 0, + 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 2, 2, 6, 6, 7, 7, 6, 3, 8, 8, 6, + 6, 6, 6, 3, 4, 3, 6, 6, 6, 3, 3, 3, 2, 0, 2, 1, + 2, 0, 0, 9, 5, 7, 4, 4, 4, 4, 4, 5, 4, 4, 4, 5, + 6, 5, 5, 5, 5, 6, 7, 0, 10, 1, 1, 1, 1, 9, 11, 0, + 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 5, 5, + 1, 1, 1, 2, } @(rodata) -DECODE_BUCKET_LIST := [5383]u16{ +DECODE_BUCKET_LIST := [5399]u16{ 0, 1, 2, 3, 0, 4, 1, 5, 2, 6, 7, 8, 9, 6, 10, 7, 11, 8, 12, 35, 36, 37, 13, 14, 41, 42, 43, 15, 13, 16, 14, 17, 47, 18, 19, 51, 52, 53, 20, 21, 18, 19, 22, 23, 24, 25, 22, 26, @@ -1818,306 +1827,307 @@ DECODE_BUCKET_LIST := [5383]u16{ 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 329, 328, 330, 331, 332, 333, 334, 356, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, - 346, 347, 348, 349, 350, 351, 352, 357, 356, 358, 359, 360, 363, 361, 362, 365, - 364, 366, 367, 368, 369, 371, 370, 378, 379, 380, 373, 375, 381, 374, 377, 372, - 382, 376, 383, 384, 385, 386, 392, 391, 393, 394, 387, 388, 389, 390, 628, 395, - 629, 396, 397, 398, 630, 399, 400, 631, 632, 401, 402, 633, 403, 634, 635, 404, - 405, 636, 637, 406, 407, 638, 408, 639, 640, 409, 410, 411, 412, 413, 414, 415, + 346, 347, 348, 349, 350, 351, 352, 357, 356, 358, 359, 360, 362, 361, 363, 365, + 364, 366, 367, 368, 369, 371, 370, 374, 372, 382, 380, 377, 381, 375, 379, 373, + 376, 378, 384, 383, 385, 386, 388, 394, 392, 389, 387, 391, 393, 390, 395, 632, + 396, 633, 397, 398, 399, 634, 400, 635, 636, 401, 402, 637, 403, 638, 639, 404, + 640, 405, 406, 641, 407, 642, 408, 643, 644, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, - 432, 433, 434, 628, 395, 629, 396, 397, 398, 630, 399, 400, 631, 401, 632, 633, - 402, 403, 634, 635, 404, 405, 636, 637, 406, 638, 407, 408, 639, 640, 409, 435, - 410, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 450, 449, - 452, 451, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 628, 395, - 396, 629, 397, 398, 399, 630, 400, 631, 401, 632, 633, 402, 403, 634, 635, 404, - 405, 636, 406, 637, 638, 407, 408, 639, 640, 409, 465, 395, 628, 396, 629, 397, - 398, 399, 630, 631, 400, 401, 632, 633, 402, 403, 634, 635, 404, 405, 636, 406, - 637, 638, 407, 408, 639, 640, 409, 466, 467, 468, 465, 358, 359, 360, 365, 364, - 363, 362, 361, 366, 367, 368, 369, 370, 371, 382, 381, 380, 379, 378, 377, 376, - 374, 373, 372, 375, 383, 384, 385, 386, 394, 393, 392, 391, 389, 390, 388, 387, - 395, 628, 396, 629, 397, 398, 630, 399, 400, 631, 401, 632, 633, 402, 403, 634, - 635, 404, 636, 405, 637, 406, 638, 407, 408, 639, 640, 409, 469, 411, 412, 413, - 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, - 430, 431, 432, 433, 434, 395, 628, 396, 629, 397, 398, 630, 399, 400, 631, 401, - 632, 402, 633, 403, 634, 635, 404, 636, 405, 637, 406, 407, 638, 408, 639, 640, - 409, 470, 469, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, - 450, 449, 452, 451, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, - 395, 628, 396, 629, 397, 398, 630, 399, 631, 400, 632, 401, 402, 633, 403, 634, - 635, 404, 405, 636, 406, 637, 407, 638, 408, 639, 640, 409, 471, 395, 628, 396, - 629, 397, 398, 630, 399, 400, 631, 632, 401, 402, 633, 403, 634, 635, 404, 636, - 405, 406, 637, 407, 638, 408, 639, 640, 409, 466, 467, 472, 471, 474, 473, 475, - 476, 477, 478, 480, 479, 481, 482, 483, 484, 485, 486, 487, 488, 489, 491, 490, + 432, 433, 434, 435, 436, 632, 395, 396, 633, 397, 398, 399, 634, 635, 400, 401, + 636, 402, 637, 403, 638, 639, 404, 640, 405, 641, 406, 407, 642, 408, 643, 644, + 409, 437, 410, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, + 451, 452, 454, 453, 455, 456, 458, 457, 459, 460, 461, 462, 463, 464, 465, 466, + 467, 468, 395, 632, 396, 633, 397, 398, 399, 634, 635, 400, 636, 401, 637, 402, + 403, 638, 639, 404, 640, 405, 641, 406, 407, 642, 408, 643, 644, 409, 469, 395, + 632, 396, 633, 397, 398, 634, 399, 400, 635, 401, 636, 637, 402, 403, 638, 639, + 404, 405, 640, 406, 641, 642, 407, 408, 643, 644, 409, 470, 471, 472, 469, 358, + 359, 360, 365, 364, 363, 362, 361, 366, 367, 368, 369, 370, 371, 382, 381, 380, + 379, 378, 377, 376, 374, 373, 372, 375, 383, 384, 385, 386, 394, 393, 392, 391, + 389, 390, 388, 387, 395, 632, 396, 633, 397, 398, 399, 634, 400, 635, 401, 636, + 637, 402, 403, 638, 639, 404, 640, 405, 641, 406, 407, 642, 408, 643, 644, 409, + 473, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, + 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 395, 632, 396, 633, 397, + 398, 399, 634, 400, 635, 401, 636, 402, 637, 403, 638, 639, 404, 640, 405, 641, + 406, 407, 642, 408, 643, 644, 409, 474, 473, 438, 439, 440, 441, 442, 443, 444, + 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 456, 455, 458, 457, 459, 460, + 461, 462, 463, 464, 465, 466, 467, 468, 395, 632, 396, 633, 397, 398, 634, 399, + 400, 635, 401, 636, 402, 637, 403, 638, 639, 404, 405, 640, 406, 641, 407, 642, + 408, 643, 644, 409, 475, 395, 632, 396, 633, 397, 398, 399, 634, 400, 635, 636, + 401, 402, 637, 403, 638, 639, 404, 405, 640, 641, 406, 407, 642, 408, 643, 644, + 409, 470, 471, 476, 475, 478, 477, 479, 480, 481, 482, 484, 483, 485, 486, 487, + 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, + 504, 505, 506, 507, 508, 509, 511, 510, 512, 513, 514, 515, 516, 517, 518, 519, + 520, 521, 522, 523, 524, 525, 526, 528, 527, 529, 530, 531, 532, 533, 534, 535, + 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, + 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, + 568, 569, 570, 571, 572, 573, 574, 575, 577, 576, 578, 579, 580, 581, 582, 583, + 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, + 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, + 616, 477, 478, 479, 480, 481, 482, 484, 483, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, - 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 524, - 523, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, + 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, + 524, 525, 526, 528, 527, 529, 530, 531, 532, 533, 534, 617, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, - 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, - 573, 572, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, - 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, - 604, 605, 606, 607, 608, 609, 610, 611, 612, 473, 474, 475, 476, 477, 478, 479, - 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 494, 493, 495, - 496, 497, 498, 499, 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, 613, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, - 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 614, 571, - 573, 572, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 587, 586, - 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, - 604, 605, 606, 607, 608, 609, 610, 611, 615, 616, 617, 618, 365, 364, 363, 361, - 362, 619, 620, 621, 622, 370, 371, 382, 380, 379, 381, 378, 375, 376, 377, 374, - 373, 372, 623, 624, 625, 394, 393, 390, 391, 392, 389, 388, 387, 626, 627, 628, - 395, 396, 629, 397, 398, 399, 630, 400, 631, 401, 632, 402, 633, 403, 634, 635, - 404, 636, 405, 406, 637, 407, 638, 408, 639, 640, 409, 641, 642, 643, 644, 645, - 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 626, 627, - 395, 628, 396, 629, 397, 398, 399, 630, 400, 631, 632, 401, 402, 633, 403, 634, - 635, 404, 405, 636, 406, 637, 407, 638, 408, 639, 640, 409, 660, 641, 661, 662, - 663, 664, 665, 666, 667, 668, 669, 670, 672, 671, 674, 673, 675, 676, 677, 678, - 679, 680, 681, 682, 683, 626, 627, 395, 628, 396, 629, 397, 398, 399, 630, 400, - 631, 401, 632, 402, 633, 403, 634, 635, 404, 636, 405, 406, 637, 638, 407, 408, - 639, 640, 409, 684, 685, 688, 686, 687, 689, 690, 691, 692, 694, 693, 695, 696, - 697, 698, 699, 700, 708, 706, 703, 702, 701, 704, 705, 707, 711, 713, 716, 712, - 714, 710, 709, 715, 717, 718, 719, 721, 720, 722, 724, 725, 723, 726, 727, 728, - 730, 729, 731, 736, 732, 734, 735, 733, 737, 739, 738, 740, 743, 741, 742, 748, - 746, 747, 744, 749, 745, 753, 754, 752, 751, 750, 755, 756, 757, 759, 758, 763, - 761, 762, 760, 768, 765, 767, 769, 766, 764, 770, 773, 774, 775, 771, 772, 776, - 778, 780, 777, 779, 781, 785, 783, 784, 782, 786, 787, 788, 789, 790, 791, 793, - 794, 795, 792, 797, 799, 796, 798, 800, 801, 802, 803, 807, 806, 805, 804, 811, - 808, 809, 810, 812, 815, 813, 814, 816, 818, 819, 817, 821, 820, 626, 627, 395, - 628, 396, 629, 397, 398, 399, 630, 400, 631, 401, 632, 402, 633, 403, 634, 635, - 404, 405, 636, 406, 637, 407, 638, 408, 639, 640, 409, 822, 684, 616, 617, 618, - 365, 364, 363, 361, 362, 619, 620, 621, 622, 371, 370, 382, 380, 379, 378, 376, - 375, 374, 372, 373, 377, 381, 623, 624, 625, 394, 392, 393, 391, 390, 387, 388, - 389, 626, 627, 395, 628, 396, 629, 397, 398, 399, 630, 400, 631, 401, 632, 402, - 633, 403, 634, 635, 404, 405, 636, 406, 637, 407, 638, 408, 639, 640, 409, 823, - 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, - 658, 659, 626, 627, 395, 628, 396, 629, 397, 398, 399, 630, 400, 631, 401, 632, - 402, 633, 403, 634, 635, 404, 405, 636, 406, 637, 407, 638, 408, 639, 640, 409, - 824, 823, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, - 676, 675, 677, 678, 679, 680, 681, 682, 683, 626, 627, 395, 628, 396, 629, 397, - 398, 399, 630, 400, 631, 401, 632, 402, 633, 403, 634, 635, 404, 405, 636, 406, - 637, 407, 638, 408, 639, 640, 409, 825, 687, 688, 685, 686, 690, 691, 692, 689, - 693, 694, 695, 696, 697, 698, 699, 700, 708, 706, 703, 704, 705, 707, 701, 702, - 716, 713, 714, 712, 711, 709, 710, 715, 717, 718, 721, 719, 720, 726, 727, 725, - 724, 722, 723, 730, 729, 728, 733, 734, 735, 731, 732, 736, 740, 737, 738, 739, - 743, 742, 741, 747, 748, 746, 745, 744, 749, 754, 755, 752, 753, 751, 750, 756, - 757, 759, 758, 762, 763, 760, 761, 768, 765, 766, 767, 769, 764, 770, 774, 771, - 772, 773, 775, 780, 779, 777, 776, 778, 781, 782, 783, 785, 784, 786, 787, 788, - 789, 790, 791, 792, 794, 795, 793, 799, 798, 797, 796, 800, 802, 803, 801, 806, - 807, 804, 805, 810, 809, 808, 811, 814, 815, 812, 813, 816, 819, 818, 817, 821, - 820, 626, 627, 395, 628, 396, 629, 397, 398, 399, 630, 400, 631, 401, 632, 402, - 633, 403, 634, 635, 404, 405, 636, 406, 637, 407, 638, 408, 639, 640, 409, 826, - 825, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 864, 865, 838, 839, - 841, 840, 843, 842, 844, 845, 846, 847, 848, 885, 886, 887, 888, 889, 890, 891, - 851, 850, 849, 852, 854, 853, 856, 855, 857, 858, 859, 860, 863, 862, 861, 864, - 865, 866, 867, 868, 870, 869, 872, 871, 874, 873, 875, 878, 877, 876, 880, 879, - 881, 884, 883, 882, 885, 886, 850, 849, 851, 852, 853, 854, 857, 855, 856, 860, - 858, 859, 863, 861, 862, 887, 888, 889, 866, 867, 868, 870, 871, 869, 872, 873, - 874, 875, 878, 876, 877, 881, 879, 880, 883, 884, 882, 890, 891, 897, 898, 899, - 900, 901, 904, 905, 892, 893, 894, 895, 896, 906, 897, 898, 899, 900, 901, 902, - 903, 904, 905, 906, 907, 908, 909, 910, 911, 912, 913, 914, 915, 916, 917, 918, - 919, 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, 930, 931, 932, 933, 934, - 935, 936, 937, 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, - 951, 952, 953, 954, 955, 951, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, - 961, 966, 967, 968, 969, 970, 971, 972, 973, 988, 974, 989, 975, 976, 977, 978, - 979, 993, 980, 981, 982, 983, 984, 985, 994, 986, 987, 988, 989, 990, 990, 991, - 992, 993, 991, 992, 994, 995, 996, 995, 997, 998, 999, 997, 998, 999, 1000, 998, - 1000, 998, 1001, 1003, 998, 1005, 1002, 1003, 1001, 998, 1004, 1005, 1002, 1000, 998, 1000, - 998, 1006, 998, 1007, 1008, 1006, 998, 1007, 1000, 998, 1000, 998, 1009, 998, 1010, 1009, - 998, 1010, 1000, 998, 1000, 998, 1011, 1012, 1011, 1012, 1011, 1012, 1011, 1012, 1011, 1012, - 1011, 1012, 1011, 1012, 1011, 1012, 1011, 1012, 1011, 1012, 1011, 1012, 1011, 1012, 1011, 1012, - 1011, 1012, 1011, 1012, 1011, 1012, 1011, 1013, 1011, 1013, 1011, 1013, 1011, 1013, 1011, 1013, - 1011, 1013, 1011, 1013, 1011, 1013, 1011, 1013, 1011, 1013, 1011, 1013, 1011, 1013, 1011, 1013, - 1011, 1013, 1011, 1013, 1011, 1013, 1014, 1015, 1016, 1029, 1030, 1017, 1018, 1029, 1030, 1019, - 1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1017, 1018, 1031, 1029, 1030, - 1019, 1020, 1014, 1015, 1016, 1032, 1033, 1029, 1034, 1030, 1017, 1035, 1018, 1037, 1036, 1029, - 1038, 1030, 1019, 1039, 1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1017, - 1018, 1031, 1029, 1030, 1019, 1020, 1040, 1041, 1043, 1042, 1017, 1018, 1040, 1041, 1044, 1045, - 1019, 1020, 1046, 1047, 1048, 1049, 1050, 1051, 1040, 1041, 1043, 1042, 1017, 1018, 1053, 1052, - 1040, 1041, 1044, 1045, 1019, 1020, 1040, 1041, 1043, 1042, 1017, 1018, 1040, 1041, 1045, 1044, - 1019, 1020, 1046, 1047, 1048, 1049, 1050, 1051, 1040, 1041, 1043, 1042, 1017, 1018, 1040, 1041, - 1044, 1045, 1019, 1020, 1029, 1030, 1054, 1055, 1029, 1030, 1056, 1057, 1058, 1059, 1029, 1030, - 1029, 1030, 1029, 1030, 1054, 1055, 1029, 1030, 1056, 1057, 1029, 1030, 1029, 1030, 1040, 1041, - 1055, 1054, 1040, 1041, 1056, 1057, 1040, 1041, 1040, 1041, 1040, 1041, 1054, 1055, 1040, 1041, - 1056, 1057, 1040, 1041, 1040, 1041, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1029, 1069, - 1068, 1070, 1071, 1030, 1072, 1073, 1074, 1075, 1076, 1064, 1063, 1077, 1029, 1078, 1079, 1081, - 1080, 1030, 1082, 1073, 1083, 1075, 1084, 1085, 1086, 1087, 1064, 1063, 1065, 1088, 1029, 1089, - 1090, 1092, 1091, 1030, 1072, 1073, 1074, 1075, 1063, 1064, 1077, 1093, 1094, 1029, 1095, 1096, - 1097, 1098, 1030, 1082, 1073, 1083, 1075, 1061, 1062, 1064, 1063, 1065, 1066, 1067, 1029, 1068, - 1069, 1070, 1071, 1030, 1072, 1073, 1074, 1075, 1064, 1063, 1077, 1029, 1078, 1079, 1080, 1081, - 1030, 1082, 1073, 1083, 1075, 1084, 1085, 1086, 1087, 1064, 1063, 1065, 1088, 1029, 1090, 1089, - 1092, 1091, 1030, 1072, 1073, 1074, 1075, 1063, 1064, 1077, 1093, 1094, 1029, 1096, 1095, 1098, - 1097, 1030, 1082, 1073, 1083, 1075, 1099, 1100, 1102, 1101, 1104, 1103, 1105, 1065, 1106, 1108, - 1107, 1072, 1073, 1074, 1075, 1077, 1109, 1110, 1111, 1112, 1114, 1113, 1082, 1073, 1083, 1075, - 1065, 1115, 1116, 1117, 1118, 1120, 1119, 1072, 1073, 1074, 1075, 1123, 1121, 1122, 1125, 1124, - 1126, 1127, 1128, 1129, 1130, 1131, 1133, 1132, 1135, 1134, 1137, 1136, 1139, 1138, 1141, 1140, - 1143, 1142, 1144, 1145, 1146, 1147, 1148, 1150, 1153, 1157, 1158, 1155, 1149, 1151, 1156, 1154, - 1152, 1160, 1159, 1162, 1161, 1163, 1164, 1165, 1166, 1167, 1168, 1170, 1169, 1171, 1172, 1174, - 1173, 1175, 1181, 1182, 1178, 1176, 1180, 1179, 1177, 1183, 1185, 1184, 1186, 1187, 1188, 1190, - 1189, 1191, 1192, 1077, 1082, 1073, 1083, 1075, 1099, 1100, 1102, 1101, 1103, 1104, 1105, 1193, - 1065, 1106, 1107, 1108, 1072, 1073, 1074, 1075, 1077, 1109, 1110, 1112, 1111, 1113, 1114, 1082, - 1073, 1083, 1075, 1194, 1195, 1065, 1115, 1116, 1117, 1118, 1120, 1119, 1072, 1073, 1074, 1075, - 1196, 1123, 1122, 1121, 1124, 1125, 1126, 1127, 1129, 1128, 1131, 1130, 1132, 1133, 1134, 1135, - 1137, 1136, 1139, 1138, 1140, 1141, 1142, 1143, 1145, 1144, 1147, 1148, 1146, 1157, 1158, 1156, - 1155, 1153, 1152, 1150, 1149, 1151, 1154, 1159, 1160, 1161, 1162, 1166, 1165, 1163, 1164, 1167, - 1168, 1170, 1169, 1172, 1171, 1173, 1174, 1175, 1183, 1182, 1181, 1180, 1176, 1177, 1178, 1179, - 1186, 1184, 1185, 1187, 1188, 1189, 1190, 1192, 1191, 1077, 1082, 1073, 1083, 1075, 1029, 1030, - 1197, 1029, 1030, 1197, 1029, 1030, 1197, 1029, 1030, 1197, 1029, 1030, 1197, 1029, 1030, 1197, - 1029, 1030, 1197, 1029, 1030, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1198, 1199, - 1200, 1201, 1202, 1203, 1204, 1205, 1206, 1207, 1208, 1209, 1210, 1211, 1212, 1213, 1214, 1215, - 1216, 1217, 1218, 1219, 1220, 1221, 1222, 1223, 1224, 1225, 1226, 1227, 1228, 1229, 1230, 1231, - 1232, 1233, 1234, 1235, 1236, 1237, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 1245, 1246, 1247, - 1248, 1249, 1250, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 1258, 1259, 1260, 1261, 1262, 1263, - 1264, 1265, 1266, 1267, 1268, 1269, 1270, 1271, 1272, 1273, 1274, 1275, 1276, 1277, 1278, 1279, - 1280, 1281, 1282, 1283, 1284, 1285, 1286, 1287, 1288, 1289, 1290, 1291, 1292, 1293, 1294, 1295, - 1296, 1297, 1298, 1299, 1300, 1301, 1302, 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 1311, - 1312, 1313, 1314, 1315, 1316, 1317, 1318, 1319, 1320, 1321, 1322, 1323, 1324, 1325, 1326, 1327, - 1328, 1329, 1330, 1331, 1332, 1333, 1334, 1335, 1336, 1337, 1338, 1339, 1340, 1341, 1342, 1343, - 1344, 1345, 1346, 1347, 1348, 1349, 1350, 1351, 1352, 1353, 1354, 1355, 1356, 1357, 1358, 1359, - 1360, 1361, 1362, 1363, 1364, 1365, 1366, 1367, 1368, 1369, 1370, 1372, 1371, 1373, 1374, 1376, - 1375, 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, 1384, 1383, 1385, 1367, 1368, 1369, 1370, 1372, - 1371, 1373, 1376, 1375, 1377, 1378, 1379, 1380, 1381, 1382, 1383, 1384, 1385, 1416, 1417, 1418, - 1419, 1414, 1415, 1383, 1384, 1385, 1420, 1421, 1422, 1423, 1424, 1425, 1426, 1427, 1428, 1429, - 1430, 1431, 1432, 1433, 1434, 1435, 1436, 1437, 1438, 1439, 1440, 1441, 1442, 1443, 1444, 1445, - 1446, 1447, 1448, 1449, 1450, 1451, 1452, 1453, 1454, 1455, 1456, 1457, 1458, 1459, 1460, 1461, - 1462, 1463, 1464, 1465, 1466, 1467, 1468, 1469, 1470, 1471, 1472, 1473, 1474, 1475, 1476, 1477, - 1478, 1479, 1480, 1481, 1482, 1483, 1484, 1485, 1486, 1487, 1488, 1489, 1490, 1491, 1492, 1493, - 1494, 1495, 1496, 1497, 1498, 1499, 1500, 1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508, 1509, - 1510, 1511, 1512, 1513, 1514, 1515, 1516, 1517, 1518, 1519, 1520, 1521, 1522, 1523, 1524, 1525, - 1526, 1528, 1527, 1529, 1530, 1531, 1532, 1533, 1534, 1259, 1260, 1261, 1262, 1263, 1264, 1535, - 1536, 1537, 1538, 1539, 1540, 1541, 1542, 1543, 1544, 1545, 1546, 1547, 1548, 1549, 1269, 1270, - 1271, 1272, 1273, 1274, 1550, 1551, 1552, 1278, 1279, 1280, 1553, 1285, 1286, 1287, 1288, 1289, - 1290, 1294, 1295, 1554, 1296, 1297, 1555, 1298, 1299, 1300, 1301, 1302, 1303, 1304, 1305, 1306, - 1307, 1308, 1556, 1557, 1558, 1559, 1560, 1561, 1562, 1563, 1309, 1564, 1310, 1311, 1312, 1313, - 1565, 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, 1566, 1567, 1568, 1569, 1570, 1571, 1572, 1573, 1350, 1351, 1352, 1353, 1574, - 1575, 1576, 1577, 1578, 1579, 1580, 1580, 1581, 1581, 1582, 1582, 1583, 1584, 1585, 1586, 1587, - 1587, 1588, 1588, 1589, 1589, 1590, 1590, 1591, 1592, 1593, 1594, 1595, 1596, 1597, 1598, 1599, - 1600, 1601, 1602, 1603, 1604, 1605, 1606, 1607, 1608, 1609, 1610, 1611, 1612, 1613, 1614, 1614, - 1615, 1616, 1617, 1618, 1619, 1620, 1621, 1622, 1623, 1623, 1624, 1624, 1625, 1625, 1626, 1626, - 1627, 1627, 1628, 1628, 1629, 1629, 1630, 1630, 1631, 1631, 1632, 1632, 1633, 1634, 1635, 1636, - 1637, 1638, 1639, 1640, 1641, 1642, 1643, 1644, 1645, 1646, 1647, 1648, 1649, 1650, 1651, 1652, - 1653, 1654, 1654, 1655, 1655, 1656, 1656, 1656, 1657, 1658, 1656, 1659, 1659, 1206, 1207, 1208, - 1209, 1214, 1220, 1210, 1219, 1220, 1219, 1217, 1215, 1217, 1213, 1215, 1203, 1204, 1211, 1220, - 1199, 1200, 1201, 1202, 1205, 1219, 1220, 1219, 1218, 1216, 1212, 1218, 1216, 1220, 1219, 1220, - 1198, 1219, 1220, 1219, 1220, 1219, 1233, 1232, 1225, 1233, 1232, 1239, 1239, 1221, 1222, 1223, - 1224, 1230, 1229, 1238, 1221, 1222, 1223, 1224, 1229, 1230, 1238, 1231, 1231, 1234, 1226, 1234, - 1228, 1236, 1236, 1237, 1237, 1227, 1235, 1235, 1250, 1258, 1257, 1250, 1254, 1255, 1253, 1256, - 1250, 1258, 1257, 1240, 1241, 1242, 1243, 1250, 1254, 1255, 1253, 1256, 1258, 1257, 1254, 1255, - 1253, 1256, 1258, 1257, 1254, 1255, 1253, 1256, 1240, 1241, 1242, 1243, 1247, 1248, 1249, 1252, - 1244, 1245, 1246, 1251, 1247, 1248, 1249, 1252, 1244, 1245, 1246, 1251, 1278, 1279, 1291, 1292, - 1294, 1295, 1296, 1307, 1308, 1311, 1314, 1315, 1318, 1319, 1320, 1321, 1322, 1323, 1332, 1333, - 1334, 1335, 1358, 1278, 1279, 1291, 1293, 1294, 1295, 1296, 1308, 1311, 1314, 1315, 1318, 1319, - 1320, 1321, 1322, 1323, 1332, 1333, 1334, 1335, 1358, 1278, 1279, 1291, 1292, 1294, 1295, 1296, - 1308, 1311, 1314, 1315, 1318, 1319, 1320, 1321, 1322, 1323, 1332, 1333, 1334, 1335, 1358, 1265, - 1266, 1267, 1268, 1278, 1279, 1280, 1291, 1293, 1294, 1295, 1296, 1297, 1306, 1308, 1311, 1314, - 1315, 1318, 1319, 1320, 1321, 1322, 1323, 1332, 1333, 1334, 1335, 1358, 1278, 1279, 1292, 1294, - 1295, 1296, 1307, 1308, 1311, 1314, 1315, 1318, 1319, 1320, 1321, 1322, 1323, 1332, 1333, 1334, - 1335, 1354, 1358, 1278, 1279, 1293, 1294, 1295, 1296, 1308, 1311, 1314, 1315, 1318, 1319, 1320, - 1321, 1322, 1323, 1332, 1333, 1334, 1335, 1354, 1358, 1278, 1279, 1292, 1294, 1295, 1296, 1308, - 1311, 1314, 1315, 1318, 1319, 1320, 1321, 1322, 1323, 1332, 1333, 1334, 1335, 1354, 1358, 1265, - 1266, 1267, 1268, 1278, 1279, 1280, 1293, 1294, 1295, 1296, 1297, 1306, 1308, 1311, 1314, 1315, - 1318, 1319, 1320, 1321, 1322, 1323, 1332, 1333, 1334, 1335, 1354, 1358, 1259, 1260, 1275, 1276, - 1277, 1287, 1288, 1289, 1290, 1300, 1301, 1302, 1303, 1316, 1317, 1324, 1325, 1326, 1327, 1328, - 1329, 1330, 1331, 1348, 1349, 1353, 1356, 1359, 1316, 1317, 1324, 1325, 1326, 1327, 1328, 1329, - 1330, 1331, 1356, 1359, 1275, 1316, 1317, 1324, 1325, 1326, 1327, 1328, 1329, 1330, 1331, 1356, - 1359, 1285, 1286, 1298, 1299, 1304, 1305, 1316, 1317, 1324, 1325, 1326, 1327, 1328, 1329, 1330, - 1331, 1356, 1359, 1275, 1276, 1277, 1287, 1288, 1289, 1290, 1300, 1301, 1302, 1303, 1316, 1317, - 1324, 1325, 1326, 1327, 1328, 1329, 1330, 1331, 1348, 1349, 1353, 1355, 1357, 1359, 1316, 1317, - 1324, 1325, 1326, 1327, 1328, 1329, 1330, 1331, 1355, 1357, 1359, 1261, 1262, 1263, 1264, 1271, - 1272, 1273, 1274, 1275, 1316, 1317, 1324, 1325, 1326, 1327, 1328, 1329, 1330, 1331, 1355, 1357, - 1359, 1269, 1270, 1285, 1286, 1298, 1299, 1304, 1305, 1316, 1317, 1324, 1325, 1326, 1327, 1328, - 1329, 1330, 1331, 1355, 1357, 1359, 1281, 1309, 1312, 1336, 1337, 1338, 1339, 1340, 1341, 1342, - 1343, 1344, 1345, 1346, 1347, 1282, 1309, 1312, 1336, 1337, 1338, 1339, 1340, 1341, 1342, 1343, - 1344, 1345, 1346, 1347, 1283, 1310, 1313, 1336, 1337, 1338, 1339, 1340, 1341, 1342, 1343, 1344, - 1345, 1346, 1347, 1284, 1310, 1313, 1336, 1337, 1338, 1339, 1340, 1341, 1342, 1343, 1344, 1345, - 1346, 1347, 1281, 1309, 1312, 1336, 1337, 1338, 1339, 1340, 1341, 1342, 1343, 1344, 1345, 1346, - 1347, 1282, 1309, 1312, 1336, 1337, 1338, 1339, 1340, 1341, 1342, 1343, 1344, 1345, 1346, 1347, - 1283, 1310, 1313, 1336, 1337, 1338, 1339, 1340, 1341, 1342, 1343, 1344, 1345, 1346, 1347, 1284, - 1310, 1313, 1336, 1337, 1338, 1339, 1340, 1341, 1342, 1343, 1344, 1345, 1346, 1347, 1350, 1351, - 1352, 1350, 1351, 1352, 1350, 1351, 1352, 1350, 1351, 1352, 1350, 1351, 1352, 1350, 1351, 1352, - 1350, 1351, 1352, 1350, 1351, 1352, 1360, 1362, 1363, 1364, 1374, 1375, 1376, 1384, 1383, 1385, - 1362, 1363, 1365, 1367, 1374, 1375, 1376, 1384, 1383, 1385, 1362, 1363, 1374, 1382, 1383, 1384, - 1385, 1362, 1363, 1374, 1382, 1384, 1383, 1385, 1361, 1363, 1366, 1372, 1371, 1374, 1381, 1384, - 1383, 1385, 1363, 1372, 1371, 1374, 1381, 1384, 1383, 1385, 1363, 1373, 1374, 1383, 1384, 1385, - 1363, 1373, 1374, 1384, 1383, 1385, 1377, 1383, 1384, 1385, 1368, 1377, 1383, 1384, 1385, 1384, - 1383, 1385, 1383, 1384, 1385, 1384, 1383, 1385, 1383, 1384, 1385, 1383, 1384, 1385, 1384, 1383, - 1385, 1363, 1374, 1384, 1383, 1385, 1363, 1370, 1374, 1384, 1383, 1385, 1363, 1374, 1383, 1384, - 1385, 1363, 1374, 1383, 1384, 1385, 1363, 1374, 1379, 1384, 1383, 1385, 1363, 1374, 1379, 1384, - 1383, 1385, 1363, 1374, 1380, 1383, 1384, 1385, 1363, 1374, 1380, 1384, 1383, 1385, 1384, 1383, - 1385, 1383, 1384, 1385, 1384, 1383, 1385, 1369, 1384, 1383, 1385, 1378, 1383, 1384, 1385, 1378, - 1384, 1383, 1385, 1384, 1383, 1385, 1383, 1384, 1385, 1383, 1384, 1385, 1383, 1384, 1385, 1383, - 1384, 1385, 1383, 1384, 1385, 1414, 1383, 1384, 1385, 1383, 1384, 1385, 1383, 1384, 1385, 1383, - 1384, 1385, 1383, 1384, 1385, 1384, 1383, 1385, 1383, 1384, 1385, 1383, 1384, 1385, 1415, 1383, - 1384, 1385, 1383, 1384, 1385, 1384, 1383, 1385, 1383, 1384, 1385, 1412, 1384, 1383, 1385, 1384, - 1383, 1385, 1406, 1412, 1384, 1383, 1385, 1384, 1383, 1385, 1410, 1383, 1384, 1385, 1383, 1384, - 1385, 1408, 1409, 1383, 1384, 1385, 1384, 1383, 1385, 1405, 1413, 1384, 1383, 1385, 1383, 1384, - 1385, 1386, 1387, 1388, 1389, 1390, 1392, 1393, 1394, 1395, 1397, 1398, 1399, 1400, 1407, 1413, - 1384, 1383, 1385, 1391, 1396, 1402, 1403, 1404, 1383, 1384, 1385, 1411, 1384, 1383, 1385, 1384, - 1383, 1385, 1401, 1383, 1384, 1385, 1383, 1384, 1385, 1376, 1375, 1383, 1384, 1385, 1367, 1375, - 1376, 1384, 1383, 1385, 1382, 1383, 1384, 1385, 1382, 1383, 1384, 1385, 1372, 1371, 1381, 1383, - 1384, 1385, 1371, 1372, 1381, 1383, 1384, 1385, 1373, 1383, 1384, 1385, 1373, 1383, 1384, 1385, - 1377, 1383, 1384, 1385, 1368, 1377, 1383, 1384, 1385, 1384, 1383, 1385, 1384, 1383, 1385, 1384, - 1383, 1385, 1384, 1383, 1385, 1384, 1383, 1385, 1384, 1383, 1385, 1384, 1383, 1385, 1370, 1384, - 1383, 1385, 1384, 1383, 1385, 1383, 1384, 1385, 1379, 1384, 1383, 1385, 1379, 1384, 1383, 1385, - 1380, 1384, 1383, 1385, 1380, 1383, 1384, 1385, 1383, 1384, 1385, 1384, 1383, 1385, 1383, 1384, - 1385, 1369, 1383, 1384, 1385, 1378, 1383, 1384, 1385, 1378, 1383, 1384, 1385, 1383, 1384, 1385, - 1383, 1384, 1385, 1383, 1384, 1385, 1384, 1383, 1385, 1384, 1383, 1385, 1383, 1384, 1385, 1414, - 1383, 1384, 1385, 1383, 1384, 1385, 1384, 1383, 1385, 1384, 1383, 1385, 1384, 1383, 1385, 1383, - 1384, 1385, 1384, 1383, 1385, 1384, 1383, 1385, 1415, 1384, 1383, 1385, 1384, 1383, 1385, 1384, - 1383, 1385, 1384, 1383, 1385, 1384, 1383, 1385, 1384, 1383, 1385, 1383, 1384, 1385, 1384, 1383, - 1385, 1384, 1383, 1385, 1383, 1384, 1385, 1384, 1383, 1385, 1383, 1384, 1385, 1416, 1417, 1418, - 1383, 1384, 1385, 1383, 1384, 1385, 1383, 1384, 1385, 1383, 1384, 1385, 1384, 1383, 1385, 1384, - 1383, 1385, 1383, 1384, 1385, 1419, 1383, 1384, 1385, 1423, 1422, 1425, 1424, 1429, 1421, 1420, - 1431, 1435, 1428, 1434, 1437, 1436, 1433, 1431, 1432, 1426, 1427, 1430, 1438, 1439, 1442, 1495, - 1501, 1445, 1495, 1504, 1441, 1496, 1500, 1444, 1496, 1503, 1440, 1497, 1499, 1443, 1497, 1502, - 1498, 1498, 1451, 1452, 1453, 1454, 1455, 1461, 1467, 1473, 1479, 1485, 1447, 1448, 1449, 1450, - 1456, 1462, 1468, 1474, 1480, 1486, 1457, 1463, 1469, 1475, 1481, 1487, 1446, 1459, 1465, 1471, - 1477, 1483, 1489, 1460, 1466, 1472, 1478, 1484, 1490, 1458, 1464, 1470, 1476, 1482, 1488, 1491, - 1505, 1506, 1494, 1509, 1492, 1507, 1493, 1510, 1508, 1531, 1532, 1527, 1529, 1528, 1530, 1531, - 1532, 1527, 1529, 1528, 1530, 1517, 1518, 1519, 1520, 1521, 1522, 1531, 1511, 1512, 1513, 1514, - 1515, 1516, 1523, 1524, 1525, 1526, 1532, 1527, 1529, 1528, 1530, 1517, 1518, 1519, 1520, 1521, - 1522, 1531, 1511, 1512, 1513, 1514, 1515, 1516, 1532, 1527, 1529, 1528, 1530, 1523, 1524, 1525, - 1526, 1549, 1278, 1279, 1294, 1295, 1296, 1555, 1307, 1308, 1560, 1561, 1562, 1563, 1311, 1565, - 1314, 1315, 1318, 1319, 1320, 1321, 1322, 1323, 1332, 1333, 1334, 1335, 1578, 1278, 1279, 1294, - 1295, 1296, 1555, 1308, 1560, 1561, 1562, 1563, 1311, 1565, 1314, 1315, 1318, 1319, 1320, 1321, - 1322, 1323, 1332, 1333, 1334, 1335, 1578, 1278, 1279, 1294, 1295, 1296, 1555, 1308, 1560, 1561, - 1562, 1563, 1311, 1565, 1314, 1315, 1318, 1319, 1320, 1321, 1322, 1323, 1332, 1333, 1334, 1335, - 1578, 1534, 1543, 1544, 1278, 1279, 1280, 1294, 1295, 1296, 1297, 1555, 1306, 1308, 1560, 1561, - 1562, 1563, 1311, 1565, 1314, 1315, 1318, 1319, 1320, 1321, 1322, 1323, 1332, 1333, 1334, 1335, - 1578, 1549, 1278, 1279, 1294, 1295, 1296, 1555, 1307, 1308, 1560, 1561, 1562, 1563, 1311, 1565, - 1314, 1315, 1318, 1319, 1320, 1321, 1322, 1323, 1332, 1333, 1334, 1335, 1574, 1578, 1278, 1279, - 1294, 1295, 1296, 1555, 1308, 1560, 1561, 1562, 1563, 1311, 1565, 1314, 1315, 1318, 1319, 1320, - 1321, 1322, 1323, 1332, 1333, 1334, 1335, 1574, 1578, 1278, 1279, 1294, 1295, 1296, 1555, 1308, - 1560, 1561, 1562, 1563, 1311, 1565, 1314, 1315, 1318, 1319, 1320, 1321, 1322, 1323, 1332, 1333, - 1334, 1335, 1574, 1578, 1533, 1543, 1544, 1278, 1279, 1280, 1294, 1295, 1296, 1297, 1555, 1306, - 1308, 1560, 1561, 1562, 1563, 1311, 1565, 1314, 1315, 1318, 1319, 1320, 1321, 1322, 1323, 1332, - 1333, 1334, 1335, 1574, 1578, 1259, 1260, 1287, 1288, 1289, 1290, 1300, 1301, 1302, 1303, 1556, - 1557, 1558, 1559, 1565, 1316, 1317, 1324, 1325, 1326, 1327, 1328, 1329, 1330, 1331, 1570, 1571, - 1572, 1573, 1353, 1576, 1579, 1556, 1557, 1558, 1559, 1565, 1316, 1317, 1324, 1325, 1326, 1327, - 1328, 1329, 1330, 1331, 1576, 1579, 1556, 1557, 1558, 1559, 1565, 1316, 1317, 1324, 1325, 1326, - 1327, 1328, 1329, 1330, 1331, 1576, 1579, 1541, 1542, 1285, 1286, 1298, 1299, 1304, 1305, 1556, - 1557, 1558, 1559, 1565, 1316, 1317, 1324, 1325, 1326, 1327, 1328, 1329, 1330, 1331, 1566, 1567, - 1568, 1569, 1576, 1579, 1287, 1288, 1289, 1290, 1300, 1301, 1302, 1303, 1556, 1557, 1558, 1559, - 1565, 1316, 1317, 1324, 1325, 1326, 1327, 1328, 1329, 1330, 1331, 1570, 1571, 1572, 1573, 1353, - 1575, 1577, 1579, 1556, 1557, 1558, 1559, 1565, 1316, 1317, 1324, 1325, 1326, 1327, 1328, 1329, - 1330, 1331, 1575, 1577, 1579, 1261, 1262, 1263, 1264, 1271, 1272, 1273, 1274, 1556, 1557, 1558, - 1559, 1565, 1316, 1317, 1324, 1325, 1326, 1327, 1328, 1329, 1330, 1331, 1575, 1577, 1579, 1541, - 1542, 1269, 1270, 1285, 1286, 1298, 1299, 1304, 1305, 1556, 1557, 1558, 1559, 1565, 1316, 1317, - 1324, 1325, 1326, 1327, 1328, 1329, 1330, 1331, 1566, 1567, 1568, 1569, 1575, 1577, 1579, 1553, - 1554, 1555, 1309, 1564, 1312, 1565, 1336, 1337, 1338, 1339, 1340, 1341, 1342, 1343, 1344, 1345, - 1346, 1347, 1554, 1555, 1309, 1564, 1312, 1565, 1336, 1337, 1338, 1339, 1340, 1341, 1342, 1343, - 1344, 1345, 1346, 1347, 1555, 1564, 1310, 1313, 1565, 1336, 1337, 1338, 1339, 1340, 1341, 1342, - 1343, 1344, 1345, 1346, 1347, 1555, 1310, 1564, 1313, 1565, 1336, 1337, 1338, 1339, 1340, 1341, - 1342, 1343, 1344, 1345, 1346, 1347, 1553, 1554, 1555, 1309, 1564, 1312, 1565, 1336, 1337, 1338, - 1339, 1340, 1341, 1342, 1343, 1344, 1345, 1346, 1347, 1554, 1555, 1309, 1564, 1312, 1565, 1336, - 1337, 1338, 1339, 1340, 1341, 1342, 1343, 1344, 1345, 1346, 1347, 1555, 1564, 1310, 1313, 1565, - 1336, 1337, 1338, 1339, 1340, 1341, 1342, 1343, 1344, 1345, 1346, 1347, 1555, 1564, 1310, 1313, - 1565, 1336, 1337, 1338, 1339, 1340, 1341, 1342, 1343, 1344, 1345, 1346, 1347, 1565, 1350, 1351, - 1352, 1565, 1350, 1351, 1352, 1565, 1350, 1351, 1352, 1535, 1536, 1537, 1538, 1539, 1540, 1545, - 1546, 1547, 1548, 1550, 1551, 1552, 1565, 1350, 1351, 1352, 1565, 1350, 1351, 1352, 1565, 1350, - 1351, 1352, 1565, 1350, 1351, 1352, 1535, 1536, 1537, 1538, 1539, 1540, 1545, 1546, 1547, 1548, - 1550, 1551, 1552, 1565, 1350, 1351, 1352, + 556, 557, 558, 559, 560, 561, 618, 575, 576, 577, 578, 579, 580, 581, 582, 583, + 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, + 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, + 619, 620, 621, 622, 365, 364, 363, 361, 362, 623, 624, 625, 626, 370, 371, 382, + 380, 379, 381, 378, 375, 376, 377, 374, 373, 372, 627, 628, 629, 394, 393, 390, + 391, 392, 389, 388, 387, 630, 631, 632, 395, 396, 633, 397, 398, 399, 634, 400, + 635, 401, 636, 637, 402, 403, 638, 639, 404, 640, 405, 641, 406, 407, 642, 408, + 643, 644, 409, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, + 658, 659, 660, 661, 662, 663, 664, 665, 630, 631, 632, 395, 396, 633, 397, 398, + 399, 634, 400, 635, 401, 636, 402, 637, 403, 638, 639, 404, 640, 405, 406, 641, + 407, 642, 408, 643, 644, 409, 666, 645, 667, 668, 669, 670, 671, 672, 673, 674, + 675, 676, 677, 678, 679, 680, 682, 681, 684, 683, 685, 686, 687, 688, 689, 690, + 691, 630, 631, 395, 632, 633, 396, 397, 398, 399, 634, 635, 400, 636, 401, 402, + 637, 403, 638, 639, 404, 405, 640, 406, 641, 407, 642, 408, 643, 644, 409, 692, + 696, 694, 695, 693, 697, 700, 698, 699, 701, 702, 703, 704, 705, 706, 707, 708, + 716, 709, 714, 711, 713, 710, 712, 715, 717, 719, 722, 718, 720, 721, 724, 723, + 726, 725, 727, 728, 729, 733, 732, 734, 730, 735, 731, 738, 736, 737, 739, 744, + 741, 743, 742, 740, 748, 746, 745, 747, 749, 751, 750, 756, 755, 757, 753, 754, + 752, 759, 763, 758, 761, 760, 762, 765, 764, 766, 767, 768, 770, 769, 771, 777, + 776, 773, 774, 775, 772, 780, 778, 782, 781, 783, 779, 788, 786, 787, 784, 785, + 792, 790, 791, 793, 789, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 807, + 804, 806, 805, 810, 811, 809, 808, 812, 815, 813, 814, 816, 819, 817, 818, 823, + 821, 822, 820, 827, 825, 824, 826, 829, 828, 630, 631, 395, 632, 396, 633, 397, + 398, 399, 634, 400, 635, 401, 636, 402, 637, 403, 638, 639, 404, 405, 640, 406, + 641, 407, 642, 408, 643, 644, 409, 830, 692, 620, 621, 622, 365, 364, 363, 361, + 362, 623, 624, 625, 626, 371, 370, 382, 380, 379, 378, 376, 375, 374, 372, 373, + 377, 381, 627, 628, 629, 394, 392, 393, 391, 390, 387, 388, 389, 630, 631, 395, + 632, 396, 633, 397, 398, 399, 634, 400, 635, 401, 636, 402, 637, 403, 638, 639, + 404, 405, 640, 406, 641, 407, 642, 408, 643, 644, 409, 831, 646, 647, 648, 649, + 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, + 630, 631, 395, 632, 396, 633, 397, 398, 399, 634, 400, 635, 401, 636, 402, 637, + 403, 638, 639, 404, 405, 640, 406, 641, 407, 642, 408, 643, 644, 409, 832, 831, + 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, + 684, 683, 685, 686, 687, 688, 689, 690, 691, 630, 631, 395, 632, 396, 633, 397, + 398, 399, 634, 400, 635, 401, 636, 402, 637, 403, 638, 639, 404, 405, 640, 406, + 641, 407, 642, 408, 643, 644, 409, 833, 695, 696, 693, 694, 700, 698, 697, 699, + 701, 702, 703, 704, 705, 706, 707, 708, 716, 713, 714, 712, 711, 709, 710, 715, + 724, 722, 721, 719, 717, 718, 720, 723, 726, 725, 729, 727, 728, 733, 734, 735, + 731, 732, 730, 737, 738, 736, 743, 742, 740, 739, 741, 744, 747, 748, 746, 745, + 751, 750, 749, 754, 755, 756, 752, 753, 757, 762, 763, 760, 761, 759, 758, 765, + 764, 766, 767, 770, 768, 769, 771, 777, 776, 774, 772, 773, 775, 781, 782, 780, + 779, 778, 783, 788, 786, 787, 785, 784, 789, 790, 791, 793, 792, 794, 795, 796, + 797, 798, 799, 800, 802, 801, 803, 806, 807, 804, 805, 808, 811, 810, 809, 814, + 813, 815, 812, 817, 816, 819, 818, 822, 821, 820, 823, 825, 824, 826, 827, 828, + 829, 630, 631, 395, 632, 396, 633, 397, 398, 399, 634, 400, 635, 401, 636, 402, + 637, 403, 638, 639, 404, 640, 405, 641, 406, 642, 407, 408, 643, 644, 409, 834, + 833, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 872, 873, 846, 847, + 849, 848, 851, 850, 852, 854, 853, 855, 856, 893, 894, 895, 896, 897, 898, 899, + 858, 857, 859, 860, 862, 861, 864, 863, 865, 868, 867, 866, 869, 871, 870, 872, + 873, 874, 875, 876, 878, 880, 879, 877, 883, 882, 881, 886, 884, 885, 887, 888, + 889, 892, 890, 891, 893, 894, 858, 857, 859, 860, 861, 862, 865, 863, 864, 868, + 866, 867, 870, 871, 869, 895, 896, 897, 874, 875, 876, 879, 878, 877, 880, 883, + 882, 881, 886, 884, 885, 888, 889, 887, 890, 891, 892, 898, 899, 905, 906, 907, + 908, 909, 912, 913, 900, 901, 902, 903, 904, 914, 905, 906, 907, 908, 909, 910, + 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, + 927, 928, 929, 930, 931, 932, 933, 934, 935, 936, 937, 938, 939, 940, 941, 942, + 943, 944, 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, + 959, 960, 961, 962, 963, 959, 964, 965, 966, 967, 968, 969, 970, 971, 972, 973, + 969, 974, 975, 976, 977, 978, 979, 980, 981, 996, 982, 997, 983, 984, 985, 986, + 987, 1001, 988, 989, 990, 991, 992, 993, 1002, 994, 995, 996, 997, 998, 998, 999, + 1000, 1001, 999, 1000, 1002, 1003, 1004, 1003, 1005, 1006, 1007, 1005, 1006, 1007, 1008, 1006, + 1008, 1006, 1009, 1011, 1006, 1010, 1013, 1011, 1009, 1006, 1012, 1013, 1010, 1008, 1006, 1008, + 1006, 1014, 1006, 1015, 1016, 1014, 1006, 1015, 1008, 1006, 1008, 1006, 1017, 1006, 1018, 1017, + 1006, 1018, 1008, 1006, 1008, 1006, 1019, 1020, 1019, 1020, 1019, 1020, 1019, 1020, 1019, 1020, + 1019, 1020, 1019, 1020, 1019, 1020, 1019, 1020, 1019, 1020, 1019, 1020, 1019, 1020, 1019, 1020, + 1019, 1020, 1019, 1020, 1019, 1020, 1019, 1021, 1019, 1021, 1019, 1021, 1019, 1021, 1019, 1021, + 1019, 1021, 1019, 1021, 1019, 1021, 1019, 1021, 1019, 1021, 1019, 1021, 1019, 1021, 1019, 1021, + 1019, 1021, 1019, 1021, 1019, 1021, 1022, 1023, 1024, 1037, 1038, 1025, 1026, 1037, 1038, 1027, + 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1025, 1026, 1039, 1037, 1038, + 1027, 1028, 1022, 1023, 1024, 1041, 1040, 1037, 1042, 1038, 1025, 1043, 1026, 1044, 1045, 1037, + 1046, 1038, 1027, 1047, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1025, + 1026, 1039, 1037, 1038, 1027, 1028, 1048, 1049, 1051, 1050, 1025, 1026, 1048, 1049, 1052, 1053, + 1027, 1028, 1054, 1055, 1056, 1057, 1058, 1059, 1048, 1049, 1050, 1051, 1025, 1026, 1061, 1060, + 1048, 1049, 1052, 1053, 1027, 1028, 1048, 1049, 1050, 1051, 1025, 1026, 1048, 1049, 1053, 1052, + 1027, 1028, 1054, 1055, 1056, 1057, 1058, 1059, 1048, 1049, 1051, 1050, 1025, 1026, 1048, 1049, + 1052, 1053, 1027, 1028, 1037, 1038, 1063, 1062, 1037, 1038, 1065, 1064, 1066, 1067, 1037, 1038, + 1037, 1038, 1037, 1038, 1063, 1062, 1037, 1038, 1064, 1065, 1037, 1038, 1037, 1038, 1048, 1049, + 1062, 1063, 1048, 1049, 1065, 1064, 1048, 1049, 1048, 1049, 1048, 1049, 1062, 1063, 1048, 1049, + 1065, 1064, 1048, 1049, 1048, 1049, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1037, 1077, + 1076, 1079, 1078, 1038, 1080, 1081, 1082, 1083, 1084, 1071, 1072, 1085, 1037, 1086, 1087, 1088, + 1089, 1038, 1090, 1081, 1091, 1083, 1092, 1093, 1094, 1095, 1072, 1071, 1073, 1096, 1037, 1097, + 1098, 1100, 1099, 1038, 1080, 1081, 1082, 1083, 1072, 1071, 1085, 1101, 1102, 1037, 1104, 1103, + 1106, 1105, 1038, 1090, 1081, 1091, 1083, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1037, 1076, + 1077, 1079, 1078, 1038, 1080, 1081, 1082, 1083, 1071, 1072, 1085, 1037, 1087, 1086, 1089, 1088, + 1038, 1090, 1081, 1091, 1083, 1092, 1093, 1094, 1095, 1071, 1072, 1073, 1096, 1037, 1098, 1097, + 1099, 1100, 1038, 1080, 1081, 1082, 1083, 1072, 1071, 1085, 1101, 1102, 1037, 1103, 1104, 1105, + 1106, 1038, 1090, 1081, 1091, 1083, 1107, 1108, 1110, 1109, 1111, 1112, 1113, 1073, 1114, 1116, + 1115, 1080, 1081, 1082, 1083, 1085, 1117, 1118, 1120, 1119, 1121, 1122, 1090, 1081, 1091, 1083, + 1073, 1123, 1124, 1126, 1125, 1127, 1128, 1080, 1081, 1082, 1083, 1129, 1130, 1131, 1133, 1132, + 1134, 1135, 1136, 1137, 1138, 1139, 1141, 1140, 1143, 1142, 1145, 1144, 1146, 1147, 1148, 1149, + 1151, 1150, 1153, 1152, 1154, 1156, 1155, 1159, 1160, 1157, 1158, 1162, 1164, 1166, 1165, 1163, + 1161, 1168, 1167, 1169, 1170, 1173, 1172, 1171, 1174, 1175, 1176, 1178, 1177, 1179, 1180, 1181, + 1182, 1183, 1185, 1184, 1191, 1188, 1189, 1186, 1190, 1187, 1194, 1193, 1192, 1196, 1195, 1197, + 1198, 1200, 1199, 1085, 1090, 1081, 1091, 1083, 1107, 1108, 1109, 1110, 1112, 1111, 1113, 1201, + 1073, 1114, 1115, 1116, 1080, 1081, 1082, 1083, 1085, 1117, 1118, 1120, 1119, 1122, 1121, 1090, + 1081, 1091, 1083, 1202, 1203, 1073, 1123, 1124, 1125, 1126, 1128, 1127, 1080, 1081, 1082, 1083, + 1204, 1131, 1129, 1130, 1132, 1133, 1134, 1135, 1137, 1136, 1139, 1138, 1140, 1141, 1142, 1143, + 1145, 1144, 1147, 1146, 1148, 1149, 1150, 1151, 1153, 1152, 1156, 1155, 1154, 1157, 1158, 1159, + 1166, 1165, 1163, 1160, 1161, 1162, 1164, 1168, 1167, 1170, 1169, 1171, 1172, 1174, 1173, 1175, + 1176, 1177, 1178, 1179, 1180, 1181, 1182, 1183, 1190, 1188, 1189, 1191, 1185, 1184, 1186, 1187, + 1194, 1193, 1192, 1195, 1196, 1197, 1198, 1199, 1200, 1085, 1090, 1081, 1091, 1083, 1037, 1038, + 1205, 1037, 1038, 1205, 1037, 1038, 1205, 1037, 1038, 1205, 1037, 1038, 1205, 1037, 1038, 1205, + 1037, 1038, 1205, 1037, 1038, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1206, 1207, + 1208, 1209, 1210, 1211, 1212, 1213, 1214, 1215, 1216, 1217, 1218, 1219, 1220, 1221, 1222, 1223, + 1224, 1225, 1226, 1227, 1228, 1229, 1230, 1231, 1232, 1233, 1234, 1235, 1236, 1237, 1238, 1239, + 1240, 1241, 1242, 1243, 1244, 1245, 1246, 1247, 1248, 1249, 1250, 1251, 1252, 1253, 1254, 1255, + 1256, 1257, 1258, 1259, 1260, 1261, 1262, 1263, 1264, 1265, 1266, 1267, 1268, 1269, 1270, 1271, + 1272, 1273, 1274, 1275, 1276, 1277, 1278, 1279, 1280, 1281, 1282, 1283, 1284, 1285, 1286, 1287, + 1288, 1289, 1290, 1291, 1292, 1293, 1294, 1295, 1296, 1297, 1298, 1299, 1300, 1301, 1302, 1303, + 1304, 1305, 1306, 1307, 1308, 1309, 1310, 1311, 1312, 1313, 1314, 1315, 1316, 1317, 1318, 1319, + 1320, 1321, 1322, 1323, 1324, 1325, 1326, 1327, 1328, 1329, 1330, 1331, 1332, 1333, 1334, 1335, + 1336, 1337, 1338, 1339, 1340, 1341, 1342, 1343, 1344, 1345, 1346, 1347, 1348, 1349, 1350, 1351, + 1352, 1353, 1354, 1355, 1356, 1357, 1358, 1359, 1360, 1361, 1362, 1363, 1364, 1365, 1366, 1367, + 1368, 1369, 1370, 1371, 1372, 1373, 1374, 1375, 1376, 1377, 1378, 1380, 1379, 1381, 1382, 1384, + 1383, 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, 1392, 1391, 1393, 1375, 1376, 1377, 1378, 1380, + 1379, 1381, 1384, 1383, 1385, 1386, 1387, 1388, 1389, 1390, 1391, 1392, 1393, 1424, 1425, 1426, + 1427, 1422, 1423, 1391, 1392, 1393, 1428, 1429, 1430, 1431, 1432, 1433, 1434, 1435, 1436, 1437, + 1438, 1439, 1440, 1441, 1442, 1443, 1444, 1445, 1446, 1447, 1448, 1449, 1450, 1451, 1452, 1453, + 1454, 1455, 1456, 1457, 1458, 1459, 1460, 1461, 1462, 1463, 1464, 1465, 1466, 1467, 1468, 1469, + 1470, 1471, 1472, 1473, 1474, 1475, 1476, 1477, 1478, 1479, 1480, 1481, 1482, 1483, 1484, 1485, + 1486, 1487, 1488, 1489, 1490, 1491, 1492, 1493, 1494, 1495, 1496, 1497, 1498, 1499, 1500, 1501, + 1502, 1503, 1504, 1505, 1506, 1507, 1508, 1509, 1510, 1511, 1512, 1513, 1514, 1515, 1516, 1517, + 1518, 1519, 1520, 1521, 1522, 1523, 1524, 1525, 1526, 1527, 1528, 1529, 1530, 1531, 1532, 1533, + 1534, 1536, 1535, 1537, 1538, 1539, 1540, 1541, 1542, 1267, 1268, 1269, 1270, 1271, 1272, 1543, + 1544, 1545, 1546, 1547, 1548, 1549, 1550, 1551, 1552, 1553, 1554, 1555, 1556, 1557, 1277, 1278, + 1279, 1280, 1281, 1282, 1558, 1559, 1560, 1286, 1287, 1288, 1561, 1293, 1294, 1295, 1296, 1297, + 1298, 1302, 1303, 1562, 1304, 1305, 1563, 1306, 1307, 1308, 1309, 1310, 1311, 1312, 1313, 1314, + 1315, 1316, 1564, 1565, 1566, 1567, 1568, 1569, 1570, 1571, 1317, 1572, 1318, 1319, 1320, 1321, + 1573, 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, 1574, 1575, 1576, 1577, 1578, 1579, 1580, 1581, 1358, 1359, 1360, 1361, 1582, + 1583, 1584, 1585, 1586, 1587, 1588, 1588, 1589, 1589, 1590, 1590, 1591, 1592, 1593, 1594, 1595, + 1595, 1596, 1596, 1597, 1597, 1598, 1598, 1599, 1600, 1601, 1602, 1603, 1604, 1605, 1606, 1607, + 1608, 1609, 1610, 1611, 1612, 1613, 1614, 1615, 1616, 1617, 1618, 1619, 1620, 1621, 1622, 1622, + 1623, 1624, 1625, 1626, 1627, 1628, 1629, 1630, 1631, 1631, 1632, 1632, 1633, 1633, 1634, 1634, + 1635, 1635, 1636, 1636, 1637, 1637, 1638, 1638, 1639, 1639, 1640, 1640, 1641, 1642, 1643, 1644, + 1645, 1646, 1647, 1648, 1649, 1650, 1651, 1652, 1653, 1654, 1655, 1656, 1657, 1658, 1659, 1660, + 1661, 1662, 1662, 1663, 1663, 1664, 1664, 1664, 1665, 1666, 1664, 1667, 1667, 1214, 1215, 1216, + 1217, 1222, 1228, 1218, 1227, 1228, 1227, 1225, 1223, 1225, 1221, 1223, 1211, 1212, 1219, 1228, + 1207, 1208, 1209, 1210, 1213, 1227, 1228, 1227, 1226, 1224, 1220, 1226, 1224, 1228, 1227, 1228, + 1206, 1227, 1228, 1227, 1228, 1227, 1241, 1240, 1233, 1241, 1240, 1247, 1247, 1229, 1230, 1231, + 1232, 1238, 1237, 1246, 1229, 1230, 1231, 1232, 1237, 1238, 1246, 1239, 1239, 1242, 1234, 1242, + 1236, 1244, 1244, 1245, 1245, 1235, 1243, 1243, 1258, 1266, 1265, 1258, 1262, 1263, 1261, 1264, + 1258, 1266, 1265, 1248, 1249, 1250, 1251, 1258, 1262, 1263, 1261, 1264, 1266, 1265, 1262, 1263, + 1261, 1264, 1266, 1265, 1262, 1263, 1261, 1264, 1248, 1249, 1250, 1251, 1255, 1256, 1257, 1260, + 1252, 1253, 1254, 1259, 1255, 1256, 1257, 1260, 1252, 1253, 1254, 1259, 1286, 1287, 1299, 1300, + 1302, 1303, 1304, 1315, 1316, 1319, 1322, 1323, 1326, 1327, 1328, 1329, 1330, 1331, 1340, 1341, + 1342, 1343, 1366, 1286, 1287, 1299, 1301, 1302, 1303, 1304, 1316, 1319, 1322, 1323, 1326, 1327, + 1328, 1329, 1330, 1331, 1340, 1341, 1342, 1343, 1366, 1286, 1287, 1299, 1300, 1302, 1303, 1304, + 1316, 1319, 1322, 1323, 1326, 1327, 1328, 1329, 1330, 1331, 1340, 1341, 1342, 1343, 1366, 1273, + 1274, 1275, 1276, 1286, 1287, 1288, 1299, 1301, 1302, 1303, 1304, 1305, 1314, 1316, 1319, 1322, + 1323, 1326, 1327, 1328, 1329, 1330, 1331, 1340, 1341, 1342, 1343, 1366, 1286, 1287, 1300, 1302, + 1303, 1304, 1315, 1316, 1319, 1322, 1323, 1326, 1327, 1328, 1329, 1330, 1331, 1340, 1341, 1342, + 1343, 1362, 1366, 1286, 1287, 1301, 1302, 1303, 1304, 1316, 1319, 1322, 1323, 1326, 1327, 1328, + 1329, 1330, 1331, 1340, 1341, 1342, 1343, 1362, 1366, 1286, 1287, 1300, 1302, 1303, 1304, 1316, + 1319, 1322, 1323, 1326, 1327, 1328, 1329, 1330, 1331, 1340, 1341, 1342, 1343, 1362, 1366, 1273, + 1274, 1275, 1276, 1286, 1287, 1288, 1301, 1302, 1303, 1304, 1305, 1314, 1316, 1319, 1322, 1323, + 1326, 1327, 1328, 1329, 1330, 1331, 1340, 1341, 1342, 1343, 1362, 1366, 1267, 1268, 1283, 1284, + 1285, 1295, 1296, 1297, 1298, 1308, 1309, 1310, 1311, 1324, 1325, 1332, 1333, 1334, 1335, 1336, + 1337, 1338, 1339, 1356, 1357, 1361, 1364, 1367, 1324, 1325, 1332, 1333, 1334, 1335, 1336, 1337, + 1338, 1339, 1364, 1367, 1283, 1324, 1325, 1332, 1333, 1334, 1335, 1336, 1337, 1338, 1339, 1364, + 1367, 1293, 1294, 1306, 1307, 1312, 1313, 1324, 1325, 1332, 1333, 1334, 1335, 1336, 1337, 1338, + 1339, 1364, 1367, 1283, 1284, 1285, 1295, 1296, 1297, 1298, 1308, 1309, 1310, 1311, 1324, 1325, + 1332, 1333, 1334, 1335, 1336, 1337, 1338, 1339, 1356, 1357, 1361, 1363, 1365, 1367, 1324, 1325, + 1332, 1333, 1334, 1335, 1336, 1337, 1338, 1339, 1363, 1365, 1367, 1269, 1270, 1271, 1272, 1279, + 1280, 1281, 1282, 1283, 1324, 1325, 1332, 1333, 1334, 1335, 1336, 1337, 1338, 1339, 1363, 1365, + 1367, 1277, 1278, 1293, 1294, 1306, 1307, 1312, 1313, 1324, 1325, 1332, 1333, 1334, 1335, 1336, + 1337, 1338, 1339, 1363, 1365, 1367, 1289, 1317, 1320, 1344, 1345, 1346, 1347, 1348, 1349, 1350, + 1351, 1352, 1353, 1354, 1355, 1290, 1317, 1320, 1344, 1345, 1346, 1347, 1348, 1349, 1350, 1351, + 1352, 1353, 1354, 1355, 1291, 1318, 1321, 1344, 1345, 1346, 1347, 1348, 1349, 1350, 1351, 1352, + 1353, 1354, 1355, 1292, 1318, 1321, 1344, 1345, 1346, 1347, 1348, 1349, 1350, 1351, 1352, 1353, + 1354, 1355, 1289, 1317, 1320, 1344, 1345, 1346, 1347, 1348, 1349, 1350, 1351, 1352, 1353, 1354, + 1355, 1290, 1317, 1320, 1344, 1345, 1346, 1347, 1348, 1349, 1350, 1351, 1352, 1353, 1354, 1355, + 1291, 1318, 1321, 1344, 1345, 1346, 1347, 1348, 1349, 1350, 1351, 1352, 1353, 1354, 1355, 1292, + 1318, 1321, 1344, 1345, 1346, 1347, 1348, 1349, 1350, 1351, 1352, 1353, 1354, 1355, 1358, 1359, + 1360, 1358, 1359, 1360, 1358, 1359, 1360, 1358, 1359, 1360, 1358, 1359, 1360, 1358, 1359, 1360, + 1358, 1359, 1360, 1358, 1359, 1360, 1368, 1370, 1371, 1372, 1382, 1383, 1384, 1392, 1391, 1393, + 1370, 1371, 1373, 1375, 1382, 1384, 1383, 1392, 1391, 1393, 1370, 1371, 1382, 1390, 1392, 1391, + 1393, 1370, 1371, 1382, 1390, 1392, 1391, 1393, 1369, 1371, 1374, 1380, 1379, 1382, 1389, 1392, + 1391, 1393, 1371, 1379, 1380, 1382, 1389, 1391, 1392, 1393, 1371, 1381, 1382, 1392, 1391, 1393, + 1371, 1381, 1382, 1392, 1391, 1393, 1385, 1391, 1392, 1393, 1376, 1385, 1392, 1391, 1393, 1392, + 1391, 1393, 1391, 1392, 1393, 1392, 1391, 1393, 1391, 1392, 1393, 1392, 1391, 1393, 1391, 1392, + 1393, 1371, 1382, 1392, 1391, 1393, 1371, 1378, 1382, 1391, 1392, 1393, 1371, 1382, 1391, 1392, + 1393, 1371, 1382, 1391, 1392, 1393, 1371, 1382, 1387, 1391, 1392, 1393, 1371, 1382, 1387, 1392, + 1391, 1393, 1371, 1382, 1388, 1391, 1392, 1393, 1371, 1382, 1388, 1391, 1392, 1393, 1391, 1392, + 1393, 1391, 1392, 1393, 1391, 1392, 1393, 1377, 1392, 1391, 1393, 1386, 1391, 1392, 1393, 1386, + 1392, 1391, 1393, 1392, 1391, 1393, 1391, 1392, 1393, 1391, 1392, 1393, 1391, 1392, 1393, 1391, + 1392, 1393, 1391, 1392, 1393, 1422, 1391, 1392, 1393, 1391, 1392, 1393, 1391, 1392, 1393, 1391, + 1392, 1393, 1391, 1392, 1393, 1392, 1391, 1393, 1391, 1392, 1393, 1391, 1392, 1393, 1423, 1391, + 1392, 1393, 1391, 1392, 1393, 1392, 1391, 1393, 1391, 1392, 1393, 1420, 1391, 1392, 1393, 1392, + 1391, 1393, 1414, 1420, 1392, 1391, 1393, 1392, 1391, 1393, 1418, 1391, 1392, 1393, 1391, 1392, + 1393, 1416, 1417, 1391, 1392, 1393, 1392, 1391, 1393, 1413, 1421, 1392, 1391, 1393, 1391, 1392, + 1393, 1394, 1395, 1396, 1397, 1398, 1400, 1401, 1402, 1403, 1405, 1406, 1407, 1408, 1415, 1421, + 1392, 1391, 1393, 1399, 1404, 1410, 1411, 1412, 1391, 1392, 1393, 1419, 1392, 1391, 1393, 1392, + 1391, 1393, 1409, 1391, 1392, 1393, 1391, 1392, 1393, 1384, 1383, 1391, 1392, 1393, 1375, 1383, + 1384, 1392, 1391, 1393, 1390, 1391, 1392, 1393, 1390, 1391, 1392, 1393, 1380, 1379, 1389, 1391, + 1392, 1393, 1379, 1380, 1389, 1391, 1392, 1393, 1381, 1391, 1392, 1393, 1381, 1391, 1392, 1393, + 1385, 1391, 1392, 1393, 1376, 1385, 1391, 1392, 1393, 1392, 1391, 1393, 1392, 1391, 1393, 1392, + 1391, 1393, 1392, 1391, 1393, 1392, 1391, 1393, 1392, 1391, 1393, 1392, 1391, 1393, 1378, 1392, + 1391, 1393, 1392, 1391, 1393, 1391, 1392, 1393, 1387, 1392, 1391, 1393, 1387, 1392, 1391, 1393, + 1388, 1392, 1391, 1393, 1388, 1391, 1392, 1393, 1391, 1392, 1393, 1392, 1391, 1393, 1391, 1392, + 1393, 1377, 1391, 1392, 1393, 1386, 1391, 1392, 1393, 1386, 1391, 1392, 1393, 1391, 1392, 1393, + 1391, 1392, 1393, 1391, 1392, 1393, 1392, 1391, 1393, 1392, 1391, 1393, 1391, 1392, 1393, 1422, + 1391, 1392, 1393, 1391, 1392, 1393, 1392, 1391, 1393, 1392, 1391, 1393, 1392, 1391, 1393, 1391, + 1392, 1393, 1392, 1391, 1393, 1392, 1391, 1393, 1423, 1392, 1391, 1393, 1392, 1391, 1393, 1392, + 1391, 1393, 1392, 1391, 1393, 1392, 1391, 1393, 1392, 1391, 1393, 1391, 1392, 1393, 1391, 1392, + 1393, 1392, 1391, 1393, 1391, 1392, 1393, 1392, 1391, 1393, 1391, 1392, 1393, 1424, 1425, 1426, + 1392, 1391, 1393, 1391, 1392, 1393, 1391, 1392, 1393, 1391, 1392, 1393, 1392, 1391, 1393, 1392, + 1391, 1393, 1391, 1392, 1393, 1427, 1391, 1392, 1393, 1431, 1430, 1433, 1432, 1437, 1429, 1428, + 1439, 1443, 1436, 1442, 1445, 1444, 1441, 1439, 1440, 1434, 1435, 1438, 1446, 1447, 1450, 1503, + 1509, 1453, 1503, 1512, 1449, 1504, 1508, 1452, 1504, 1511, 1448, 1505, 1507, 1451, 1505, 1510, + 1506, 1506, 1459, 1460, 1461, 1462, 1463, 1469, 1475, 1481, 1487, 1493, 1455, 1456, 1457, 1458, + 1464, 1470, 1476, 1482, 1488, 1494, 1465, 1471, 1477, 1483, 1489, 1495, 1454, 1467, 1473, 1479, + 1485, 1491, 1497, 1468, 1474, 1480, 1486, 1492, 1498, 1466, 1472, 1478, 1484, 1490, 1496, 1499, + 1513, 1514, 1502, 1517, 1500, 1515, 1501, 1518, 1516, 1540, 1539, 1536, 1537, 1535, 1538, 1540, + 1539, 1536, 1537, 1535, 1538, 1525, 1526, 1527, 1528, 1529, 1530, 1540, 1519, 1520, 1521, 1522, + 1523, 1524, 1531, 1532, 1533, 1534, 1539, 1536, 1537, 1535, 1538, 1525, 1526, 1527, 1528, 1529, + 1530, 1540, 1519, 1520, 1521, 1522, 1523, 1524, 1539, 1536, 1537, 1535, 1538, 1531, 1532, 1533, + 1534, 1557, 1286, 1287, 1302, 1303, 1304, 1563, 1315, 1316, 1568, 1569, 1570, 1571, 1319, 1573, + 1322, 1323, 1326, 1327, 1328, 1329, 1330, 1331, 1340, 1341, 1342, 1343, 1586, 1286, 1287, 1302, + 1303, 1304, 1563, 1316, 1568, 1569, 1570, 1571, 1319, 1573, 1322, 1323, 1326, 1327, 1328, 1329, + 1330, 1331, 1340, 1341, 1342, 1343, 1586, 1286, 1287, 1302, 1303, 1304, 1563, 1316, 1568, 1569, + 1570, 1571, 1319, 1573, 1322, 1323, 1326, 1327, 1328, 1329, 1330, 1331, 1340, 1341, 1342, 1343, + 1586, 1542, 1551, 1552, 1286, 1287, 1288, 1302, 1303, 1304, 1305, 1563, 1314, 1316, 1568, 1569, + 1570, 1571, 1319, 1573, 1322, 1323, 1326, 1327, 1328, 1329, 1330, 1331, 1340, 1341, 1342, 1343, + 1586, 1557, 1286, 1287, 1302, 1303, 1304, 1563, 1315, 1316, 1568, 1569, 1570, 1571, 1319, 1573, + 1322, 1323, 1326, 1327, 1328, 1329, 1330, 1331, 1340, 1341, 1342, 1343, 1582, 1586, 1286, 1287, + 1302, 1303, 1304, 1563, 1316, 1568, 1569, 1570, 1571, 1319, 1573, 1322, 1323, 1326, 1327, 1328, + 1329, 1330, 1331, 1340, 1341, 1342, 1343, 1582, 1586, 1286, 1287, 1302, 1303, 1304, 1563, 1316, + 1568, 1569, 1570, 1571, 1319, 1573, 1322, 1323, 1326, 1327, 1328, 1329, 1330, 1331, 1340, 1341, + 1342, 1343, 1582, 1586, 1541, 1551, 1552, 1286, 1287, 1288, 1302, 1303, 1304, 1305, 1563, 1314, + 1316, 1568, 1569, 1570, 1571, 1319, 1573, 1322, 1323, 1326, 1327, 1328, 1329, 1330, 1331, 1340, + 1341, 1342, 1343, 1582, 1586, 1267, 1268, 1295, 1296, 1297, 1298, 1308, 1309, 1310, 1311, 1564, + 1565, 1566, 1567, 1573, 1324, 1325, 1332, 1333, 1334, 1335, 1336, 1337, 1338, 1339, 1578, 1579, + 1580, 1581, 1361, 1584, 1587, 1564, 1565, 1566, 1567, 1573, 1324, 1325, 1332, 1333, 1334, 1335, + 1336, 1337, 1338, 1339, 1584, 1587, 1564, 1565, 1566, 1567, 1573, 1324, 1325, 1332, 1333, 1334, + 1335, 1336, 1337, 1338, 1339, 1584, 1587, 1549, 1550, 1293, 1294, 1306, 1307, 1312, 1313, 1564, + 1565, 1566, 1567, 1573, 1324, 1325, 1332, 1333, 1334, 1335, 1336, 1337, 1338, 1339, 1574, 1575, + 1576, 1577, 1584, 1587, 1295, 1296, 1297, 1298, 1308, 1309, 1310, 1311, 1564, 1565, 1566, 1567, + 1573, 1324, 1325, 1332, 1333, 1334, 1335, 1336, 1337, 1338, 1339, 1578, 1579, 1580, 1581, 1361, + 1583, 1585, 1587, 1564, 1565, 1566, 1567, 1573, 1324, 1325, 1332, 1333, 1334, 1335, 1336, 1337, + 1338, 1339, 1583, 1585, 1587, 1269, 1270, 1271, 1272, 1279, 1280, 1281, 1282, 1564, 1565, 1566, + 1567, 1573, 1324, 1325, 1332, 1333, 1334, 1335, 1336, 1337, 1338, 1339, 1583, 1585, 1587, 1549, + 1550, 1277, 1278, 1293, 1294, 1306, 1307, 1312, 1313, 1564, 1565, 1566, 1567, 1573, 1324, 1325, + 1332, 1333, 1334, 1335, 1336, 1337, 1338, 1339, 1574, 1575, 1576, 1577, 1583, 1585, 1587, 1561, + 1562, 1563, 1317, 1572, 1320, 1573, 1344, 1345, 1346, 1347, 1348, 1349, 1350, 1351, 1352, 1353, + 1354, 1355, 1562, 1563, 1317, 1572, 1320, 1573, 1344, 1345, 1346, 1347, 1348, 1349, 1350, 1351, + 1352, 1353, 1354, 1355, 1563, 1572, 1318, 1321, 1573, 1344, 1345, 1346, 1347, 1348, 1349, 1350, + 1351, 1352, 1353, 1354, 1355, 1563, 1318, 1572, 1321, 1573, 1344, 1345, 1346, 1347, 1348, 1349, + 1350, 1351, 1352, 1353, 1354, 1355, 1561, 1562, 1563, 1317, 1572, 1320, 1573, 1344, 1345, 1346, + 1347, 1348, 1349, 1350, 1351, 1352, 1353, 1354, 1355, 1562, 1563, 1317, 1572, 1320, 1573, 1344, + 1345, 1346, 1347, 1348, 1349, 1350, 1351, 1352, 1353, 1354, 1355, 1563, 1572, 1318, 1321, 1573, + 1344, 1345, 1346, 1347, 1348, 1349, 1350, 1351, 1352, 1353, 1354, 1355, 1563, 1572, 1318, 1321, + 1573, 1344, 1345, 1346, 1347, 1348, 1349, 1350, 1351, 1352, 1353, 1354, 1355, 1573, 1358, 1359, + 1360, 1573, 1358, 1359, 1360, 1573, 1358, 1359, 1360, 1543, 1544, 1545, 1546, 1547, 1548, 1553, + 1554, 1555, 1556, 1558, 1559, 1560, 1573, 1358, 1359, 1360, 1573, 1358, 1359, 1360, 1573, 1358, + 1359, 1360, 1573, 1358, 1359, 1360, 1543, 1544, 1545, 1546, 1547, 1548, 1553, 1554, 1555, 1556, + 1558, 1559, 1560, 1573, 1358, 1359, 1360, } DECODE_INDEX_A32 := [256]lib.Decode_Index{ @@ -2162,603 +2172,603 @@ DECODE_INDEX_A32 := [256]lib.Decode_Index{ 0x26 = { 528, 54}, 0x27 = { 582, 19}, 0x28 = { 601, 66}, - 0x29 = { 667, 54}, - 0x2A = { 721, 58}, - 0x2B = { 779, 32}, - 0x2C = { 811, 66}, - 0x2D = { 877, 54}, - 0x2E = { 931, 58}, - 0x2F = { 989, 32}, - 0x30 = { 1021, 59}, - 0x31 = { 1080, 27}, - 0x32 = { 1107, 45}, - 0x33 = { 1152, 9}, - 0x34 = { 1161, 59}, - 0x35 = { 1220, 27}, - 0x36 = { 1247, 33}, - 0x37 = { 1280, 9}, - 0x38 = { 1289, 67}, - 0x39 = { 1356, 50}, - 0x3A = { 1406, 54}, - 0x3B = { 1460, 169}, - 0x3C = { 1629, 67}, - 0x3D = { 1696, 50}, - 0x3E = { 1746, 54}, - 0x3F = { 1800, 169}, - 0x40 = { 1969, 12}, - 0x41 = { 1981, 1}, - 0x42 = { 1982, 12}, - 0x43 = { 1994, 1}, - 0x44 = { 1995, 1}, - 0x45 = { 1996, 2}, - 0x46 = { 1998, 1}, - 0x47 = { 1999, 1}, - 0x48 = { 2000, 16}, - 0x49 = { 2016, 1}, - 0x4A = { 2017, 20}, - 0x4B = { 2037, 1}, - 0x4C = { 2038, 16}, - 0x4D = { 2054, 2}, - 0x4E = { 2056, 20}, - 0x4F = { 2076, 1}, - 0x50 = { 2077, 1}, - 0x51 = { 2078, 1}, - 0x52 = { 2079, 1}, - 0x53 = { 2080, 1}, - 0x54 = { 2081, 1}, - 0x55 = { 2082, 1}, - 0x56 = { 2083, 1}, - 0x57 = { 2084, 6}, - 0x58 = { 2090, 1}, - 0x59 = { 2091, 1}, - 0x5A = { 2092, 1}, - 0x5B = { 2093, 1}, - 0x5C = { 2094, 1}, - 0x5D = { 2095, 3}, - 0x5E = { 2098, 1}, - 0x5F = { 2099, 1}, - 0x61 = { 2100, 6}, - 0x62 = { 2106, 6}, - 0x63 = { 2112, 6}, - 0x65 = { 2118, 6}, - 0x66 = { 2124, 6}, - 0x67 = { 2130, 6}, - 0x68 = { 2136, 5}, - 0x6A = { 2141, 4}, - 0x6B = { 2145, 5}, - 0x6C = { 2150, 2}, - 0x6E = { 2152, 4}, - 0x6F = { 2156, 5}, - 0x70 = { 2161, 9}, - 0x71 = { 2170, 2}, - 0x73 = { 2172, 1}, - 0x74 = { 2173, 5}, - 0x75 = { 2178, 7}, - 0x78 = { 2185, 3}, - 0x79 = { 2188, 1}, - 0x7A = { 2189, 1}, - 0x7B = { 2190, 1}, - 0x7C = { 2191, 3}, - 0x7D = { 2194, 3}, - 0x7E = { 2197, 1}, - 0x7F = { 2198, 2}, - 0x80 = { 2200, 1}, - 0x81 = { 2201, 2}, - 0x82 = { 2203, 1}, - 0x83 = { 2204, 2}, - 0x84 = { 2206, 1}, - 0x85 = { 2207, 1}, - 0x86 = { 2208, 1}, - 0x87 = { 2209, 1}, - 0x88 = { 2210, 2}, - 0x89 = { 2212, 3}, - 0x8A = { 2215, 2}, - 0x8B = { 2217, 4}, - 0x8C = { 2221, 1}, - 0x8D = { 2222, 1}, - 0x8E = { 2223, 1}, - 0x8F = { 2224, 1}, - 0x90 = { 2225, 1}, - 0x91 = { 2226, 2}, - 0x92 = { 2228, 2}, - 0x93 = { 2230, 2}, - 0x94 = { 2232, 1}, - 0x95 = { 2233, 1}, - 0x96 = { 2234, 1}, - 0x97 = { 2235, 1}, - 0x98 = { 2236, 1}, - 0x99 = { 2237, 2}, - 0x9A = { 2239, 1}, - 0x9B = { 2240, 2}, - 0x9C = { 2242, 1}, - 0x9D = { 2243, 1}, - 0x9E = { 2244, 1}, - 0x9F = { 2245, 1}, - 0xA0 = { 2246, 2}, - 0xA1 = { 2248, 2}, - 0xA2 = { 2250, 2}, - 0xA3 = { 2252, 2}, - 0xA4 = { 2254, 2}, - 0xA5 = { 2256, 2}, - 0xA6 = { 2258, 2}, - 0xA7 = { 2260, 2}, - 0xA8 = { 2262, 2}, - 0xA9 = { 2264, 2}, - 0xAA = { 2266, 2}, - 0xAB = { 2268, 2}, - 0xAC = { 2270, 2}, - 0xAD = { 2272, 2}, - 0xAE = { 2274, 2}, - 0xAF = { 2276, 2}, - 0xB0 = { 2278, 2}, - 0xB1 = { 2280, 2}, - 0xB2 = { 2282, 2}, - 0xB3 = { 2284, 2}, - 0xB4 = { 2286, 2}, - 0xB5 = { 2288, 2}, - 0xB6 = { 2290, 2}, - 0xB7 = { 2292, 2}, - 0xB8 = { 2294, 2}, - 0xB9 = { 2296, 2}, - 0xBA = { 2298, 2}, - 0xBB = { 2300, 2}, - 0xBC = { 2302, 2}, - 0xBD = { 2304, 2}, - 0xBE = { 2306, 2}, - 0xBF = { 2308, 2}, - 0xC0 = { 2310, 7}, - 0xC1 = { 2317, 4}, - 0xC2 = { 2321, 12}, - 0xC3 = { 2333, 5}, - 0xC4 = { 2338, 11}, - 0xC5 = { 2349, 8}, - 0xC6 = { 2357, 12}, - 0xC7 = { 2369, 5}, - 0xC8 = { 2374, 6}, - 0xC9 = { 2380, 6}, - 0xCA = { 2386, 12}, - 0xCB = { 2398, 8}, - 0xCC = { 2406, 6}, - 0xCD = { 2412, 6}, - 0xCE = { 2418, 12}, - 0xCF = { 2430, 6}, - 0xD0 = { 2436, 4}, - 0xD1 = { 2440, 4}, - 0xD2 = { 2444, 4}, - 0xD3 = { 2448, 2}, - 0xD4 = { 2450, 4}, - 0xD5 = { 2454, 4}, - 0xD6 = { 2458, 2}, - 0xD7 = { 2460, 2}, - 0xD8 = { 2462, 4}, - 0xD9 = { 2466, 4}, - 0xDA = { 2470, 2}, - 0xDB = { 2472, 2}, - 0xDC = { 2474, 4}, - 0xDD = { 2478, 4}, - 0xDE = { 2482, 2}, - 0xDF = { 2484, 2}, - 0xE0 = { 2486, 18}, - 0xE1 = { 2504, 14}, - 0xE2 = { 2518, 18}, - 0xE3 = { 2536, 15}, - 0xE4 = { 2551, 17}, - 0xE5 = { 2568, 13}, - 0xE6 = { 2581, 18}, - 0xE7 = { 2599, 15}, - 0xE8 = { 2614, 15}, - 0xE9 = { 2629, 11}, - 0xEA = { 2640, 11}, - 0xEB = { 2651, 77}, - 0xEC = { 2728, 16}, - 0xED = { 2744, 11}, - 0xEE = { 2755, 13}, - 0xEF = { 2768, 78}, - 0xF0 = { 2846, 3}, - 0xF1 = { 2849, 3}, - 0xF2 = { 2852, 3}, - 0xF3 = { 2855, 3}, - 0xF4 = { 2858, 3}, - 0xF5 = { 2861, 3}, - 0xF6 = { 2864, 3}, - 0xF7 = { 2867, 3}, - 0xF8 = { 2870, 1}, - 0xF9 = { 2871, 1}, - 0xFA = { 2872, 1}, - 0xFB = { 2873, 1}, - 0xFC = { 2874, 1}, - 0xFD = { 2875, 1}, - 0xFE = { 2876, 1}, - 0xFF = { 2877, 1}, + 0x29 = { 667, 56}, + 0x2A = { 723, 60}, + 0x2B = { 783, 32}, + 0x2C = { 815, 66}, + 0x2D = { 881, 56}, + 0x2E = { 937, 60}, + 0x2F = { 997, 32}, + 0x30 = { 1029, 59}, + 0x31 = { 1088, 27}, + 0x32 = { 1115, 45}, + 0x33 = { 1160, 9}, + 0x34 = { 1169, 59}, + 0x35 = { 1228, 27}, + 0x36 = { 1255, 33}, + 0x37 = { 1288, 9}, + 0x38 = { 1297, 67}, + 0x39 = { 1364, 52}, + 0x3A = { 1416, 56}, + 0x3B = { 1472, 169}, + 0x3C = { 1641, 67}, + 0x3D = { 1708, 52}, + 0x3E = { 1760, 56}, + 0x3F = { 1816, 169}, + 0x40 = { 1985, 12}, + 0x41 = { 1997, 1}, + 0x42 = { 1998, 12}, + 0x43 = { 2010, 1}, + 0x44 = { 2011, 1}, + 0x45 = { 2012, 2}, + 0x46 = { 2014, 1}, + 0x47 = { 2015, 1}, + 0x48 = { 2016, 16}, + 0x49 = { 2032, 1}, + 0x4A = { 2033, 20}, + 0x4B = { 2053, 1}, + 0x4C = { 2054, 16}, + 0x4D = { 2070, 2}, + 0x4E = { 2072, 20}, + 0x4F = { 2092, 1}, + 0x50 = { 2093, 1}, + 0x51 = { 2094, 1}, + 0x52 = { 2095, 1}, + 0x53 = { 2096, 1}, + 0x54 = { 2097, 1}, + 0x55 = { 2098, 1}, + 0x56 = { 2099, 1}, + 0x57 = { 2100, 6}, + 0x58 = { 2106, 1}, + 0x59 = { 2107, 1}, + 0x5A = { 2108, 1}, + 0x5B = { 2109, 1}, + 0x5C = { 2110, 1}, + 0x5D = { 2111, 3}, + 0x5E = { 2114, 1}, + 0x5F = { 2115, 1}, + 0x61 = { 2116, 6}, + 0x62 = { 2122, 6}, + 0x63 = { 2128, 6}, + 0x65 = { 2134, 6}, + 0x66 = { 2140, 6}, + 0x67 = { 2146, 6}, + 0x68 = { 2152, 5}, + 0x6A = { 2157, 4}, + 0x6B = { 2161, 5}, + 0x6C = { 2166, 2}, + 0x6E = { 2168, 4}, + 0x6F = { 2172, 5}, + 0x70 = { 2177, 9}, + 0x71 = { 2186, 2}, + 0x73 = { 2188, 1}, + 0x74 = { 2189, 5}, + 0x75 = { 2194, 7}, + 0x78 = { 2201, 3}, + 0x79 = { 2204, 1}, + 0x7A = { 2205, 1}, + 0x7B = { 2206, 1}, + 0x7C = { 2207, 3}, + 0x7D = { 2210, 3}, + 0x7E = { 2213, 1}, + 0x7F = { 2214, 2}, + 0x80 = { 2216, 1}, + 0x81 = { 2217, 2}, + 0x82 = { 2219, 1}, + 0x83 = { 2220, 2}, + 0x84 = { 2222, 1}, + 0x85 = { 2223, 1}, + 0x86 = { 2224, 1}, + 0x87 = { 2225, 1}, + 0x88 = { 2226, 2}, + 0x89 = { 2228, 3}, + 0x8A = { 2231, 2}, + 0x8B = { 2233, 4}, + 0x8C = { 2237, 1}, + 0x8D = { 2238, 1}, + 0x8E = { 2239, 1}, + 0x8F = { 2240, 1}, + 0x90 = { 2241, 1}, + 0x91 = { 2242, 2}, + 0x92 = { 2244, 2}, + 0x93 = { 2246, 2}, + 0x94 = { 2248, 1}, + 0x95 = { 2249, 1}, + 0x96 = { 2250, 1}, + 0x97 = { 2251, 1}, + 0x98 = { 2252, 1}, + 0x99 = { 2253, 2}, + 0x9A = { 2255, 1}, + 0x9B = { 2256, 2}, + 0x9C = { 2258, 1}, + 0x9D = { 2259, 1}, + 0x9E = { 2260, 1}, + 0x9F = { 2261, 1}, + 0xA0 = { 2262, 2}, + 0xA1 = { 2264, 2}, + 0xA2 = { 2266, 2}, + 0xA3 = { 2268, 2}, + 0xA4 = { 2270, 2}, + 0xA5 = { 2272, 2}, + 0xA6 = { 2274, 2}, + 0xA7 = { 2276, 2}, + 0xA8 = { 2278, 2}, + 0xA9 = { 2280, 2}, + 0xAA = { 2282, 2}, + 0xAB = { 2284, 2}, + 0xAC = { 2286, 2}, + 0xAD = { 2288, 2}, + 0xAE = { 2290, 2}, + 0xAF = { 2292, 2}, + 0xB0 = { 2294, 2}, + 0xB1 = { 2296, 2}, + 0xB2 = { 2298, 2}, + 0xB3 = { 2300, 2}, + 0xB4 = { 2302, 2}, + 0xB5 = { 2304, 2}, + 0xB6 = { 2306, 2}, + 0xB7 = { 2308, 2}, + 0xB8 = { 2310, 2}, + 0xB9 = { 2312, 2}, + 0xBA = { 2314, 2}, + 0xBB = { 2316, 2}, + 0xBC = { 2318, 2}, + 0xBD = { 2320, 2}, + 0xBE = { 2322, 2}, + 0xBF = { 2324, 2}, + 0xC0 = { 2326, 7}, + 0xC1 = { 2333, 4}, + 0xC2 = { 2337, 12}, + 0xC3 = { 2349, 5}, + 0xC4 = { 2354, 11}, + 0xC5 = { 2365, 8}, + 0xC6 = { 2373, 12}, + 0xC7 = { 2385, 5}, + 0xC8 = { 2390, 6}, + 0xC9 = { 2396, 6}, + 0xCA = { 2402, 12}, + 0xCB = { 2414, 8}, + 0xCC = { 2422, 6}, + 0xCD = { 2428, 6}, + 0xCE = { 2434, 12}, + 0xCF = { 2446, 6}, + 0xD0 = { 2452, 4}, + 0xD1 = { 2456, 4}, + 0xD2 = { 2460, 4}, + 0xD3 = { 2464, 2}, + 0xD4 = { 2466, 4}, + 0xD5 = { 2470, 4}, + 0xD6 = { 2474, 2}, + 0xD7 = { 2476, 2}, + 0xD8 = { 2478, 4}, + 0xD9 = { 2482, 4}, + 0xDA = { 2486, 2}, + 0xDB = { 2488, 2}, + 0xDC = { 2490, 4}, + 0xDD = { 2494, 4}, + 0xDE = { 2498, 2}, + 0xDF = { 2500, 2}, + 0xE0 = { 2502, 18}, + 0xE1 = { 2520, 14}, + 0xE2 = { 2534, 18}, + 0xE3 = { 2552, 15}, + 0xE4 = { 2567, 17}, + 0xE5 = { 2584, 13}, + 0xE6 = { 2597, 18}, + 0xE7 = { 2615, 15}, + 0xE8 = { 2630, 15}, + 0xE9 = { 2645, 11}, + 0xEA = { 2656, 11}, + 0xEB = { 2667, 77}, + 0xEC = { 2744, 16}, + 0xED = { 2760, 11}, + 0xEE = { 2771, 13}, + 0xEF = { 2784, 78}, + 0xF0 = { 2862, 3}, + 0xF1 = { 2865, 3}, + 0xF2 = { 2868, 3}, + 0xF3 = { 2871, 3}, + 0xF4 = { 2874, 3}, + 0xF5 = { 2877, 3}, + 0xF6 = { 2880, 3}, + 0xF7 = { 2883, 3}, + 0xF8 = { 2886, 1}, + 0xF9 = { 2887, 1}, + 0xFA = { 2888, 1}, + 0xFB = { 2889, 1}, + 0xFC = { 2890, 1}, + 0xFD = { 2891, 1}, + 0xFE = { 2892, 1}, + 0xFF = { 2893, 1}, } DECODE_INDEX_T32 := [128]lib.Decode_Index{ - 0x74 = { 2878, 23}, - 0x75 = { 2901, 19}, - 0x76 = { 2920, 19}, - 0x77 = { 2939, 101}, - 0x78 = { 3040, 26}, - 0x79 = { 3066, 33}, - 0x7A = { 3099, 18}, - 0x7B = { 3117, 9}, - 0x7C = { 3126, 20}, - 0x7D = { 3146, 71}, - 0x7E = { 3217, 22}, - 0x7F = { 3239, 126}, + 0x74 = { 2894, 23}, + 0x75 = { 2917, 19}, + 0x76 = { 2936, 19}, + 0x77 = { 2955, 101}, + 0x78 = { 3056, 26}, + 0x79 = { 3082, 33}, + 0x7A = { 3115, 18}, + 0x7B = { 3133, 9}, + 0x7C = { 3142, 20}, + 0x7D = { 3162, 71}, + 0x7E = { 3233, 22}, + 0x7F = { 3255, 126}, } DECODE_INDEX_T16 := [64]lib.Decode_Index{ - 0x00 = { 3365, 1}, - 0x01 = { 3366, 1}, - 0x02 = { 3367, 1}, - 0x03 = { 3368, 1}, - 0x04 = { 3369, 1}, - 0x05 = { 3370, 1}, - 0x06 = { 3371, 2}, - 0x07 = { 3373, 2}, - 0x08 = { 3375, 1}, - 0x09 = { 3376, 1}, - 0x0A = { 3377, 1}, - 0x0B = { 3378, 1}, - 0x0C = { 3379, 1}, - 0x0D = { 3380, 1}, - 0x0E = { 3381, 1}, - 0x0F = { 3382, 1}, - 0x10 = { 3383, 16}, - 0x11 = { 3399, 7}, - 0x12 = { 3406, 1}, - 0x13 = { 3407, 1}, - 0x14 = { 3408, 2}, - 0x15 = { 3410, 2}, - 0x16 = { 3412, 2}, - 0x17 = { 3414, 2}, - 0x18 = { 3416, 1}, - 0x19 = { 3417, 1}, - 0x1A = { 3418, 1}, - 0x1B = { 3419, 1}, - 0x1C = { 3420, 1}, - 0x1D = { 3421, 1}, - 0x1E = { 3422, 1}, - 0x1F = { 3423, 1}, - 0x20 = { 3424, 1}, - 0x21 = { 3425, 1}, - 0x22 = { 3426, 1}, - 0x23 = { 3427, 1}, - 0x24 = { 3428, 1}, - 0x25 = { 3429, 1}, - 0x26 = { 3430, 1}, - 0x27 = { 3431, 1}, - 0x28 = { 3432, 1}, - 0x29 = { 3433, 1}, - 0x2A = { 3434, 1}, - 0x2B = { 3435, 1}, - 0x2C = { 3436, 7}, - 0x2D = { 3443, 2}, - 0x2E = { 3445, 4}, - 0x2F = { 3449, 8}, - 0x30 = { 3457, 1}, - 0x31 = { 3458, 1}, - 0x32 = { 3459, 1}, - 0x33 = { 3460, 1}, - 0x34 = { 3461, 1}, - 0x35 = { 3462, 1}, - 0x36 = { 3463, 1}, - 0x37 = { 3464, 3}, - 0x38 = { 3467, 1}, - 0x39 = { 3468, 1}, + 0x00 = { 3381, 1}, + 0x01 = { 3382, 1}, + 0x02 = { 3383, 1}, + 0x03 = { 3384, 1}, + 0x04 = { 3385, 1}, + 0x05 = { 3386, 1}, + 0x06 = { 3387, 2}, + 0x07 = { 3389, 2}, + 0x08 = { 3391, 1}, + 0x09 = { 3392, 1}, + 0x0A = { 3393, 1}, + 0x0B = { 3394, 1}, + 0x0C = { 3395, 1}, + 0x0D = { 3396, 1}, + 0x0E = { 3397, 1}, + 0x0F = { 3398, 1}, + 0x10 = { 3399, 16}, + 0x11 = { 3415, 7}, + 0x12 = { 3422, 1}, + 0x13 = { 3423, 1}, + 0x14 = { 3424, 2}, + 0x15 = { 3426, 2}, + 0x16 = { 3428, 2}, + 0x17 = { 3430, 2}, + 0x18 = { 3432, 1}, + 0x19 = { 3433, 1}, + 0x1A = { 3434, 1}, + 0x1B = { 3435, 1}, + 0x1C = { 3436, 1}, + 0x1D = { 3437, 1}, + 0x1E = { 3438, 1}, + 0x1F = { 3439, 1}, + 0x20 = { 3440, 1}, + 0x21 = { 3441, 1}, + 0x22 = { 3442, 1}, + 0x23 = { 3443, 1}, + 0x24 = { 3444, 1}, + 0x25 = { 3445, 1}, + 0x26 = { 3446, 1}, + 0x27 = { 3447, 1}, + 0x28 = { 3448, 1}, + 0x29 = { 3449, 1}, + 0x2A = { 3450, 1}, + 0x2B = { 3451, 1}, + 0x2C = { 3452, 7}, + 0x2D = { 3459, 2}, + 0x2E = { 3461, 4}, + 0x2F = { 3465, 8}, + 0x30 = { 3473, 1}, + 0x31 = { 3474, 1}, + 0x32 = { 3475, 1}, + 0x33 = { 3476, 1}, + 0x34 = { 3477, 1}, + 0x35 = { 3478, 1}, + 0x36 = { 3479, 1}, + 0x37 = { 3480, 3}, + 0x38 = { 3483, 1}, + 0x39 = { 3484, 1}, } DECODE_INDEX_T32_SUB := [4096]lib.Decode_Index{ - 0xE84 = { 3469, 6}, - 0xE85 = { 3475, 2}, - 0xE86 = { 3477, 1}, - 0xE87 = { 3478, 1}, - 0xE88 = { 3479, 1}, - 0xE89 = { 3480, 1}, - 0xE8A = { 3481, 1}, - 0xE8B = { 3482, 2}, - 0xE8C = { 3484, 4}, - 0xE8D = { 3488, 6}, - 0xE8E = { 3494, 1}, - 0xE8F = { 3495, 1}, - 0xE90 = { 3496, 1}, - 0xE91 = { 3497, 1}, - 0xE92 = { 3498, 2}, - 0xE93 = { 3500, 1}, - 0xE94 = { 3501, 1}, - 0xE95 = { 3502, 1}, - 0xE96 = { 3503, 1}, - 0xE97 = { 3504, 2}, - 0xE9C = { 3506, 1}, - 0xE9D = { 3507, 1}, - 0xE9E = { 3508, 1}, - 0xE9F = { 3509, 1}, - 0xEA0 = { 3510, 2}, - 0xEA1 = { 3512, 3}, - 0xEA2 = { 3515, 1}, - 0xEA3 = { 3516, 1}, - 0xEA4 = { 3517, 7}, - 0xEA5 = { 3524, 7}, - 0xEA6 = { 3531, 1}, - 0xEA7 = { 3532, 1}, - 0xEA8 = { 3533, 1}, - 0xEA9 = { 3534, 2}, - 0xEB1 = { 3536, 1}, - 0xEB4 = { 3537, 1}, - 0xEB5 = { 3538, 1}, - 0xEB6 = { 3539, 1}, - 0xEB7 = { 3540, 1}, - 0xEBB = { 3541, 1}, - 0xEBC = { 3542, 1}, - 0xEBD = { 3543, 1}, - 0xEC0 = { 3544, 2}, - 0xEC1 = { 3546, 1}, - 0xEC2 = { 3547, 3}, - 0xEC3 = { 3550, 2}, - 0xEC4 = { 3552, 2}, - 0xEC5 = { 3554, 1}, - 0xEC6 = { 3555, 7}, - 0xEC7 = { 3562, 2}, - 0xEC8 = { 3564, 1}, - 0xEC9 = { 3565, 1}, - 0xECA = { 3566, 2}, - 0xECB = { 3568, 2}, - 0xECC = { 3570, 1}, - 0xECD = { 3571, 1}, - 0xECE = { 3572, 2}, - 0xECF = { 3574, 2}, - 0xED6 = { 3576, 4}, - 0xED8 = { 3580, 4}, - 0xED9 = { 3584, 4}, - 0xEDC = { 3588, 4}, - 0xEDD = { 3592, 4}, - 0xEE0 = { 3596, 23}, - 0xEE1 = { 3619, 22}, - 0xEE2 = { 3641, 22}, - 0xEE3 = { 3663, 29}, - 0xEE4 = { 3692, 23}, - 0xEE5 = { 3715, 22}, - 0xEE6 = { 3737, 22}, - 0xEE7 = { 3759, 29}, - 0xEE8 = { 3788, 28}, - 0xEE9 = { 3816, 12}, - 0xEEA = { 3828, 13}, - 0xEEB = { 3841, 18}, - 0xEEC = { 3859, 27}, - 0xEED = { 3886, 13}, - 0xEEE = { 3899, 22}, - 0xEEF = { 3921, 21}, - 0xEF0 = { 3942, 15}, - 0xEF1 = { 3957, 15}, - 0xEF2 = { 3972, 15}, - 0xEF3 = { 3987, 15}, - 0xEF4 = { 4002, 15}, - 0xEF5 = { 4017, 15}, - 0xEF6 = { 4032, 15}, - 0xEF7 = { 4047, 15}, - 0xEF8 = { 4062, 3}, - 0xEF9 = { 4065, 3}, - 0xEFA = { 4068, 3}, - 0xEFB = { 4071, 3}, - 0xEFC = { 4074, 3}, - 0xEFD = { 4077, 3}, - 0xEFE = { 4080, 3}, - 0xEFF = { 4083, 3}, - 0xF00 = { 4086, 10}, - 0xF01 = { 4096, 10}, - 0xF02 = { 4106, 7}, - 0xF03 = { 4113, 7}, - 0xF04 = { 4120, 10}, - 0xF05 = { 4130, 8}, - 0xF06 = { 4138, 6}, - 0xF07 = { 4144, 6}, - 0xF08 = { 4150, 4}, - 0xF09 = { 4154, 5}, - 0xF0A = { 4159, 3}, - 0xF0B = { 4162, 3}, - 0xF0C = { 4165, 3}, - 0xF0D = { 4168, 3}, - 0xF0E = { 4171, 3}, - 0xF0F = { 4174, 3}, - 0xF10 = { 4177, 5}, - 0xF11 = { 4182, 6}, - 0xF12 = { 4188, 5}, - 0xF13 = { 4193, 5}, - 0xF14 = { 4198, 6}, - 0xF15 = { 4204, 6}, - 0xF16 = { 4210, 6}, - 0xF17 = { 4216, 6}, - 0xF18 = { 4222, 3}, - 0xF19 = { 4225, 3}, - 0xF1A = { 4228, 3}, - 0xF1B = { 4231, 4}, - 0xF1C = { 4235, 4}, - 0xF1D = { 4239, 4}, - 0xF1E = { 4243, 3}, - 0xF1F = { 4246, 3}, - 0xF20 = { 4249, 3}, - 0xF21 = { 4252, 3}, - 0xF22 = { 4255, 3}, - 0xF23 = { 4258, 3}, - 0xF24 = { 4261, 4}, - 0xF25 = { 4265, 3}, - 0xF26 = { 4268, 3}, - 0xF27 = { 4271, 3}, - 0xF28 = { 4274, 3}, - 0xF29 = { 4277, 3}, - 0xF2A = { 4280, 3}, - 0xF2B = { 4283, 3}, - 0xF2C = { 4286, 4}, - 0xF2D = { 4290, 3}, - 0xF2E = { 4293, 3}, - 0xF2F = { 4296, 3}, - 0xF30 = { 4299, 4}, - 0xF31 = { 4303, 3}, - 0xF32 = { 4306, 5}, - 0xF33 = { 4311, 3}, - 0xF34 = { 4314, 4}, - 0xF35 = { 4318, 3}, - 0xF36 = { 4321, 5}, - 0xF37 = { 4326, 3}, - 0xF38 = { 4329, 5}, - 0xF39 = { 4334, 3}, - 0xF3A = { 4337, 18}, - 0xF3B = { 4355, 8}, - 0xF3C = { 4363, 4}, - 0xF3D = { 4367, 3}, - 0xF3E = { 4370, 4}, - 0xF3F = { 4374, 3}, - 0xF40 = { 4377, 5}, - 0xF41 = { 4382, 6}, - 0xF42 = { 4388, 4}, - 0xF43 = { 4392, 4}, - 0xF44 = { 4396, 6}, - 0xF45 = { 4402, 6}, - 0xF46 = { 4408, 4}, - 0xF47 = { 4412, 4}, - 0xF48 = { 4416, 4}, - 0xF49 = { 4420, 5}, - 0xF4A = { 4425, 3}, - 0xF4B = { 4428, 3}, - 0xF4C = { 4431, 3}, - 0xF4D = { 4434, 3}, - 0xF4E = { 4437, 3}, - 0xF4F = { 4440, 3}, - 0xF50 = { 4443, 3}, - 0xF51 = { 4446, 4}, - 0xF52 = { 4450, 3}, - 0xF53 = { 4453, 3}, - 0xF54 = { 4456, 4}, - 0xF55 = { 4460, 4}, - 0xF56 = { 4464, 4}, - 0xF57 = { 4468, 4}, - 0xF58 = { 4472, 3}, - 0xF59 = { 4475, 3}, - 0xF5A = { 4478, 3}, - 0xF5B = { 4481, 4}, - 0xF5C = { 4485, 4}, - 0xF5D = { 4489, 4}, - 0xF5E = { 4493, 3}, - 0xF5F = { 4496, 3}, - 0xF60 = { 4499, 3}, - 0xF61 = { 4502, 3}, - 0xF62 = { 4505, 3}, - 0xF63 = { 4508, 3}, - 0xF64 = { 4511, 4}, - 0xF65 = { 4515, 3}, - 0xF66 = { 4518, 3}, - 0xF67 = { 4521, 3}, - 0xF68 = { 4524, 3}, - 0xF69 = { 4527, 3}, - 0xF6A = { 4530, 3}, - 0xF6B = { 4533, 3}, - 0xF6C = { 4536, 4}, - 0xF6D = { 4540, 3}, - 0xF6E = { 4543, 3}, - 0xF6F = { 4546, 3}, - 0xF70 = { 4549, 3}, - 0xF71 = { 4552, 3}, - 0xF72 = { 4555, 3}, - 0xF73 = { 4558, 3}, - 0xF74 = { 4561, 3}, - 0xF75 = { 4564, 3}, - 0xF76 = { 4567, 3}, - 0xF77 = { 4570, 3}, - 0xF78 = { 4573, 6}, - 0xF79 = { 4579, 3}, - 0xF7A = { 4582, 3}, - 0xF7B = { 4585, 3}, - 0xF7C = { 4588, 3}, - 0xF7D = { 4591, 3}, - 0xF7E = { 4594, 3}, - 0xF7F = { 4597, 4}, - 0xF80 = { 4601, 1}, - 0xF81 = { 4602, 1}, - 0xF82 = { 4603, 1}, - 0xF83 = { 4604, 2}, - 0xF84 = { 4606, 1}, - 0xF85 = { 4607, 2}, - 0xF88 = { 4609, 1}, - 0xF89 = { 4610, 2}, - 0xF8A = { 4612, 1}, - 0xF8B = { 4613, 1}, - 0xF8C = { 4614, 1}, - 0xF8D = { 4615, 2}, - 0xF91 = { 4617, 1}, - 0xF93 = { 4618, 1}, - 0xF99 = { 4619, 2}, - 0xF9B = { 4621, 1}, - 0xFA0 = { 4622, 3}, - 0xFA1 = { 4625, 3}, - 0xFA2 = { 4628, 3}, - 0xFA3 = { 4631, 3}, - 0xFA4 = { 4634, 3}, - 0xFA5 = { 4637, 3}, - 0xFA6 = { 4640, 1}, - 0xFA7 = { 4641, 1}, - 0xFA8 = { 4642, 10}, - 0xFA9 = { 4652, 10}, - 0xFAA = { 4662, 6}, - 0xFAB = { 4668, 1}, - 0xFAC = { 4669, 6}, - 0xFAD = { 4675, 6}, - 0xFAE = { 4681, 6}, - 0xFB0 = { 4687, 3}, - 0xFB5 = { 4690, 1}, - 0xFB8 = { 4691, 1}, - 0xFB9 = { 4692, 1}, - 0xFBA = { 4693, 1}, - 0xFBB = { 4694, 1}, - 0xFBC = { 4695, 1}, - 0xFBE = { 4696, 1}, - 0xFC0 = { 4697, 1}, - 0xFC1 = { 4698, 1}, - 0xFC2 = { 4699, 2}, - 0xFC3 = { 4701, 2}, - 0xFC4 = { 4703, 1}, - 0xFC5 = { 4704, 1}, - 0xFC6 = { 4705, 2}, - 0xFC7 = { 4707, 2}, - 0xFC8 = { 4709, 7}, - 0xFC9 = { 4716, 11}, - 0xFCA = { 4727, 2}, - 0xFCB = { 4729, 2}, - 0xFCC = { 4731, 7}, - 0xFCD = { 4738, 7}, - 0xFCE = { 4745, 2}, - 0xFCF = { 4747, 2}, - 0xFD9 = { 4749, 4}, - 0xFE0 = { 4753, 28}, - 0xFE1 = { 4781, 26}, - 0xFE2 = { 4807, 26}, - 0xFE3 = { 4833, 32}, - 0xFE4 = { 4865, 29}, - 0xFE5 = { 4894, 27}, - 0xFE6 = { 4921, 27}, - 0xFE7 = { 4948, 33}, - 0xFE8 = { 4981, 32}, - 0xFE9 = { 5013, 17}, - 0xFEA = { 5030, 17}, - 0xFEB = { 5047, 29}, - 0xFEC = { 5076, 31}, - 0xFED = { 5107, 18}, - 0xFEE = { 5125, 26}, - 0xFEF = { 5151, 32}, - 0xFF0 = { 5183, 19}, - 0xFF1 = { 5202, 18}, - 0xFF2 = { 5220, 17}, - 0xFF3 = { 5237, 17}, - 0xFF4 = { 5254, 19}, - 0xFF5 = { 5273, 18}, - 0xFF6 = { 5291, 17}, - 0xFF7 = { 5308, 17}, - 0xFF8 = { 5325, 4}, - 0xFF9 = { 5329, 4}, - 0xFFA = { 5333, 4}, - 0xFFB = { 5337, 17}, - 0xFFC = { 5354, 4}, - 0xFFD = { 5358, 4}, - 0xFFE = { 5362, 4}, - 0xFFF = { 5366, 17}, + 0xE84 = { 3485, 6}, + 0xE85 = { 3491, 2}, + 0xE86 = { 3493, 1}, + 0xE87 = { 3494, 1}, + 0xE88 = { 3495, 1}, + 0xE89 = { 3496, 1}, + 0xE8A = { 3497, 1}, + 0xE8B = { 3498, 2}, + 0xE8C = { 3500, 4}, + 0xE8D = { 3504, 6}, + 0xE8E = { 3510, 1}, + 0xE8F = { 3511, 1}, + 0xE90 = { 3512, 1}, + 0xE91 = { 3513, 1}, + 0xE92 = { 3514, 2}, + 0xE93 = { 3516, 1}, + 0xE94 = { 3517, 1}, + 0xE95 = { 3518, 1}, + 0xE96 = { 3519, 1}, + 0xE97 = { 3520, 2}, + 0xE9C = { 3522, 1}, + 0xE9D = { 3523, 1}, + 0xE9E = { 3524, 1}, + 0xE9F = { 3525, 1}, + 0xEA0 = { 3526, 2}, + 0xEA1 = { 3528, 3}, + 0xEA2 = { 3531, 1}, + 0xEA3 = { 3532, 1}, + 0xEA4 = { 3533, 7}, + 0xEA5 = { 3540, 7}, + 0xEA6 = { 3547, 1}, + 0xEA7 = { 3548, 1}, + 0xEA8 = { 3549, 1}, + 0xEA9 = { 3550, 2}, + 0xEB1 = { 3552, 1}, + 0xEB4 = { 3553, 1}, + 0xEB5 = { 3554, 1}, + 0xEB6 = { 3555, 1}, + 0xEB7 = { 3556, 1}, + 0xEBB = { 3557, 1}, + 0xEBC = { 3558, 1}, + 0xEBD = { 3559, 1}, + 0xEC0 = { 3560, 2}, + 0xEC1 = { 3562, 1}, + 0xEC2 = { 3563, 3}, + 0xEC3 = { 3566, 2}, + 0xEC4 = { 3568, 2}, + 0xEC5 = { 3570, 1}, + 0xEC6 = { 3571, 7}, + 0xEC7 = { 3578, 2}, + 0xEC8 = { 3580, 1}, + 0xEC9 = { 3581, 1}, + 0xECA = { 3582, 2}, + 0xECB = { 3584, 2}, + 0xECC = { 3586, 1}, + 0xECD = { 3587, 1}, + 0xECE = { 3588, 2}, + 0xECF = { 3590, 2}, + 0xED6 = { 3592, 4}, + 0xED8 = { 3596, 4}, + 0xED9 = { 3600, 4}, + 0xEDC = { 3604, 4}, + 0xEDD = { 3608, 4}, + 0xEE0 = { 3612, 23}, + 0xEE1 = { 3635, 22}, + 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, 21}, + 0xEF0 = { 3958, 15}, + 0xEF1 = { 3973, 15}, + 0xEF2 = { 3988, 15}, + 0xEF3 = { 4003, 15}, + 0xEF4 = { 4018, 15}, + 0xEF5 = { 4033, 15}, + 0xEF6 = { 4048, 15}, + 0xEF7 = { 4063, 15}, + 0xEF8 = { 4078, 3}, + 0xEF9 = { 4081, 3}, + 0xEFA = { 4084, 3}, + 0xEFB = { 4087, 3}, + 0xEFC = { 4090, 3}, + 0xEFD = { 4093, 3}, + 0xEFE = { 4096, 3}, + 0xEFF = { 4099, 3}, + 0xF00 = { 4102, 10}, + 0xF01 = { 4112, 10}, + 0xF02 = { 4122, 7}, + 0xF03 = { 4129, 7}, + 0xF04 = { 4136, 10}, + 0xF05 = { 4146, 8}, + 0xF06 = { 4154, 6}, + 0xF07 = { 4160, 6}, + 0xF08 = { 4166, 4}, + 0xF09 = { 4170, 5}, + 0xF0A = { 4175, 3}, + 0xF0B = { 4178, 3}, + 0xF0C = { 4181, 3}, + 0xF0D = { 4184, 3}, + 0xF0E = { 4187, 3}, + 0xF0F = { 4190, 3}, + 0xF10 = { 4193, 5}, + 0xF11 = { 4198, 6}, + 0xF12 = { 4204, 5}, + 0xF13 = { 4209, 5}, + 0xF14 = { 4214, 6}, + 0xF15 = { 4220, 6}, + 0xF16 = { 4226, 6}, + 0xF17 = { 4232, 6}, + 0xF18 = { 4238, 3}, + 0xF19 = { 4241, 3}, + 0xF1A = { 4244, 3}, + 0xF1B = { 4247, 4}, + 0xF1C = { 4251, 4}, + 0xF1D = { 4255, 4}, + 0xF1E = { 4259, 3}, + 0xF1F = { 4262, 3}, + 0xF20 = { 4265, 3}, + 0xF21 = { 4268, 3}, + 0xF22 = { 4271, 3}, + 0xF23 = { 4274, 3}, + 0xF24 = { 4277, 4}, + 0xF25 = { 4281, 3}, + 0xF26 = { 4284, 3}, + 0xF27 = { 4287, 3}, + 0xF28 = { 4290, 3}, + 0xF29 = { 4293, 3}, + 0xF2A = { 4296, 3}, + 0xF2B = { 4299, 3}, + 0xF2C = { 4302, 4}, + 0xF2D = { 4306, 3}, + 0xF2E = { 4309, 3}, + 0xF2F = { 4312, 3}, + 0xF30 = { 4315, 4}, + 0xF31 = { 4319, 3}, + 0xF32 = { 4322, 5}, + 0xF33 = { 4327, 3}, + 0xF34 = { 4330, 4}, + 0xF35 = { 4334, 3}, + 0xF36 = { 4337, 5}, + 0xF37 = { 4342, 3}, + 0xF38 = { 4345, 5}, + 0xF39 = { 4350, 3}, + 0xF3A = { 4353, 18}, + 0xF3B = { 4371, 8}, + 0xF3C = { 4379, 4}, + 0xF3D = { 4383, 3}, + 0xF3E = { 4386, 4}, + 0xF3F = { 4390, 3}, + 0xF40 = { 4393, 5}, + 0xF41 = { 4398, 6}, + 0xF42 = { 4404, 4}, + 0xF43 = { 4408, 4}, + 0xF44 = { 4412, 6}, + 0xF45 = { 4418, 6}, + 0xF46 = { 4424, 4}, + 0xF47 = { 4428, 4}, + 0xF48 = { 4432, 4}, + 0xF49 = { 4436, 5}, + 0xF4A = { 4441, 3}, + 0xF4B = { 4444, 3}, + 0xF4C = { 4447, 3}, + 0xF4D = { 4450, 3}, + 0xF4E = { 4453, 3}, + 0xF4F = { 4456, 3}, + 0xF50 = { 4459, 3}, + 0xF51 = { 4462, 4}, + 0xF52 = { 4466, 3}, + 0xF53 = { 4469, 3}, + 0xF54 = { 4472, 4}, + 0xF55 = { 4476, 4}, + 0xF56 = { 4480, 4}, + 0xF57 = { 4484, 4}, + 0xF58 = { 4488, 3}, + 0xF59 = { 4491, 3}, + 0xF5A = { 4494, 3}, + 0xF5B = { 4497, 4}, + 0xF5C = { 4501, 4}, + 0xF5D = { 4505, 4}, + 0xF5E = { 4509, 3}, + 0xF5F = { 4512, 3}, + 0xF60 = { 4515, 3}, + 0xF61 = { 4518, 3}, + 0xF62 = { 4521, 3}, + 0xF63 = { 4524, 3}, + 0xF64 = { 4527, 4}, + 0xF65 = { 4531, 3}, + 0xF66 = { 4534, 3}, + 0xF67 = { 4537, 3}, + 0xF68 = { 4540, 3}, + 0xF69 = { 4543, 3}, + 0xF6A = { 4546, 3}, + 0xF6B = { 4549, 3}, + 0xF6C = { 4552, 4}, + 0xF6D = { 4556, 3}, + 0xF6E = { 4559, 3}, + 0xF6F = { 4562, 3}, + 0xF70 = { 4565, 3}, + 0xF71 = { 4568, 3}, + 0xF72 = { 4571, 3}, + 0xF73 = { 4574, 3}, + 0xF74 = { 4577, 3}, + 0xF75 = { 4580, 3}, + 0xF76 = { 4583, 3}, + 0xF77 = { 4586, 3}, + 0xF78 = { 4589, 6}, + 0xF79 = { 4595, 3}, + 0xF7A = { 4598, 3}, + 0xF7B = { 4601, 3}, + 0xF7C = { 4604, 3}, + 0xF7D = { 4607, 3}, + 0xF7E = { 4610, 3}, + 0xF7F = { 4613, 4}, + 0xF80 = { 4617, 1}, + 0xF81 = { 4618, 1}, + 0xF82 = { 4619, 1}, + 0xF83 = { 4620, 2}, + 0xF84 = { 4622, 1}, + 0xF85 = { 4623, 2}, + 0xF88 = { 4625, 1}, + 0xF89 = { 4626, 2}, + 0xF8A = { 4628, 1}, + 0xF8B = { 4629, 1}, + 0xF8C = { 4630, 1}, + 0xF8D = { 4631, 2}, + 0xF91 = { 4633, 1}, + 0xF93 = { 4634, 1}, + 0xF99 = { 4635, 2}, + 0xF9B = { 4637, 1}, + 0xFA0 = { 4638, 3}, + 0xFA1 = { 4641, 3}, + 0xFA2 = { 4644, 3}, + 0xFA3 = { 4647, 3}, + 0xFA4 = { 4650, 3}, + 0xFA5 = { 4653, 3}, + 0xFA6 = { 4656, 1}, + 0xFA7 = { 4657, 1}, + 0xFA8 = { 4658, 10}, + 0xFA9 = { 4668, 10}, + 0xFAA = { 4678, 6}, + 0xFAB = { 4684, 1}, + 0xFAC = { 4685, 6}, + 0xFAD = { 4691, 6}, + 0xFAE = { 4697, 6}, + 0xFB0 = { 4703, 3}, + 0xFB5 = { 4706, 1}, + 0xFB8 = { 4707, 1}, + 0xFB9 = { 4708, 1}, + 0xFBA = { 4709, 1}, + 0xFBB = { 4710, 1}, + 0xFBC = { 4711, 1}, + 0xFBE = { 4712, 1}, + 0xFC0 = { 4713, 1}, + 0xFC1 = { 4714, 1}, + 0xFC2 = { 4715, 2}, + 0xFC3 = { 4717, 2}, + 0xFC4 = { 4719, 1}, + 0xFC5 = { 4720, 1}, + 0xFC6 = { 4721, 2}, + 0xFC7 = { 4723, 2}, + 0xFC8 = { 4725, 7}, + 0xFC9 = { 4732, 11}, + 0xFCA = { 4743, 2}, + 0xFCB = { 4745, 2}, + 0xFCC = { 4747, 7}, + 0xFCD = { 4754, 7}, + 0xFCE = { 4761, 2}, + 0xFCF = { 4763, 2}, + 0xFD9 = { 4765, 4}, + 0xFE0 = { 4769, 28}, + 0xFE1 = { 4797, 26}, + 0xFE2 = { 4823, 26}, + 0xFE3 = { 4849, 32}, + 0xFE4 = { 4881, 29}, + 0xFE5 = { 4910, 27}, + 0xFE6 = { 4937, 27}, + 0xFE7 = { 4964, 33}, + 0xFE8 = { 4997, 32}, + 0xFE9 = { 5029, 17}, + 0xFEA = { 5046, 17}, + 0xFEB = { 5063, 29}, + 0xFEC = { 5092, 31}, + 0xFED = { 5123, 18}, + 0xFEE = { 5141, 26}, + 0xFEF = { 5167, 32}, + 0xFF0 = { 5199, 19}, + 0xFF1 = { 5218, 18}, + 0xFF2 = { 5236, 17}, + 0xFF3 = { 5253, 17}, + 0xFF4 = { 5270, 19}, + 0xFF5 = { 5289, 18}, + 0xFF6 = { 5307, 17}, + 0xFF7 = { 5324, 17}, + 0xFF8 = { 5341, 4}, + 0xFF9 = { 5345, 4}, + 0xFFA = { 5349, 4}, + 0xFFB = { 5353, 17}, + 0xFFC = { 5370, 4}, + 0xFFD = { 5374, 4}, + 0xFFE = { 5378, 4}, + 0xFFF = { 5382, 17}, } diff --git a/core/rexcode/arm32/tablegen/generated/encode_tables.odin b/core/rexcode/arm32/tablegen/generated/encode_tables.odin index 9c0e5af20..d4644aee7 100644 --- a/core/rexcode/arm32/tablegen/generated/encode_tables.odin +++ b/core/rexcode/arm32/tablegen/generated/encode_tables.odin @@ -8,7 +8,7 @@ package rexcode_arm32_generated import lib "../.." @(rodata) -ENCODE_FORMS := [1660]lib.Encoding{ +ENCODE_FORMS := [1668]lib.Encoding{ // .AND { .AND, {.GPR,.GPR,.IMM_MOD,.NONE}, {.RD,.RN_A32,.A32_IMM_MOD,.NONE}, 0x02000000, 0x0FE00000, .BASE, .A32, {} }, { .AND, {.GPR,.GPR,.GPR_SHIFTED,.NONE}, {.RD,.RN_A32,.RM_A32,.NONE}, 0x00000000, 0x0FE00010, .BASE, .A32, {} }, @@ -1272,6 +1272,16 @@ ENCODE_FORMS := [1660]lib.Encoding{ { .VQRDMULH, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF3200B00, 0xFFB00F10, .NEON, .A32, {} }, { .VQRDMULH, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF3100B40, 0xFFB00F50, .NEON, .A32, {} }, { .VQRDMULH, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF3200B40, 0xFFB00F50, .NEON, .A32, {} }, + // .VQDMULH_LANE + { .VQDMULH_LANE, {.DPR,.DPR,.DPR_ELEM,.NONE}, {.VD_D,.VN_D,.NEON_VM_SCALAR16,.NONE}, 0xF2900C40, 0xFFB00F50, .NEON, .A32, {} }, + { .VQDMULH_LANE, {.QPR,.QPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_Q,.NEON_VM_SCALAR16,.NONE}, 0xF3900C40, 0xFFB11F50, .NEON, .A32, {} }, + { .VQDMULH_LANE, {.DPR,.DPR,.DPR_ELEM,.NONE}, {.VD_D,.VN_D,.NEON_VM_SCALAR32,.NONE}, 0xF2A00C40, 0xFFB00F50, .NEON, .A32, {} }, + { .VQDMULH_LANE, {.QPR,.QPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_Q,.NEON_VM_SCALAR32,.NONE}, 0xF3A00C40, 0xFFB11F50, .NEON, .A32, {} }, + // .VQRDMULH_LANE + { .VQRDMULH_LANE, {.DPR,.DPR,.DPR_ELEM,.NONE}, {.VD_D,.VN_D,.NEON_VM_SCALAR16,.NONE}, 0xF2900D40, 0xFFB00F50, .NEON, .A32, {} }, + { .VQRDMULH_LANE, {.QPR,.QPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_Q,.NEON_VM_SCALAR16,.NONE}, 0xF3900D40, 0xFFB11F50, .NEON, .A32, {} }, + { .VQRDMULH_LANE, {.DPR,.DPR,.DPR_ELEM,.NONE}, {.VD_D,.VN_D,.NEON_VM_SCALAR32,.NONE}, 0xF2A00D40, 0xFFB00F50, .NEON, .A32, {} }, + { .VQRDMULH_LANE, {.QPR,.QPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_Q,.NEON_VM_SCALAR32,.NONE}, 0xF3A00D40, 0xFFB11F50, .NEON, .A32, {} }, // .VQRDMLAH { .VQRDMLAH, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF3100B10, 0xFFB00F10, .V8, .A32, {} }, { .VQRDMLAH, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF3200B10, 0xFFB00F10, .V8, .A32, {} }, @@ -2605,326 +2615,326 @@ ENCODE_RUNS := [lib.Mnemonic]lib.Encode_Run{ .VQDMLSL = { 940, 2}, .VQDMULH = { 942, 4}, .VQRDMULH = { 946, 4}, - .VQDMULH_LANE = { 950, 0}, - .VQRDMULH_LANE = { 950, 0}, - .VQRDMLAH = { 950, 4}, - .VQRDMLSH = { 954, 4}, - .VABA = { 958, 8}, - .VABAL = { 966, 6}, - .VABD = { 972, 10}, - .VABDL = { 982, 6}, - .VAND = { 988, 3}, - .VBIC = { 991, 3}, - .VORR = { 994, 3}, - .VORN = { 997, 3}, - .VEOR = { 1000, 3}, - .VBSL = { 1003, 2}, - .VBIT = { 1005, 2}, - .VBIF = { 1007, 2}, - .VMVN = { 1009, 13}, - .VMOVN = { 1022, 3}, - .VQMOVN = { 1025, 6}, - .VQMOVUN = { 1031, 3}, - .VMOVL = { 1034, 6}, - .VTST = { 1040, 6}, - .VCEQ = { 1046, 10}, - .VCGE = { 1056, 12}, - .VCGT = { 1068, 12}, - .VCLE = { 1080, 14}, - .VCLT = { 1094, 14}, - .VACGE = { 1108, 2}, - .VACGT = { 1110, 2}, - .VACLE = { 1112, 2}, - .VACLT = { 1114, 2}, - .VMAX = { 1116, 13}, - .VMIN = { 1129, 13}, - .VPMAX = { 1142, 5}, - .VPMIN = { 1147, 5}, - .VPADD = { 1152, 4}, - .VPADDL = { 1156, 6}, - .VPADAL = { 1162, 4}, - .VRECPE = { 1166, 4}, - .VRECPS = { 1170, 2}, - .VRSQRTE = { 1172, 4}, - .VRSQRTS = { 1176, 2}, - .VSHL = { 1178, 9}, - .VSHR = { 1187, 5}, - .VSRA = { 1192, 5}, - .VRSHL = { 1197, 5}, - .VRSHR = { 1202, 5}, - .VRSRA = { 1207, 2}, - .VSLI = { 1209, 2}, - .VSRI = { 1211, 2}, - .VQSHL = { 1213, 7}, - .VQSHRN = { 1220, 2}, - .VQSHRUN = { 1222, 1}, - .VQRSHL = { 1223, 16}, - .VQRSHRN = { 1239, 2}, - .VQRSHRUN = { 1241, 1}, - .VSHRN = { 1242, 1}, - .VRSHRN = { 1243, 1}, - .VSHLL = { 1244, 5}, - .VCLS = { 1249, 6}, - .VCLZ = { 1255, 6}, - .VCNT = { 1261, 2}, - .VPADD_F = { 1263, 2}, - .VRECPE_F = { 1265, 2}, - .VRSQRTE_F = { 1267, 2}, - .VREV16 = { 1269, 2}, - .VREV32 = { 1271, 4}, - .VREV64 = { 1275, 6}, - .VEXT = { 1281, 2}, - .VTBL = { 1283, 4}, - .VTBX = { 1287, 4}, - .VTRN = { 1291, 6}, - .VUZP = { 1297, 5}, - .VZIP = { 1302, 5}, - .VDUP = { 1307, 5}, - .VSWP = { 1312, 2}, - .VMOV_LANE = { 1314, 0}, - .VLD1 = { 1314, 8}, - .VLD2 = { 1322, 3}, - .VLD3 = { 1325, 2}, - .VLD4 = { 1327, 2}, - .VST1 = { 1329, 7}, - .VST2 = { 1336, 3}, - .VST3 = { 1339, 2}, - .VST4 = { 1341, 2}, - .AESE = { 1343, 1}, - .AESD = { 1344, 1}, - .AESMC = { 1345, 1}, - .AESIMC = { 1346, 1}, - .SHA1H = { 1347, 1}, - .SHA1SU0 = { 1348, 1}, - .SHA1SU1 = { 1349, 1}, - .SHA1C = { 1350, 1}, - .SHA1M = { 1351, 1}, - .SHA1P = { 1352, 1}, - .SHA256H = { 1353, 1}, - .SHA256H2 = { 1354, 1}, - .SHA256SU0 = { 1355, 1}, - .SHA256SU1 = { 1356, 1}, - .VRINT = { 1357, 0}, - .VJCVT = { 1357, 1}, - .VSDOT = { 1358, 2}, - .VUDOT = { 1360, 2}, - .VSDOT_LANE = { 1362, 2}, - .VUDOT_LANE = { 1364, 2}, - .VCVT_BF16 = { 1366, 1}, - .VDOT_BF16 = { 1367, 2}, - .VFMA_BF16 = { 1369, 1}, - .VMMLA_BF16 = { 1370, 1}, - .VFMAL = { 1371, 2}, - .VFMSL = { 1373, 2}, - .VCMLA = { 1375, 2}, - .VCADD = { 1377, 2}, - .VCMLA_LANE = { 1379, 2}, - .VSMMLA = { 1381, 1}, - .VUMMLA = { 1382, 1}, - .VUSMMLA = { 1383, 1}, - .VSUDOT = { 1384, 1}, - .VUSDOT = { 1385, 2}, - .VSUDOT_LANE = { 1387, 1}, - .VUSDOT_LANE = { 1388, 2}, - .VMUL_LANE = { 1390, 6}, - .VMLA_LANE = { 1396, 6}, - .VMLS_LANE = { 1402, 6}, - .VMULL_LANE = { 1408, 4}, - .VMLAL_LANE = { 1412, 4}, - .VMLSL_LANE = { 1416, 4}, - .VQDMULL_LANE = { 1420, 2}, - .VQDMLAL_LANE = { 1422, 2}, - .VQDMLSL_LANE = { 1424, 2}, - .VFMA_LANE = { 1426, 2}, - .VFMS_LANE = { 1428, 2}, - .VQRDMLAH_LANE = { 1430, 4}, - .VQRDMLSH_LANE = { 1434, 4}, - .VQABS = { 1438, 1}, - .VQNEG = { 1439, 1}, - .VMOVX = { 1440, 1}, - .VINS = { 1441, 1}, - .VLDRB_GATHER = { 1442, 1}, - .VLDRH_GATHER = { 1443, 1}, - .VLDRW_GATHER = { 1444, 1}, - .VLDRD_GATHER = { 1445, 1}, - .VSTRB_SCATTER = { 1446, 1}, - .VSTRH_SCATTER = { 1447, 1}, - .VSTRW_SCATTER = { 1448, 1}, - .VSTRD_SCATTER = { 1449, 1}, - .VCEQ_Z = { 1450, 4}, - .VCGE_Z = { 1454, 4}, - .VCGT_Z = { 1458, 4}, - .VCLE_Z = { 1462, 4}, - .VCLT_Z = { 1466, 4}, - .VLD2R = { 1470, 1}, - .VLD3R = { 1471, 1}, - .VLD4R = { 1472, 1}, - .VLD1_LANE = { 1473, 3}, - .VLD2_LANE = { 1476, 3}, - .VLD3_LANE = { 1479, 3}, - .VLD4_LANE = { 1482, 3}, - .VST1_LANE = { 1485, 3}, - .VST2_LANE = { 1488, 3}, - .VST3_LANE = { 1491, 3}, - .VST4_LANE = { 1494, 3}, - .VCVT_FIXED = { 1497, 10}, - .IT = { 1507, 1}, - .TT = { 1508, 1}, - .TTT = { 1509, 1}, - .TTA = { 1510, 1}, - .TTAT = { 1511, 1}, - .SG = { 1512, 1}, - .BXNS = { 1513, 1}, - .BLXNS = { 1514, 1}, - .PAC = { 1515, 1}, - .PACBTI = { 1516, 1}, - .AUT = { 1517, 1}, - .AUTG = { 1518, 1}, - .BTI = { 1519, 1}, - .WLS = { 1520, 1}, - .WLSTP = { 1521, 1}, - .DLS = { 1522, 1}, - .DLSTP = { 1523, 1}, - .LE = { 1524, 1}, - .LETP = { 1525, 1}, - .LCTP = { 1526, 1}, - .BF = { 1527, 0}, - .BFI_BR = { 1527, 0}, - .BFL = { 1527, 0}, - .BFLX = { 1527, 0}, - .BFCSEL = { 1527, 0}, - .CX1 = { 1527, 1}, - .CX1A = { 1528, 1}, - .CX1D = { 1529, 1}, - .CX1DA = { 1530, 1}, - .CX2 = { 1531, 1}, - .CX2A = { 1532, 1}, - .CX2D = { 1533, 1}, - .CX2DA = { 1534, 1}, - .CX3 = { 1535, 1}, - .CX3A = { 1536, 1}, - .CX3D = { 1537, 1}, - .CX3DA = { 1538, 1}, - .VCX1 = { 1539, 2}, - .VCX1A = { 1541, 2}, - .VCX2 = { 1543, 2}, - .VCX2A = { 1545, 2}, - .VCX3 = { 1547, 2}, - .VCX3A = { 1549, 2}, - .VPT = { 1551, 1}, - .VPST = { 1552, 1}, - .VPSEL = { 1553, 1}, - .VPNOT = { 1554, 1}, - .VCTP = { 1555, 1}, - .VADDV = { 1556, 1}, - .VADDVA = { 1557, 1}, - .VADDLV = { 1558, 1}, - .VADDLVA = { 1559, 1}, - .VMAXV = { 1560, 1}, - .VMAXAV = { 1561, 1}, - .VMINV = { 1562, 1}, - .VMINAV = { 1563, 1}, - .VMAXNMV = { 1564, 1}, - .VMAXNMAV = { 1565, 1}, - .VMINNMV = { 1566, 1}, - .VMINNMAV = { 1567, 1}, - .VABAV = { 1568, 1}, - .VMLADAV = { 1569, 1}, - .VMLADAVA = { 1570, 1}, - .VMLADAVX = { 1571, 1}, - .VMLADAVAX = { 1572, 1}, - .VMLALDAV = { 1573, 1}, - .VMLALDAVA = { 1574, 1}, - .VMLALDAVX = { 1575, 1}, - .VMLALDAVAX = { 1576, 1}, - .VMLSDAV = { 1577, 1}, - .VMLSDAVA = { 1578, 1}, - .VMLSDAVX = { 1579, 1}, - .VMLSDAVAX = { 1580, 1}, - .VMLSLDAV = { 1581, 1}, - .VMLSLDAVA = { 1582, 1}, - .VMLSLDAVX = { 1583, 1}, - .VMLSLDAVAX = { 1584, 1}, - .VRMLALDAVH = { 1585, 1}, - .VRMLALDAVHA = { 1586, 1}, - .VRMLALDAVHX = { 1587, 1}, - .VRMLALDAVHAX = { 1588, 1}, - .VRMLSLDAVH = { 1589, 1}, - .VRMLSLDAVHA = { 1590, 1}, - .VRMLSLDAVHX = { 1591, 1}, - .VRMLSLDAVHAX = { 1592, 1}, - .VMLAV = { 1593, 1}, - .VMLAVA = { 1594, 1}, - .VMLSV = { 1595, 0}, - .VMLSVA = { 1595, 0}, - .VCMUL = { 1595, 1}, - .VHCADD = { 1596, 1}, - .VBRSR = { 1597, 1}, - .VSHLC = { 1598, 1}, - .VRSHL_MVE = { 1599, 0}, - .VDDUP = { 1599, 1}, - .VIDUP = { 1600, 1}, - .VDWDUP = { 1601, 1}, - .VIWDUP = { 1602, 1}, - .VMOVNB = { 1603, 1}, - .VMOVNT = { 1604, 1}, - .VQMOVNB = { 1605, 1}, - .VQMOVNT = { 1606, 1}, - .VQMOVUNB = { 1607, 1}, - .VQMOVUNT = { 1608, 1}, - .VSHLLB = { 1609, 1}, - .VSHLLT = { 1610, 1}, - .VMULLB = { 1611, 1}, - .VMULLT = { 1612, 1}, - .VMLALB = { 1613, 1}, - .VMLALT = { 1614, 1}, - .VMLSLB = { 1615, 1}, - .VMLSLT = { 1616, 1}, - .VSHRNB = { 1617, 1}, - .VSHRNT = { 1618, 1}, - .VRSHRNB = { 1619, 1}, - .VRSHRNT = { 1620, 1}, - .VQSHRNB = { 1621, 1}, - .VQSHRNT = { 1622, 1}, - .VQRSHRNB = { 1623, 1}, - .VQRSHRNT = { 1624, 1}, - .VQSHRUNB = { 1625, 1}, - .VQSHRUNT = { 1626, 1}, - .VQRSHRUNB = { 1627, 1}, - .VQRSHRUNT = { 1628, 1}, - .VMOV_Q_R = { 1629, 1}, - .VMOV_R_Q = { 1630, 1}, - .VMOV_2GPR_Q = { 1631, 1}, - .VQDMLADH = { 1632, 1}, - .VQDMLADHX = { 1633, 1}, - .VQDMLSDH = { 1634, 1}, - .VQDMLSDHX = { 1635, 1}, - .VQRDMLADH = { 1636, 1}, - .VQRDMLADHX = { 1637, 1}, - .VQRDMLSDH = { 1638, 1}, - .VQRDMLSDHX = { 1639, 1}, - .VPRINT = { 1640, 0}, - .VHCADD_SAT = { 1640, 0}, - .VCMLA_MVE = { 1640, 0}, - .VLDRB = { 1640, 1}, - .VLDRH = { 1641, 1}, - .VLDRW = { 1642, 1}, - .VLDRD = { 1643, 1}, - .VSTRB = { 1644, 1}, - .VSTRH = { 1645, 1}, - .VSTRW = { 1646, 1}, - .VSTRD = { 1647, 1}, - .VLD20 = { 1648, 1}, - .VLD21 = { 1649, 1}, - .VLD40 = { 1650, 1}, - .VLD41 = { 1651, 1}, - .VLD42 = { 1652, 1}, - .VLD43 = { 1653, 1}, - .VST20 = { 1654, 1}, - .VST21 = { 1655, 1}, - .VST40 = { 1656, 1}, - .VST41 = { 1657, 1}, - .VST42 = { 1658, 1}, - .VST43 = { 1659, 1}, - ._COUNT = { 1660, 0}, + .VQDMULH_LANE = { 950, 4}, + .VQRDMULH_LANE = { 954, 4}, + .VQRDMLAH = { 958, 4}, + .VQRDMLSH = { 962, 4}, + .VABA = { 966, 8}, + .VABAL = { 974, 6}, + .VABD = { 980, 10}, + .VABDL = { 990, 6}, + .VAND = { 996, 3}, + .VBIC = { 999, 3}, + .VORR = { 1002, 3}, + .VORN = { 1005, 3}, + .VEOR = { 1008, 3}, + .VBSL = { 1011, 2}, + .VBIT = { 1013, 2}, + .VBIF = { 1015, 2}, + .VMVN = { 1017, 13}, + .VMOVN = { 1030, 3}, + .VQMOVN = { 1033, 6}, + .VQMOVUN = { 1039, 3}, + .VMOVL = { 1042, 6}, + .VTST = { 1048, 6}, + .VCEQ = { 1054, 10}, + .VCGE = { 1064, 12}, + .VCGT = { 1076, 12}, + .VCLE = { 1088, 14}, + .VCLT = { 1102, 14}, + .VACGE = { 1116, 2}, + .VACGT = { 1118, 2}, + .VACLE = { 1120, 2}, + .VACLT = { 1122, 2}, + .VMAX = { 1124, 13}, + .VMIN = { 1137, 13}, + .VPMAX = { 1150, 5}, + .VPMIN = { 1155, 5}, + .VPADD = { 1160, 4}, + .VPADDL = { 1164, 6}, + .VPADAL = { 1170, 4}, + .VRECPE = { 1174, 4}, + .VRECPS = { 1178, 2}, + .VRSQRTE = { 1180, 4}, + .VRSQRTS = { 1184, 2}, + .VSHL = { 1186, 9}, + .VSHR = { 1195, 5}, + .VSRA = { 1200, 5}, + .VRSHL = { 1205, 5}, + .VRSHR = { 1210, 5}, + .VRSRA = { 1215, 2}, + .VSLI = { 1217, 2}, + .VSRI = { 1219, 2}, + .VQSHL = { 1221, 7}, + .VQSHRN = { 1228, 2}, + .VQSHRUN = { 1230, 1}, + .VQRSHL = { 1231, 16}, + .VQRSHRN = { 1247, 2}, + .VQRSHRUN = { 1249, 1}, + .VSHRN = { 1250, 1}, + .VRSHRN = { 1251, 1}, + .VSHLL = { 1252, 5}, + .VCLS = { 1257, 6}, + .VCLZ = { 1263, 6}, + .VCNT = { 1269, 2}, + .VPADD_F = { 1271, 2}, + .VRECPE_F = { 1273, 2}, + .VRSQRTE_F = { 1275, 2}, + .VREV16 = { 1277, 2}, + .VREV32 = { 1279, 4}, + .VREV64 = { 1283, 6}, + .VEXT = { 1289, 2}, + .VTBL = { 1291, 4}, + .VTBX = { 1295, 4}, + .VTRN = { 1299, 6}, + .VUZP = { 1305, 5}, + .VZIP = { 1310, 5}, + .VDUP = { 1315, 5}, + .VSWP = { 1320, 2}, + .VMOV_LANE = { 1322, 0}, + .VLD1 = { 1322, 8}, + .VLD2 = { 1330, 3}, + .VLD3 = { 1333, 2}, + .VLD4 = { 1335, 2}, + .VST1 = { 1337, 7}, + .VST2 = { 1344, 3}, + .VST3 = { 1347, 2}, + .VST4 = { 1349, 2}, + .AESE = { 1351, 1}, + .AESD = { 1352, 1}, + .AESMC = { 1353, 1}, + .AESIMC = { 1354, 1}, + .SHA1H = { 1355, 1}, + .SHA1SU0 = { 1356, 1}, + .SHA1SU1 = { 1357, 1}, + .SHA1C = { 1358, 1}, + .SHA1M = { 1359, 1}, + .SHA1P = { 1360, 1}, + .SHA256H = { 1361, 1}, + .SHA256H2 = { 1362, 1}, + .SHA256SU0 = { 1363, 1}, + .SHA256SU1 = { 1364, 1}, + .VRINT = { 1365, 0}, + .VJCVT = { 1365, 1}, + .VSDOT = { 1366, 2}, + .VUDOT = { 1368, 2}, + .VSDOT_LANE = { 1370, 2}, + .VUDOT_LANE = { 1372, 2}, + .VCVT_BF16 = { 1374, 1}, + .VDOT_BF16 = { 1375, 2}, + .VFMA_BF16 = { 1377, 1}, + .VMMLA_BF16 = { 1378, 1}, + .VFMAL = { 1379, 2}, + .VFMSL = { 1381, 2}, + .VCMLA = { 1383, 2}, + .VCADD = { 1385, 2}, + .VCMLA_LANE = { 1387, 2}, + .VSMMLA = { 1389, 1}, + .VUMMLA = { 1390, 1}, + .VUSMMLA = { 1391, 1}, + .VSUDOT = { 1392, 1}, + .VUSDOT = { 1393, 2}, + .VSUDOT_LANE = { 1395, 1}, + .VUSDOT_LANE = { 1396, 2}, + .VMUL_LANE = { 1398, 6}, + .VMLA_LANE = { 1404, 6}, + .VMLS_LANE = { 1410, 6}, + .VMULL_LANE = { 1416, 4}, + .VMLAL_LANE = { 1420, 4}, + .VMLSL_LANE = { 1424, 4}, + .VQDMULL_LANE = { 1428, 2}, + .VQDMLAL_LANE = { 1430, 2}, + .VQDMLSL_LANE = { 1432, 2}, + .VFMA_LANE = { 1434, 2}, + .VFMS_LANE = { 1436, 2}, + .VQRDMLAH_LANE = { 1438, 4}, + .VQRDMLSH_LANE = { 1442, 4}, + .VQABS = { 1446, 1}, + .VQNEG = { 1447, 1}, + .VMOVX = { 1448, 1}, + .VINS = { 1449, 1}, + .VLDRB_GATHER = { 1450, 1}, + .VLDRH_GATHER = { 1451, 1}, + .VLDRW_GATHER = { 1452, 1}, + .VLDRD_GATHER = { 1453, 1}, + .VSTRB_SCATTER = { 1454, 1}, + .VSTRH_SCATTER = { 1455, 1}, + .VSTRW_SCATTER = { 1456, 1}, + .VSTRD_SCATTER = { 1457, 1}, + .VCEQ_Z = { 1458, 4}, + .VCGE_Z = { 1462, 4}, + .VCGT_Z = { 1466, 4}, + .VCLE_Z = { 1470, 4}, + .VCLT_Z = { 1474, 4}, + .VLD2R = { 1478, 1}, + .VLD3R = { 1479, 1}, + .VLD4R = { 1480, 1}, + .VLD1_LANE = { 1481, 3}, + .VLD2_LANE = { 1484, 3}, + .VLD3_LANE = { 1487, 3}, + .VLD4_LANE = { 1490, 3}, + .VST1_LANE = { 1493, 3}, + .VST2_LANE = { 1496, 3}, + .VST3_LANE = { 1499, 3}, + .VST4_LANE = { 1502, 3}, + .VCVT_FIXED = { 1505, 10}, + .IT = { 1515, 1}, + .TT = { 1516, 1}, + .TTT = { 1517, 1}, + .TTA = { 1518, 1}, + .TTAT = { 1519, 1}, + .SG = { 1520, 1}, + .BXNS = { 1521, 1}, + .BLXNS = { 1522, 1}, + .PAC = { 1523, 1}, + .PACBTI = { 1524, 1}, + .AUT = { 1525, 1}, + .AUTG = { 1526, 1}, + .BTI = { 1527, 1}, + .WLS = { 1528, 1}, + .WLSTP = { 1529, 1}, + .DLS = { 1530, 1}, + .DLSTP = { 1531, 1}, + .LE = { 1532, 1}, + .LETP = { 1533, 1}, + .LCTP = { 1534, 1}, + .BF = { 1535, 0}, + .BFI_BR = { 1535, 0}, + .BFL = { 1535, 0}, + .BFLX = { 1535, 0}, + .BFCSEL = { 1535, 0}, + .CX1 = { 1535, 1}, + .CX1A = { 1536, 1}, + .CX1D = { 1537, 1}, + .CX1DA = { 1538, 1}, + .CX2 = { 1539, 1}, + .CX2A = { 1540, 1}, + .CX2D = { 1541, 1}, + .CX2DA = { 1542, 1}, + .CX3 = { 1543, 1}, + .CX3A = { 1544, 1}, + .CX3D = { 1545, 1}, + .CX3DA = { 1546, 1}, + .VCX1 = { 1547, 2}, + .VCX1A = { 1549, 2}, + .VCX2 = { 1551, 2}, + .VCX2A = { 1553, 2}, + .VCX3 = { 1555, 2}, + .VCX3A = { 1557, 2}, + .VPT = { 1559, 1}, + .VPST = { 1560, 1}, + .VPSEL = { 1561, 1}, + .VPNOT = { 1562, 1}, + .VCTP = { 1563, 1}, + .VADDV = { 1564, 1}, + .VADDVA = { 1565, 1}, + .VADDLV = { 1566, 1}, + .VADDLVA = { 1567, 1}, + .VMAXV = { 1568, 1}, + .VMAXAV = { 1569, 1}, + .VMINV = { 1570, 1}, + .VMINAV = { 1571, 1}, + .VMAXNMV = { 1572, 1}, + .VMAXNMAV = { 1573, 1}, + .VMINNMV = { 1574, 1}, + .VMINNMAV = { 1575, 1}, + .VABAV = { 1576, 1}, + .VMLADAV = { 1577, 1}, + .VMLADAVA = { 1578, 1}, + .VMLADAVX = { 1579, 1}, + .VMLADAVAX = { 1580, 1}, + .VMLALDAV = { 1581, 1}, + .VMLALDAVA = { 1582, 1}, + .VMLALDAVX = { 1583, 1}, + .VMLALDAVAX = { 1584, 1}, + .VMLSDAV = { 1585, 1}, + .VMLSDAVA = { 1586, 1}, + .VMLSDAVX = { 1587, 1}, + .VMLSDAVAX = { 1588, 1}, + .VMLSLDAV = { 1589, 1}, + .VMLSLDAVA = { 1590, 1}, + .VMLSLDAVX = { 1591, 1}, + .VMLSLDAVAX = { 1592, 1}, + .VRMLALDAVH = { 1593, 1}, + .VRMLALDAVHA = { 1594, 1}, + .VRMLALDAVHX = { 1595, 1}, + .VRMLALDAVHAX = { 1596, 1}, + .VRMLSLDAVH = { 1597, 1}, + .VRMLSLDAVHA = { 1598, 1}, + .VRMLSLDAVHX = { 1599, 1}, + .VRMLSLDAVHAX = { 1600, 1}, + .VMLAV = { 1601, 1}, + .VMLAVA = { 1602, 1}, + .VMLSV = { 1603, 0}, + .VMLSVA = { 1603, 0}, + .VCMUL = { 1603, 1}, + .VHCADD = { 1604, 1}, + .VBRSR = { 1605, 1}, + .VSHLC = { 1606, 1}, + .VRSHL_MVE = { 1607, 0}, + .VDDUP = { 1607, 1}, + .VIDUP = { 1608, 1}, + .VDWDUP = { 1609, 1}, + .VIWDUP = { 1610, 1}, + .VMOVNB = { 1611, 1}, + .VMOVNT = { 1612, 1}, + .VQMOVNB = { 1613, 1}, + .VQMOVNT = { 1614, 1}, + .VQMOVUNB = { 1615, 1}, + .VQMOVUNT = { 1616, 1}, + .VSHLLB = { 1617, 1}, + .VSHLLT = { 1618, 1}, + .VMULLB = { 1619, 1}, + .VMULLT = { 1620, 1}, + .VMLALB = { 1621, 1}, + .VMLALT = { 1622, 1}, + .VMLSLB = { 1623, 1}, + .VMLSLT = { 1624, 1}, + .VSHRNB = { 1625, 1}, + .VSHRNT = { 1626, 1}, + .VRSHRNB = { 1627, 1}, + .VRSHRNT = { 1628, 1}, + .VQSHRNB = { 1629, 1}, + .VQSHRNT = { 1630, 1}, + .VQRSHRNB = { 1631, 1}, + .VQRSHRNT = { 1632, 1}, + .VQSHRUNB = { 1633, 1}, + .VQSHRUNT = { 1634, 1}, + .VQRSHRUNB = { 1635, 1}, + .VQRSHRUNT = { 1636, 1}, + .VMOV_Q_R = { 1637, 1}, + .VMOV_R_Q = { 1638, 1}, + .VMOV_2GPR_Q = { 1639, 1}, + .VQDMLADH = { 1640, 1}, + .VQDMLADHX = { 1641, 1}, + .VQDMLSDH = { 1642, 1}, + .VQDMLSDHX = { 1643, 1}, + .VQRDMLADH = { 1644, 1}, + .VQRDMLADHX = { 1645, 1}, + .VQRDMLSDH = { 1646, 1}, + .VQRDMLSDHX = { 1647, 1}, + .VPRINT = { 1648, 0}, + .VHCADD_SAT = { 1648, 0}, + .VCMLA_MVE = { 1648, 0}, + .VLDRB = { 1648, 1}, + .VLDRH = { 1649, 1}, + .VLDRW = { 1650, 1}, + .VLDRD = { 1651, 1}, + .VSTRB = { 1652, 1}, + .VSTRH = { 1653, 1}, + .VSTRW = { 1654, 1}, + .VSTRD = { 1655, 1}, + .VLD20 = { 1656, 1}, + .VLD21 = { 1657, 1}, + .VLD40 = { 1658, 1}, + .VLD41 = { 1659, 1}, + .VLD42 = { 1660, 1}, + .VLD43 = { 1661, 1}, + .VST20 = { 1662, 1}, + .VST21 = { 1663, 1}, + .VST40 = { 1664, 1}, + .VST41 = { 1665, 1}, + .VST42 = { 1666, 1}, + .VST43 = { 1667, 1}, + ._COUNT = { 1668, 0}, } diff --git a/core/rexcode/arm32/tables/arm32.bucket_list.bin b/core/rexcode/arm32/tables/arm32.bucket_list.bin index 6dbfa9705..479af5cda 100644 Binary files a/core/rexcode/arm32/tables/arm32.bucket_list.bin and b/core/rexcode/arm32/tables/arm32.bucket_list.bin differ diff --git a/core/rexcode/arm32/tables/arm32.encode_forms.bin b/core/rexcode/arm32/tables/arm32.encode_forms.bin index b58d2aa81..47e1b4081 100644 Binary files a/core/rexcode/arm32/tables/arm32.encode_forms.bin and b/core/rexcode/arm32/tables/arm32.encode_forms.bin differ diff --git a/core/rexcode/arm32/tables/arm32.encode_runs.bin b/core/rexcode/arm32/tables/arm32.encode_runs.bin index e05531c4e..5ef14f3ec 100644 Binary files a/core/rexcode/arm32/tables/arm32.encode_runs.bin and b/core/rexcode/arm32/tables/arm32.encode_runs.bin differ diff --git a/core/rexcode/arm32/tables/arm32.entries.bin b/core/rexcode/arm32/tables/arm32.entries.bin index 40bbc34be..d5342fc9e 100644 Binary files a/core/rexcode/arm32/tables/arm32.entries.bin and b/core/rexcode/arm32/tables/arm32.entries.bin differ diff --git a/core/rexcode/arm32/tables/arm32.form_idx.bin b/core/rexcode/arm32/tables/arm32.form_idx.bin index baeca385f..4234fbbfe 100644 Binary files a/core/rexcode/arm32/tables/arm32.form_idx.bin and b/core/rexcode/arm32/tables/arm32.form_idx.bin differ diff --git a/core/rexcode/arm32/tables/arm32.idx_a32.bin b/core/rexcode/arm32/tables/arm32.idx_a32.bin index fe66ce0d3..09fa9d97c 100644 Binary files a/core/rexcode/arm32/tables/arm32.idx_a32.bin and b/core/rexcode/arm32/tables/arm32.idx_a32.bin differ diff --git a/core/rexcode/arm32/tables/arm32.idx_t16.bin b/core/rexcode/arm32/tables/arm32.idx_t16.bin index 287a5b81d..fe5682caa 100644 Binary files a/core/rexcode/arm32/tables/arm32.idx_t16.bin and b/core/rexcode/arm32/tables/arm32.idx_t16.bin differ diff --git a/core/rexcode/arm32/tables/arm32.idx_t32.bin b/core/rexcode/arm32/tables/arm32.idx_t32.bin index 209e42015..447747104 100644 Binary files a/core/rexcode/arm32/tables/arm32.idx_t32.bin and b/core/rexcode/arm32/tables/arm32.idx_t32.bin differ diff --git a/core/rexcode/arm32/tables/arm32.idx_t32_sub.bin b/core/rexcode/arm32/tables/arm32.idx_t32_sub.bin index 00c5b7bfe..9b39a5698 100644 Binary files a/core/rexcode/arm32/tables/arm32.idx_t32_sub.bin and b/core/rexcode/arm32/tables/arm32.idx_t32_sub.bin differ