diff --git a/core/rexcode/isa/arm32/decoder.odin b/core/rexcode/isa/arm32/decoder.odin index e1875314a..f2dd66d71 100644 --- a/core/rexcode/isa/arm32/decoder.odin +++ b/core/rexcode/isa/arm32/decoder.odin @@ -437,7 +437,7 @@ unpack_operand :: proc(word: u32, enc: Operand_Encoding, ot: Operand_Type) -> Op case .CPS_IFLAGS: return op_imm(i64(word & 0x1FF)) case .PSR_FIELD_MASK: return op_imm(i64(decode_psr_field(word))) case .SYSM_FIELD: return op_imm(i64(word & 0xFF)) - case .COPROC_NUM_FIELD: return op_imm(i64((word >> 8) & 0xF)) + case .COPROC_NUM_FIELD: return op_reg(Register(REG_COPROC_NUM | u16((word >> 8) & 0xF))) case .COPROC_OPC1_FIELD: return op_imm(i64((word >> 20) & 0xF)) case .COPROC_OPC2_FIELD: return op_imm(i64((word >> 5) & 0x7)) case .COPROC_CRN_FIELD: return op_reg(Register(REG_COPROC | u16((word >> 16) & 0xF))) @@ -508,6 +508,11 @@ unpack_operand :: proc(word: u32, enc: Operand_Encoding, ot: Operand_Type) -> Op op := op_dpr_lane(Register(REG_DPR | u16(n)), u8((word >> shift) & mask)) op.list = {count = count, stride = 1} return op + case .NEON_VDUP_LANE_8, .NEON_VDUP_LANE_16, .NEON_VDUP_LANE_32: + imm4 := (word >> 16) & 0xF + shift: u32 = enc == .NEON_VDUP_LANE_8 ? 1 : enc == .NEON_VDUP_LANE_16 ? 2 : 3 + return op_dpr_lane(Register(REG_DPR | u16(((word >> 5) & 1) << 4 | (word & 0xF))), + u8(imm4 >> shift)) case .NEON_VM_SCALAR_16: return op_dpr_lane(Register(REG_DPR | u16(word & 0x7)), u8(((word >> 5) & 1) << 1 | ((word >> 3) & 1))) diff --git a/core/rexcode/isa/arm32/encoder.odin b/core/rexcode/isa/arm32/encoder.odin index a0ab5a4b4..eb03f55ca 100644 --- a/core/rexcode/isa/arm32/encoder.odin +++ b/core/rexcode/isa/arm32/encoder.odin @@ -293,6 +293,9 @@ operand_matches_inline :: #force_inline proc "contextless" (op: ^Operand, ot: Op #partial switch enc { case .NEON_VM_SCALAR_16: return op.has_lane && reg_hw(op.reg) < 8 && op.lane < 4 case .NEON_VM_SCALAR_32: return op.has_lane && reg_hw(op.reg) < 16 && op.lane < 2 + case .NEON_VDUP_LANE_8: return op.has_lane && op.lane < 8 + case .NEON_VDUP_LANE_16: return op.has_lane && op.lane < 4 + case .NEON_VDUP_LANE_32: return op.has_lane && op.lane < 2 } return true case .QPR_ELEM: return op.kind == .REGISTER && is_qpr(op.reg) @@ -549,6 +552,11 @@ pack_operand_inline :: #force_inline proc( n := u32(reg_hw(op.reg)) & 0x1F shift, mask, _ := neon_lane_shape(enc) return ((n >> 4) & 1) << 22 | (n & 0xF) << 12 | (u32(op.lane) & mask) << shift + case .NEON_VDUP_LANE_8, .NEON_VDUP_LANE_16, .NEON_VDUP_LANE_32: + n := u32(reg_hw(op.reg)) & 0x1F + shift: u32 = enc == .NEON_VDUP_LANE_8 ? 1 : enc == .NEON_VDUP_LANE_16 ? 2 : 3 + // The marker bit below the index is a fixed bit of the form. + return ((n >> 4) & 1) << 5 | (n & 0xF) | (u32(op.lane) << shift) << 16 case .NEON_VM_SCALAR_16: n := u32(reg_hw(op.reg)) & 0x7 idx := u32(op.lane) & 0x3 @@ -618,7 +626,7 @@ pack_operand_inline :: #force_inline proc( return ((u32(reg_hw(m.base)) & 0xF) << 16) | (u32(reg_hw(m.index)) & 0xF) // ---- Coprocessor ------------------------------------------------------- - case .COPROC_NUM_FIELD: return (u32(op.immediate) & 0xF) << 8 + case .COPROC_NUM_FIELD: return (u32(reg_hw(op.reg)) & 0xF) << 8 case .COPROC_OPC1_FIELD: return (u32(op.immediate) & 0xF) << 20 case .COPROC_OPC2_FIELD: return (u32(op.immediate) & 0x7) << 5 case .COPROC_CRN_FIELD: return (u32(reg_hw(op.reg)) & 0xF) << 16 diff --git a/core/rexcode/isa/arm32/encoding_types.odin b/core/rexcode/isa/arm32/encoding_types.odin index 5a0dc425d..89f4e5058 100644 --- a/core/rexcode/isa/arm32/encoding_types.odin +++ b/core/rexcode/isa/arm32/encoding_types.odin @@ -355,6 +355,10 @@ Operand_Encoding :: enum u8 { // 2:0, so D0..D7, and the lane from M:bit3; 32-bit takes Vm from bits // 3:0, so D0..D15, and the lane from M alone. NEON_VM_SCALAR_16, NEON_VM_SCALAR_32, + // VDUP from a lane packs the element size and the lane index into one + // four-bit field: `xxx1` is a byte lane, `xx10` a halfword, `x100` a + // word, and the bits above the marker are the index. + NEON_VDUP_LANE_8, NEON_VDUP_LANE_16, NEON_VDUP_LANE_32, // NEON structure load/store lists (VLD1-4 / VST1-4). Unlike VLDM's list, // the register count is part of the form's type field at bits 11:8, so the // encoding writes only Vd; how many registers -- and whether the run steps diff --git a/core/rexcode/isa/arm32/printer.odin b/core/rexcode/isa/arm32/printer.odin index ff21c8506..760f40e1b 100644 --- a/core/rexcode/isa/arm32/printer.odin +++ b/core/rexcode/isa/arm32/printer.odin @@ -501,6 +501,8 @@ write_register :: proc(sb: ^strings.Builder, r: Register, uppercase: bool = fals } case REG_COPROC: fmt.sbprintf(sb, "c%d", hw) + case REG_COPROC_NUM: + fmt.sbprintf(sb, "p%d", hw) case REG_ENDIAN: strings.write_string(sb, hw == 0 ? "le" : "be") case: diff --git a/core/rexcode/isa/arm32/registers.odin b/core/rexcode/isa/arm32/registers.odin index a366e7162..eb90035c6 100644 --- a/core/rexcode/isa/arm32/registers.odin +++ b/core/rexcode/isa/arm32/registers.odin @@ -38,6 +38,9 @@ REG_COPROC :: u16(0x8000) // SETEND names its argument `le` or `be`. That is a bare token in the syntax, // which is what the special-register classes above already model. REG_ENDIAN :: u16(0x9000) +// A coprocessor number is written `p15`, not as a plain number, and it is a +// different thing from the CRn/CRm registers REG_COPROC names. +REG_COPROC_NUM :: u16(0xA000) REG_CLASS_MASK :: u16(0xF000) REG_HW_MASK :: u16(0x0FFF) diff --git a/core/rexcode/isa/arm32/tablegen/encoding_table.odin b/core/rexcode/isa/arm32/tablegen/encoding_table.odin index 7169a675f..b32664858 100644 --- a/core/rexcode/isa/arm32/tablegen/encoding_table.odin +++ b/core/rexcode/isa/arm32/tablegen/encoding_table.odin @@ -1277,12 +1277,12 @@ ENCODING_TABLE := #partial [Mnemonic][]Encoding{ // ARMv8 CRC32 family // cond 0001 0 sz 0 Rn Rd 0000 0 0 1 0 0 Rm sz=00 byte / 01 half / 10 word // bit 9 selects CRC32 (0) vs CRC32C (1). - .CRC32B = { {.CRC32B, {.GPR, .GPR, .GPR, .NONE}, {.RD, .RN_A32, .RM_A32, .NONE}, 0x01000040, 0x0FF00FF0, .CRC32, .A32, {}, {}} }, - .CRC32H = { {.CRC32H, {.GPR, .GPR, .GPR, .NONE}, {.RD, .RN_A32, .RM_A32, .NONE}, 0x01200040, 0x0FF00FF0, .CRC32, .A32, {}, {}} }, - .CRC32W = { {.CRC32W, {.GPR, .GPR, .GPR, .NONE}, {.RD, .RN_A32, .RM_A32, .NONE}, 0x01400040, 0x0FF00FF0, .CRC32, .A32, {}, {}} }, - .CRC32CB = { {.CRC32CB, {.GPR, .GPR, .GPR, .NONE}, {.RD, .RN_A32, .RM_A32, .NONE}, 0x01000240, 0x0FF00FF0, .CRC32, .A32, {}, {}} }, - .CRC32CH = { {.CRC32CH, {.GPR, .GPR, .GPR, .NONE}, {.RD, .RN_A32, .RM_A32, .NONE}, 0x01200240, 0x0FF00FF0, .CRC32, .A32, {}, {}} }, - .CRC32CW = { {.CRC32CW, {.GPR, .GPR, .GPR, .NONE}, {.RD, .RN_A32, .RM_A32, .NONE}, 0x01400240, 0x0FF00FF0, .CRC32, .A32, {}, {}} }, + .CRC32B = { {.CRC32B, {.GPR, .GPR, .GPR, .NONE}, {.RD, .RN_A32, .RM_A32, .NONE}, 0xE1000040, 0xFFF00FF0, .CRC32, .A32, {cond_in_28=false}, {}} }, + .CRC32H = { {.CRC32H, {.GPR, .GPR, .GPR, .NONE}, {.RD, .RN_A32, .RM_A32, .NONE}, 0xE1200040, 0xFFF00FF0, .CRC32, .A32, {cond_in_28=false}, {}} }, + .CRC32W = { {.CRC32W, {.GPR, .GPR, .GPR, .NONE}, {.RD, .RN_A32, .RM_A32, .NONE}, 0xE1400040, 0xFFF00FF0, .CRC32, .A32, {cond_in_28=false}, {}} }, + .CRC32CB = { {.CRC32CB, {.GPR, .GPR, .GPR, .NONE}, {.RD, .RN_A32, .RM_A32, .NONE}, 0xE1000240, 0xFFF00FF0, .CRC32, .A32, {cond_in_28=false}, {}} }, + .CRC32CH = { {.CRC32CH, {.GPR, .GPR, .GPR, .NONE}, {.RD, .RN_A32, .RM_A32, .NONE}, 0xE1200240, 0xFFF00FF0, .CRC32, .A32, {cond_in_28=false}, {}} }, + .CRC32CW = { {.CRC32CW, {.GPR, .GPR, .GPR, .NONE}, {.RD, .RN_A32, .RM_A32, .NONE}, 0xE1400240, 0xFFF00FF0, .CRC32, .A32, {cond_in_28=false}, {}} }, // ========================================================================= @@ -2319,8 +2319,12 @@ ENCODING_TABLE := #partial [Mnemonic][]Encoding{ {.VDUP, {.DPR, .GPR, .NONE, .NONE}, {.VN_D, .RT_A32, .NONE, .NONE}, 0x0EC00B10, 0x0FF00FD0, .NEON, .A32, {}, {.SZ8, .NONE}}, {.VDUP, {.QPR, .GPR, .NONE, .NONE}, {.VN_Q, .RT_A32, .NONE, .NONE}, 0x0EE00B10, 0x0FF00FD0, .NEON, .A32, {}, {.SZ8, .NONE}}, // VDUP from vector lane (.D form): 1111 0011 1011 imm4 Vd 1100 0 Q M 0 Vm - {.VDUP, {.DPR, .DPR_ELEM, .NONE, .NONE}, {.VD_D, .NEON_VM_SCALAR_32, .NONE, .NONE}, 0xF3B00C00, 0xFFB00FD0, .NEON, .A32, {cond_in_28=false}, {}}, - {.VDUP, {.QPR, .DPR_ELEM, .NONE, .NONE}, {.VD_Q, .NEON_VM_SCALAR_32, .NONE, .NONE}, 0xF3B00C40, 0xFFB00FD0, .NEON, .A32, {cond_in_28=false}, {}}, + {.VDUP, {.DPR, .DPR_ELEM, .NONE, .NONE}, {.VD_D, .NEON_VDUP_LANE_8, .NONE, .NONE}, 0xF3B10C00, 0xFFB10FD0, .NEON, .A32, {cond_in_28=false}, {.SZ8, .NONE}}, + {.VDUP, {.QPR, .DPR_ELEM, .NONE, .NONE}, {.VD_Q, .NEON_VDUP_LANE_8, .NONE, .NONE}, 0xF3B10C40, 0xFFB10FD0, .NEON, .A32, {cond_in_28=false}, {.SZ8, .NONE}}, + {.VDUP, {.DPR, .DPR_ELEM, .NONE, .NONE}, {.VD_D, .NEON_VDUP_LANE_16, .NONE, .NONE}, 0xF3B20C00, 0xFFB30FD0, .NEON, .A32, {cond_in_28=false}, {.SZ16, .NONE}}, + {.VDUP, {.QPR, .DPR_ELEM, .NONE, .NONE}, {.VD_Q, .NEON_VDUP_LANE_16, .NONE, .NONE}, 0xF3B20C40, 0xFFB30FD0, .NEON, .A32, {cond_in_28=false}, {.SZ16, .NONE}}, + {.VDUP, {.DPR, .DPR_ELEM, .NONE, .NONE}, {.VD_D, .NEON_VDUP_LANE_32, .NONE, .NONE}, 0xF3B40C00, 0xFFB70FD0, .NEON, .A32, {cond_in_28=false}, {.SZ32, .NONE}}, + {.VDUP, {.QPR, .DPR_ELEM, .NONE, .NONE}, {.VD_Q, .NEON_VDUP_LANE_32, .NONE, .NONE}, 0xF3B40C40, 0xFFB70FD0, .NEON, .A32, {cond_in_28=false}, {.SZ32, .NONE}}, // MVE VDUP Qd, Rt {.VDUP, {.QPR, .GPR, .NONE, .NONE}, {.VD_Q, .RT_T32, .NONE, .NONE}, 0xEE800B10, 0xFF900F5F, .MVE_INT, .T32, {thumb32=true, cond_in_28=false}, {.SZ32, .NONE}}, }, diff --git a/core/rexcode/isa/arm32/tablegen/generated/decode_tables.odin b/core/rexcode/isa/arm32/tablegen/generated/decode_tables.odin index 4d088fea0..f9b0b7bda 100644 --- a/core/rexcode/isa/arm32/tablegen/generated/decode_tables.odin +++ b/core/rexcode/isa/arm32/tablegen/generated/decode_tables.odin @@ -8,7 +8,7 @@ package rexcode_arm32_generated import lib "../.." @(rodata) -DECODE_ENTRIES := [1722]lib.Decode_Entry{ +DECODE_ENTRIES := [1726]lib.Decode_Entry{ { .MUL, {.GPR,.GPR,.GPR,.NONE}, {.RN_A32,.RM_A32,.RS_A32,.NONE}, 0x00000090, 0x0FE000F0, .BASE, .A32, {}, {.NONE,.NONE} }, { .AND, {.GPR,.GPR,.GPR_RSR,.NONE}, {.RD,.RN_A32,.RM_A32,.NONE}, 0x00000010, 0x0FE00090, .BASE, .A32, {}, {.NONE,.NONE} }, { .AND, {.GPR,.GPR,.GPR_SHIFTED,.NONE}, {.RD,.RN_A32,.RM_A32,.NONE}, 0x00000000, 0x0FE00010, .BASE, .A32, {}, {.NONE,.NONE} }, @@ -68,10 +68,10 @@ DECODE_ENTRIES := [1722]lib.Decode_Entry{ { .SETEND, {.IMM_ENDIAN,.NONE,.NONE,.NONE}, {.SETEND_ENDIAN,.NONE,.NONE,.NONE}, 0xF1010000, 0xFFFFFDFF, .V6, .A32, {deprecated=true}, {.NONE,.NONE} }, { .MRS, {.GPR,.PSR_FIELD,.NONE,.NONE}, {.RD,.MRS_SPEC_REG,.NONE,.NONE}, 0x010F0000, 0x0FBF0FFF, .BASE, .A32, {}, {.NONE,.NONE} }, { .CPS, {.IMM_IFLAGS,.NONE,.NONE,.NONE}, {.CPS_IFLAGS,.NONE,.NONE,.NONE}, 0xF1000000, 0xFFF1FE20, .V6, .A32, {}, {.NONE,.NONE} }, + { .CRC32B, {.GPR,.GPR,.GPR,.NONE}, {.RD,.RN_A32,.RM_A32,.NONE}, 0xE1000040, 0xFFF00FF0, .CRC32, .A32, {}, {.NONE,.NONE} }, + { .CRC32CB, {.GPR,.GPR,.GPR,.NONE}, {.RD,.RN_A32,.RM_A32,.NONE}, 0xE1000240, 0xFFF00FF0, .CRC32, .A32, {}, {.NONE,.NONE} }, { .HLT, {.IMM,.NONE,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xE1000070, 0xFFF000F0, .V8, .A32, {}, {.NONE,.NONE} }, { .SWP, {.GPR,.GPR,.GPR,.NONE}, {.RT_A32,.RM_A32,.RN_A32,.NONE}, 0x01000090, 0x0FF00FF0, .BASE, .A32, {deprecated=true}, {.NONE,.NONE} }, - { .CRC32B, {.GPR,.GPR,.GPR,.NONE}, {.RD,.RN_A32,.RM_A32,.NONE}, 0x01000040, 0x0FF00FF0, .CRC32, .A32, {}, {.NONE,.NONE} }, - { .CRC32CB, {.GPR,.GPR,.GPR,.NONE}, {.RD,.RN_A32,.RM_A32,.NONE}, 0x01000240, 0x0FF00FF0, .CRC32, .A32, {}, {.NONE,.NONE} }, { .STRH, {.GPR,.MEM,.NONE,.NONE}, {.RT_A32,.MEM_REG_OFFSET,.NONE,.NONE}, 0x010000B0, 0x0F700FF0, .BASE, .A32, {}, {.NONE,.NONE} }, { .LDRD, {.GPR,.GPR,.MEM,.NONE}, {.RT_A32,.RT2_A32_PAIR,.MEM_REG_OFFSET,.NONE}, 0x010000D0, 0x0F700FF0, .V5TE, .A32, {}, {.NONE,.NONE} }, { .STRD, {.GPR,.GPR,.MEM,.NONE}, {.RT_A32,.RT2_A32_PAIR,.MEM_REG_OFFSET,.NONE}, 0x010000F0, 0x0F700FF0, .V5TE, .A32, {}, {.NONE,.NONE} }, @@ -89,21 +89,21 @@ DECODE_ENTRIES := [1722]lib.Decode_Entry{ { .BX, {.GPR,.NONE,.NONE,.NONE}, {.RM_A32,.NONE,.NONE,.NONE}, 0x012FFF10, 0x0FFFFFF0, .BASE, .A32, {branch=true, writes_pc=true}, {.NONE,.NONE} }, { .BLX, {.GPR,.NONE,.NONE,.NONE}, {.RM_A32,.NONE,.NONE,.NONE}, 0x012FFF30, 0x0FFFFFF0, .V5T, .A32, {branch=true, writes_pc=true}, {.NONE,.NONE} }, { .BXJ, {.GPR,.NONE,.NONE,.NONE}, {.RM_A32,.NONE,.NONE,.NONE}, 0x012FFF20, 0x0FFFFFF0, .V5TEJ, .A32, {branch=true, writes_pc=true, deprecated=true}, {.NONE,.NONE} }, + { .CRC32H, {.GPR,.GPR,.GPR,.NONE}, {.RD,.RN_A32,.RM_A32,.NONE}, 0xE1200040, 0xFFF00FF0, .CRC32, .A32, {}, {.NONE,.NONE} }, + { .CRC32CH, {.GPR,.GPR,.GPR,.NONE}, {.RD,.RN_A32,.RM_A32,.NONE}, 0xE1200240, 0xFFF00FF0, .CRC32, .A32, {}, {.NONE,.NONE} }, { .MSR, {.PSR_FIELD,.GPR,.NONE,.NONE}, {.PSR_FIELD_MASK,.RM_A32,.NONE,.NONE}, 0x0120F000, 0x0FB0FFF0, .BASE, .A32, {}, {.NONE,.NONE} }, { .SMULWB, {.GPR,.GPR,.GPR,.NONE}, {.RN_A32,.RM_A32,.RS_A32,.NONE}, 0x012000A0, 0x0FF0F0F0, .V5TE, .A32, {}, {.NONE,.NONE} }, { .SMULWT, {.GPR,.GPR,.GPR,.NONE}, {.RN_A32,.RM_A32,.RS_A32,.NONE}, 0x012000E0, 0x0FF0F0F0, .V5TE, .A32, {}, {.NONE,.NONE} }, { .BKPT, {.IMM,.NONE,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xE1200070, 0xFFF000F0, .V5T, .A32, {}, {.NONE,.NONE} }, - { .CRC32H, {.GPR,.GPR,.GPR,.NONE}, {.RD,.RN_A32,.RM_A32,.NONE}, 0x01200040, 0x0FF00FF0, .CRC32, .A32, {}, {.NONE,.NONE} }, - { .CRC32CH, {.GPR,.GPR,.GPR,.NONE}, {.RD,.RN_A32,.RM_A32,.NONE}, 0x01200240, 0x0FF00FF0, .CRC32, .A32, {}, {.NONE,.NONE} }, { .QSUB, {.GPR,.GPR,.GPR,.NONE}, {.RD,.RM_A32,.RN_A32,.NONE}, 0x01200050, 0x0FF000F0, .V5TE, .A32, {}, {.NONE,.NONE} }, { .SMLAWB, {.GPR,.GPR,.GPR,.GPR}, {.RN_A32,.RM_A32,.RS_A32,.RD}, 0x01200080, 0x0FF000F0, .V5TE, .A32, {}, {.NONE,.NONE} }, { .SMLAWT, {.GPR,.GPR,.GPR,.GPR}, {.RN_A32,.RM_A32,.RS_A32,.RD}, 0x012000C0, 0x0FF000F0, .V5TE, .A32, {}, {.NONE,.NONE} }, { .TEQ, {.GPR,.GPR_RSR,.NONE,.NONE}, {.RN_A32,.RM_A32,.NONE,.NONE}, 0x01300010, 0x0FF0F090, .BASE, .A32, {}, {.NONE,.NONE} }, { .TEQ, {.GPR,.GPR_SHIFTED,.NONE,.NONE}, {.RN_A32,.RM_A32,.NONE,.NONE}, 0x01300000, 0x0FF0F010, .BASE, .A32, {}, {.NONE,.NONE} }, + { .CRC32W, {.GPR,.GPR,.GPR,.NONE}, {.RD,.RN_A32,.RM_A32,.NONE}, 0xE1400040, 0xFFF00FF0, .CRC32, .A32, {}, {.NONE,.NONE} }, + { .CRC32CW, {.GPR,.GPR,.GPR,.NONE}, {.RD,.RN_A32,.RM_A32,.NONE}, 0xE1400240, 0xFFF00FF0, .CRC32, .A32, {}, {.NONE,.NONE} }, { .HVC, {.IMM,.NONE,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xE1400070, 0xFFF000F0, .V7VE, .A32, {}, {.NONE,.NONE} }, { .SWPB, {.GPR,.GPR,.GPR,.NONE}, {.RT_A32,.RM_A32,.RN_A32,.NONE}, 0x01400090, 0x0FF00FF0, .BASE, .A32, {deprecated=true}, {.NONE,.NONE} }, - { .CRC32W, {.GPR,.GPR,.GPR,.NONE}, {.RD,.RN_A32,.RM_A32,.NONE}, 0x01400040, 0x0FF00FF0, .CRC32, .A32, {}, {.NONE,.NONE} }, - { .CRC32CW, {.GPR,.GPR,.GPR,.NONE}, {.RD,.RN_A32,.RM_A32,.NONE}, 0x01400240, 0x0FF00FF0, .CRC32, .A32, {}, {.NONE,.NONE} }, { .QDADD, {.GPR,.GPR,.GPR,.NONE}, {.RD,.RM_A32,.RN_A32,.NONE}, 0x01400050, 0x0FF000F0, .V5TE, .A32, {}, {.NONE,.NONE} }, { .SMLALBB, {.GPR,.GPR,.GPR,.GPR}, {.RDLO_A32,.RDHI_A32,.RM_A32,.RS_A32}, 0x01400080, 0x0FF000F0, .V5TE, .A32, {}, {.NONE,.NONE} }, { .SMLALBT, {.GPR,.GPR,.GPR,.GPR}, {.RDLO_A32,.RDHI_A32,.RM_A32,.RS_A32}, 0x014000C0, 0x0FF000F0, .V5TE, .A32, {}, {.NONE,.NONE} }, @@ -186,8 +186,8 @@ DECODE_ENTRIES := [1722]lib.Decode_Entry{ { .VADD, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2000840, 0xFFB00F50, .NEON, .A32, {}, {.I8,.NONE} }, { .VADD, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2000D40, 0xFFB00F50, .NEON, .A32, {}, {.F32,.NONE} }, { .VMUL, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2000950, 0xFFB00F50, .NEON, .A32, {}, {.I8,.NONE} }, - { .VMLA, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2000940, 0xFFB00F50, .NEON, .A32, {}, {.I8,.NONE} }, { .VMLA, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2000D50, 0xFFB00F50, .NEON, .A32, {}, {.F32,.NONE} }, + { .VMLA, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2000940, 0xFFB00F50, .NEON, .A32, {}, {.I8,.NONE} }, { .VFMA, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2000C50, 0xFFB00F50, .NEON, .A32, {}, {.F32,.NONE} }, { .VHADD, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2000040, 0xFFB00F50, .NEON, .A32, {}, {.S8,.NONE} }, { .VHSUB, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2000240, 0xFFB00F50, .NEON, .A32, {}, {.S8,.NONE} }, @@ -212,11 +212,11 @@ DECODE_ENTRIES := [1722]lib.Decode_Entry{ { .VQSHL, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VM_Q,.VN_Q,.NONE}, 0xF2000450, 0xFFB00F50, .NEON, .A32, {}, {.S8,.NONE} }, { .VQRSHL, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VM_D,.VN_D,.NONE}, 0xF2000510, 0xFFB00F50, .NEON, .A32, {}, {.S8,.NONE} }, { .SHA1C, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2000C40, 0xFFB00F50, .CRYPTO, .A32, {}, {.SZ32,.NONE} }, - { .VADD, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2000D00, 0xFFB00F10, .NEON, .A32, {}, {.F32,.NONE} }, { .VADD, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2000800, 0xFFB00F10, .NEON, .A32, {}, {.I8,.NONE} }, + { .VADD, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2000D00, 0xFFB00F10, .NEON, .A32, {}, {.F32,.NONE} }, { .VMUL, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2000910, 0xFFB00F10, .NEON, .A32, {}, {.I8,.NONE} }, - { .VMLA, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2000900, 0xFFB00F10, .NEON, .A32, {}, {.I8,.NONE} }, { .VMLA, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2000D10, 0xFFB00F10, .NEON, .A32, {}, {.F32,.NONE} }, + { .VMLA, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2000900, 0xFFB00F10, .NEON, .A32, {}, {.I8,.NONE} }, { .VFMA, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2000C10, 0xFFB00F10, .NEON, .A32, {}, {.F32,.NONE} }, { .VHADD, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2000000, 0xFFB00F10, .NEON, .A32, {}, {.S8,.NONE} }, { .VHSUB, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2000200, 0xFFB00F10, .NEON, .A32, {}, {.S8,.NONE} }, @@ -230,8 +230,8 @@ DECODE_ENTRIES := [1722]lib.Decode_Entry{ { .VCEQ, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2000E00, 0xFFB00F10, .NEON, .A32, {}, {.F32,.NONE} }, { .VCGE, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2000310, 0xFFB00F10, .NEON, .A32, {}, {.S8,.NONE} }, { .VCGT, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2000300, 0xFFB00F10, .NEON, .A32, {}, {.S8,.NONE} }, - { .VMAX, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2000F00, 0xFFB00F10, .NEON, .A32, {}, {.F32,.NONE} }, { .VMAX, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2000600, 0xFFB00F10, .NEON, .A32, {}, {.S8,.NONE} }, + { .VMAX, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2000F00, 0xFFB00F10, .NEON, .A32, {}, {.F32,.NONE} }, { .VMIN, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2000610, 0xFFB00F10, .NEON, .A32, {}, {.S8,.NONE} }, { .VPMAX, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2000A00, 0xFFB00F10, .NEON, .A32, {}, {.S8,.NONE} }, { .VPMIN, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2000A10, 0xFFB00F10, .NEON, .A32, {}, {.S8,.NONE} }, @@ -283,8 +283,8 @@ DECODE_ENTRIES := [1722]lib.Decode_Entry{ { .VCEQ, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2100E00, 0xFFB00F10, .NEON_HALF_FP, .A32, {}, {.F16,.NONE} }, { .VCGE, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2100310, 0xFFB00F10, .NEON, .A32, {}, {.S16,.NONE} }, { .VCGT, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2100300, 0xFFB00F10, .NEON, .A32, {}, {.S16,.NONE} }, - { .VMAX, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2100F00, 0xFFB00F10, .NEON_HALF_FP, .A32, {}, {.F16,.NONE} }, { .VMAX, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2100600, 0xFFB00F10, .NEON, .A32, {}, {.S16,.NONE} }, + { .VMAX, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2100F00, 0xFFB00F10, .NEON_HALF_FP, .A32, {}, {.F16,.NONE} }, { .VMIN, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2100610, 0xFFB00F10, .NEON, .A32, {}, {.S16,.NONE} }, { .VPMAX, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2100A00, 0xFFB00F10, .NEON, .A32, {}, {.S16,.NONE} }, { .VPMIN, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2100A10, 0xFFB00F10, .NEON, .A32, {}, {.S16,.NONE} }, @@ -314,8 +314,8 @@ DECODE_ENTRIES := [1722]lib.Decode_Entry{ { .VCLE, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VM_D,.VN_D,.NONE}, 0xF2200310, 0xFFB00F50, .NEON, .A32, {}, {.S32,.NONE} }, { .VCLT, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VM_D,.VN_D,.NONE}, 0xF2200300, 0xFFB00F50, .NEON, .A32, {}, {.S32,.NONE} }, { .VMAX, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2200640, 0xFFB00F50, .NEON, .A32, {}, {.S32,.NONE} }, - { .VMIN, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2200650, 0xFFB00F50, .NEON, .A32, {}, {.S32,.NONE} }, { .VMIN, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2200F40, 0xFFB00F50, .NEON, .A32, {}, {.F32,.NONE} }, + { .VMIN, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2200650, 0xFFB00F50, .NEON, .A32, {}, {.S32,.NONE} }, { .VRSQRTS, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2200F50, 0xFFB00F50, .NEON, .A32, {}, {.F32,.NONE} }, { .VQRSHL, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VM_D,.VN_D,.NONE}, 0xF2200510, 0xFFB00F50, .NEON, .A32, {}, {.S32,.NONE} }, { .SHA1M, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF2200C40, 0xFFB00F50, .CRYPTO, .A32, {}, {.SZ32,.NONE} }, @@ -337,8 +337,8 @@ DECODE_ENTRIES := [1722]lib.Decode_Entry{ { .VCGE, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2200310, 0xFFB00F10, .NEON, .A32, {}, {.S32,.NONE} }, { .VCGT, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2200300, 0xFFB00F10, .NEON, .A32, {}, {.S32,.NONE} }, { .VMAX, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2200600, 0xFFB00F10, .NEON, .A32, {}, {.S32,.NONE} }, - { .VMIN, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2200F00, 0xFFB00F10, .NEON, .A32, {}, {.F32,.NONE} }, { .VMIN, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2200610, 0xFFB00F10, .NEON, .A32, {}, {.S32,.NONE} }, + { .VMIN, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2200F00, 0xFFB00F10, .NEON, .A32, {}, {.F32,.NONE} }, { .VPMAX, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2200A00, 0xFFB00F10, .NEON, .A32, {}, {.S32,.NONE} }, { .VPMIN, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2200A10, 0xFFB00F10, .NEON, .A32, {}, {.S32,.NONE} }, { .VPADD, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF2200B10, 0xFFB00F10, .NEON, .A32, {}, {.I32,.NONE} }, @@ -367,77 +367,77 @@ DECODE_ENTRIES := [1722]lib.Decode_Entry{ { .SUB, {.GPR,.GPR,.IMM_MOD,.NONE}, {.RD,.RN_A32,.A32_IMM_MOD,.NONE}, 0x02500000, 0x0FF00000, .BASE, .A32, {sets_flags=true}, {.NONE,.NONE} }, { .RSB, {.GPR,.GPR,.IMM_MOD,.NONE}, {.RD,.RN_A32,.A32_IMM_MOD,.NONE}, 0x02600000, 0x0FE00000, .BASE, .A32, {}, {.NONE,.NONE} }, { .RSB, {.GPR,.GPR,.IMM_MOD,.NONE}, {.RD,.RN_A32,.A32_IMM_MOD,.NONE}, 0x02700000, 0x0FF00000, .BASE, .A32, {sets_flags=true}, {.NONE,.NONE} }, - { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800410, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, - { .VMOV, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800050, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, - { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800E10, 0xFEB80FF0, .NEON, .A32, {}, {.I8,.NONE} }, - { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800210, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, { .VMOV, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800850, 0xFEB80FF0, .NEON, .A32, {}, {.I16,.NONE} }, - { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800610, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, - { .VMOV, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800450, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, { .VMOV, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800E70, 0xFEB80FF0, .NEON, .A32, {}, {.I64,.NONE} }, - { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800A10, 0xFEB80FF0, .NEON, .A32, {}, {.I16,.NONE} }, + { .VMOV, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800050, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, + { .VMOV, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800D50, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, + { .VMOV, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800F50, 0xFEB80FF0, .NEON, .A32, {}, {.F32,.NONE} }, + { .VMOV, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800E50, 0xFEB80FF0, .NEON, .A32, {}, {.I8,.NONE} }, + { .VMOV, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800450, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800810, 0xFEB80FF0, .NEON, .A32, {}, {.I16,.NONE} }, - { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800E30, 0xFEB80FF0, .NEON, .A32, {}, {.I64,.NONE} }, { .VMOV, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800C50, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, + { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800E10, 0xFEB80FF0, .NEON, .A32, {}, {.I8,.NONE} }, + { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800A10, 0xFEB80FF0, .NEON, .A32, {}, {.I16,.NONE} }, { .VMOV, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800250, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800C10, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, + { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800210, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, + { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800410, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, + { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800F10, 0xFEB80FF0, .NEON, .A32, {}, {.F32,.NONE} }, + { .VMOV, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800650, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, + { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800610, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800010, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800D10, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, - { .VMOV, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800E50, 0xFEB80FF0, .NEON, .A32, {}, {.I8,.NONE} }, - { .VMOV, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800D50, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, - { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800F10, 0xFEB80FF0, .NEON, .A32, {}, {.F32,.NONE} }, + { .VMOV, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800E30, 0xFEB80FF0, .NEON, .A32, {}, {.I64,.NONE} }, { .VMOV, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800A50, 0xFEB80FF0, .NEON, .A32, {}, {.I16,.NONE} }, - { .VMOV, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800F50, 0xFEB80FF0, .NEON, .A32, {}, {.F32,.NONE} }, - { .VMOV, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800650, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, { .VADDW, {.QPR,.QPR,.DPR,.NONE}, {.VD_Q,.VN_Q,.VM_D,.NONE}, 0xF2800100, 0xFFB11F50, .NEON, .A32, {}, {.S8,.NONE} }, { .VSUBW, {.QPR,.QPR,.DPR,.NONE}, {.VD_Q,.VN_Q,.VM_D,.NONE}, 0xF2800300, 0xFFB11F50, .NEON, .A32, {}, {.S8,.NONE} }, - { .VBIC, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800770, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, { .VBIC, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800B70, 0xFEB80FF0, .NEON, .A32, {}, {.I16,.NONE} }, - { .VBIC, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800930, 0xFEB80FF0, .NEON, .A32, {}, {.I16,.NONE} }, { .VBIC, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800330, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, - { .VBIC, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800970, 0xFEB80FF0, .NEON, .A32, {}, {.I16,.NONE} }, - { .VBIC, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800170, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, - { .VBIC, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800130, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, { .VBIC, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800370, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, - { .VBIC, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800570, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, - { .VBIC, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800B30, 0xFEB80FF0, .NEON, .A32, {}, {.I16,.NONE} }, + { .VBIC, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800770, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, + { .VBIC, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800130, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, { .VBIC, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800530, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, + { .VBIC, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800570, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, + { .VBIC, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800970, 0xFEB80FF0, .NEON, .A32, {}, {.I16,.NONE} }, + { .VBIC, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800930, 0xFEB80FF0, .NEON, .A32, {}, {.I16,.NONE} }, + { .VBIC, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800170, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, { .VBIC, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800730, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, - { .VORR, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800710, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, - { .VORR, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800150, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, - { .VORR, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800910, 0xFEB80FF0, .NEON, .A32, {}, {.I16,.NONE} }, - { .VORR, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800350, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, - { .VORR, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800510, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, - { .VORR, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800B50, 0xFEB80FF0, .NEON, .A32, {}, {.I16,.NONE} }, - { .VORR, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800750, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, - { .VORR, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800310, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, + { .VBIC, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800B30, 0xFEB80FF0, .NEON, .A32, {}, {.I16,.NONE} }, { .VORR, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800110, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, { .VORR, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800950, 0xFEB80FF0, .NEON, .A32, {}, {.I16,.NONE} }, + { .VORR, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800310, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, { .VORR, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800550, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, + { .VORR, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800B50, 0xFEB80FF0, .NEON, .A32, {}, {.I16,.NONE} }, + { .VORR, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800150, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, { .VORR, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800B10, 0xFEB80FF0, .NEON, .A32, {}, {.I16,.NONE} }, - { .VMVN, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800670, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, - { .VMVN, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800070, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, - { .VMVN, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800D70, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, - { .VMVN, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800270, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, - { .VMVN, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800A30, 0xFEB80FF0, .NEON, .A32, {}, {.I16,.NONE} }, + { .VORR, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800750, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, + { .VORR, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800350, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, + { .VORR, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800510, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, + { .VORR, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800910, 0xFEB80FF0, .NEON, .A32, {}, {.I16,.NONE} }, + { .VORR, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800710, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, { .VMVN, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800030, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, - { .VMVN, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800D30, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, - { .VMVN, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800C30, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, - { .VMVN, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800830, 0xFEB80FF0, .NEON, .A32, {}, {.I16,.NONE} }, - { .VMVN, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800430, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, - { .VMVN, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800630, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, - { .VMVN, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800C70, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, - { .VMVN, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800470, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, + { .VMVN, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800A30, 0xFEB80FF0, .NEON, .A32, {}, {.I16,.NONE} }, + { .VMVN, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800070, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, { .VMVN, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800230, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, - { .VMVN, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800A70, 0xFEB80FF0, .NEON, .A32, {}, {.I16,.NONE} }, + { .VMVN, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800C30, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, + { .VMVN, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800430, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, + { .VMVN, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800D70, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, + { .VMVN, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800D30, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, + { .VMVN, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800630, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, { .VMVN, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800870, 0xFEB80FF0, .NEON, .A32, {}, {.I16,.NONE} }, + { .VMVN, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800670, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, + { .VMVN, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800470, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, + { .VMVN, {.DPR,.IMM,.NONE,.NONE}, {.VD_D,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800830, 0xFEB80FF0, .NEON, .A32, {}, {.I16,.NONE} }, + { .VMVN, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800A70, 0xFEB80FF0, .NEON, .A32, {}, {.I16,.NONE} }, + { .VMVN, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800270, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, + { .VMVN, {.QPR,.IMM,.NONE,.NONE}, {.VD_Q,.NEON_IMM8_ABCDEFGH,.NONE,.NONE}, 0xF2800C70, 0xFEB80FF0, .NEON, .A32, {}, {.I32,.NONE} }, { .VMOVL, {.QPR,.DPR,.NONE,.NONE}, {.VD_Q,.VM_D,.NONE,.NONE}, 0xF2880A10, 0xFFB80FD0, .NEON, .A32, {}, {.S8,.NONE} }, { .VADDL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2800000, 0xFFB01F50, .NEON, .A32, {}, {.S8,.NONE} }, { .VSUBL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2800200, 0xFFB01F50, .NEON, .A32, {}, {.S8,.NONE} }, { .VABAL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2800500, 0xFFB01F50, .NEON, .A32, {}, {.S8,.NONE} }, { .VABDL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2800700, 0xFFB01F50, .NEON, .A32, {}, {.S8,.NONE} }, - { .VMULL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2800C00, 0xFFB00F50, .NEON, .A32, {}, {.S8,.NONE} }, { .VMULL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2800E00, 0xFFB00F50, .NEON, .A32, {}, {.P8,.NONE} }, + { .VMULL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2800C00, 0xFFB00F50, .NEON, .A32, {}, {.S8,.NONE} }, { .VMLAL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2800800, 0xFFB00F50, .NEON, .A32, {}, {.S8,.NONE} }, { .VMLSL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2800A00, 0xFFB00F50, .NEON, .A32, {}, {.S8,.NONE} }, { .VQSHRN, {.DPR,.QPR,.IMM,.NONE}, {.VD_D,.VM_Q,.NEON_SHIFT_IMM6,.NONE}, 0xF2800910, 0xFE800FD0, .NEON, .A32, {}, {.I16,.NONE} }, @@ -470,18 +470,18 @@ DECODE_ENTRIES := [1722]lib.Decode_Entry{ { .VMUL, {.DPR,.DPR,.DPR_ELEM,.NONE}, {.VD_D,.VN_D,.NEON_VM_SCALAR_16,.NONE}, 0xF2900840, 0xFFB00F50, .NEON, .A32, {}, {.I16,.NONE} }, { .VMLA, {.DPR,.DPR,.DPR_ELEM,.NONE}, {.VD_D,.VN_D,.NEON_VM_SCALAR_16,.NONE}, 0xF2900040, 0xFFB00F50, .NEON, .A32, {}, {.I16,.NONE} }, { .VMLS, {.DPR,.DPR,.DPR_ELEM,.NONE}, {.VD_D,.VN_D,.NEON_VM_SCALAR_16,.NONE}, 0xF2900440, 0xFFB00F50, .NEON, .A32, {}, {.I16,.NONE} }, - { .VMULL, {.QPR,.DPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_D,.NEON_VM_SCALAR_16,.NONE}, 0xF2900A40, 0xFFB00F50, .NEON, .A32, {}, {.S16,.NONE} }, { .VMULL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2900C00, 0xFFB00F50, .NEON, .A32, {}, {.S16,.NONE} }, - { .VMLAL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2900800, 0xFFB00F50, .NEON, .A32, {}, {.S16,.NONE} }, + { .VMULL, {.QPR,.DPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_D,.NEON_VM_SCALAR_16,.NONE}, 0xF2900A40, 0xFFB00F50, .NEON, .A32, {}, {.S16,.NONE} }, { .VMLAL, {.QPR,.DPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_D,.NEON_VM_SCALAR_16,.NONE}, 0xF2900240, 0xFFB00F50, .NEON, .A32, {}, {.S16,.NONE} }, + { .VMLAL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2900800, 0xFFB00F50, .NEON, .A32, {}, {.S16,.NONE} }, { .VMLSL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2900A00, 0xFFB00F50, .NEON, .A32, {}, {.S16,.NONE} }, { .VMLSL, {.QPR,.DPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_D,.NEON_VM_SCALAR_16,.NONE}, 0xF2900640, 0xFFB00F50, .NEON, .A32, {}, {.S16,.NONE} }, { .VQDMULL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2900D00, 0xFFB00F50, .NEON, .A32, {}, {.S16,.NONE} }, { .VQDMULL, {.QPR,.DPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_D,.NEON_VM_SCALAR_16,.NONE}, 0xF2900B40, 0xFFB00F50, .NEON, .A32, {}, {.S16,.NONE} }, - { .VQDMLAL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2900900, 0xFFB00F50, .NEON, .A32, {}, {.S16,.NONE} }, { .VQDMLAL, {.QPR,.DPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_D,.NEON_VM_SCALAR_16,.NONE}, 0xF2900340, 0xFFB00F50, .NEON, .A32, {}, {.S16,.NONE} }, - { .VQDMLSL, {.QPR,.DPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_D,.NEON_VM_SCALAR_16,.NONE}, 0xF2900740, 0xFFB00F50, .NEON, .A32, {}, {.S16,.NONE} }, + { .VQDMLAL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2900900, 0xFFB00F50, .NEON, .A32, {}, {.S16,.NONE} }, { .VQDMLSL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2900B00, 0xFFB00F50, .NEON, .A32, {}, {.S16,.NONE} }, + { .VQDMLSL, {.QPR,.DPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_D,.NEON_VM_SCALAR_16,.NONE}, 0xF2900740, 0xFFB00F50, .NEON, .A32, {}, {.S16,.NONE} }, { .VQDMULH, {.DPR,.DPR,.DPR_ELEM,.NONE}, {.VD_D,.VN_D,.NEON_VM_SCALAR16,.NONE}, 0xF2900C40, 0xFFB00F50, .NEON, .A32, {}, {.S16,.NONE} }, { .VQRDMULH, {.DPR,.DPR,.DPR_ELEM,.NONE}, {.VD_D,.VN_D,.NEON_VM_SCALAR16,.NONE}, 0xF2900D40, 0xFFB00F50, .NEON, .A32, {}, {.S16,.NONE} }, { .VQRDMLAH, {.DPR,.DPR,.DPR_ELEM,.NONE}, {.VD_D,.VN_D,.NEON_VM_SCALAR_16,.NONE}, 0xF2900E40, 0xFFB00F50, .V8, .A32, {}, {.S16,.NONE} }, @@ -497,18 +497,18 @@ DECODE_ENTRIES := [1722]lib.Decode_Entry{ { .VMUL, {.DPR,.DPR,.DPR_ELEM,.NONE}, {.VD_D,.VN_D,.NEON_VM_SCALAR_32,.NONE}, 0xF2A00840, 0xFFB00F50, .NEON, .A32, {}, {.I32,.NONE} }, { .VMLA, {.DPR,.DPR,.DPR_ELEM,.NONE}, {.VD_D,.VN_D,.NEON_VM_SCALAR_32,.NONE}, 0xF2A00040, 0xFFB00F50, .NEON, .A32, {}, {.I32,.NONE} }, { .VMLS, {.DPR,.DPR,.DPR_ELEM,.NONE}, {.VD_D,.VN_D,.NEON_VM_SCALAR_32,.NONE}, 0xF2A00440, 0xFFB00F50, .NEON, .A32, {}, {.I32,.NONE} }, - { .VMULL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2A00C00, 0xFFB00F50, .NEON, .A32, {}, {.S32,.NONE} }, { .VMULL, {.QPR,.DPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_D,.NEON_VM_SCALAR_32,.NONE}, 0xF2A00A40, 0xFFB00F50, .NEON, .A32, {}, {.S32,.NONE} }, + { .VMULL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2A00C00, 0xFFB00F50, .NEON, .A32, {}, {.S32,.NONE} }, { .VMLAL, {.QPR,.DPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_D,.NEON_VM_SCALAR_32,.NONE}, 0xF2A00240, 0xFFB00F50, .NEON, .A32, {}, {.S32,.NONE} }, { .VMLAL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2A00800, 0xFFB00F50, .NEON, .A32, {}, {.S32,.NONE} }, - { .VMLSL, {.QPR,.DPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_D,.NEON_VM_SCALAR_32,.NONE}, 0xF2A00640, 0xFFB00F50, .NEON, .A32, {}, {.S32,.NONE} }, { .VMLSL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2A00A00, 0xFFB00F50, .NEON, .A32, {}, {.S32,.NONE} }, + { .VMLSL, {.QPR,.DPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_D,.NEON_VM_SCALAR_32,.NONE}, 0xF2A00640, 0xFFB00F50, .NEON, .A32, {}, {.S32,.NONE} }, { .VQDMULL, {.QPR,.DPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_D,.NEON_VM_SCALAR_32,.NONE}, 0xF2A00B40, 0xFFB00F50, .NEON, .A32, {}, {.S32,.NONE} }, { .VQDMULL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2A00D00, 0xFFB00F50, .NEON, .A32, {}, {.S32,.NONE} }, - { .VQDMLAL, {.QPR,.DPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_D,.NEON_VM_SCALAR_32,.NONE}, 0xF2A00340, 0xFFB00F50, .NEON, .A32, {}, {.S32,.NONE} }, { .VQDMLAL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2A00900, 0xFFB00F50, .NEON, .A32, {}, {.S32,.NONE} }, - { .VQDMLSL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2A00B00, 0xFFB00F50, .NEON, .A32, {}, {.S32,.NONE} }, + { .VQDMLAL, {.QPR,.DPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_D,.NEON_VM_SCALAR_32,.NONE}, 0xF2A00340, 0xFFB00F50, .NEON, .A32, {}, {.S32,.NONE} }, { .VQDMLSL, {.QPR,.DPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_D,.NEON_VM_SCALAR_32,.NONE}, 0xF2A00740, 0xFFB00F50, .NEON, .A32, {}, {.S32,.NONE} }, + { .VQDMLSL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF2A00B00, 0xFFB00F50, .NEON, .A32, {}, {.S32,.NONE} }, { .VQDMULH, {.DPR,.DPR,.DPR_ELEM,.NONE}, {.VD_D,.VN_D,.NEON_VM_SCALAR32,.NONE}, 0xF2A00C40, 0xFFB00F50, .NEON, .A32, {}, {.S32,.NONE} }, { .VQRDMULH, {.DPR,.DPR,.DPR_ELEM,.NONE}, {.VD_D,.VN_D,.NEON_VM_SCALAR32,.NONE}, 0xF2A00D40, 0xFFB00F50, .NEON, .A32, {}, {.S32,.NONE} }, { .VQRDMLAH, {.DPR,.DPR,.DPR_ELEM,.NONE}, {.VD_D,.VN_D,.NEON_VM_SCALAR_32,.NONE}, 0xF2A00E40, 0xFFB00F50, .V8, .A32, {}, {.S32,.NONE} }, @@ -521,14 +521,14 @@ DECODE_ENTRIES := [1722]lib.Decode_Entry{ { .SBC, {.GPR,.GPR,.IMM_MOD,.NONE}, {.RD,.RN_A32,.A32_IMM_MOD,.NONE}, 0x02D00000, 0x0FF00000, .BASE, .A32, {sets_flags=true}, {.NONE,.NONE} }, { .RSC, {.GPR,.GPR,.IMM_MOD,.NONE}, {.RD,.RN_A32,.A32_IMM_MOD,.NONE}, 0x02E00000, 0x0FE00000, .BASE, .A32, {}, {.NONE,.NONE} }, { .RSC, {.GPR,.GPR,.IMM_MOD,.NONE}, {.RD,.RN_A32,.A32_IMM_MOD,.NONE}, 0x02F00000, 0x0FF00000, .BASE, .A32, {sets_flags=true}, {.NONE,.NONE} }, - { .VCLE, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VM_Q,.VN_Q,.NONE}, 0xF3000E40, 0xFFB11F51, .NEON, .A32, {}, {.F32,.NONE} }, { .VCLE, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VM_Q,.VN_Q,.NONE}, 0xF3000350, 0xFFB11F51, .NEON, .A32, {}, {.U8,.NONE} }, + { .VCLE, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VM_Q,.VN_Q,.NONE}, 0xF3000E40, 0xFFB11F51, .NEON, .A32, {}, {.F32,.NONE} }, { .VCLT, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VM_Q,.VN_Q,.NONE}, 0xF3000340, 0xFFB11F51, .NEON, .A32, {}, {.U8,.NONE} }, { .VACLE, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VM_Q,.VN_Q,.NONE}, 0xF3000E50, 0xFFB11F51, .NEON, .A32, {}, {.F32,.NONE} }, { .VQRSHL, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VM_Q,.VN_Q,.NONE}, 0xF3000550, 0xFFB11F51, .NEON, .A32, {}, {.U8,.NONE} }, { .VSUB, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF3000840, 0xFFB00F50, .NEON, .A32, {}, {.I8,.NONE} }, - { .VMUL, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF3000D50, 0xFFB00F50, .NEON, .A32, {}, {.F32,.NONE} }, { .VMUL, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF3000950, 0xFFB00F50, .NEON, .A32, {}, {.P8,.NONE} }, + { .VMUL, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF3000D50, 0xFFB00F50, .NEON, .A32, {}, {.F32,.NONE} }, { .VMLS, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF3000940, 0xFFB00F50, .NEON, .A32, {}, {.I8,.NONE} }, { .VHADD, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF3000040, 0xFFB00F50, .NEON, .A32, {}, {.U8,.NONE} }, { .VHSUB, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF3000240, 0xFFB00F50, .NEON, .A32, {}, {.U8,.NONE} }, @@ -538,11 +538,11 @@ DECODE_ENTRIES := [1722]lib.Decode_Entry{ { .VABD, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF3000740, 0xFFB00F50, .NEON, .A32, {}, {.U8,.NONE} }, { .VEOR, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF3000150, 0xFFB00F50, .NEON, .A32, {}, {.NONE,.NONE} }, { .VCEQ, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF3000850, 0xFFB00F50, .NEON, .A32, {}, {.I8,.NONE} }, - { .VCGE, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF3000E40, 0xFFB00F50, .NEON, .A32, {}, {.F32,.NONE} }, { .VCGE, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF3000350, 0xFFB00F50, .NEON, .A32, {}, {.U8,.NONE} }, + { .VCGE, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF3000E40, 0xFFB00F50, .NEON, .A32, {}, {.F32,.NONE} }, { .VCGT, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF3000340, 0xFFB00F50, .NEON, .A32, {}, {.U8,.NONE} }, - { .VCLE, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VM_D,.VN_D,.NONE}, 0xF3000310, 0xFFB00F50, .NEON, .A32, {}, {.U8,.NONE} }, { .VCLE, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VM_D,.VN_D,.NONE}, 0xF3000E00, 0xFFB00F50, .NEON, .A32, {}, {.F32,.NONE} }, + { .VCLE, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VM_D,.VN_D,.NONE}, 0xF3000310, 0xFFB00F50, .NEON, .A32, {}, {.U8,.NONE} }, { .VCLT, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VM_D,.VN_D,.NONE}, 0xF3000300, 0xFFB00F50, .NEON, .A32, {}, {.U8,.NONE} }, { .VACGE, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF3000E50, 0xFFB00F50, .NEON, .A32, {}, {.F32,.NONE} }, { .VACLE, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VM_D,.VN_D,.NONE}, 0xF3000E10, 0xFFB00F50, .NEON, .A32, {}, {.F32,.NONE} }, @@ -554,8 +554,8 @@ DECODE_ENTRIES := [1722]lib.Decode_Entry{ { .VQRSHL, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VM_D,.VN_D,.NONE}, 0xF3000510, 0xFFB00F50, .NEON, .A32, {}, {.U8,.NONE} }, { .SHA256H, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF3000C40, 0xFFB00F50, .CRYPTO, .A32, {}, {.SZ32,.NONE} }, { .VSUB, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF3000800, 0xFFB00F10, .NEON, .A32, {}, {.I8,.NONE} }, - { .VMUL, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF3000910, 0xFFB00F10, .NEON, .A32, {}, {.P8,.NONE} }, { .VMUL, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF3000D10, 0xFFB00F10, .NEON, .A32, {}, {.F32,.NONE} }, + { .VMUL, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF3000910, 0xFFB00F10, .NEON, .A32, {}, {.P8,.NONE} }, { .VMLS, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF3000900, 0xFFB00F10, .NEON, .A32, {}, {.I8,.NONE} }, { .VHADD, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF3000000, 0xFFB00F10, .NEON, .A32, {}, {.U8,.NONE} }, { .VHSUB, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF3000200, 0xFFB00F10, .NEON, .A32, {}, {.U8,.NONE} }, @@ -565,14 +565,14 @@ DECODE_ENTRIES := [1722]lib.Decode_Entry{ { .VABD, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF3000700, 0xFFB00F10, .NEON, .A32, {}, {.U8,.NONE} }, { .VEOR, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF3000110, 0xFFB00F10, .NEON, .A32, {}, {.NONE,.NONE} }, { .VCEQ, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF3000810, 0xFFB00F10, .NEON, .A32, {}, {.I8,.NONE} }, - { .VCGE, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF3000E00, 0xFFB00F10, .NEON, .A32, {}, {.F32,.NONE} }, { .VCGE, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF3000310, 0xFFB00F10, .NEON, .A32, {}, {.U8,.NONE} }, + { .VCGE, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF3000E00, 0xFFB00F10, .NEON, .A32, {}, {.F32,.NONE} }, { .VCGT, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF3000300, 0xFFB00F10, .NEON, .A32, {}, {.U8,.NONE} }, { .VACGE, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF3000E10, 0xFFB00F10, .NEON, .A32, {}, {.F32,.NONE} }, { .VMAX, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF3000600, 0xFFB00F10, .NEON, .A32, {}, {.U8,.NONE} }, { .VMIN, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF3000610, 0xFFB00F10, .NEON, .A32, {}, {.U8,.NONE} }, - { .VPMAX, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF3000F00, 0xFFB00F10, .NEON, .A32, {}, {.F32,.NONE} }, { .VPMAX, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF3000A00, 0xFFB00F10, .NEON, .A32, {}, {.U8,.NONE} }, + { .VPMAX, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF3000F00, 0xFFB00F10, .NEON, .A32, {}, {.F32,.NONE} }, { .VPMIN, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF3000A10, 0xFFB00F10, .NEON, .A32, {}, {.U8,.NONE} }, { .VPADD, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0xF3000D00, 0xFFB00F10, .NEON, .A32, {}, {.F32,.NONE} }, { .VSHL, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VM_D,.VN_D,.NONE}, 0xF3000400, 0xFFB00F10, .NEON, .A32, {}, {.U8,.NONE} }, @@ -619,8 +619,8 @@ DECODE_ENTRIES := [1722]lib.Decode_Entry{ { .DBG, {.IMM_HINT,.NONE,.NONE,.NONE}, {.DBG_OPTION,.NONE,.NONE,.NONE}, 0x0320F0F0, 0x0FFFFFF0, .V7, .A32, {}, {.NONE,.NONE} }, { .HINT, {.IMM_HINT,.NONE,.NONE,.NONE}, {.HINT_FIELD,.NONE,.NONE,.NONE}, 0x0320F000, 0x0FFFFF00, .V6K, .A32, {}, {.NONE,.NONE} }, { .VCLE, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VM_Q,.VN_Q,.NONE}, 0xF3200350, 0xFFB11F51, .NEON, .A32, {}, {.U32,.NONE} }, - { .VCLT, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VM_Q,.VN_Q,.NONE}, 0xF3200340, 0xFFB11F51, .NEON, .A32, {}, {.U32,.NONE} }, { .VCLT, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VM_Q,.VN_Q,.NONE}, 0xF3200E40, 0xFFB11F51, .NEON, .A32, {}, {.F32,.NONE} }, + { .VCLT, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VM_Q,.VN_Q,.NONE}, 0xF3200340, 0xFFB11F51, .NEON, .A32, {}, {.U32,.NONE} }, { .VACLT, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VM_Q,.VN_Q,.NONE}, 0xF3200E50, 0xFFB11F51, .NEON, .A32, {}, {.F32,.NONE} }, { .VQRSHL, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VM_Q,.VN_Q,.NONE}, 0xF3200550, 0xFFB11F51, .NEON, .A32, {}, {.U32,.NONE} }, { .VSUB, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF3200840, 0xFFB00F50, .NEON, .A32, {}, {.I32,.NONE} }, @@ -633,8 +633,8 @@ DECODE_ENTRIES := [1722]lib.Decode_Entry{ { .VCEQ, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF3200850, 0xFFB00F50, .NEON, .A32, {}, {.I32,.NONE} }, { .VCGT, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF3200E40, 0xFFB00F50, .NEON, .A32, {}, {.F32,.NONE} }, { .VCLE, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VM_D,.VN_D,.NONE}, 0xF3200310, 0xFFB00F50, .NEON, .A32, {}, {.U32,.NONE} }, - { .VCLT, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VM_D,.VN_D,.NONE}, 0xF3200300, 0xFFB00F50, .NEON, .A32, {}, {.U32,.NONE} }, { .VCLT, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VM_D,.VN_D,.NONE}, 0xF3200E00, 0xFFB00F50, .NEON, .A32, {}, {.F32,.NONE} }, + { .VCLT, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VM_D,.VN_D,.NONE}, 0xF3200300, 0xFFB00F50, .NEON, .A32, {}, {.U32,.NONE} }, { .VACGT, {.QPR,.QPR,.QPR,.NONE}, {.VD_Q,.VN_Q,.VM_Q,.NONE}, 0xF3200E50, 0xFFB00F50, .NEON, .A32, {}, {.F32,.NONE} }, { .VACLT, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VM_D,.VN_D,.NONE}, 0xF3200E10, 0xFFB00F50, .NEON, .A32, {}, {.F32,.NONE} }, { .VQRSHL, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VM_D,.VN_D,.NONE}, 0xF3200510, 0xFFB00F50, .NEON, .A32, {}, {.U32,.NONE} }, @@ -690,10 +690,10 @@ DECODE_ENTRIES := [1722]lib.Decode_Entry{ { .VMLS, {.QPR,.QPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_Q,.NEON_VM_SCALAR_16,.NONE}, 0xF3900440, 0xFFB00F50, .NEON, .A32, {}, {.I16,.NONE} }, { .VMULL, {.QPR,.DPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_D,.NEON_VM_SCALAR_16,.NONE}, 0xF3900A40, 0xFFB00F50, .NEON, .A32, {}, {.U16,.NONE} }, { .VMULL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF3900C00, 0xFFB00F50, .NEON, .A32, {}, {.U16,.NONE} }, - { .VMLAL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF3900800, 0xFFB00F50, .NEON, .A32, {}, {.U16,.NONE} }, { .VMLAL, {.QPR,.DPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_D,.NEON_VM_SCALAR_16,.NONE}, 0xF3900240, 0xFFB00F50, .NEON, .A32, {}, {.U16,.NONE} }, - { .VMLSL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF3900A00, 0xFFB00F50, .NEON, .A32, {}, {.U16,.NONE} }, + { .VMLAL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF3900800, 0xFFB00F50, .NEON, .A32, {}, {.U16,.NONE} }, { .VMLSL, {.QPR,.DPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_D,.NEON_VM_SCALAR_16,.NONE}, 0xF3900640, 0xFFB00F50, .NEON, .A32, {}, {.U16,.NONE} }, + { .VMLSL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF3900A00, 0xFFB00F50, .NEON, .A32, {}, {.U16,.NONE} }, { .VQRDMLAH, {.QPR,.QPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_Q,.NEON_VM_SCALAR_16,.NONE}, 0xF3900E40, 0xFFB00F50, .V8, .A32, {}, {.S16,.NONE} }, { .VQRDMLSH, {.QPR,.QPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_Q,.NEON_VM_SCALAR_16,.NONE}, 0xF3900F40, 0xFFB00F50, .V8, .A32, {}, {.S16,.NONE} }, { .ORR, {.GPR,.GPR,.IMM_MOD,.NONE}, {.RD,.RN_A32,.A32_IMM_MOD,.NONE}, 0x03900000, 0x0FF00000, .BASE, .A32, {sets_flags=true}, {.NONE,.NONE} }, @@ -713,82 +713,82 @@ DECODE_ENTRIES := [1722]lib.Decode_Entry{ { .VMULL, {.QPR,.DPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_D,.NEON_VM_SCALAR_32,.NONE}, 0xF3A00A40, 0xFFB00F50, .NEON, .A32, {}, {.U32,.NONE} }, { .VMLAL, {.QPR,.DPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_D,.NEON_VM_SCALAR_32,.NONE}, 0xF3A00240, 0xFFB00F50, .NEON, .A32, {}, {.U32,.NONE} }, { .VMLAL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF3A00800, 0xFFB00F50, .NEON, .A32, {}, {.U32,.NONE} }, - { .VMLSL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF3A00A00, 0xFFB00F50, .NEON, .A32, {}, {.U32,.NONE} }, { .VMLSL, {.QPR,.DPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_D,.NEON_VM_SCALAR_32,.NONE}, 0xF3A00640, 0xFFB00F50, .NEON, .A32, {}, {.U32,.NONE} }, + { .VMLSL, {.QPR,.DPR,.DPR,.NONE}, {.VD_Q,.VN_D,.VM_D,.NONE}, 0xF3A00A00, 0xFFB00F50, .NEON, .A32, {}, {.U32,.NONE} }, { .VQRDMLAH, {.QPR,.QPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_Q,.NEON_VM_SCALAR_32,.NONE}, 0xF3A00E40, 0xFFB00F50, .V8, .A32, {}, {.S32,.NONE} }, { .VQRDMLSH, {.QPR,.QPR,.DPR_ELEM,.NONE}, {.VD_Q,.VN_Q,.NEON_VM_SCALAR_32,.NONE}, 0xF3A00F40, 0xFFB00F50, .V8, .A32, {}, {.S32,.NONE} }, { .MOV, {.GPR,.IMM_MOD,.NONE,.NONE}, {.RD,.A32_IMM_MOD,.NONE,.NONE}, 0x03A00000, 0x0FEF0000, .BASE, .A32, {}, {.NONE,.NONE} }, { .VABS, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B90340, 0xFFBF0FD0, .NEON, .A32, {}, {.S32,.NONE} }, - { .VABS, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B90300, 0xFFBF0FD0, .NEON, .A32, {}, {.S32,.NONE} }, - { .VABS, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B10340, 0xFFBF0FD0, .NEON, .A32, {}, {.S8,.NONE} }, { .VABS, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B10300, 0xFFBF0FD0, .NEON, .A32, {}, {.S8,.NONE} }, - { .VABS, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B90740, 0xFFBF0FD0, .NEON, .A32, {}, {.F32,.NONE} }, { .VABS, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B50300, 0xFFBF0FD0, .NEON, .A32, {}, {.S16,.NONE} }, + { .VABS, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B10340, 0xFFBF0FD0, .NEON, .A32, {}, {.S8,.NONE} }, + { .VABS, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B90300, 0xFFBF0FD0, .NEON, .A32, {}, {.S32,.NONE} }, { .VABS, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B50340, 0xFFBF0FD0, .NEON, .A32, {}, {.S16,.NONE} }, { .VABS, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B90700, 0xFFBF0FD0, .NEON, .A32, {}, {.F32,.NONE} }, - { .VNEG, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B90380, 0xFFBF0FD0, .NEON, .A32, {}, {.S32,.NONE} }, - { .VNEG, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B907C0, 0xFFBF0FD0, .NEON, .A32, {}, {.F32,.NONE} }, - { .VNEG, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B10380, 0xFFBF0FD0, .NEON, .A32, {}, {.S8,.NONE} }, - { .VNEG, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B103C0, 0xFFBF0FD0, .NEON, .A32, {}, {.S8,.NONE} }, + { .VABS, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B90740, 0xFFBF0FD0, .NEON, .A32, {}, {.F32,.NONE} }, + { .VNEG, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B903C0, 0xFFBF0FD0, .NEON, .A32, {}, {.S32,.NONE} }, { .VNEG, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B90780, 0xFFBF0FD0, .NEON, .A32, {}, {.F32,.NONE} }, { .VNEG, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B50380, 0xFFBF0FD0, .NEON, .A32, {}, {.S16,.NONE} }, - { .VNEG, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B903C0, 0xFFBF0FD0, .NEON, .A32, {}, {.S32,.NONE} }, + { .VNEG, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B103C0, 0xFFBF0FD0, .NEON, .A32, {}, {.S8,.NONE} }, + { .VNEG, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B907C0, 0xFFBF0FD0, .NEON, .A32, {}, {.F32,.NONE} }, { .VNEG, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B503C0, 0xFFBF0FD0, .NEON, .A32, {}, {.S16,.NONE} }, + { .VNEG, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B10380, 0xFFBF0FD0, .NEON, .A32, {}, {.S8,.NONE} }, + { .VNEG, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B90380, 0xFFBF0FD0, .NEON, .A32, {}, {.S32,.NONE} }, { .VCVT, {.DPR,.QPR,.NONE,.NONE}, {.VD_D,.VM_Q,.NONE,.NONE}, 0xF3B60600, 0xFFBF0FD0, .BF16, .A32, {}, {.F16,.F32} }, - { .VMOVN, {.DPR,.QPR,.NONE,.NONE}, {.VD_D,.VM_Q,.NONE,.NONE}, 0xF3B60200, 0xFFBF0FD0, .NEON, .A32, {}, {.I32,.NONE} }, { .VMOVN, {.DPR,.QPR,.NONE,.NONE}, {.VD_D,.VM_Q,.NONE,.NONE}, 0xF3B20200, 0xFFBF0FD0, .NEON, .A32, {}, {.I16,.NONE} }, + { .VMOVN, {.DPR,.QPR,.NONE,.NONE}, {.VD_D,.VM_Q,.NONE,.NONE}, 0xF3B60200, 0xFFBF0FD0, .NEON, .A32, {}, {.I32,.NONE} }, { .VMOVN, {.DPR,.QPR,.NONE,.NONE}, {.VD_D,.VM_Q,.NONE,.NONE}, 0xF3BA0200, 0xFFBF0FD0, .NEON, .A32, {}, {.I64,.NONE} }, { .VQMOVN, {.DPR,.QPR,.NONE,.NONE}, {.VD_D,.VM_Q,.NONE,.NONE}, 0xF3BA0280, 0xFFBF0FD0, .NEON, .A32, {}, {.S64,.NONE} }, - { .VQMOVN, {.DPR,.QPR,.NONE,.NONE}, {.VD_D,.VM_Q,.NONE,.NONE}, 0xF3B60280, 0xFFBF0FD0, .NEON, .A32, {}, {.S32,.NONE} }, { .VQMOVN, {.DPR,.QPR,.NONE,.NONE}, {.VD_D,.VM_Q,.NONE,.NONE}, 0xF3B20280, 0xFFBF0FD0, .NEON, .A32, {}, {.S16,.NONE} }, - { .VQMOVN, {.DPR,.QPR,.NONE,.NONE}, {.VD_D,.VM_Q,.NONE,.NONE}, 0xF3B202C0, 0xFFBF0FD0, .NEON, .A32, {}, {.U16,.NONE} }, { .VQMOVN, {.DPR,.QPR,.NONE,.NONE}, {.VD_D,.VM_Q,.NONE,.NONE}, 0xF3BA02C0, 0xFFBF0FD0, .NEON, .A32, {}, {.U64,.NONE} }, + { .VQMOVN, {.DPR,.QPR,.NONE,.NONE}, {.VD_D,.VM_Q,.NONE,.NONE}, 0xF3B202C0, 0xFFBF0FD0, .NEON, .A32, {}, {.U16,.NONE} }, { .VQMOVN, {.DPR,.QPR,.NONE,.NONE}, {.VD_D,.VM_Q,.NONE,.NONE}, 0xF3B602C0, 0xFFBF0FD0, .NEON, .A32, {}, {.U32,.NONE} }, + { .VQMOVN, {.DPR,.QPR,.NONE,.NONE}, {.VD_D,.VM_Q,.NONE,.NONE}, 0xF3B60280, 0xFFBF0FD0, .NEON, .A32, {}, {.S32,.NONE} }, { .VQMOVUN, {.DPR,.QPR,.NONE,.NONE}, {.VD_D,.VM_Q,.NONE,.NONE}, 0xF3BA0240, 0xFFBF0FD0, .NEON, .A32, {}, {.S64,.NONE} }, - { .VQMOVUN, {.DPR,.QPR,.NONE,.NONE}, {.VD_D,.VM_Q,.NONE,.NONE}, 0xF3B20240, 0xFFBF0FD0, .NEON, .A32, {}, {.S16,.NONE} }, { .VQMOVUN, {.DPR,.QPR,.NONE,.NONE}, {.VD_D,.VM_Q,.NONE,.NONE}, 0xF3B60240, 0xFFBF0FD0, .NEON, .A32, {}, {.S32,.NONE} }, - { .VPADDL, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B00280, 0xFFBF0FD0, .NEON, .A32, {}, {.U8,.NONE} }, - { .VPADDL, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B00200, 0xFFBF0FD0, .NEON, .A32, {}, {.S8,.NONE} }, + { .VQMOVUN, {.DPR,.QPR,.NONE,.NONE}, {.VD_D,.VM_Q,.NONE,.NONE}, 0xF3B20240, 0xFFBF0FD0, .NEON, .A32, {}, {.S16,.NONE} }, { .VPADDL, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B80200, 0xFFBF0FD0, .NEON, .A32, {}, {.S32,.NONE} }, { .VPADDL, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B40200, 0xFFBF0FD0, .NEON, .A32, {}, {.S16,.NONE} }, - { .VRECPE, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3BB0440, 0xFFBF0FD0, .NEON, .A32, {}, {.U32,.NONE} }, - { .VRECPE, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3BB0400, 0xFFBF0FD0, .NEON, .A32, {}, {.U32,.NONE} }, + { .VPADDL, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B00200, 0xFFBF0FD0, .NEON, .A32, {}, {.S8,.NONE} }, + { .VPADDL, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B00280, 0xFFBF0FD0, .NEON, .A32, {}, {.U8,.NONE} }, { .VRECPE, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3BB0500, 0xFFBF0FD0, .NEON, .A32, {}, {.F32,.NONE} }, { .VRECPE, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3BB0540, 0xFFBF0FD0, .NEON, .A32, {}, {.F32,.NONE} }, - { .VRSQRTE, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3BB0580, 0xFFBF0FD0, .NEON, .A32, {}, {.F32,.NONE} }, - { .VRSQRTE, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3BB05C0, 0xFFBF0FD0, .NEON, .A32, {}, {.F32,.NONE} }, + { .VRECPE, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3BB0440, 0xFFBF0FD0, .NEON, .A32, {}, {.U32,.NONE} }, + { .VRECPE, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3BB0400, 0xFFBF0FD0, .NEON, .A32, {}, {.U32,.NONE} }, { .VRSQRTE, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3BB0480, 0xFFBF0FD0, .NEON, .A32, {}, {.U32,.NONE} }, { .VRSQRTE, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3BB04C0, 0xFFBF0FD0, .NEON, .A32, {}, {.U32,.NONE} }, - { .VSHLL, {.QPR,.DPR,.IMM,.NONE}, {.VD_Q,.VM_D,.NEON_SHLL_8,.NONE}, 0xF3B20300, 0xFFBF0FD0, .NEON, .A32, {}, {.I8,.NONE} }, + { .VRSQRTE, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3BB0580, 0xFFBF0FD0, .NEON, .A32, {}, {.F32,.NONE} }, + { .VRSQRTE, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3BB05C0, 0xFFBF0FD0, .NEON, .A32, {}, {.F32,.NONE} }, { .VSHLL, {.QPR,.DPR,.IMM,.NONE}, {.VD_Q,.VM_D,.NEON_SHLL_32,.NONE}, 0xF3BA0300, 0xFFBF0FD0, .NEON, .A32, {}, {.I32,.NONE} }, { .VSHLL, {.QPR,.DPR,.IMM,.NONE}, {.VD_Q,.VM_D,.NEON_SHLL_16,.NONE}, 0xF3B60300, 0xFFBF0FD0, .NEON, .A32, {}, {.I16,.NONE} }, - { .VCLS, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B40440, 0xFFBF0FD0, .NEON, .A32, {}, {.S16,.NONE} }, - { .VCLS, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B40400, 0xFFBF0FD0, .NEON, .A32, {}, {.S16,.NONE} }, - { .VCLS, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B00400, 0xFFBF0FD0, .NEON, .A32, {}, {.S8,.NONE} }, + { .VSHLL, {.QPR,.DPR,.IMM,.NONE}, {.VD_Q,.VM_D,.NEON_SHLL_8,.NONE}, 0xF3B20300, 0xFFBF0FD0, .NEON, .A32, {}, {.I8,.NONE} }, { .VCLS, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B80400, 0xFFBF0FD0, .NEON, .A32, {}, {.S32,.NONE} }, + { .VCLS, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B00400, 0xFFBF0FD0, .NEON, .A32, {}, {.S8,.NONE} }, + { .VCLS, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B40400, 0xFFBF0FD0, .NEON, .A32, {}, {.S16,.NONE} }, { .VCLS, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B80440, 0xFFBF0FD0, .NEON, .A32, {}, {.S32,.NONE} }, + { .VCLS, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B40440, 0xFFBF0FD0, .NEON, .A32, {}, {.S16,.NONE} }, { .VCLS, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B00440, 0xFFBF0FD0, .NEON, .A32, {}, {.S8,.NONE} }, - { .VCLZ, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B80480, 0xFFBF0FD0, .NEON, .A32, {}, {.I32,.NONE} }, - { .VCLZ, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B004C0, 0xFFBF0FD0, .NEON, .A32, {}, {.I8,.NONE} }, { .VCLZ, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B00480, 0xFFBF0FD0, .NEON, .A32, {}, {.I8,.NONE} }, - { .VCLZ, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B804C0, 0xFFBF0FD0, .NEON, .A32, {}, {.I32,.NONE} }, { .VCLZ, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B404C0, 0xFFBF0FD0, .NEON, .A32, {}, {.I16,.NONE} }, + { .VCLZ, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B004C0, 0xFFBF0FD0, .NEON, .A32, {}, {.I8,.NONE} }, + { .VCLZ, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B80480, 0xFFBF0FD0, .NEON, .A32, {}, {.I32,.NONE} }, + { .VCLZ, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B804C0, 0xFFBF0FD0, .NEON, .A32, {}, {.I32,.NONE} }, { .VCLZ, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B40480, 0xFFBF0FD0, .NEON, .A32, {}, {.I16,.NONE} }, - { .VREV64, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B80000, 0xFFBF0FD0, .NEON, .A32, {}, {.SZ32,.NONE} }, - { .VREV64, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B40000, 0xFFBF0FD0, .NEON, .A32, {}, {.SZ16,.NONE} }, { .VREV64, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B00000, 0xFFBF0FD0, .NEON, .A32, {}, {.SZ8,.NONE} }, + { .VREV64, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B80000, 0xFFBF0FD0, .NEON, .A32, {}, {.SZ32,.NONE} }, { .VREV64, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B00040, 0xFFBF0FD0, .NEON, .A32, {}, {.SZ8,.NONE} }, - { .VREV64, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B40040, 0xFFBF0FD0, .NEON, .A32, {}, {.SZ16,.NONE} }, { .VREV64, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B80040, 0xFFBF0FD0, .NEON, .A32, {}, {.SZ32,.NONE} }, - { .VTRN, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B20080, 0xFFBF0FD0, .NEON, .A32, {}, {.SZ8,.NONE} }, + { .VREV64, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B40000, 0xFFBF0FD0, .NEON, .A32, {}, {.SZ16,.NONE} }, + { .VREV64, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B40040, 0xFFBF0FD0, .NEON, .A32, {}, {.SZ16,.NONE} }, { .VTRN, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3BA0080, 0xFFBF0FD0, .NEON, .A32, {}, {.SZ32,.NONE} }, - { .VTRN, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B60080, 0xFFBF0FD0, .NEON, .A32, {}, {.SZ16,.NONE} }, + { .VTRN, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B20080, 0xFFBF0FD0, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VTRN, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B200C0, 0xFFBF0FD0, .NEON, .A32, {}, {.SZ8,.NONE} }, - { .VTRN, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B600C0, 0xFFBF0FD0, .NEON, .A32, {}, {.SZ16,.NONE} }, + { .VTRN, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B60080, 0xFFBF0FD0, .NEON, .A32, {}, {.SZ16,.NONE} }, { .VTRN, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3BA00C0, 0xFFBF0FD0, .NEON, .A32, {}, {.SZ32,.NONE} }, + { .VTRN, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B600C0, 0xFFBF0FD0, .NEON, .A32, {}, {.SZ16,.NONE} }, { .VUZP, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3BA0140, 0xFFBF0FD0, .NEON, .A32, {}, {.SZ32,.NONE} }, - { .VUZP, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B20140, 0xFFBF0FD0, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VUZP, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B60140, 0xFFBF0FD0, .NEON, .A32, {}, {.SZ16,.NONE} }, + { .VUZP, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B20140, 0xFFBF0FD0, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VZIP, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B601C0, 0xFFBF0FD0, .NEON, .A32, {}, {.SZ16,.NONE} }, { .VZIP, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B201C0, 0xFFBF0FD0, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VZIP, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3BA01C0, 0xFFBF0FD0, .NEON, .A32, {}, {.SZ32,.NONE} }, @@ -796,90 +796,94 @@ DECODE_ENTRIES := [1722]lib.Decode_Entry{ { .SHA1SU1, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3BA0380, 0xFFBF0FD0, .CRYPTO, .A32, {}, {.SZ32,.NONE} }, { .SHA256SU0, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3BA03C0, 0xFFBF0FD0, .CRYPTO, .A32, {}, {.SZ32,.NONE} }, { .VCEQ, {.DPR,.DPR,.IMM,.NONE}, {.VD_D,.VM_D,.IMPL,.NONE}, 0xF3B90500, 0xFFBB0FD0, .NEON, .A32, {}, {.F32,.NONE} }, - { .VCEQ, {.QPR,.QPR,.IMM,.NONE}, {.VD_Q,.VM_Q,.IMPL,.NONE}, 0xF3B90540, 0xFFBB0FD0, .NEON, .A32, {}, {.F32,.NONE} }, { .VCEQ, {.DPR,.DPR,.IMM,.NONE}, {.VD_D,.VM_D,.IMPL,.NONE}, 0xF3B10100, 0xFFBB0FD0, .NEON, .A32, {}, {.I8,.NONE} }, + { .VCEQ, {.QPR,.QPR,.IMM,.NONE}, {.VD_Q,.VM_Q,.IMPL,.NONE}, 0xF3B90540, 0xFFBB0FD0, .NEON, .A32, {}, {.F32,.NONE} }, { .VCEQ, {.QPR,.QPR,.IMM,.NONE}, {.VD_Q,.VM_Q,.IMPL,.NONE}, 0xF3B10140, 0xFFBB0FD0, .NEON, .A32, {}, {.I8,.NONE} }, + { .VCGE, {.DPR,.DPR,.IMM,.NONE}, {.VD_D,.VM_D,.IMPL,.NONE}, 0xF3B90480, 0xFFBB0FD0, .NEON, .A32, {}, {.F32,.NONE} }, + { .VCGE, {.QPR,.QPR,.IMM,.NONE}, {.VD_Q,.VM_Q,.IMPL,.NONE}, 0xF3B100C0, 0xFFBB0FD0, .NEON, .A32, {}, {.S8,.NONE} }, { .VCGE, {.QPR,.QPR,.IMM,.NONE}, {.VD_Q,.VM_Q,.IMPL,.NONE}, 0xF3B904C0, 0xFFBB0FD0, .NEON, .A32, {}, {.F32,.NONE} }, { .VCGE, {.DPR,.DPR,.IMM,.NONE}, {.VD_D,.VM_D,.IMPL,.NONE}, 0xF3B10080, 0xFFBB0FD0, .NEON, .A32, {}, {.S8,.NONE} }, - { .VCGE, {.QPR,.QPR,.IMM,.NONE}, {.VD_Q,.VM_Q,.IMPL,.NONE}, 0xF3B100C0, 0xFFBB0FD0, .NEON, .A32, {}, {.S8,.NONE} }, - { .VCGE, {.DPR,.DPR,.IMM,.NONE}, {.VD_D,.VM_D,.IMPL,.NONE}, 0xF3B90480, 0xFFBB0FD0, .NEON, .A32, {}, {.F32,.NONE} }, - { .VCGT, {.DPR,.DPR,.IMM,.NONE}, {.VD_D,.VM_D,.IMPL,.NONE}, 0xF3B90400, 0xFFBB0FD0, .NEON, .A32, {}, {.F32,.NONE} }, - { .VCGT, {.QPR,.QPR,.IMM,.NONE}, {.VD_Q,.VM_Q,.IMPL,.NONE}, 0xF3B10040, 0xFFBB0FD0, .NEON, .A32, {}, {.S8,.NONE} }, { .VCGT, {.QPR,.QPR,.IMM,.NONE}, {.VD_Q,.VM_Q,.IMPL,.NONE}, 0xF3B90440, 0xFFBB0FD0, .NEON, .A32, {}, {.F32,.NONE} }, { .VCGT, {.DPR,.DPR,.IMM,.NONE}, {.VD_D,.VM_D,.IMPL,.NONE}, 0xF3B10000, 0xFFBB0FD0, .NEON, .A32, {}, {.S8,.NONE} }, - { .VCLE, {.QPR,.QPR,.IMM,.NONE}, {.VD_Q,.VM_Q,.IMPL,.NONE}, 0xF3B905C0, 0xFFBB0FD0, .NEON, .A32, {}, {.F32,.NONE} }, + { .VCGT, {.DPR,.DPR,.IMM,.NONE}, {.VD_D,.VM_D,.IMPL,.NONE}, 0xF3B90400, 0xFFBB0FD0, .NEON, .A32, {}, {.F32,.NONE} }, + { .VCGT, {.QPR,.QPR,.IMM,.NONE}, {.VD_Q,.VM_Q,.IMPL,.NONE}, 0xF3B10040, 0xFFBB0FD0, .NEON, .A32, {}, {.S8,.NONE} }, { .VCLE, {.DPR,.DPR,.IMM,.NONE}, {.VD_D,.VM_D,.IMPL,.NONE}, 0xF3B90580, 0xFFBB0FD0, .NEON, .A32, {}, {.F32,.NONE} }, { .VCLE, {.DPR,.DPR,.IMM,.NONE}, {.VD_D,.VM_D,.IMPL,.NONE}, 0xF3B10180, 0xFFBB0FD0, .NEON, .A32, {}, {.S8,.NONE} }, + { .VCLE, {.QPR,.QPR,.IMM,.NONE}, {.VD_Q,.VM_Q,.IMPL,.NONE}, 0xF3B905C0, 0xFFBB0FD0, .NEON, .A32, {}, {.F32,.NONE} }, { .VCLE, {.QPR,.QPR,.IMM,.NONE}, {.VD_Q,.VM_Q,.IMPL,.NONE}, 0xF3B101C0, 0xFFBB0FD0, .NEON, .A32, {}, {.S8,.NONE} }, { .VCLT, {.QPR,.QPR,.IMM,.NONE}, {.VD_Q,.VM_Q,.IMPL,.NONE}, 0xF3B90640, 0xFFBB0FD0, .NEON, .A32, {}, {.F32,.NONE} }, { .VCLT, {.QPR,.QPR,.IMM,.NONE}, {.VD_Q,.VM_Q,.IMPL,.NONE}, 0xF3B10240, 0xFFBB0FD0, .NEON, .A32, {}, {.S8,.NONE} }, - { .VCLT, {.DPR,.DPR,.IMM,.NONE}, {.VD_D,.VM_D,.IMPL,.NONE}, 0xF3B90600, 0xFFBB0FD0, .NEON, .A32, {}, {.F32,.NONE} }, { .VCLT, {.DPR,.DPR,.IMM,.NONE}, {.VD_D,.VM_D,.IMPL,.NONE}, 0xF3B10200, 0xFFBB0FD0, .NEON, .A32, {}, {.S8,.NONE} }, - { .VREV32, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B000C0, 0xFFB70FD0, .NEON, .A32, {}, {.SZ8,.NONE} }, + { .VCLT, {.DPR,.DPR,.IMM,.NONE}, {.VD_D,.VM_D,.IMPL,.NONE}, 0xF3B90600, 0xFFBB0FD0, .NEON, .A32, {}, {.F32,.NONE} }, + { .VREV32, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B40080, 0xFFB70FD0, .NEON, .A32, {}, {.SZ16,.NONE} }, { .VREV32, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B400C0, 0xFFB70FD0, .NEON, .A32, {}, {.SZ16,.NONE} }, { .VREV32, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B00080, 0xFFB70FD0, .NEON, .A32, {}, {.SZ8,.NONE} }, - { .VREV32, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B40080, 0xFFB70FD0, .NEON, .A32, {}, {.SZ16,.NONE} }, - { .VUZP, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B60100, 0xFFB70FD0, .NEON, .A32, {}, {.SZ16,.NONE} }, + { .VREV32, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B000C0, 0xFFB70FD0, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VUZP, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B20100, 0xFFB70FD0, .NEON, .A32, {}, {.SZ8,.NONE} }, - { .VZIP, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B60180, 0xFFB70FD0, .NEON, .A32, {}, {.SZ16,.NONE} }, + { .VUZP, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B60100, 0xFFB70FD0, .NEON, .A32, {}, {.SZ16,.NONE} }, { .VZIP, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B20180, 0xFFB70FD0, .NEON, .A32, {}, {.SZ8,.NONE} }, + { .VZIP, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B60180, 0xFFB70FD0, .NEON, .A32, {}, {.SZ16,.NONE} }, + { .VDUP, {.DPR,.DPR_ELEM,.NONE,.NONE}, {.VD_D,.NEON_VDUP_LANE_32,.NONE,.NONE}, 0xF3B40C00, 0xFFB70FD0, .NEON, .A32, {}, {.SZ32,.NONE} }, + { .VDUP, {.QPR,.DPR_ELEM,.NONE,.NONE}, {.VD_Q,.NEON_VDUP_LANE_32,.NONE,.NONE}, 0xF3B40C40, 0xFFB70FD0, .NEON, .A32, {}, {.SZ32,.NONE} }, { .VMVN, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B00580, 0xFFB30FD0, .NEON, .A32, {}, {.NONE,.NONE} }, { .VMVN, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B005C0, 0xFFB30FD0, .NEON, .A32, {}, {.NONE,.NONE} }, { .VPADDL, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B00240, 0xFFB30FD0, .NEON, .A32, {}, {.S8,.NONE} }, { .VPADDL, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B002C0, 0xFFB30FD0, .NEON, .A32, {}, {.U8,.NONE} }, - { .VPADAL, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B006C0, 0xFFB30FD0, .NEON, .A32, {}, {.U8,.NONE} }, - { .VPADAL, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B00600, 0xFFB30FD0, .NEON, .A32, {}, {.S8,.NONE} }, { .VPADAL, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B00680, 0xFFB30FD0, .NEON, .A32, {}, {.U8,.NONE} }, + { .VPADAL, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B00600, 0xFFB30FD0, .NEON, .A32, {}, {.S8,.NONE} }, { .VPADAL, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B00640, 0xFFB30FD0, .NEON, .A32, {}, {.S8,.NONE} }, - { .VCNT, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B00540, 0xFFB30FD0, .NEON, .A32, {}, {.SZ8,.NONE} }, + { .VPADAL, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B006C0, 0xFFB30FD0, .NEON, .A32, {}, {.U8,.NONE} }, { .VCNT, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B00500, 0xFFB30FD0, .NEON, .A32, {}, {.SZ8,.NONE} }, + { .VCNT, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B00540, 0xFFB30FD0, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VREV16, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B00140, 0xFFB30FD0, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VREV16, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B00100, 0xFFB30FD0, .NEON, .A32, {}, {.SZ8,.NONE} }, + { .VDUP, {.QPR,.DPR_ELEM,.NONE,.NONE}, {.VD_Q,.NEON_VDUP_LANE_16,.NONE,.NONE}, 0xF3B20C40, 0xFFB30FD0, .NEON, .A32, {}, {.SZ16,.NONE} }, + { .VDUP, {.DPR,.DPR_ELEM,.NONE,.NONE}, {.VD_D,.NEON_VDUP_LANE_16,.NONE,.NONE}, 0xF3B20C00, 0xFFB30FD0, .NEON, .A32, {}, {.SZ16,.NONE} }, { .VSWP, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B20040, 0xFFB30FD0, .NEON, .A32, {}, {.NONE,.NONE} }, { .VSWP, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B20000, 0xFFB30FD0, .NEON, .A32, {}, {.NONE,.NONE} }, { .AESE, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B00300, 0xFFB30FD0, .CRYPTO, .A32, {}, {.SZ8,.NONE} }, { .AESD, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B00340, 0xFFB30FD0, .CRYPTO, .A32, {}, {.SZ8,.NONE} }, { .AESMC, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B00380, 0xFFB30FD0, .CRYPTO, .A32, {}, {.SZ8,.NONE} }, { .AESIMC, {.QPR,.QPR,.NONE,.NONE}, {.VD_Q,.VM_Q,.NONE,.NONE}, 0xF3B003C0, 0xFFB30FD0, .CRYPTO, .A32, {}, {.SZ8,.NONE} }, + { .VDUP, {.QPR,.DPR_ELEM,.NONE,.NONE}, {.VD_Q,.NEON_VDUP_LANE_8,.NONE,.NONE}, 0xF3B10C40, 0xFFB10FD0, .NEON, .A32, {}, {.SZ8,.NONE} }, + { .VDUP, {.DPR,.DPR_ELEM,.NONE,.NONE}, {.VD_D,.NEON_VDUP_LANE_8,.NONE,.NONE}, 0xF3B10C00, 0xFFB10FD0, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VTBL, {.DPR,.DPR_LIST,.DPR,.NONE}, {.VD_D,.NEON_VN_TABLE_3,.VM_D,.NONE}, 0xF3B00A00, 0xFFB00F70, .NEON, .A32, {}, {.SZ8,.NONE} }, - { .VTBL, {.DPR,.DPR_LIST,.DPR,.NONE}, {.VD_D,.NEON_VN_TABLE_4,.VM_D,.NONE}, 0xF3B00B00, 0xFFB00F70, .NEON, .A32, {}, {.SZ8,.NONE} }, - { .VTBL, {.DPR,.DPR_LIST,.DPR,.NONE}, {.VD_D,.NEON_VN_TABLE_2,.VM_D,.NONE}, 0xF3B00900, 0xFFB00F70, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VTBL, {.DPR,.DPR_LIST,.DPR,.NONE}, {.VD_D,.NEON_VN_TABLE_1,.VM_D,.NONE}, 0xF3B00800, 0xFFB00F70, .NEON, .A32, {}, {.SZ8,.NONE} }, - { .VTBX, {.DPR,.DPR_LIST,.DPR,.NONE}, {.VD_D,.NEON_VN_TABLE_1,.VM_D,.NONE}, 0xF3B00840, 0xFFB00F70, .NEON, .A32, {}, {.SZ8,.NONE} }, - { .VTBX, {.DPR,.DPR_LIST,.DPR,.NONE}, {.VD_D,.NEON_VN_TABLE_2,.VM_D,.NONE}, 0xF3B00940, 0xFFB00F70, .NEON, .A32, {}, {.SZ8,.NONE} }, - { .VTBX, {.DPR,.DPR_LIST,.DPR,.NONE}, {.VD_D,.NEON_VN_TABLE_3,.VM_D,.NONE}, 0xF3B00A40, 0xFFB00F70, .NEON, .A32, {}, {.SZ8,.NONE} }, + { .VTBL, {.DPR,.DPR_LIST,.DPR,.NONE}, {.VD_D,.NEON_VN_TABLE_2,.VM_D,.NONE}, 0xF3B00900, 0xFFB00F70, .NEON, .A32, {}, {.SZ8,.NONE} }, + { .VTBL, {.DPR,.DPR_LIST,.DPR,.NONE}, {.VD_D,.NEON_VN_TABLE_4,.VM_D,.NONE}, 0xF3B00B00, 0xFFB00F70, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VTBX, {.DPR,.DPR_LIST,.DPR,.NONE}, {.VD_D,.NEON_VN_TABLE_4,.VM_D,.NONE}, 0xF3B00B40, 0xFFB00F70, .NEON, .A32, {}, {.SZ8,.NONE} }, - { .VDUP, {.QPR,.DPR_ELEM,.NONE,.NONE}, {.VD_Q,.NEON_VM_SCALAR_32,.NONE,.NONE}, 0xF3B00C40, 0xFFB00FD0, .NEON, .A32, {}, {.NONE,.NONE} }, - { .VDUP, {.DPR,.DPR_ELEM,.NONE,.NONE}, {.VD_D,.NEON_VM_SCALAR_32,.NONE,.NONE}, 0xF3B00C00, 0xFFB00FD0, .NEON, .A32, {}, {.NONE,.NONE} }, + { .VTBX, {.DPR,.DPR_LIST,.DPR,.NONE}, {.VD_D,.NEON_VN_TABLE_1,.VM_D,.NONE}, 0xF3B00840, 0xFFB00F70, .NEON, .A32, {}, {.SZ8,.NONE} }, + { .VTBX, {.DPR,.DPR_LIST,.DPR,.NONE}, {.VD_D,.NEON_VN_TABLE_3,.VM_D,.NONE}, 0xF3B00A40, 0xFFB00F70, .NEON, .A32, {}, {.SZ8,.NONE} }, + { .VTBX, {.DPR,.DPR_LIST,.DPR,.NONE}, {.VD_D,.NEON_VN_TABLE_2,.VM_D,.NONE}, 0xF3B00940, 0xFFB00F70, .NEON, .A32, {}, {.SZ8,.NONE} }, { .MOV, {.GPR,.IMM_MOD,.NONE,.NONE}, {.RD,.A32_IMM_MOD,.NONE,.NONE}, 0x03B00000, 0x0FFF0000, .BASE, .A32, {sets_flags=true}, {.NONE,.NONE} }, { .BIC, {.GPR,.GPR,.IMM_MOD,.NONE}, {.RD,.RN_A32,.A32_IMM_MOD,.NONE}, 0x03C00000, 0x0FE00000, .BASE, .A32, {}, {.NONE,.NONE} }, { .BIC, {.GPR,.GPR,.IMM_MOD,.NONE}, {.RD,.RN_A32,.A32_IMM_MOD,.NONE}, 0x03D00000, 0x0FF00000, .BASE, .A32, {sets_flags=true}, {.NONE,.NONE} }, { .MVN, {.GPR,.IMM_MOD,.NONE,.NONE}, {.RD,.A32_IMM_MOD,.NONE,.NONE}, 0x03E00000, 0x0FEF0000, .BASE, .A32, {}, {.NONE,.NONE} }, { .MVN, {.GPR,.IMM_MOD,.NONE,.NONE}, {.RD,.A32_IMM_MOD,.NONE,.NONE}, 0x03F00000, 0x0FFF0000, .BASE, .A32, {sets_flags=true}, {.NONE,.NONE} }, - { .VST1, {.DPR_LIST,.MEM,.NONE,.NONE}, {.NEON_D_LIST_3,.RN_A32,.NONE,.NONE}, 0xF400060F, 0xFFF00F0F, .NEON, .A32, {}, {.SZ8,.NONE} }, - { .VST1, {.DPR_LIST,.MEM,.NONE,.NONE}, {.NEON_D_LIST_1,.RN_A32,.NONE,.NONE}, 0xF400070F, 0xFFF00F0F, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VST1, {.DPR_LIST,.MEM,.NONE,.NONE}, {.NEON_D_LIST_4,.RN_A32,.NONE,.NONE}, 0xF400020F, 0xFFF00F0F, .NEON, .A32, {}, {.SZ8,.NONE} }, + { .VST1, {.DPR_LIST,.MEM,.NONE,.NONE}, {.NEON_D_LIST_3,.RN_A32,.NONE,.NONE}, 0xF400060F, 0xFFF00F0F, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VST1, {.DPR_LIST,.MEM,.NONE,.NONE}, {.NEON_D_LIST_2,.RN_A32,.NONE,.NONE}, 0xF4000A0F, 0xFFF00F0F, .NEON, .A32, {}, {.SZ8,.NONE} }, - { .VST2, {.DPR_LIST,.MEM,.NONE,.NONE}, {.NEON_D_LIST_4,.RN_A32,.NONE,.NONE}, 0xF400030F, 0xFFF00F0F, .NEON, .A32, {}, {.SZ8,.NONE} }, + { .VST1, {.DPR_LIST,.MEM,.NONE,.NONE}, {.NEON_D_LIST_1,.RN_A32,.NONE,.NONE}, 0xF400070F, 0xFFF00F0F, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VST2, {.DPR_LIST,.MEM,.NONE,.NONE}, {.NEON_D_LIST_2X,.RN_A32,.NONE,.NONE}, 0xF400090F, 0xFFF00F0F, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VST2, {.DPR_LIST,.MEM,.NONE,.NONE}, {.NEON_D_LIST_2,.RN_A32,.NONE,.NONE}, 0xF400080F, 0xFFF00F0F, .NEON, .A32, {}, {.SZ8,.NONE} }, - { .VST3, {.DPR_LIST,.MEM,.NONE,.NONE}, {.NEON_D_LIST_3,.RN_A32,.NONE,.NONE}, 0xF400040F, 0xFFF00F0F, .NEON, .A32, {}, {.SZ8,.NONE} }, + { .VST2, {.DPR_LIST,.MEM,.NONE,.NONE}, {.NEON_D_LIST_4,.RN_A32,.NONE,.NONE}, 0xF400030F, 0xFFF00F0F, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VST3, {.DPR_LIST,.MEM,.NONE,.NONE}, {.NEON_D_LIST_3X,.RN_A32,.NONE,.NONE}, 0xF400050F, 0xFFF00F0F, .NEON, .A32, {}, {.SZ8,.NONE} }, - { .VST4, {.DPR_LIST,.MEM,.NONE,.NONE}, {.NEON_D_LIST_4X,.RN_A32,.NONE,.NONE}, 0xF400010F, 0xFFF00F0F, .NEON, .A32, {}, {.SZ8,.NONE} }, + { .VST3, {.DPR_LIST,.MEM,.NONE,.NONE}, {.NEON_D_LIST_3,.RN_A32,.NONE,.NONE}, 0xF400040F, 0xFFF00F0F, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VST4, {.DPR_LIST,.MEM,.NONE,.NONE}, {.NEON_D_LIST_4,.RN_A32,.NONE,.NONE}, 0xF400000F, 0xFFF00F0F, .NEON, .A32, {}, {.SZ8,.NONE} }, + { .VST4, {.DPR_LIST,.MEM,.NONE,.NONE}, {.NEON_D_LIST_4X,.RN_A32,.NONE,.NONE}, 0xF400010F, 0xFFF00F0F, .NEON, .A32, {}, {.SZ8,.NONE} }, { .STR, {.GPR,.MEM,.NONE,.NONE}, {.RT_A32,.MEM_POST_INDEX,.NONE,.NONE}, 0x04000000, 0x0F700000, .BASE, .A32, {}, {.NONE,.NONE} }, { .LDR, {.GPR,.MEM,.NONE,.NONE}, {.RT_A32,.MEM_POST_INDEX,.NONE,.NONE}, 0x04100000, 0x0F700000, .BASE, .A32, {}, {.NONE,.NONE} }, { .VLD1, {.DPR_LIST,.MEM,.NONE,.NONE}, {.NEON_D_LIST_1,.RN_A32,.NONE,.NONE}, 0xF420070F, 0xFFF00F0F, .NEON, .A32, {}, {.SZ8,.NONE} }, - { .VLD1, {.DPR_LIST,.MEM,.NONE,.NONE}, {.NEON_D_LIST_3,.RN_A32,.NONE,.NONE}, 0xF420060F, 0xFFF00F0F, .NEON, .A32, {}, {.SZ8,.NONE} }, - { .VLD1, {.DPR_LIST,.MEM,.NONE,.NONE}, {.NEON_D_LIST_2,.RN_A32,.NONE,.NONE}, 0xF4200A0F, 0xFFF00F0F, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VLD1, {.DPR_LIST,.MEM,.NONE,.NONE}, {.NEON_D_LIST_4,.RN_A32,.NONE,.NONE}, 0xF420020F, 0xFFF00F0F, .NEON, .A32, {}, {.SZ8,.NONE} }, - { .VLD2, {.DPR_LIST,.MEM,.NONE,.NONE}, {.NEON_D_LIST_2,.RN_A32,.NONE,.NONE}, 0xF420080F, 0xFFF00F0F, .NEON, .A32, {}, {.SZ8,.NONE} }, + { .VLD1, {.DPR_LIST,.MEM,.NONE,.NONE}, {.NEON_D_LIST_2,.RN_A32,.NONE,.NONE}, 0xF4200A0F, 0xFFF00F0F, .NEON, .A32, {}, {.SZ8,.NONE} }, + { .VLD1, {.DPR_LIST,.MEM,.NONE,.NONE}, {.NEON_D_LIST_3,.RN_A32,.NONE,.NONE}, 0xF420060F, 0xFFF00F0F, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VLD2, {.DPR_LIST,.MEM,.NONE,.NONE}, {.NEON_D_LIST_2X,.RN_A32,.NONE,.NONE}, 0xF420090F, 0xFFF00F0F, .NEON, .A32, {}, {.SZ8,.NONE} }, + { .VLD2, {.DPR_LIST,.MEM,.NONE,.NONE}, {.NEON_D_LIST_2,.RN_A32,.NONE,.NONE}, 0xF420080F, 0xFFF00F0F, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VLD2, {.DPR_LIST,.MEM,.NONE,.NONE}, {.NEON_D_LIST_4,.RN_A32,.NONE,.NONE}, 0xF420030F, 0xFFF00F0F, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VLD3, {.DPR_LIST,.MEM,.NONE,.NONE}, {.NEON_D_LIST_3,.RN_A32,.NONE,.NONE}, 0xF420040F, 0xFFF00F0F, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VLD3, {.DPR_LIST,.MEM,.NONE,.NONE}, {.NEON_D_LIST_3X,.RN_A32,.NONE,.NONE}, 0xF420050F, 0xFFF00F0F, .NEON, .A32, {}, {.SZ8,.NONE} }, - { .VLD4, {.DPR_LIST,.MEM,.NONE,.NONE}, {.NEON_D_LIST_4,.RN_A32,.NONE,.NONE}, 0xF420000F, 0xFFF00F0F, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VLD4, {.DPR_LIST,.MEM,.NONE,.NONE}, {.NEON_D_LIST_4X,.RN_A32,.NONE,.NONE}, 0xF420010F, 0xFFF00F0F, .NEON, .A32, {}, {.SZ8,.NONE} }, + { .VLD4, {.DPR_LIST,.MEM,.NONE,.NONE}, {.NEON_D_LIST_4,.RN_A32,.NONE,.NONE}, 0xF420000F, 0xFFF00F0F, .NEON, .A32, {}, {.SZ8,.NONE} }, { .STRT, {.GPR,.MEM,.NONE,.NONE}, {.RT_A32,.MEM_POST_INDEX,.NONE,.NONE}, 0x04200000, 0x0F700000, .BASE, .A32, {}, {.NONE,.NONE} }, { .LDRT, {.GPR,.MEM,.NONE,.NONE}, {.RT_A32,.MEM_POST_INDEX,.NONE,.NONE}, 0x04300000, 0x0F700000, .BASE, .A32, {}, {.NONE,.NONE} }, { .STRB, {.GPR,.MEM,.NONE,.NONE}, {.RT_A32,.MEM_POST_INDEX,.NONE,.NONE}, 0x04400000, 0x0F700000, .BASE, .A32, {}, {.NONE,.NONE} }, @@ -1734,119 +1738,119 @@ DECODE_ENTRIES := [1722]lib.Decode_Entry{ } @(rodata) -DECODE_FORM_IDX := [1722]u16{ +DECODE_FORM_IDX := [1726]u16{ 0, 2, 1, 1, 5, 4, 0, 2, 1, 1, 5, 4, 0, 2, 2, 2, 2, 1, 2, 2, 2, 5, 4, 0, 0, 2, 1, 0, 0, 0, 5, 4, 0, 2, 1, 1, 5, 4, 0, 2, 1, 1, 5, 4, 0, 2, 1, 1, 5, 4, 0, 2, 1, 1, 5, 4, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 0, 0, 0, 0, 0, 0, 3, 3, 3, 2, 1, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, 0, 0, 0, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 2, 1, 1, 1, 1, 0, 0, 0, 2, 1, 0, 0, 0, 5, 4, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 2, 1, 0, 0, 5, 4, 0, 0, 0, 2, 1, 0, 0, 0, 5, 4, 0, 0, 0, 2, 1, 0, 0, 0, 5, 4, 1, 1, 1, 9, 14, - 8, 6, 10, 4, 3, 3, 1, 4, 4, 3, 3, 1, 3, 7, 3, 3, - 0, 0, 3, 9, 3, 1, 4, 1, 1, 0, 0, 13, 5, 5, 3, 9, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 8, 0, 0, + 8, 10, 6, 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, 9, 3, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 4, 10, 9, 7, 4, 4, 5, 5, 2, 4, 4, 13, 4, 9, 4, 4, 2, 2, 4, 11, 4, 2, 0, 6, 3, 6, 4, 1, 1, 1, 1, 0, 1, 1, 12, 1, 8, - 1, 1, 10, 1, 1, 1, 1, 1, 1, 3, 5, 5, 5, 11, 14, 10, + 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, 13, 5, 5, 5, 4, 4, - 5, 5, 9, 1, 4, 0, 7, 13, 7, 5, 9, 3, 2, 2, 2, 2, - 1, 2, 2, 12, 2, 2, 2, 2, 8, 2, 2, 2, 2, 0, 2, 0, + 5, 9, 5, 1, 4, 0, 7, 13, 7, 5, 9, 3, 2, 2, 2, 2, + 1, 2, 2, 12, 2, 2, 2, 2, 2, 8, 2, 2, 2, 0, 2, 0, 7, 12, 4, 7, 7, 1, 11, 5, 6, 0, 8, 3, 3, 3, 0, 10, - 3, 3, 0, 3, 0, 3, 14, 11, 26, 12, 19, 16, 15, 31, 20, 18, - 30, 23, 13, 22, 10, 24, 27, 25, 28, 21, 29, 17, 0, 0, 7, 11, - 8, 2, 9, 1, 0, 3, 5, 10, 4, 6, 6, 1, 8, 3, 4, 11, - 7, 2, 0, 9, 5, 10, 9, 3, 17, 5, 12, 2, 16, 14, 10, 6, - 8, 15, 7, 4, 13, 11, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, + 3, 3, 0, 3, 0, 3, 19, 31, 11, 25, 29, 27, 15, 18, 23, 26, + 20, 13, 22, 12, 14, 28, 17, 16, 10, 24, 30, 21, 0, 0, 11, 2, + 3, 7, 0, 4, 5, 9, 8, 1, 6, 10, 0, 9, 2, 5, 11, 1, + 10, 7, 3, 4, 8, 6, 2, 12, 3, 4, 14, 6, 17, 16, 8, 11, + 9, 7, 10, 13, 5, 15, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 5, 0, 0, 0, 0, 0, - 0, 4, 0, 1, 1, 1, 1, 1, 1, 1, 18, 12, 11, 7, 1, 1, - 6, 1, 6, 0, 2, 0, 2, 2, 0, 4, 4, 4, 4, 3, 2, 2, - 2, 2, 2, 2, 2, 19, 13, 12, 2, 8, 7, 2, 7, 2, 3, 1, - 3, 1, 1, 3, 6, 6, 5, 5, 0, 1, 0, 3, 0, 3, 0, 3, - 13, 7, 7, 1, 9, 9, 14, 12, 6, 7, 7, 9, 9, 7, 7, 1, - 3, 9, 7, 7, 6, 12, 6, 1, 0, 7, 7, 7, 3, 3, 8, 0, - 5, 11, 13, 3, 6, 6, 8, 8, 6, 6, 0, 0, 8, 6, 6, 0, - 6, 6, 4, 3, 3, 3, 6, 2, 2, 0, 9, 9, 11, 10, 4, 7, + 0, 4, 0, 1, 1, 1, 1, 1, 1, 1, 18, 12, 11, 1, 7, 6, + 1, 1, 6, 0, 2, 2, 0, 0, 2, 4, 4, 4, 4, 3, 2, 2, + 2, 2, 2, 2, 2, 19, 13, 12, 8, 2, 7, 2, 2, 7, 3, 1, + 1, 3, 3, 1, 6, 6, 5, 5, 0, 1, 0, 3, 0, 3, 0, 3, + 7, 13, 7, 1, 9, 9, 12, 14, 6, 7, 7, 9, 9, 7, 7, 1, + 3, 7, 9, 7, 12, 6, 6, 1, 0, 7, 7, 7, 3, 3, 8, 0, + 5, 13, 11, 3, 6, 6, 8, 8, 6, 6, 0, 0, 6, 8, 6, 0, + 6, 6, 3, 4, 3, 3, 6, 2, 2, 0, 9, 9, 11, 10, 4, 7, 2, 2, 2, 1, 4, 11, 8, 8, 10, 0, 6, 3, 4, 0, 0, 0, 0, 1, 10, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 11, 11, 13, 1, 13, 11, 8, 3, 3, 3, 9, 1, 5, 9, 10, - 10, 12, 1, 0, 12, 0, 7, 5, 1, 1, 1, 8, 0, 2, 8, 0, + 0, 11, 13, 11, 1, 13, 11, 8, 3, 3, 3, 9, 1, 5, 9, 10, + 12, 10, 1, 0, 12, 0, 7, 5, 1, 1, 1, 8, 0, 2, 8, 0, 4, 0, 15, 12, 1, 11, 14, 8, 0, 10, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 4, 4, 5, 5, 4, - 4, 4, 4, 4, 20, 14, 13, 9, 4, 4, 8, 4, 8, 6, 6, 3, + 4, 4, 4, 4, 20, 14, 13, 9, 4, 8, 4, 8, 4, 6, 6, 3, 5, 5, 7, 7, 5, 5, 5, 5, 5, 21, 15, 14, 5, 10, 9, 5, - 5, 9, 7, 7, 0, 7, 4, 5, 2, 9, 3, 6, 8, 4, 9, 2, - 5, 8, 3, 7, 6, 10, 1, 0, 2, 2, 1, 0, 3, 5, 4, 2, - 0, 1, 4, 0, 2, 1, 1, 0, 2, 3, 2, 3, 0, 1, 1, 3, - 2, 4, 1, 0, 2, 5, 3, 2, 3, 0, 5, 4, 1, 2, 1, 0, - 3, 4, 5, 0, 2, 1, 3, 4, 5, 4, 2, 3, 3, 2, 4, 0, - 0, 0, 12, 13, 10, 11, 15, 12, 13, 14, 14, 13, 15, 12, 17, 16, - 14, 15, 17, 15, 16, 14, 2, 3, 0, 1, 1, 0, 1, 0, 0, 1, - 3, 5, 3, 0, 2, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 2, 3, 1, 0, 0, 1, 2, 3, 3, 2, 3, 0, 3, 0, 3, 2, - 0, 3, 1, 2, 1, 0, 0, 1, 1, 0, 2, 2, 0, 2, 1, 3, - 0, 1, 2, 0, 1, 0, 1, 0, 0, 2, 0, 2, 0, 0, 6, 5, - 4, 4, 5, 4, 3, 3, 4, 3, 2, 2, 7, 5, 4, 4, 6, 4, - 3, 3, 5, 3, 2, 2, 4, 6, 5, 5, 0, 0, 1, 1, 0, 0, - 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 9, 5, 7, 7, 0, 7, 2, 3, 5, 4, 6, 8, 9, 7, 8, 3, + 5, 9, 6, 2, 4, 10, 0, 1, 2, 2, 0, 5, 3, 4, 1, 2, + 1, 0, 2, 1, 0, 4, 2, 3, 1, 0, 0, 1, 2, 3, 3, 2, + 1, 2, 0, 1, 5, 4, 3, 0, 4, 3, 2, 5, 1, 0, 2, 3, + 5, 1, 4, 2, 0, 3, 1, 5, 4, 4, 3, 2, 3, 2, 4, 0, + 0, 0, 12, 10, 13, 11, 14, 13, 15, 12, 15, 12, 14, 13, 16, 14, + 17, 15, 17, 15, 14, 16, 1, 3, 0, 2, 0, 1, 0, 1, 6, 7, + 0, 1, 3, 5, 2, 0, 1, 3, 0, 1, 1, 0, 5, 4, 1, 0, + 0, 0, 0, 0, 3, 2, 2, 0, 1, 3, 3, 0, 2, 1, 3, 0, + 3, 0, 3, 3, 2, 1, 0, 1, 0, 2, 1, 0, 0, 1, 2, 2, + 0, 3, 1, 2, 1, 0, 2, 0, 1, 1, 0, 0, 0, 2, 0, 2, + 0, 0, 6, 5, 4, 4, 5, 4, 3, 3, 4, 3, 2, 2, 7, 5, + 4, 4, 6, 4, 3, 3, 5, 3, 2, 2, 4, 6, 5, 5, 0, 0, + 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 3, 0, - 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 0, 1, - 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1, - 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, - 0, 1, 0, 0, 0, 7, 9, 0, 0, 6, 8, 0, 0, 1, 0, 1, - 0, 0, 1, 1, 0, 0, 1, 0, 0, 2, 3, 0, 1, 3, 2, 0, - 1, 1, 0, 1, 0, 0, 1, 0, 1, 4, 38, 37, 3, 2, 1, 0, - 2, 2, 1, 0, 1, 0, 0, 0, 0, 0, 5, 32, 1, 0, 0, 1, - 0, 0, 3, 3, 2, 2, 2, 1, 0, 1, 0, 2, 2, 1, 0, 1, - 0, 36, 1, 3, 1, 0, 0, 1, 2, 2, 0, 1, 2, 2, 0, 1, - 0, 1, 2, 2, 1, 0, 1, 0, 2, 3, 5, 3, 2, 0, 1, 1, - 0, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, - 0, 2, 0, 1, 1, 0, 4, 1, 0, 31, 30, 32, 28, 26, 25, 27, - 29, 33, 22, 20, 19, 21, 23, 16, 15, 17, 13, 11, 12, 14, 18, 24, - 34, 6, 4, 3, 5, 7, 0, 1, 2, 8, 9, 1, 0, 0, 1, 1, - 0, 2, 3, 1, 0, 1, 0, 0, 1, 0, 1, 0, 3, 2, 0, 0, - 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, - 1, 2, 2, 1, 3, 3, 1, 1, 4, 4, 4, 4, 4, 3, 5, 4, - 7, 5, 11, 10, 8, 10, 9, 8, 7, 8, 8, 8, 8, 1, 1, 1, - 1, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1, 4, 0, 0, 0, 0, 7, 33, 34, 2, 14, 14, 2, 0, - 0, 0, 0, 0, 0, 0, 17, 17, 17, 6, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 16, 16, 11, 5, 5, 0, 0, 0, 0, 0, 0, + 3, 0, 3, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, + 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, + 1, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 1, 0, 0, 0, 7, 9, 0, 0, 6, 8, 0, + 0, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 2, 3, 0, + 1, 3, 2, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 4, 38, 37, + 3, 2, 1, 0, 2, 2, 1, 0, 1, 0, 0, 0, 0, 0, 5, 32, + 1, 0, 0, 1, 0, 0, 3, 3, 2, 2, 2, 1, 0, 1, 0, 2, + 2, 1, 0, 1, 0, 36, 1, 3, 1, 0, 0, 1, 2, 2, 0, 1, + 2, 2, 0, 1, 0, 1, 2, 2, 1, 0, 1, 0, 2, 3, 5, 3, + 2, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, + 0, 1, 0, 1, 0, 2, 0, 1, 1, 0, 4, 1, 0, 31, 30, 32, + 28, 26, 25, 27, 29, 33, 22, 20, 19, 21, 23, 16, 15, 17, 13, 11, + 12, 14, 18, 24, 34, 6, 4, 3, 5, 7, 0, 1, 2, 8, 9, 1, + 0, 0, 1, 1, 0, 2, 3, 1, 0, 1, 0, 0, 1, 0, 1, 0, + 3, 2, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, + 0, 0, 0, 1, 1, 2, 2, 1, 3, 3, 1, 1, 4, 4, 4, 4, + 4, 3, 5, 4, 7, 5, 11, 10, 8, 10, 9, 8, 7, 8, 8, 8, + 8, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 1, + 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1, 8, 0, 0, 0, 0, 7, 33, 34, 2, + 14, 14, 2, 0, 0, 0, 0, 0, 0, 0, 17, 17, 17, 6, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 16, 11, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 15, 15, 8, 8, 2, 10, 10, 12, 12, 8, 4, 6, 0, 0, 2, 2, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 4, 3, 6, 4, 8, 9, 7, 0, 0, 7, 8, 7, 6, - 7, 7, 7, 7, 4, 3, 1, 2, 2, 2, 2, 2, 1, 1, 1, 1, - 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 0, 0, 0, 2, 9, 8, 7, 7, 7, 7, 6, - 6, 1, 1, 1, 10, 8, 7, 6, 6, 6, 6, 5, 5, 2, 1, 2, - 2, 1, 2, 5, 5, 5, 4, 1, 1, 2, 2, 2, 1, 1, 1, 1, + 0, 0, 0, 0, 15, 15, 8, 8, 2, 10, 10, 12, 12, 8, 4, 6, + 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 4, 3, 6, 4, 8, 9, 7, 0, 0, + 7, 8, 7, 6, 7, 7, 7, 7, 4, 3, 1, 2, 2, 2, 2, 2, + 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 2, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 2, 9, 8, 7, + 7, 7, 7, 6, 6, 1, 1, 1, 10, 8, 7, 6, 6, 6, 6, 5, + 5, 2, 1, 2, 2, 1, 2, 5, 5, 5, 4, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 3, 1, 1, 0, 1, 1, 1, 1, 1, 1, 2, 1, - 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 4, 1, 1, 1, 1, 1, 0, 0, 1, 0, 1, 0, 0, 2, 2, 2, - 2, 2, 2, 0, 0, 0, 0, 11, 11, 0, 0, 0, 10, 10, 18, 2, - 16, 6, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 6, 6, 7, - 7, 6, 3, 8, 8, 6, 6, 6, 6, 3, 4, 3, 6, 6, 6, 3, - 3, 3, 2, 0, 2, 1, 2, 0, 0, 9, 5, 7, 4, 4, 4, 4, - 4, 5, 4, 4, 4, 5, 6, 5, 5, 5, 5, 6, 7, 0, 10, 1, - 1, 1, 1, 9, 11, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, - 1, 1, 0, 1, 2, 2, 1, 1, 1, 2, + 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 0, 1, 1, 1, 1, + 1, 1, 2, 1, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 4, 1, 1, 1, 1, 1, 0, 0, 1, 0, 1, 0, + 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 11, 11, 0, 0, 0, + 10, 10, 18, 2, 16, 6, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, + 2, 6, 6, 7, 7, 6, 3, 8, 8, 6, 6, 6, 6, 3, 4, 3, + 6, 6, 6, 3, 3, 3, 2, 0, 2, 1, 2, 0, 0, 9, 5, 7, + 4, 4, 4, 4, 4, 5, 4, 4, 4, 5, 6, 5, 5, 5, 5, 6, + 7, 0, 10, 1, 1, 1, 1, 9, 11, 0, 1, 1, 1, 1, 1, 0, + 1, 1, 1, 1, 1, 1, 0, 1, 2, 2, 1, 1, 1, 2, } @(rodata) -DECODE_BUCKET_LIST := [5509]u16{ +DECODE_BUCKET_LIST := [5517]u16{ 0, 1, 2, 3, 0, 4, 1, 5, 2, 6, 7, 8, 9, 6, 10, 7, 11, 8, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 16, 17, 23, 24, 25, 26, 27, 28, 29, 30, 31, 25, 26, 32, 33, 34, 35, 32, 36, @@ -1856,7 +1860,7 @@ DECODE_BUCKET_LIST := [5509]u16{ 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 57, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 80, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + 82, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 63, 64, 65, 127, 128, 129, 130, 131, 72, 73, 74, 132, 127, 133, 128, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 145, 146, 151, 152, 153, 100, 101, 102, 154, 155, 156, 157, 158, 105, 106, @@ -1884,17 +1888,17 @@ DECODE_BUCKET_LIST := [5509]u16{ 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 329, 328, 330, 331, 332, 333, 334, 356, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, - 346, 347, 348, 349, 350, 351, 352, 357, 356, 358, 361, 376, 371, 359, 366, 369, - 379, 360, 375, 368, 373, 372, 364, 374, 362, 370, 377, 367, 365, 363, 378, 380, - 381, 382, 390, 385, 392, 387, 383, 386, 384, 393, 388, 389, 391, 396, 404, 400, - 399, 402, 397, 401, 395, 398, 394, 403, 405, 407, 416, 417, 421, 419, 415, 413, - 406, 409, 411, 418, 408, 420, 412, 410, 414, 422, 423, 424, 425, 426, 428, 427, + 346, 347, 348, 349, 350, 351, 352, 357, 356, 358, 361, 377, 375, 359, 370, 367, + 371, 360, 366, 368, 378, 376, 364, 379, 362, 373, 374, 369, 365, 363, 372, 380, + 381, 391, 384, 387, 392, 386, 388, 393, 382, 389, 383, 390, 385, 394, 403, 400, + 401, 397, 399, 404, 396, 402, 395, 398, 405, 413, 417, 416, 407, 406, 415, 409, + 421, 411, 418, 410, 408, 420, 414, 419, 412, 422, 423, 424, 425, 426, 428, 427, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, - 461, 462, 463, 464, 465, 466, 468, 467, 470, 469, 472, 471, 473, 474, 475, 476, + 461, 462, 463, 464, 466, 465, 468, 467, 470, 469, 472, 471, 473, 474, 475, 476, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 477, 450, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 489, - 488, 491, 490, 492, 493, 495, 494, 497, 496, 499, 498, 500, 501, 502, 503, 431, + 488, 491, 490, 493, 492, 495, 494, 496, 497, 499, 498, 500, 501, 502, 503, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 504, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 505, 506, 507, 504, 379, 377, 376, 375, 373, 372, @@ -1904,27 +1908,27 @@ DECODE_BUCKET_LIST := [5509]u16{ 414, 417, 412, 411, 410, 413, 408, 407, 409, 406, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 508, 451, 452, 453, 454, 455, 456, 457, 458, 459, - 460, 461, 462, 464, 463, 466, 465, 467, 468, 470, 469, 472, 471, 473, 474, 475, + 460, 461, 462, 463, 464, 465, 466, 468, 467, 469, 470, 471, 472, 473, 474, 475, 476, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 509, 508, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, - 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, + 488, 489, 491, 490, 493, 492, 495, 494, 497, 496, 499, 498, 500, 501, 502, 503, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 510, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 505, 506, 511, 510, 512, 513, 514, 515, 516, 517, 519, 518, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, - 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 546, 545, 547, 548, - 549, 550, 551, 552, 553, 554, 555, 557, 556, 558, 559, 560, 561, 563, 562, 564, + 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, + 549, 550, 551, 552, 553, 554, 555, 557, 556, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 611, 610, 612, - 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 625, 624, 626, 627, 628, + 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 513, 512, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, - 538, 539, 540, 541, 542, 543, 544, 546, 545, 547, 548, 549, 550, 551, 552, 553, + 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 563, 562, 564, 565, 566, 567, 568, 651, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, - 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 652, 609, 611, 610, 612, 613, + 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 652, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 653, 378, 379, 377, 374, 375, 376, 373, 372, 370, 371, 369, @@ -1933,265 +1937,265 @@ DECODE_BUCKET_LIST := [5509]u16{ 400, 397, 394, 395, 396, 421, 420, 417, 418, 419, 416, 415, 414, 412, 411, 409, 410, 408, 407, 406, 413, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, - 448, 449, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, - 680, 681, 682, 684, 683, 685, 686, 664, 665, 431, 432, 433, 434, 435, 436, 437, + 448, 449, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 680, + 679, 681, 682, 684, 683, 685, 686, 664, 665, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 687, 666, 688, 689, - 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 703, 702, 705, 704, + 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 701, 700, 702, 703, 704, 705, 706, 707, 664, 665, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, - 443, 444, 445, 446, 447, 448, 449, 708, 709, 715, 712, 714, 713, 710, 716, 711, - 723, 724, 721, 720, 717, 722, 719, 718, 725, 726, 728, 727, 732, 730, 733, 734, - 729, 731, 736, 735, 737, 739, 738, 740, 741, 744, 745, 743, 742, 746, 747, 749, - 748, 751, 750, 752, 754, 755, 757, 756, 753, 758, 760, 761, 762, 764, 759, 763, - 765, 766, 768, 767, 769, 770, 773, 772, 775, 776, 774, 771, 779, 778, 777, 780, - 781, 782, 783, 784, 785, 788, 787, 786, 789, 792, 793, 791, 790, 797, 796, 795, - 794, 800, 798, 801, 799, 804, 802, 803, 805, 807, 806, 808, 809, 810, 811, 812, - 813, 814, 815, 817, 816, 821, 819, 820, 818, 823, 822, 825, 824, 827, 826, 828, - 829, 830, 831, 834, 835, 833, 832, 838, 837, 839, 836, 841, 840, 664, 665, 431, - 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, - 448, 449, 842, 708, 379, 378, 376, 377, 375, 374, 373, 372, 370, 369, 368, 371, - 366, 365, 363, 364, 362, 361, 359, 360, 358, 367, 654, 655, 393, 392, 389, 390, - 391, 388, 387, 386, 384, 383, 382, 385, 405, 404, 403, 400, 401, 402, 399, 398, - 397, 394, 395, 396, 421, 420, 418, 417, 416, 413, 414, 415, 419, 412, 411, 409, - 408, 407, 410, 406, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 431, 432, - 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, - 449, 843, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, - 682, 681, 683, 684, 685, 686, 664, 665, 431, 432, 433, 434, 435, 436, 437, 438, - 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 844, 843, 688, 689, 690, - 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 703, 702, 704, 705, 706, - 707, 664, 665, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, - 444, 445, 446, 447, 448, 449, 845, 709, 714, 715, 716, 712, 713, 711, 710, 722, - 723, 724, 720, 717, 718, 719, 721, 725, 728, 727, 726, 733, 730, 731, 732, 734, - 729, 736, 735, 737, 740, 741, 739, 738, 743, 744, 745, 742, 749, 748, 746, 747, - 752, 751, 750, 758, 757, 756, 753, 754, 755, 760, 761, 762, 759, 763, 764, 770, - 769, 767, 765, 766, 768, 774, 775, 773, 772, 771, 776, 779, 778, 777, 781, 782, - 780, 783, 784, 785, 789, 787, 788, 786, 792, 793, 790, 791, 797, 795, 794, 796, - 801, 798, 799, 800, 804, 803, 802, 805, 808, 809, 807, 806, 811, 810, 813, 812, - 815, 814, 816, 817, 818, 821, 820, 819, 822, 823, 825, 824, 827, 826, 828, 829, - 830, 831, 832, 835, 834, 833, 838, 839, 837, 836, 840, 841, 664, 665, 431, 432, - 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, - 449, 846, 845, 847, 848, 849, 850, 851, 852, 853, 854, 855, 856, 857, 858, 859, - 860, 861, 862, 863, 865, 866, 864, 867, 868, 870, 869, 871, 872, 873, 874, 875, - 876, 877, 878, 879, 880, 881, 882, 883, 884, 885, 886, 887, 888, 889, 858, 859, - 890, 891, 892, 893, 894, 895, 896, 897, 898, 899, 900, 901, 902, 903, 904, 905, - 871, 872, 878, 879, 880, 881, 882, 883, 884, 885, 886, 887, 888, 889, 873, 874, - 875, 890, 891, 892, 893, 894, 895, 896, 897, 898, 899, 900, 901, 902, 903, 904, - 905, 876, 877, 906, 907, 908, 909, 910, 911, 912, 913, 914, 915, 916, 917, 918, - 906, 907, 908, 909, 910, 919, 920, 911, 912, 918, 921, 922, 923, 924, 925, 926, - 927, 928, 929, 930, 931, 932, 933, 934, 935, 936, 937, 938, 939, 940, 941, 942, - 943, 944, 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, - 959, 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 965, 970, 971, 972, 973, - 974, 975, 976, 977, 978, 979, 975, 980, 981, 982, 983, 984, 985, 986, 987, 988, - 989, 990, 991, 992, 993, 994, 995, 996, 997, 998, 999, 1000, 1001, 1002, 1003, 1004, - 1005, 988, 990, 1006, 1006, 1007, 1008, 996, 1007, 1008, 1003, 1009, 1010, 1009, 1011, 1012, - 1013, 1011, 1014, 1013, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024, 1025, 1026, - 1027, 1028, 1029, 1026, 1030, 1028, 1031, 1032, 1033, 1034, 1035, 1033, 1036, 1035, 1037, 1038, - 1039, 1040, 1039, 1040, 1039, 1040, 1039, 1040, 1039, 1040, 1039, 1040, 1039, 1040, 1039, 1040, - 1039, 1040, 1039, 1040, 1039, 1040, 1039, 1040, 1039, 1040, 1039, 1040, 1039, 1040, 1039, 1040, - 1039, 1041, 1039, 1041, 1039, 1041, 1039, 1041, 1039, 1041, 1039, 1041, 1039, 1041, 1039, 1041, - 1039, 1041, 1039, 1041, 1039, 1041, 1039, 1041, 1039, 1041, 1039, 1041, 1039, 1041, 1039, 1041, - 1042, 1043, 1044, 1057, 1058, 1045, 1046, 1057, 1058, 1047, 1048, 1049, 1050, 1051, 1052, 1053, - 1054, 1055, 1056, 1057, 1058, 1045, 1046, 1059, 1060, 1057, 1058, 1047, 1048, 1042, 1043, 1044, - 1062, 1061, 1057, 1063, 1058, 1045, 1064, 1046, 1066, 1065, 1057, 1067, 1058, 1047, 1068, 1048, - 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1045, 1046, 1059, 1060, 1057, 1058, - 1047, 1048, 1069, 1070, 1072, 1071, 1045, 1046, 1069, 1070, 1074, 1073, 1047, 1048, 1075, 1076, - 1077, 1078, 1079, 1080, 1069, 1070, 1081, 1082, 1045, 1046, 1084, 1083, 1069, 1070, 1086, 1085, - 1047, 1048, 1069, 1070, 1072, 1071, 1045, 1046, 1069, 1070, 1073, 1074, 1047, 1048, 1075, 1076, - 1077, 1078, 1079, 1080, 1069, 1070, 1082, 1081, 1045, 1046, 1069, 1070, 1086, 1085, 1047, 1048, - 1057, 1058, 1088, 1087, 1057, 1058, 1089, 1090, 1091, 1092, 1057, 1058, 1093, 1094, 1057, 1058, - 1096, 1095, 1057, 1058, 1088, 1087, 1057, 1058, 1089, 1090, 1057, 1058, 1093, 1094, 1057, 1058, - 1096, 1095, 1069, 1070, 1088, 1087, 1069, 1070, 1089, 1090, 1069, 1070, 1069, 1070, 1069, 1070, - 1087, 1088, 1069, 1070, 1090, 1089, 1069, 1070, 1069, 1070, 1097, 1098, 1099, 1100, 1101, 1102, - 1103, 1104, 1105, 1057, 1106, 1107, 1109, 1108, 1058, 1110, 1111, 1112, 1113, 1114, 1103, 1102, - 1115, 1057, 1117, 1116, 1118, 1119, 1058, 1120, 1111, 1121, 1113, 1098, 1099, 1122, 1123, 1124, - 1125, 1103, 1102, 1126, 1057, 1127, 1128, 1129, 1130, 1058, 1110, 1111, 1112, 1113, 1102, 1103, - 1115, 1131, 1132, 1057, 1134, 1133, 1136, 1135, 1058, 1120, 1111, 1121, 1113, 1100, 1137, 1101, - 1102, 1103, 1104, 1105, 1057, 1106, 1107, 1109, 1108, 1058, 1110, 1111, 1112, 1113, 1102, 1103, - 1115, 1057, 1116, 1117, 1119, 1118, 1058, 1120, 1111, 1121, 1113, 1122, 1123, 1137, 1124, 1125, - 1102, 1103, 1126, 1057, 1128, 1127, 1129, 1130, 1058, 1110, 1111, 1112, 1113, 1103, 1102, 1115, - 1131, 1132, 1057, 1134, 1133, 1135, 1136, 1058, 1120, 1111, 1121, 1113, 1138, 1139, 1141, 1140, - 1143, 1142, 1144, 1145, 1146, 1147, 1110, 1111, 1112, 1113, 1115, 1148, 1149, 1150, 1151, 1153, - 1152, 1120, 1111, 1121, 1113, 1154, 1155, 1157, 1156, 1159, 1158, 1110, 1111, 1112, 1113, 1162, - 1161, 1160, 1163, 1164, 1166, 1165, 1168, 1167, 1170, 1169, 1171, 1172, 1173, 1174, 1175, 1176, - 1177, 1178, 1180, 1179, 1181, 1182, 1183, 1184, 1187, 1186, 1185, 1190, 1189, 1188, 1191, 1192, - 1212, 1202, 1218, 1219, 1225, 1207, 1226, 1200, 1194, 1205, 1214, 1215, 1195, 1206, 1210, 1204, - 1196, 1221, 1201, 1208, 1203, 1197, 1213, 1211, 1193, 1209, 1216, 1224, 1220, 1217, 1223, 1199, - 1222, 1198, 1227, 1228, 1230, 1229, 1232, 1233, 1231, 1234, 1236, 1235, 1238, 1237, 1239, 1240, - 1242, 1241, 1243, 1244, 1245, 1115, 1120, 1111, 1121, 1113, 1138, 1139, 1140, 1141, 1142, 1143, - 1144, 1246, 1145, 1147, 1146, 1110, 1111, 1112, 1113, 1115, 1148, 1149, 1150, 1151, 1153, 1152, - 1120, 1111, 1121, 1113, 1247, 1248, 1154, 1155, 1156, 1157, 1159, 1158, 1110, 1111, 1112, 1113, - 1161, 1162, 1160, 1163, 1164, 1166, 1165, 1167, 1168, 1169, 1170, 1171, 1172, 1174, 1173, 1176, - 1175, 1177, 1178, 1179, 1180, 1249, 1182, 1181, 1183, 1184, 1185, 1186, 1187, 1188, 1189, 1190, - 1192, 1191, 1226, 1200, 1211, 1212, 1210, 1209, 1207, 1206, 1204, 1201, 1202, 1203, 1205, 1208, - 1213, 1199, 1198, 1196, 1193, 1194, 1195, 1197, 1220, 1219, 1217, 1214, 1215, 1223, 1224, 1225, - 1222, 1216, 1218, 1221, 1227, 1228, 1230, 1229, 1234, 1233, 1232, 1231, 1236, 1235, 1237, 1238, - 1240, 1239, 1242, 1241, 1243, 1244, 1245, 1115, 1120, 1111, 1121, 1113, 1057, 1058, 1250, 1057, - 1058, 1250, 1057, 1058, 1250, 1057, 1058, 1250, 1057, 1058, 1250, 1057, 1058, 1250, 1057, 1058, - 1250, 1057, 1058, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1251, 1252, 1253, 1254, - 1255, 1256, 1257, 1258, 1259, 1260, 1261, 1262, 1263, 1264, 1265, 1266, 1267, 1268, 1269, 1270, - 1271, 1272, 1273, 1274, 1275, 1276, 1277, 1278, 1279, 1280, 1281, 1282, 1283, 1284, 1285, 1286, - 1287, 1288, 1289, 1290, 1291, 1292, 1293, 1294, 1295, 1296, 1297, 1298, 1299, 1300, 1301, 1302, - 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 1311, 1312, 1313, 1314, 1315, 1316, 1317, 1318, - 1319, 1320, 1321, 1322, 1323, 1324, 1325, 1326, 1327, 1328, 1329, 1330, 1331, 1332, 1333, 1334, - 1335, 1336, 1337, 1338, 1339, 1340, 1341, 1342, 1343, 1344, 1345, 1346, 1347, 1348, 1349, 1350, - 1351, 1352, 1353, 1354, 1355, 1356, 1357, 1358, 1359, 1360, 1361, 1362, 1363, 1364, 1365, 1366, - 1367, 1368, 1369, 1370, 1371, 1372, 1373, 1374, 1375, 1376, 1377, 1378, 1379, 1380, 1381, 1382, - 1383, 1384, 1385, 1386, 1387, 1388, 1389, 1390, 1391, 1392, 1393, 1394, 1395, 1396, 1397, 1398, - 1399, 1400, 1401, 1402, 1403, 1404, 1405, 1406, 1407, 1408, 1409, 1410, 1411, 1412, 1413, 1414, - 1415, 1416, 1417, 1418, 1419, 1420, 1421, 1422, 1423, 1424, 1425, 1426, 1427, 1428, 1429, 1430, - 1431, 1432, 1433, 1434, 1435, 1436, 1437, 1438, 1439, 1440, 1441, 1442, 1443, 1444, 1445, 1446, - 1447, 1448, 1449, 1450, 1451, 1452, 1453, 1454, 1455, 1456, 1457, 1458, 1459, 1460, 1461, 1462, - 1463, 1464, 1465, 1466, 1420, 1421, 1467, 1468, 1469, 1425, 1426, 1470, 1471, 1472, 1473, 1474, - 1435, 1475, 1476, 1445, 1444, 1446, 1420, 1421, 1425, 1426, 1427, 1428, 1429, 1430, 1432, 1431, - 1433, 1435, 1436, 1437, 1438, 1439, 1440, 1441, 1442, 1443, 1445, 1444, 1446, 1477, 1478, 1479, - 1420, 1421, 1425, 1426, 1480, 1435, 1475, 1476, 1445, 1444, 1446, 1481, 1482, 1483, 1484, 1485, - 1486, 1487, 1488, 1489, 1490, 1491, 1492, 1493, 1494, 1495, 1496, 1497, 1498, 1499, 1500, 1501, - 1502, 1503, 1504, 1505, 1506, 1507, 1508, 1509, 1510, 1511, 1512, 1513, 1514, 1515, 1516, 1517, - 1518, 1519, 1520, 1521, 1522, 1523, 1524, 1525, 1526, 1527, 1528, 1529, 1530, 1531, 1532, 1533, - 1534, 1535, 1536, 1537, 1538, 1539, 1540, 1541, 1542, 1543, 1544, 1545, 1546, 1547, 1548, 1549, - 1550, 1551, 1552, 1553, 1554, 1555, 1556, 1557, 1558, 1559, 1560, 1561, 1562, 1563, 1564, 1565, - 1566, 1567, 1568, 1569, 1570, 1571, 1572, 1573, 1574, 1575, 1576, 1577, 1578, 1579, 1580, 1581, - 1582, 1583, 1584, 1585, 1586, 1587, 1588, 1590, 1589, 1592, 1591, 1594, 1593, 1595, 1596, 1312, - 1313, 1314, 1315, 1316, 1317, 1597, 1598, 1599, 1600, 1601, 1602, 1603, 1604, 1605, 1606, 1607, - 1608, 1609, 1610, 1611, 1324, 1325, 1326, 1327, 1328, 1329, 1612, 1613, 1614, 1334, 1335, 1336, - 1615, 1343, 1344, 1345, 1346, 1347, 1348, 1350, 1351, 1616, 1352, 1353, 1617, 1354, 1355, 1356, - 1357, 1358, 1359, 1360, 1361, 1362, 1363, 1364, 1618, 1619, 1620, 1621, 1622, 1623, 1624, 1625, - 1365, 1626, 1366, 1367, 1368, 1369, 1627, 1370, 1371, 1372, 1373, 1374, 1375, 1376, 1377, 1378, + 443, 444, 445, 446, 447, 448, 449, 708, 716, 715, 710, 714, 711, 713, 709, 712, + 717, 724, 723, 720, 718, 719, 722, 721, 725, 727, 726, 728, 730, 731, 732, 729, + 734, 733, 737, 735, 736, 740, 741, 739, 738, 745, 744, 743, 742, 748, 747, 746, + 749, 750, 751, 752, 756, 758, 757, 755, 753, 754, 764, 762, 761, 763, 759, 760, + 768, 767, 769, 770, 765, 766, 776, 771, 775, 774, 772, 773, 779, 778, 777, 780, + 781, 782, 783, 784, 785, 789, 787, 788, 786, 792, 790, 791, 793, 794, 795, 796, + 797, 799, 800, 801, 798, 805, 802, 804, 803, 806, 807, 809, 808, 810, 811, 812, + 813, 814, 815, 817, 816, 819, 818, 822, 821, 823, 820, 825, 824, 827, 826, 829, + 828, 831, 830, 832, 833, 834, 835, 836, 837, 840, 839, 841, 838, 843, 845, 842, + 844, 664, 665, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, + 444, 445, 446, 447, 448, 449, 846, 708, 379, 378, 376, 377, 375, 374, 373, 372, + 370, 369, 368, 371, 366, 365, 363, 364, 362, 361, 359, 360, 358, 367, 654, 655, + 393, 392, 389, 390, 391, 388, 387, 386, 384, 383, 382, 385, 405, 404, 403, 400, + 401, 402, 399, 398, 397, 394, 395, 396, 421, 420, 418, 417, 416, 413, 414, 415, + 419, 412, 411, 409, 408, 407, 410, 406, 656, 657, 658, 659, 660, 661, 662, 663, + 664, 665, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, + 445, 446, 447, 448, 449, 847, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, + 677, 678, 679, 680, 682, 681, 683, 684, 685, 686, 664, 665, 431, 432, 433, 434, + 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 848, + 847, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 703, + 702, 704, 705, 706, 707, 664, 665, 431, 432, 433, 434, 435, 436, 437, 438, 439, + 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 849, 709, 714, 715, 716, 712, + 713, 711, 710, 722, 723, 724, 720, 717, 718, 719, 721, 725, 728, 727, 726, 733, + 730, 731, 732, 734, 729, 736, 735, 737, 740, 741, 739, 738, 743, 744, 745, 742, + 749, 748, 746, 747, 752, 751, 750, 758, 757, 756, 753, 754, 755, 760, 761, 762, + 759, 763, 764, 770, 769, 767, 765, 766, 768, 774, 775, 773, 772, 771, 776, 779, + 778, 777, 781, 782, 780, 783, 784, 785, 789, 787, 788, 786, 792, 793, 790, 791, + 797, 795, 794, 796, 801, 798, 799, 800, 804, 803, 802, 805, 808, 809, 807, 806, + 811, 810, 813, 812, 815, 814, 816, 817, 818, 819, 821, 823, 822, 820, 825, 824, + 827, 826, 828, 829, 831, 830, 832, 833, 834, 835, 837, 836, 838, 840, 841, 839, + 843, 845, 844, 842, 664, 665, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, + 441, 442, 443, 444, 445, 446, 447, 448, 449, 850, 849, 851, 852, 853, 854, 855, + 856, 857, 858, 859, 860, 861, 862, 863, 867, 866, 864, 865, 870, 868, 869, 872, + 871, 873, 874, 875, 876, 877, 878, 879, 880, 881, 882, 883, 884, 885, 886, 887, + 888, 889, 890, 891, 892, 893, 862, 863, 894, 895, 896, 897, 898, 899, 900, 901, + 902, 903, 904, 905, 906, 907, 908, 909, 875, 876, 882, 883, 884, 885, 886, 887, + 888, 889, 890, 891, 892, 893, 877, 878, 879, 894, 895, 896, 897, 898, 899, 900, + 901, 902, 903, 904, 905, 906, 907, 908, 909, 880, 881, 910, 911, 912, 913, 914, + 915, 916, 917, 918, 919, 920, 921, 922, 910, 911, 912, 913, 914, 923, 924, 915, + 916, 922, 925, 926, 927, 928, 929, 930, 931, 932, 933, 934, 935, 936, 937, 938, + 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, + 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, + 971, 972, 973, 969, 974, 975, 976, 977, 978, 979, 980, 981, 982, 983, 979, 984, + 985, 986, 987, 988, 989, 990, 991, 992, 993, 994, 995, 996, 997, 998, 999, 1000, + 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 992, 994, 1010, 1010, 1011, 1012, 1000, + 1011, 1012, 1007, 1013, 1014, 1013, 1015, 1016, 1017, 1015, 1018, 1017, 1019, 1020, 1021, 1022, + 1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1030, 1034, 1032, 1035, 1036, + 1037, 1038, 1039, 1037, 1040, 1039, 1041, 1042, 1043, 1044, 1043, 1044, 1043, 1044, 1043, 1044, + 1043, 1044, 1043, 1044, 1043, 1044, 1043, 1044, 1043, 1044, 1043, 1044, 1043, 1044, 1043, 1044, + 1043, 1044, 1043, 1044, 1043, 1044, 1043, 1044, 1043, 1045, 1043, 1045, 1043, 1045, 1043, 1045, + 1043, 1045, 1043, 1045, 1043, 1045, 1043, 1045, 1043, 1045, 1043, 1045, 1043, 1045, 1043, 1045, + 1043, 1045, 1043, 1045, 1043, 1045, 1043, 1045, 1046, 1047, 1048, 1061, 1062, 1049, 1050, 1061, + 1062, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1049, 1050, 1063, + 1064, 1061, 1062, 1051, 1052, 1046, 1047, 1048, 1066, 1065, 1061, 1067, 1062, 1049, 1068, 1050, + 1069, 1070, 1061, 1071, 1062, 1051, 1072, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, + 1061, 1062, 1049, 1050, 1063, 1064, 1061, 1062, 1051, 1052, 1073, 1074, 1076, 1075, 1049, 1050, + 1073, 1074, 1078, 1077, 1051, 1052, 1079, 1080, 1081, 1082, 1083, 1084, 1073, 1074, 1086, 1085, + 1049, 1050, 1088, 1087, 1073, 1074, 1089, 1090, 1051, 1052, 1073, 1074, 1075, 1076, 1049, 1050, + 1073, 1074, 1077, 1078, 1051, 1052, 1079, 1080, 1081, 1082, 1083, 1084, 1073, 1074, 1086, 1085, + 1049, 1050, 1073, 1074, 1090, 1089, 1051, 1052, 1061, 1062, 1091, 1092, 1061, 1062, 1094, 1093, + 1096, 1095, 1061, 1062, 1097, 1098, 1061, 1062, 1100, 1099, 1061, 1062, 1091, 1092, 1061, 1062, + 1093, 1094, 1061, 1062, 1097, 1098, 1061, 1062, 1099, 1100, 1073, 1074, 1091, 1092, 1073, 1074, + 1094, 1093, 1073, 1074, 1073, 1074, 1073, 1074, 1091, 1092, 1073, 1074, 1094, 1093, 1073, 1074, + 1073, 1074, 1101, 1102, 1103, 1104, 1105, 1107, 1106, 1108, 1109, 1061, 1110, 1111, 1113, 1112, + 1062, 1114, 1115, 1116, 1117, 1118, 1107, 1106, 1119, 1061, 1121, 1120, 1122, 1123, 1062, 1124, + 1115, 1125, 1117, 1102, 1103, 1126, 1127, 1128, 1129, 1106, 1107, 1130, 1061, 1132, 1131, 1134, + 1133, 1062, 1114, 1115, 1116, 1117, 1107, 1106, 1119, 1135, 1136, 1061, 1137, 1138, 1139, 1140, + 1062, 1124, 1115, 1125, 1117, 1104, 1141, 1105, 1107, 1106, 1108, 1109, 1061, 1110, 1111, 1113, + 1112, 1062, 1114, 1115, 1116, 1117, 1107, 1106, 1119, 1061, 1121, 1120, 1122, 1123, 1062, 1124, + 1115, 1125, 1117, 1126, 1127, 1141, 1128, 1129, 1107, 1106, 1130, 1061, 1132, 1131, 1133, 1134, + 1062, 1114, 1115, 1116, 1117, 1107, 1106, 1119, 1135, 1136, 1061, 1138, 1137, 1139, 1140, 1062, + 1124, 1115, 1125, 1117, 1142, 1143, 1144, 1145, 1147, 1146, 1148, 1149, 1150, 1151, 1114, 1115, + 1116, 1117, 1119, 1152, 1153, 1154, 1155, 1156, 1157, 1124, 1115, 1125, 1117, 1158, 1159, 1160, + 1161, 1162, 1163, 1114, 1115, 1116, 1117, 1165, 1166, 1164, 1168, 1167, 1170, 1169, 1172, 1171, + 1174, 1173, 1175, 1176, 1178, 1177, 1179, 1180, 1182, 1181, 1184, 1183, 1186, 1185, 1188, 1187, + 1189, 1190, 1191, 1194, 1192, 1193, 1196, 1195, 1216, 1209, 1221, 1228, 1227, 1207, 1220, 1204, + 1208, 1219, 1203, 1200, 1214, 1201, 1212, 1199, 1218, 1230, 1217, 1223, 1206, 1198, 1222, 1224, + 1215, 1210, 1211, 1213, 1225, 1202, 1229, 1226, 1197, 1205, 1231, 1232, 1233, 1234, 1238, 1236, + 1235, 1237, 1239, 1240, 1242, 1241, 1243, 1244, 1245, 1246, 1247, 1248, 1249, 1119, 1124, 1115, + 1125, 1117, 1142, 1143, 1144, 1145, 1147, 1146, 1148, 1250, 1149, 1150, 1151, 1114, 1115, 1116, + 1117, 1119, 1152, 1153, 1154, 1155, 1156, 1157, 1124, 1115, 1125, 1117, 1251, 1252, 1158, 1159, + 1161, 1160, 1163, 1162, 1114, 1115, 1116, 1117, 1166, 1164, 1165, 1167, 1168, 1169, 1170, 1171, + 1172, 1174, 1173, 1176, 1175, 1177, 1178, 1179, 1180, 1182, 1181, 1183, 1184, 1253, 1185, 1186, + 1188, 1187, 1191, 1189, 1190, 1193, 1194, 1192, 1196, 1195, 1200, 1226, 1211, 1212, 1210, 1209, + 1207, 1206, 1204, 1201, 1202, 1203, 1205, 1208, 1213, 1199, 1198, 1197, 1227, 1223, 1224, 1225, + 1222, 1220, 1219, 1217, 1214, 1215, 1216, 1218, 1221, 1229, 1230, 1228, 1232, 1231, 1234, 1233, + 1237, 1238, 1236, 1235, 1239, 1240, 1242, 1241, 1244, 1243, 1246, 1245, 1247, 1248, 1249, 1119, + 1124, 1115, 1125, 1117, 1061, 1062, 1254, 1061, 1062, 1254, 1061, 1062, 1254, 1061, 1062, 1254, + 1061, 1062, 1254, 1061, 1062, 1254, 1061, 1062, 1254, 1061, 1062, 1254, 1254, 1254, 1254, 1254, + 1254, 1254, 1254, 1254, 1255, 1256, 1257, 1258, 1259, 1260, 1261, 1262, 1263, 1264, 1265, 1266, + 1267, 1268, 1269, 1270, 1271, 1272, 1273, 1274, 1275, 1276, 1277, 1278, 1279, 1280, 1281, 1282, + 1283, 1284, 1285, 1286, 1287, 1288, 1289, 1290, 1291, 1292, 1293, 1294, 1295, 1296, 1297, 1298, + 1299, 1300, 1301, 1302, 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 1311, 1312, 1313, 1314, + 1315, 1316, 1317, 1318, 1319, 1320, 1321, 1322, 1323, 1324, 1325, 1326, 1327, 1328, 1329, 1330, + 1331, 1332, 1333, 1334, 1335, 1336, 1337, 1338, 1339, 1340, 1341, 1342, 1343, 1344, 1345, 1346, + 1347, 1348, 1349, 1350, 1351, 1352, 1353, 1354, 1355, 1356, 1357, 1358, 1359, 1360, 1361, 1362, + 1363, 1364, 1365, 1366, 1367, 1368, 1369, 1370, 1371, 1372, 1373, 1374, 1375, 1376, 1377, 1378, 1379, 1380, 1381, 1382, 1383, 1384, 1385, 1386, 1387, 1388, 1389, 1390, 1391, 1392, 1393, 1394, - 1395, 1396, 1397, 1398, 1399, 1400, 1401, 1402, 1403, 1628, 1629, 1630, 1631, 1632, 1633, 1634, - 1635, 1406, 1407, 1408, 1409, 1636, 1637, 1638, 1639, 1640, 1641, 1642, 1642, 1643, 1643, 1644, - 1644, 1645, 1646, 1647, 1648, 1649, 1649, 1650, 1650, 1651, 1651, 1652, 1652, 1653, 1654, 1655, - 1656, 1657, 1658, 1659, 1660, 1661, 1662, 1663, 1664, 1665, 1666, 1667, 1668, 1669, 1670, 1671, - 1672, 1673, 1674, 1675, 1676, 1676, 1677, 1678, 1679, 1680, 1681, 1682, 1683, 1684, 1685, 1685, - 1686, 1686, 1687, 1687, 1688, 1688, 1689, 1689, 1690, 1690, 1691, 1691, 1692, 1692, 1693, 1693, - 1694, 1694, 1695, 1696, 1697, 1698, 1699, 1700, 1701, 1702, 1703, 1704, 1705, 1706, 1707, 1708, - 1709, 1710, 1711, 1712, 1713, 1714, 1715, 1716, 1716, 1717, 1717, 1718, 1718, 1718, 1719, 1720, - 1718, 1721, 1721, 1259, 1260, 1261, 1262, 1267, 1273, 1263, 1272, 1273, 1272, 1269, 1268, 1269, - 1266, 1268, 1256, 1257, 1264, 1273, 1252, 1253, 1254, 1255, 1258, 1272, 1273, 1272, 1271, 1270, - 1265, 1271, 1270, 1273, 1272, 1273, 1251, 1272, 1273, 1272, 1273, 1272, 1286, 1278, 1285, 1292, - 1292, 1274, 1275, 1276, 1277, 1283, 1291, 1282, 1291, 1284, 1284, 1287, 1279, 1287, 1281, 1289, - 1289, 1290, 1290, 1280, 1288, 1288, 1303, 1310, 1311, 1303, 1306, 1309, 1307, 1308, 1303, 1310, - 1311, 1293, 1294, 1295, 1296, 1303, 1306, 1309, 1307, 1308, 1310, 1311, 1306, 1309, 1307, 1308, - 1310, 1311, 1306, 1309, 1307, 1308, 1293, 1294, 1295, 1296, 1300, 1301, 1302, 1305, 1297, 1298, - 1299, 1304, 1300, 1301, 1302, 1305, 1297, 1298, 1299, 1304, 1330, 1334, 1335, 1337, 1349, 1350, - 1351, 1352, 1363, 1364, 1367, 1370, 1371, 1374, 1375, 1376, 1377, 1378, 1379, 1388, 1389, 1390, - 1391, 1414, 1330, 1334, 1335, 1338, 1349, 1350, 1351, 1352, 1364, 1367, 1370, 1371, 1374, 1375, - 1376, 1377, 1378, 1379, 1388, 1389, 1390, 1391, 1414, 1334, 1335, 1337, 1349, 1350, 1351, 1352, - 1364, 1367, 1370, 1371, 1374, 1375, 1376, 1377, 1378, 1379, 1388, 1389, 1390, 1391, 1414, 1320, - 1321, 1322, 1323, 1334, 1335, 1336, 1338, 1349, 1350, 1351, 1352, 1353, 1362, 1364, 1367, 1370, - 1371, 1374, 1375, 1376, 1377, 1378, 1379, 1388, 1389, 1390, 1391, 1414, 1334, 1335, 1337, 1350, - 1351, 1352, 1363, 1364, 1367, 1370, 1371, 1374, 1375, 1376, 1377, 1378, 1379, 1388, 1389, 1390, - 1391, 1410, 1414, 1334, 1335, 1338, 1350, 1351, 1352, 1364, 1367, 1370, 1371, 1374, 1375, 1376, - 1377, 1378, 1379, 1388, 1389, 1390, 1391, 1410, 1414, 1334, 1335, 1337, 1350, 1351, 1352, 1364, - 1367, 1370, 1371, 1374, 1375, 1376, 1377, 1378, 1379, 1388, 1389, 1390, 1391, 1410, 1414, 1320, - 1321, 1322, 1323, 1334, 1335, 1336, 1338, 1350, 1351, 1352, 1353, 1362, 1364, 1367, 1370, 1371, - 1374, 1375, 1376, 1377, 1378, 1379, 1388, 1389, 1390, 1391, 1410, 1414, 1312, 1313, 1331, 1332, - 1333, 1345, 1346, 1347, 1348, 1356, 1357, 1358, 1359, 1372, 1373, 1380, 1381, 1382, 1383, 1384, - 1385, 1386, 1387, 1404, 1405, 1409, 1412, 1415, 1372, 1373, 1380, 1381, 1382, 1383, 1384, 1385, - 1386, 1387, 1412, 1415, 1331, 1372, 1373, 1380, 1381, 1382, 1383, 1384, 1385, 1386, 1387, 1412, - 1415, 1343, 1344, 1354, 1355, 1360, 1361, 1372, 1373, 1380, 1381, 1382, 1383, 1384, 1385, 1386, - 1387, 1412, 1415, 1331, 1332, 1333, 1345, 1346, 1347, 1348, 1356, 1357, 1358, 1359, 1372, 1373, - 1380, 1381, 1382, 1383, 1384, 1385, 1386, 1387, 1404, 1405, 1409, 1411, 1413, 1415, 1372, 1373, - 1380, 1381, 1382, 1383, 1384, 1385, 1386, 1387, 1411, 1413, 1415, 1314, 1315, 1316, 1317, 1326, - 1327, 1328, 1329, 1331, 1372, 1373, 1380, 1381, 1382, 1383, 1384, 1385, 1386, 1387, 1411, 1413, - 1415, 1318, 1319, 1324, 1325, 1343, 1344, 1354, 1355, 1360, 1361, 1372, 1373, 1380, 1381, 1382, - 1383, 1384, 1385, 1386, 1387, 1411, 1413, 1415, 1339, 1365, 1368, 1392, 1393, 1394, 1395, 1396, - 1397, 1398, 1399, 1400, 1401, 1402, 1403, 1340, 1365, 1368, 1392, 1393, 1394, 1395, 1396, 1397, - 1398, 1399, 1400, 1401, 1402, 1403, 1341, 1366, 1369, 1392, 1393, 1394, 1395, 1396, 1397, 1398, - 1399, 1400, 1401, 1402, 1403, 1342, 1366, 1369, 1392, 1393, 1394, 1395, 1396, 1397, 1398, 1399, - 1400, 1401, 1402, 1403, 1339, 1365, 1368, 1392, 1393, 1394, 1395, 1396, 1397, 1398, 1399, 1400, - 1401, 1402, 1403, 1340, 1365, 1368, 1392, 1393, 1394, 1395, 1396, 1397, 1398, 1399, 1400, 1401, - 1402, 1403, 1341, 1366, 1369, 1392, 1393, 1394, 1395, 1396, 1397, 1398, 1399, 1400, 1401, 1402, - 1403, 1342, 1366, 1369, 1392, 1393, 1394, 1395, 1396, 1397, 1398, 1399, 1400, 1401, 1402, 1403, - 1406, 1407, 1408, 1406, 1407, 1408, 1406, 1407, 1408, 1406, 1407, 1408, 1406, 1407, 1408, 1406, - 1407, 1408, 1406, 1407, 1408, 1406, 1407, 1408, 1416, 1418, 1419, 1422, 1426, 1434, 1435, 1436, - 1445, 1444, 1446, 1418, 1419, 1423, 1427, 1434, 1435, 1437, 1445, 1444, 1446, 1418, 1419, 1434, - 1435, 1443, 1445, 1444, 1446, 1418, 1419, 1434, 1435, 1443, 1445, 1444, 1446, 1417, 1424, 1425, - 1431, 1442, 1445, 1444, 1446, 1432, 1442, 1444, 1445, 1446, 1420, 1433, 1444, 1445, 1446, 1421, - 1433, 1445, 1444, 1446, 1426, 1435, 1438, 1444, 1445, 1446, 1428, 1435, 1438, 1445, 1444, 1446, - 1435, 1445, 1444, 1446, 1435, 1444, 1445, 1446, 1425, 1445, 1444, 1446, 1444, 1445, 1446, 1420, - 1444, 1445, 1446, 1421, 1445, 1444, 1446, 1419, 1426, 1434, 1435, 1444, 1445, 1446, 1419, 1430, - 1434, 1435, 1445, 1444, 1446, 1419, 1434, 1435, 1445, 1444, 1446, 1419, 1434, 1435, 1445, 1444, - 1446, 1425, 1440, 1444, 1445, 1446, 1440, 1445, 1444, 1446, 1420, 1441, 1444, 1445, 1446, 1421, - 1441, 1445, 1444, 1446, 1426, 1435, 1445, 1444, 1446, 1435, 1445, 1444, 1446, 1435, 1445, 1444, - 1446, 1429, 1435, 1444, 1445, 1446, 1425, 1439, 1444, 1445, 1446, 1439, 1444, 1445, 1446, 1420, - 1444, 1445, 1446, 1421, 1444, 1445, 1446, 1426, 1435, 1444, 1445, 1446, 1435, 1444, 1445, 1446, - 1435, 1444, 1445, 1446, 1435, 1445, 1444, 1446, 1425, 1475, 1444, 1445, 1446, 1445, 1444, 1446, - 1420, 1444, 1445, 1446, 1421, 1444, 1445, 1446, 1426, 1435, 1445, 1444, 1446, 1435, 1445, 1444, - 1446, 1435, 1444, 1445, 1446, 1435, 1444, 1445, 1446, 1425, 1476, 1444, 1445, 1446, 1444, 1445, - 1446, 1420, 1444, 1445, 1446, 1421, 1444, 1445, 1446, 1426, 1473, 1435, 1444, 1445, 1446, 1435, - 1445, 1444, 1446, 1467, 1473, 1435, 1444, 1445, 1446, 1435, 1444, 1445, 1446, 1425, 1471, 1445, - 1444, 1446, 1445, 1444, 1446, 1420, 1469, 1470, 1444, 1445, 1446, 1421, 1445, 1444, 1446, 1466, - 1426, 1474, 1435, 1445, 1444, 1446, 1435, 1445, 1444, 1446, 1447, 1448, 1449, 1450, 1451, 1453, - 1454, 1455, 1456, 1458, 1459, 1460, 1461, 1468, 1474, 1435, 1445, 1444, 1446, 1452, 1457, 1463, - 1464, 1465, 1435, 1444, 1445, 1446, 1425, 1472, 1445, 1444, 1446, 1445, 1444, 1446, 1462, 1420, - 1445, 1444, 1446, 1421, 1445, 1444, 1446, 1426, 1435, 1436, 1445, 1444, 1446, 1427, 1435, 1437, - 1445, 1444, 1446, 1435, 1443, 1444, 1445, 1446, 1435, 1443, 1444, 1445, 1446, 1425, 1431, 1442, - 1445, 1444, 1446, 1432, 1442, 1444, 1445, 1446, 1420, 1433, 1444, 1445, 1446, 1421, 1433, 1445, - 1444, 1446, 1426, 1435, 1438, 1444, 1445, 1446, 1428, 1435, 1438, 1445, 1444, 1446, 1435, 1444, - 1445, 1446, 1435, 1445, 1444, 1446, 1425, 1444, 1445, 1446, 1444, 1445, 1446, 1420, 1445, 1444, - 1446, 1421, 1445, 1444, 1446, 1426, 1435, 1444, 1445, 1446, 1430, 1435, 1445, 1444, 1446, 1435, - 1445, 1444, 1446, 1435, 1445, 1444, 1446, 1425, 1440, 1445, 1444, 1446, 1440, 1445, 1444, 1446, - 1420, 1441, 1445, 1444, 1446, 1421, 1441, 1445, 1444, 1446, 1426, 1435, 1445, 1444, 1446, 1435, - 1444, 1445, 1446, 1435, 1445, 1444, 1446, 1429, 1435, 1445, 1444, 1446, 1425, 1439, 1444, 1445, - 1446, 1439, 1444, 1445, 1446, 1420, 1444, 1445, 1446, 1421, 1445, 1444, 1446, 1426, 1435, 1444, - 1445, 1446, 1435, 1445, 1444, 1446, 1435, 1444, 1445, 1446, 1435, 1444, 1445, 1446, 1425, 1475, - 1445, 1444, 1446, 1444, 1445, 1446, 1420, 1444, 1445, 1446, 1421, 1444, 1445, 1446, 1426, 1435, - 1445, 1444, 1446, 1435, 1445, 1444, 1446, 1435, 1445, 1444, 1446, 1435, 1445, 1444, 1446, 1425, - 1476, 1444, 1445, 1446, 1444, 1445, 1446, 1420, 1445, 1444, 1446, 1421, 1444, 1445, 1446, 1426, - 1435, 1445, 1444, 1446, 1435, 1445, 1444, 1446, 1435, 1445, 1444, 1446, 1435, 1445, 1444, 1446, - 1425, 1444, 1445, 1446, 1445, 1444, 1446, 1420, 1445, 1444, 1446, 1421, 1444, 1445, 1446, 1477, - 1478, 1479, 1426, 1435, 1444, 1445, 1446, 1435, 1444, 1445, 1446, 1435, 1445, 1444, 1446, 1435, - 1445, 1444, 1446, 1425, 1445, 1444, 1446, 1445, 1444, 1446, 1420, 1445, 1444, 1446, 1421, 1480, - 1444, 1445, 1446, 1484, 1483, 1486, 1485, 1490, 1482, 1481, 1492, 1496, 1489, 1495, 1498, 1497, - 1494, 1492, 1493, 1487, 1488, 1491, 1499, 1500, 1503, 1507, 1562, 1506, 1565, 1502, 1508, 1561, - 1505, 1564, 1501, 1509, 1560, 1504, 1563, 1510, 1516, 1517, 1518, 1519, 1520, 1526, 1532, 1538, - 1544, 1550, 1512, 1513, 1514, 1515, 1521, 1527, 1533, 1539, 1545, 1551, 1522, 1528, 1534, 1540, - 1546, 1552, 1511, 1524, 1530, 1536, 1542, 1548, 1554, 1525, 1531, 1537, 1543, 1549, 1555, 1523, - 1529, 1535, 1541, 1547, 1553, 1556, 1566, 1567, 1559, 1570, 1557, 1568, 1558, 1571, 1569, 1593, - 1594, 1584, 1590, 1591, 1584, 1589, 1592, 1593, 1594, 1590, 1591, 1589, 1592, 1578, 1579, 1580, - 1581, 1582, 1583, 1593, 1572, 1573, 1574, 1575, 1576, 1577, 1585, 1586, 1587, 1588, 1594, 1584, - 1590, 1591, 1584, 1589, 1592, 1578, 1579, 1580, 1581, 1582, 1583, 1593, 1572, 1573, 1574, 1575, - 1576, 1577, 1594, 1590, 1591, 1589, 1592, 1584, 1584, 1585, 1586, 1587, 1588, 1584, 1584, 1611, - 1334, 1335, 1350, 1351, 1352, 1617, 1363, 1364, 1622, 1623, 1624, 1625, 1367, 1627, 1370, 1371, - 1374, 1375, 1376, 1377, 1378, 1379, 1388, 1389, 1390, 1391, 1640, 1334, 1335, 1350, 1351, 1352, - 1617, 1364, 1622, 1623, 1624, 1625, 1367, 1627, 1370, 1371, 1374, 1375, 1376, 1377, 1378, 1379, - 1388, 1389, 1390, 1391, 1640, 1334, 1335, 1350, 1351, 1352, 1617, 1364, 1622, 1623, 1624, 1625, - 1367, 1627, 1370, 1371, 1374, 1375, 1376, 1377, 1378, 1379, 1388, 1389, 1390, 1391, 1640, 1596, - 1605, 1606, 1334, 1335, 1336, 1350, 1351, 1352, 1353, 1617, 1362, 1364, 1622, 1623, 1624, 1625, - 1367, 1627, 1370, 1371, 1374, 1375, 1376, 1377, 1378, 1379, 1388, 1389, 1390, 1391, 1640, 1611, - 1334, 1335, 1350, 1351, 1352, 1617, 1363, 1364, 1622, 1623, 1624, 1625, 1367, 1627, 1370, 1371, - 1374, 1375, 1376, 1377, 1378, 1379, 1388, 1389, 1390, 1391, 1636, 1640, 1334, 1335, 1350, 1351, - 1352, 1617, 1364, 1622, 1623, 1624, 1625, 1367, 1627, 1370, 1371, 1374, 1375, 1376, 1377, 1378, - 1379, 1388, 1389, 1390, 1391, 1636, 1640, 1334, 1335, 1350, 1351, 1352, 1617, 1364, 1622, 1623, - 1624, 1625, 1367, 1627, 1370, 1371, 1374, 1375, 1376, 1377, 1378, 1379, 1388, 1389, 1390, 1391, - 1636, 1640, 1595, 1605, 1606, 1334, 1335, 1336, 1350, 1351, 1352, 1353, 1617, 1362, 1364, 1622, - 1623, 1624, 1625, 1367, 1627, 1370, 1371, 1374, 1375, 1376, 1377, 1378, 1379, 1388, 1389, 1390, - 1391, 1636, 1640, 1312, 1313, 1345, 1346, 1347, 1348, 1356, 1357, 1358, 1359, 1618, 1619, 1620, - 1621, 1627, 1372, 1373, 1380, 1381, 1382, 1383, 1384, 1385, 1386, 1387, 1632, 1633, 1634, 1635, - 1409, 1638, 1641, 1618, 1619, 1620, 1621, 1627, 1372, 1373, 1380, 1381, 1382, 1383, 1384, 1385, - 1386, 1387, 1638, 1641, 1618, 1619, 1620, 1621, 1627, 1372, 1373, 1380, 1381, 1382, 1383, 1384, - 1385, 1386, 1387, 1638, 1641, 1603, 1604, 1343, 1344, 1354, 1355, 1360, 1361, 1618, 1619, 1620, - 1621, 1627, 1372, 1373, 1380, 1381, 1382, 1383, 1384, 1385, 1386, 1387, 1628, 1629, 1630, 1631, - 1638, 1641, 1345, 1346, 1347, 1348, 1356, 1357, 1358, 1359, 1618, 1619, 1620, 1621, 1627, 1372, - 1373, 1380, 1381, 1382, 1383, 1384, 1385, 1386, 1387, 1632, 1633, 1634, 1635, 1409, 1637, 1639, - 1641, 1618, 1619, 1620, 1621, 1627, 1372, 1373, 1380, 1381, 1382, 1383, 1384, 1385, 1386, 1387, - 1637, 1639, 1641, 1314, 1315, 1316, 1317, 1326, 1327, 1328, 1329, 1618, 1619, 1620, 1621, 1627, - 1372, 1373, 1380, 1381, 1382, 1383, 1384, 1385, 1386, 1387, 1637, 1639, 1641, 1603, 1604, 1324, - 1325, 1343, 1344, 1354, 1355, 1360, 1361, 1618, 1619, 1620, 1621, 1627, 1372, 1373, 1380, 1381, - 1382, 1383, 1384, 1385, 1386, 1387, 1628, 1629, 1630, 1631, 1637, 1639, 1641, 1615, 1616, 1617, - 1365, 1626, 1368, 1627, 1392, 1393, 1394, 1395, 1396, 1397, 1398, 1399, 1400, 1401, 1402, 1403, - 1616, 1617, 1365, 1626, 1368, 1627, 1392, 1393, 1394, 1395, 1396, 1397, 1398, 1399, 1400, 1401, - 1402, 1403, 1617, 1626, 1366, 1369, 1627, 1392, 1393, 1394, 1395, 1396, 1397, 1398, 1399, 1400, - 1401, 1402, 1403, 1617, 1366, 1626, 1369, 1627, 1392, 1393, 1394, 1395, 1396, 1397, 1398, 1399, - 1400, 1401, 1402, 1403, 1615, 1616, 1617, 1365, 1626, 1368, 1627, 1392, 1393, 1394, 1395, 1396, - 1397, 1398, 1399, 1400, 1401, 1402, 1403, 1616, 1617, 1365, 1626, 1368, 1627, 1392, 1393, 1394, - 1395, 1396, 1397, 1398, 1399, 1400, 1401, 1402, 1403, 1617, 1626, 1366, 1369, 1627, 1392, 1393, - 1394, 1395, 1396, 1397, 1398, 1399, 1400, 1401, 1402, 1403, 1617, 1626, 1366, 1369, 1627, 1392, - 1393, 1394, 1395, 1396, 1397, 1398, 1399, 1400, 1401, 1402, 1403, 1627, 1406, 1407, 1408, 1627, - 1406, 1407, 1408, 1627, 1406, 1407, 1408, 1597, 1598, 1599, 1600, 1601, 1602, 1607, 1608, 1609, - 1610, 1612, 1613, 1614, 1627, 1406, 1407, 1408, 1627, 1406, 1407, 1408, 1627, 1406, 1407, 1408, - 1627, 1406, 1407, 1408, 1597, 1598, 1599, 1600, 1601, 1602, 1607, 1608, 1609, 1610, 1612, 1613, - 1614, 1627, 1406, 1407, 1408, + 1395, 1396, 1397, 1398, 1399, 1400, 1401, 1402, 1403, 1404, 1405, 1406, 1407, 1408, 1409, 1410, + 1411, 1412, 1413, 1414, 1415, 1416, 1417, 1418, 1419, 1420, 1421, 1422, 1423, 1424, 1425, 1426, + 1427, 1428, 1429, 1430, 1431, 1432, 1433, 1434, 1435, 1436, 1437, 1438, 1439, 1440, 1441, 1442, + 1443, 1444, 1445, 1446, 1447, 1448, 1449, 1450, 1451, 1452, 1453, 1454, 1455, 1456, 1457, 1458, + 1459, 1460, 1461, 1462, 1463, 1464, 1465, 1466, 1467, 1468, 1469, 1470, 1424, 1425, 1471, 1472, + 1473, 1429, 1430, 1474, 1475, 1476, 1477, 1478, 1439, 1479, 1480, 1449, 1448, 1450, 1424, 1425, + 1429, 1430, 1431, 1432, 1433, 1434, 1436, 1435, 1437, 1439, 1440, 1441, 1442, 1443, 1444, 1445, + 1446, 1447, 1449, 1448, 1450, 1481, 1482, 1483, 1424, 1425, 1429, 1430, 1484, 1439, 1479, 1480, + 1449, 1448, 1450, 1485, 1486, 1487, 1488, 1489, 1490, 1491, 1492, 1493, 1494, 1495, 1496, 1497, + 1498, 1499, 1500, 1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508, 1509, 1510, 1511, 1512, 1513, + 1514, 1515, 1516, 1517, 1518, 1519, 1520, 1521, 1522, 1523, 1524, 1525, 1526, 1527, 1528, 1529, + 1530, 1531, 1532, 1533, 1534, 1535, 1536, 1537, 1538, 1539, 1540, 1541, 1542, 1543, 1544, 1545, + 1546, 1547, 1548, 1549, 1550, 1551, 1552, 1553, 1554, 1555, 1556, 1557, 1558, 1559, 1560, 1561, + 1562, 1563, 1564, 1565, 1566, 1567, 1568, 1569, 1570, 1571, 1572, 1573, 1574, 1575, 1576, 1577, + 1578, 1579, 1580, 1581, 1582, 1583, 1584, 1585, 1586, 1587, 1588, 1589, 1590, 1591, 1592, 1594, + 1593, 1596, 1595, 1598, 1597, 1599, 1600, 1316, 1317, 1318, 1319, 1320, 1321, 1601, 1602, 1603, + 1604, 1605, 1606, 1607, 1608, 1609, 1610, 1611, 1612, 1613, 1614, 1615, 1328, 1329, 1330, 1331, + 1332, 1333, 1616, 1617, 1618, 1338, 1339, 1340, 1619, 1347, 1348, 1349, 1350, 1351, 1352, 1354, + 1355, 1620, 1356, 1357, 1621, 1358, 1359, 1360, 1361, 1362, 1363, 1364, 1365, 1366, 1367, 1368, + 1622, 1623, 1624, 1625, 1626, 1627, 1628, 1629, 1369, 1630, 1370, 1371, 1372, 1373, 1631, 1374, + 1375, 1376, 1377, 1378, 1379, 1380, 1381, 1382, 1383, 1384, 1385, 1386, 1387, 1388, 1389, 1390, + 1391, 1392, 1393, 1394, 1395, 1396, 1397, 1398, 1399, 1400, 1401, 1402, 1403, 1404, 1405, 1406, + 1407, 1632, 1633, 1634, 1635, 1636, 1637, 1638, 1639, 1410, 1411, 1412, 1413, 1640, 1641, 1642, + 1643, 1644, 1645, 1646, 1646, 1647, 1647, 1648, 1648, 1649, 1650, 1651, 1652, 1653, 1653, 1654, + 1654, 1655, 1655, 1656, 1656, 1657, 1658, 1659, 1660, 1661, 1662, 1663, 1664, 1665, 1666, 1667, + 1668, 1669, 1670, 1671, 1672, 1673, 1674, 1675, 1676, 1677, 1678, 1679, 1680, 1680, 1681, 1682, + 1683, 1684, 1685, 1686, 1687, 1688, 1689, 1689, 1690, 1690, 1691, 1691, 1692, 1692, 1693, 1693, + 1694, 1694, 1695, 1695, 1696, 1696, 1697, 1697, 1698, 1698, 1699, 1700, 1701, 1702, 1703, 1704, + 1705, 1706, 1707, 1708, 1709, 1710, 1711, 1712, 1713, 1714, 1715, 1716, 1717, 1718, 1719, 1720, + 1720, 1721, 1721, 1722, 1722, 1722, 1723, 1724, 1722, 1725, 1725, 1263, 1264, 1265, 1266, 1271, + 1277, 1267, 1276, 1277, 1276, 1273, 1272, 1273, 1270, 1272, 1260, 1261, 1268, 1277, 1256, 1257, + 1258, 1259, 1262, 1276, 1277, 1276, 1275, 1274, 1269, 1275, 1274, 1277, 1276, 1277, 1255, 1276, + 1277, 1276, 1277, 1276, 1290, 1282, 1289, 1296, 1296, 1278, 1279, 1280, 1281, 1287, 1295, 1286, + 1295, 1288, 1288, 1291, 1283, 1291, 1285, 1293, 1293, 1294, 1294, 1284, 1292, 1292, 1307, 1314, + 1315, 1307, 1310, 1313, 1311, 1312, 1307, 1314, 1315, 1297, 1298, 1299, 1300, 1307, 1310, 1313, + 1311, 1312, 1314, 1315, 1310, 1313, 1311, 1312, 1314, 1315, 1310, 1313, 1311, 1312, 1297, 1298, + 1299, 1300, 1304, 1305, 1306, 1309, 1301, 1302, 1303, 1308, 1304, 1305, 1306, 1309, 1301, 1302, + 1303, 1308, 1334, 1338, 1339, 1341, 1353, 1354, 1355, 1356, 1367, 1368, 1371, 1374, 1375, 1378, + 1379, 1380, 1381, 1382, 1383, 1392, 1393, 1394, 1395, 1418, 1334, 1338, 1339, 1342, 1353, 1354, + 1355, 1356, 1368, 1371, 1374, 1375, 1378, 1379, 1380, 1381, 1382, 1383, 1392, 1393, 1394, 1395, + 1418, 1338, 1339, 1341, 1353, 1354, 1355, 1356, 1368, 1371, 1374, 1375, 1378, 1379, 1380, 1381, + 1382, 1383, 1392, 1393, 1394, 1395, 1418, 1324, 1325, 1326, 1327, 1338, 1339, 1340, 1342, 1353, + 1354, 1355, 1356, 1357, 1366, 1368, 1371, 1374, 1375, 1378, 1379, 1380, 1381, 1382, 1383, 1392, + 1393, 1394, 1395, 1418, 1338, 1339, 1341, 1354, 1355, 1356, 1367, 1368, 1371, 1374, 1375, 1378, + 1379, 1380, 1381, 1382, 1383, 1392, 1393, 1394, 1395, 1414, 1418, 1338, 1339, 1342, 1354, 1355, + 1356, 1368, 1371, 1374, 1375, 1378, 1379, 1380, 1381, 1382, 1383, 1392, 1393, 1394, 1395, 1414, + 1418, 1338, 1339, 1341, 1354, 1355, 1356, 1368, 1371, 1374, 1375, 1378, 1379, 1380, 1381, 1382, + 1383, 1392, 1393, 1394, 1395, 1414, 1418, 1324, 1325, 1326, 1327, 1338, 1339, 1340, 1342, 1354, + 1355, 1356, 1357, 1366, 1368, 1371, 1374, 1375, 1378, 1379, 1380, 1381, 1382, 1383, 1392, 1393, + 1394, 1395, 1414, 1418, 1316, 1317, 1335, 1336, 1337, 1349, 1350, 1351, 1352, 1360, 1361, 1362, + 1363, 1376, 1377, 1384, 1385, 1386, 1387, 1388, 1389, 1390, 1391, 1408, 1409, 1413, 1416, 1419, + 1376, 1377, 1384, 1385, 1386, 1387, 1388, 1389, 1390, 1391, 1416, 1419, 1335, 1376, 1377, 1384, + 1385, 1386, 1387, 1388, 1389, 1390, 1391, 1416, 1419, 1347, 1348, 1358, 1359, 1364, 1365, 1376, + 1377, 1384, 1385, 1386, 1387, 1388, 1389, 1390, 1391, 1416, 1419, 1335, 1336, 1337, 1349, 1350, + 1351, 1352, 1360, 1361, 1362, 1363, 1376, 1377, 1384, 1385, 1386, 1387, 1388, 1389, 1390, 1391, + 1408, 1409, 1413, 1415, 1417, 1419, 1376, 1377, 1384, 1385, 1386, 1387, 1388, 1389, 1390, 1391, + 1415, 1417, 1419, 1318, 1319, 1320, 1321, 1330, 1331, 1332, 1333, 1335, 1376, 1377, 1384, 1385, + 1386, 1387, 1388, 1389, 1390, 1391, 1415, 1417, 1419, 1322, 1323, 1328, 1329, 1347, 1348, 1358, + 1359, 1364, 1365, 1376, 1377, 1384, 1385, 1386, 1387, 1388, 1389, 1390, 1391, 1415, 1417, 1419, + 1343, 1369, 1372, 1396, 1397, 1398, 1399, 1400, 1401, 1402, 1403, 1404, 1405, 1406, 1407, 1344, + 1369, 1372, 1396, 1397, 1398, 1399, 1400, 1401, 1402, 1403, 1404, 1405, 1406, 1407, 1345, 1370, + 1373, 1396, 1397, 1398, 1399, 1400, 1401, 1402, 1403, 1404, 1405, 1406, 1407, 1346, 1370, 1373, + 1396, 1397, 1398, 1399, 1400, 1401, 1402, 1403, 1404, 1405, 1406, 1407, 1343, 1369, 1372, 1396, + 1397, 1398, 1399, 1400, 1401, 1402, 1403, 1404, 1405, 1406, 1407, 1344, 1369, 1372, 1396, 1397, + 1398, 1399, 1400, 1401, 1402, 1403, 1404, 1405, 1406, 1407, 1345, 1370, 1373, 1396, 1397, 1398, + 1399, 1400, 1401, 1402, 1403, 1404, 1405, 1406, 1407, 1346, 1370, 1373, 1396, 1397, 1398, 1399, + 1400, 1401, 1402, 1403, 1404, 1405, 1406, 1407, 1410, 1411, 1412, 1410, 1411, 1412, 1410, 1411, + 1412, 1410, 1411, 1412, 1410, 1411, 1412, 1410, 1411, 1412, 1410, 1411, 1412, 1410, 1411, 1412, + 1420, 1422, 1423, 1426, 1430, 1438, 1439, 1440, 1449, 1448, 1450, 1422, 1423, 1427, 1431, 1438, + 1439, 1441, 1449, 1448, 1450, 1422, 1423, 1438, 1439, 1447, 1449, 1448, 1450, 1422, 1423, 1438, + 1439, 1447, 1449, 1448, 1450, 1421, 1428, 1429, 1435, 1446, 1449, 1448, 1450, 1436, 1446, 1448, + 1449, 1450, 1424, 1437, 1448, 1449, 1450, 1425, 1437, 1449, 1448, 1450, 1430, 1439, 1442, 1448, + 1449, 1450, 1432, 1439, 1442, 1449, 1448, 1450, 1439, 1449, 1448, 1450, 1439, 1448, 1449, 1450, + 1429, 1449, 1448, 1450, 1448, 1449, 1450, 1424, 1448, 1449, 1450, 1425, 1449, 1448, 1450, 1423, + 1430, 1438, 1439, 1448, 1449, 1450, 1423, 1434, 1438, 1439, 1449, 1448, 1450, 1423, 1438, 1439, + 1449, 1448, 1450, 1423, 1438, 1439, 1449, 1448, 1450, 1429, 1444, 1448, 1449, 1450, 1444, 1449, + 1448, 1450, 1424, 1445, 1448, 1449, 1450, 1425, 1445, 1449, 1448, 1450, 1430, 1439, 1449, 1448, + 1450, 1439, 1449, 1448, 1450, 1439, 1449, 1448, 1450, 1433, 1439, 1448, 1449, 1450, 1429, 1443, + 1448, 1449, 1450, 1443, 1448, 1449, 1450, 1424, 1448, 1449, 1450, 1425, 1448, 1449, 1450, 1430, + 1439, 1448, 1449, 1450, 1439, 1448, 1449, 1450, 1439, 1448, 1449, 1450, 1439, 1449, 1448, 1450, + 1429, 1479, 1448, 1449, 1450, 1449, 1448, 1450, 1424, 1448, 1449, 1450, 1425, 1448, 1449, 1450, + 1430, 1439, 1449, 1448, 1450, 1439, 1449, 1448, 1450, 1439, 1448, 1449, 1450, 1439, 1448, 1449, + 1450, 1429, 1480, 1448, 1449, 1450, 1448, 1449, 1450, 1424, 1448, 1449, 1450, 1425, 1448, 1449, + 1450, 1430, 1477, 1439, 1448, 1449, 1450, 1439, 1449, 1448, 1450, 1471, 1477, 1439, 1448, 1449, + 1450, 1439, 1448, 1449, 1450, 1429, 1475, 1449, 1448, 1450, 1449, 1448, 1450, 1424, 1473, 1474, + 1448, 1449, 1450, 1425, 1449, 1448, 1450, 1470, 1430, 1478, 1439, 1449, 1448, 1450, 1439, 1449, + 1448, 1450, 1451, 1452, 1453, 1454, 1455, 1457, 1458, 1459, 1460, 1462, 1463, 1464, 1465, 1472, + 1478, 1439, 1449, 1448, 1450, 1456, 1461, 1467, 1468, 1469, 1439, 1448, 1449, 1450, 1429, 1476, + 1449, 1448, 1450, 1449, 1448, 1450, 1466, 1424, 1449, 1448, 1450, 1425, 1449, 1448, 1450, 1430, + 1439, 1440, 1449, 1448, 1450, 1431, 1439, 1441, 1449, 1448, 1450, 1439, 1447, 1448, 1449, 1450, + 1439, 1447, 1448, 1449, 1450, 1429, 1435, 1446, 1449, 1448, 1450, 1436, 1446, 1448, 1449, 1450, + 1424, 1437, 1448, 1449, 1450, 1425, 1437, 1449, 1448, 1450, 1430, 1439, 1442, 1448, 1449, 1450, + 1432, 1439, 1442, 1449, 1448, 1450, 1439, 1448, 1449, 1450, 1439, 1449, 1448, 1450, 1429, 1448, + 1449, 1450, 1448, 1449, 1450, 1424, 1449, 1448, 1450, 1425, 1449, 1448, 1450, 1430, 1439, 1448, + 1449, 1450, 1434, 1439, 1449, 1448, 1450, 1439, 1449, 1448, 1450, 1439, 1449, 1448, 1450, 1429, + 1444, 1449, 1448, 1450, 1444, 1449, 1448, 1450, 1424, 1445, 1449, 1448, 1450, 1425, 1445, 1449, + 1448, 1450, 1430, 1439, 1449, 1448, 1450, 1439, 1448, 1449, 1450, 1439, 1449, 1448, 1450, 1433, + 1439, 1449, 1448, 1450, 1429, 1443, 1448, 1449, 1450, 1443, 1448, 1449, 1450, 1424, 1448, 1449, + 1450, 1425, 1449, 1448, 1450, 1430, 1439, 1448, 1449, 1450, 1439, 1449, 1448, 1450, 1439, 1448, + 1449, 1450, 1439, 1448, 1449, 1450, 1429, 1479, 1449, 1448, 1450, 1448, 1449, 1450, 1424, 1448, + 1449, 1450, 1425, 1448, 1449, 1450, 1430, 1439, 1449, 1448, 1450, 1439, 1449, 1448, 1450, 1439, + 1449, 1448, 1450, 1439, 1449, 1448, 1450, 1429, 1480, 1448, 1449, 1450, 1448, 1449, 1450, 1424, + 1449, 1448, 1450, 1425, 1448, 1449, 1450, 1430, 1439, 1449, 1448, 1450, 1439, 1449, 1448, 1450, + 1439, 1449, 1448, 1450, 1439, 1449, 1448, 1450, 1429, 1448, 1449, 1450, 1449, 1448, 1450, 1424, + 1449, 1448, 1450, 1425, 1448, 1449, 1450, 1481, 1482, 1483, 1430, 1439, 1448, 1449, 1450, 1439, + 1448, 1449, 1450, 1439, 1449, 1448, 1450, 1439, 1449, 1448, 1450, 1429, 1449, 1448, 1450, 1449, + 1448, 1450, 1424, 1449, 1448, 1450, 1425, 1484, 1448, 1449, 1450, 1488, 1487, 1490, 1489, 1494, + 1486, 1485, 1496, 1500, 1493, 1499, 1502, 1501, 1498, 1496, 1497, 1491, 1492, 1495, 1503, 1504, + 1507, 1511, 1566, 1510, 1569, 1506, 1512, 1565, 1509, 1568, 1505, 1513, 1564, 1508, 1567, 1514, + 1520, 1521, 1522, 1523, 1524, 1530, 1536, 1542, 1548, 1554, 1516, 1517, 1518, 1519, 1525, 1531, + 1537, 1543, 1549, 1555, 1526, 1532, 1538, 1544, 1550, 1556, 1515, 1528, 1534, 1540, 1546, 1552, + 1558, 1529, 1535, 1541, 1547, 1553, 1559, 1527, 1533, 1539, 1545, 1551, 1557, 1560, 1570, 1571, + 1563, 1574, 1561, 1572, 1562, 1575, 1573, 1597, 1598, 1588, 1594, 1595, 1588, 1593, 1596, 1597, + 1598, 1594, 1595, 1593, 1596, 1582, 1583, 1584, 1585, 1586, 1587, 1597, 1576, 1577, 1578, 1579, + 1580, 1581, 1589, 1590, 1591, 1592, 1598, 1588, 1594, 1595, 1588, 1593, 1596, 1582, 1583, 1584, + 1585, 1586, 1587, 1597, 1576, 1577, 1578, 1579, 1580, 1581, 1598, 1594, 1595, 1593, 1596, 1588, + 1588, 1589, 1590, 1591, 1592, 1588, 1588, 1615, 1338, 1339, 1354, 1355, 1356, 1621, 1367, 1368, + 1626, 1627, 1628, 1629, 1371, 1631, 1374, 1375, 1378, 1379, 1380, 1381, 1382, 1383, 1392, 1393, + 1394, 1395, 1644, 1338, 1339, 1354, 1355, 1356, 1621, 1368, 1626, 1627, 1628, 1629, 1371, 1631, + 1374, 1375, 1378, 1379, 1380, 1381, 1382, 1383, 1392, 1393, 1394, 1395, 1644, 1338, 1339, 1354, + 1355, 1356, 1621, 1368, 1626, 1627, 1628, 1629, 1371, 1631, 1374, 1375, 1378, 1379, 1380, 1381, + 1382, 1383, 1392, 1393, 1394, 1395, 1644, 1600, 1609, 1610, 1338, 1339, 1340, 1354, 1355, 1356, + 1357, 1621, 1366, 1368, 1626, 1627, 1628, 1629, 1371, 1631, 1374, 1375, 1378, 1379, 1380, 1381, + 1382, 1383, 1392, 1393, 1394, 1395, 1644, 1615, 1338, 1339, 1354, 1355, 1356, 1621, 1367, 1368, + 1626, 1627, 1628, 1629, 1371, 1631, 1374, 1375, 1378, 1379, 1380, 1381, 1382, 1383, 1392, 1393, + 1394, 1395, 1640, 1644, 1338, 1339, 1354, 1355, 1356, 1621, 1368, 1626, 1627, 1628, 1629, 1371, + 1631, 1374, 1375, 1378, 1379, 1380, 1381, 1382, 1383, 1392, 1393, 1394, 1395, 1640, 1644, 1338, + 1339, 1354, 1355, 1356, 1621, 1368, 1626, 1627, 1628, 1629, 1371, 1631, 1374, 1375, 1378, 1379, + 1380, 1381, 1382, 1383, 1392, 1393, 1394, 1395, 1640, 1644, 1599, 1609, 1610, 1338, 1339, 1340, + 1354, 1355, 1356, 1357, 1621, 1366, 1368, 1626, 1627, 1628, 1629, 1371, 1631, 1374, 1375, 1378, + 1379, 1380, 1381, 1382, 1383, 1392, 1393, 1394, 1395, 1640, 1644, 1316, 1317, 1349, 1350, 1351, + 1352, 1360, 1361, 1362, 1363, 1622, 1623, 1624, 1625, 1631, 1376, 1377, 1384, 1385, 1386, 1387, + 1388, 1389, 1390, 1391, 1636, 1637, 1638, 1639, 1413, 1642, 1645, 1622, 1623, 1624, 1625, 1631, + 1376, 1377, 1384, 1385, 1386, 1387, 1388, 1389, 1390, 1391, 1642, 1645, 1622, 1623, 1624, 1625, + 1631, 1376, 1377, 1384, 1385, 1386, 1387, 1388, 1389, 1390, 1391, 1642, 1645, 1607, 1608, 1347, + 1348, 1358, 1359, 1364, 1365, 1622, 1623, 1624, 1625, 1631, 1376, 1377, 1384, 1385, 1386, 1387, + 1388, 1389, 1390, 1391, 1632, 1633, 1634, 1635, 1642, 1645, 1349, 1350, 1351, 1352, 1360, 1361, + 1362, 1363, 1622, 1623, 1624, 1625, 1631, 1376, 1377, 1384, 1385, 1386, 1387, 1388, 1389, 1390, + 1391, 1636, 1637, 1638, 1639, 1413, 1641, 1643, 1645, 1622, 1623, 1624, 1625, 1631, 1376, 1377, + 1384, 1385, 1386, 1387, 1388, 1389, 1390, 1391, 1641, 1643, 1645, 1318, 1319, 1320, 1321, 1330, + 1331, 1332, 1333, 1622, 1623, 1624, 1625, 1631, 1376, 1377, 1384, 1385, 1386, 1387, 1388, 1389, + 1390, 1391, 1641, 1643, 1645, 1607, 1608, 1328, 1329, 1347, 1348, 1358, 1359, 1364, 1365, 1622, + 1623, 1624, 1625, 1631, 1376, 1377, 1384, 1385, 1386, 1387, 1388, 1389, 1390, 1391, 1632, 1633, + 1634, 1635, 1641, 1643, 1645, 1619, 1620, 1621, 1369, 1630, 1372, 1631, 1396, 1397, 1398, 1399, + 1400, 1401, 1402, 1403, 1404, 1405, 1406, 1407, 1620, 1621, 1369, 1630, 1372, 1631, 1396, 1397, + 1398, 1399, 1400, 1401, 1402, 1403, 1404, 1405, 1406, 1407, 1621, 1630, 1370, 1373, 1631, 1396, + 1397, 1398, 1399, 1400, 1401, 1402, 1403, 1404, 1405, 1406, 1407, 1621, 1370, 1630, 1373, 1631, + 1396, 1397, 1398, 1399, 1400, 1401, 1402, 1403, 1404, 1405, 1406, 1407, 1619, 1620, 1621, 1369, + 1630, 1372, 1631, 1396, 1397, 1398, 1399, 1400, 1401, 1402, 1403, 1404, 1405, 1406, 1407, 1620, + 1621, 1369, 1630, 1372, 1631, 1396, 1397, 1398, 1399, 1400, 1401, 1402, 1403, 1404, 1405, 1406, + 1407, 1621, 1630, 1370, 1373, 1631, 1396, 1397, 1398, 1399, 1400, 1401, 1402, 1403, 1404, 1405, + 1406, 1407, 1621, 1630, 1370, 1373, 1631, 1396, 1397, 1398, 1399, 1400, 1401, 1402, 1403, 1404, + 1405, 1406, 1407, 1631, 1410, 1411, 1412, 1631, 1410, 1411, 1412, 1631, 1410, 1411, 1412, 1601, + 1602, 1603, 1604, 1605, 1606, 1611, 1612, 1613, 1614, 1616, 1617, 1618, 1631, 1410, 1411, 1412, + 1631, 1410, 1411, 1412, 1631, 1410, 1411, 1412, 1631, 1410, 1411, 1412, 1601, 1602, 1603, 1604, + 1605, 1606, 1611, 1612, 1613, 1614, 1616, 1617, 1618, 1631, 1410, 1411, 1412, } DECODE_INDEX_A32 := [256]lib.Decode_Index{ @@ -2254,580 +2258,580 @@ DECODE_INDEX_A32 := [256]lib.Decode_Index{ 0x38 = { 1285, 94}, 0x39 = { 1379, 43}, 0x3A = { 1422, 42}, - 0x3B = { 1464, 156}, - 0x3C = { 1620, 94}, - 0x3D = { 1714, 43}, - 0x3E = { 1757, 42}, - 0x3F = { 1799, 156}, - 0x40 = { 1955, 12}, - 0x41 = { 1967, 1}, - 0x42 = { 1968, 12}, - 0x43 = { 1980, 1}, - 0x44 = { 1981, 1}, - 0x45 = { 1982, 2}, - 0x46 = { 1984, 1}, - 0x47 = { 1985, 1}, - 0x48 = { 1986, 13}, - 0x49 = { 1999, 1}, - 0x4A = { 2000, 17}, - 0x4B = { 2017, 1}, - 0x4C = { 2018, 13}, - 0x4D = { 2031, 2}, - 0x4E = { 2033, 17}, - 0x4F = { 2050, 1}, - 0x50 = { 2051, 1}, - 0x51 = { 2052, 1}, - 0x52 = { 2053, 1}, - 0x53 = { 2054, 1}, - 0x54 = { 2055, 1}, - 0x55 = { 2056, 1}, - 0x56 = { 2057, 1}, - 0x57 = { 2058, 6}, - 0x58 = { 2064, 1}, - 0x59 = { 2065, 1}, - 0x5A = { 2066, 1}, - 0x5B = { 2067, 1}, - 0x5C = { 2068, 1}, - 0x5D = { 2069, 3}, - 0x5E = { 2072, 1}, - 0x5F = { 2073, 1}, - 0x61 = { 2074, 6}, - 0x62 = { 2080, 6}, - 0x63 = { 2086, 6}, - 0x65 = { 2092, 6}, - 0x66 = { 2098, 6}, - 0x67 = { 2104, 6}, - 0x68 = { 2110, 5}, - 0x6A = { 2115, 4}, - 0x6B = { 2119, 5}, - 0x6C = { 2124, 2}, - 0x6E = { 2126, 4}, - 0x6F = { 2130, 5}, - 0x70 = { 2135, 9}, - 0x71 = { 2144, 2}, - 0x73 = { 2146, 1}, - 0x74 = { 2147, 5}, - 0x75 = { 2152, 7}, - 0x78 = { 2159, 3}, - 0x79 = { 2162, 1}, - 0x7A = { 2163, 1}, - 0x7B = { 2164, 1}, - 0x7C = { 2165, 3}, - 0x7D = { 2168, 3}, - 0x7E = { 2171, 1}, - 0x7F = { 2172, 2}, - 0x80 = { 2174, 1}, - 0x81 = { 2175, 2}, - 0x82 = { 2177, 1}, - 0x83 = { 2178, 2}, - 0x84 = { 2180, 1}, - 0x86 = { 2181, 1}, - 0x88 = { 2182, 1}, - 0x89 = { 2183, 2}, - 0x8A = { 2185, 1}, - 0x8B = { 2186, 3}, - 0x8C = { 2189, 1}, - 0x8E = { 2190, 1}, - 0x90 = { 2191, 1}, - 0x91 = { 2192, 2}, - 0x92 = { 2194, 2}, - 0x93 = { 2196, 2}, - 0x94 = { 2198, 1}, - 0x96 = { 2199, 1}, - 0x98 = { 2200, 1}, - 0x99 = { 2201, 2}, - 0x9A = { 2203, 1}, - 0x9B = { 2204, 2}, - 0x9C = { 2206, 1}, - 0x9E = { 2207, 1}, - 0xA0 = { 2208, 2}, - 0xA1 = { 2210, 2}, - 0xA2 = { 2212, 2}, - 0xA3 = { 2214, 2}, - 0xA4 = { 2216, 2}, - 0xA5 = { 2218, 2}, - 0xA6 = { 2220, 2}, - 0xA7 = { 2222, 2}, - 0xA8 = { 2224, 2}, - 0xA9 = { 2226, 2}, - 0xAA = { 2228, 2}, - 0xAB = { 2230, 2}, - 0xAC = { 2232, 2}, - 0xAD = { 2234, 2}, - 0xAE = { 2236, 2}, - 0xAF = { 2238, 2}, - 0xB0 = { 2240, 2}, - 0xB1 = { 2242, 2}, - 0xB2 = { 2244, 2}, - 0xB3 = { 2246, 2}, - 0xB4 = { 2248, 2}, - 0xB5 = { 2250, 2}, - 0xB6 = { 2252, 2}, - 0xB7 = { 2254, 2}, - 0xB8 = { 2256, 2}, - 0xB9 = { 2258, 2}, - 0xBA = { 2260, 2}, - 0xBB = { 2262, 2}, - 0xBC = { 2264, 2}, - 0xBD = { 2266, 2}, - 0xBE = { 2268, 2}, - 0xBF = { 2270, 2}, - 0xC0 = { 2272, 7}, - 0xC1 = { 2279, 4}, - 0xC2 = { 2283, 12}, - 0xC3 = { 2295, 6}, - 0xC4 = { 2301, 11}, - 0xC5 = { 2312, 8}, - 0xC6 = { 2320, 12}, - 0xC7 = { 2332, 6}, - 0xC8 = { 2338, 6}, - 0xC9 = { 2344, 6}, - 0xCA = { 2350, 12}, - 0xCB = { 2362, 8}, - 0xCC = { 2370, 6}, - 0xCD = { 2376, 6}, - 0xCE = { 2382, 12}, - 0xCF = { 2394, 6}, - 0xD0 = { 2400, 4}, - 0xD1 = { 2404, 4}, - 0xD2 = { 2408, 6}, - 0xD3 = { 2414, 4}, - 0xD4 = { 2418, 4}, - 0xD5 = { 2422, 4}, - 0xD6 = { 2426, 4}, - 0xD7 = { 2430, 4}, - 0xD8 = { 2434, 4}, - 0xD9 = { 2438, 4}, - 0xDA = { 2442, 2}, - 0xDB = { 2444, 2}, - 0xDC = { 2446, 4}, - 0xDD = { 2450, 4}, - 0xDE = { 2454, 2}, - 0xDF = { 2456, 2}, - 0xE0 = { 2458, 19}, - 0xE1 = { 2477, 14}, - 0xE2 = { 2491, 19}, - 0xE3 = { 2510, 15}, - 0xE4 = { 2525, 17}, - 0xE5 = { 2542, 13}, - 0xE6 = { 2555, 18}, - 0xE7 = { 2573, 15}, - 0xE8 = { 2588, 14}, - 0xE9 = { 2602, 11}, - 0xEA = { 2613, 10}, - 0xEB = { 2623, 91}, - 0xEC = { 2714, 15}, - 0xED = { 2729, 11}, - 0xEE = { 2740, 12}, - 0xEF = { 2752, 92}, - 0xF0 = { 2844, 3}, - 0xF1 = { 2847, 3}, - 0xF2 = { 2850, 3}, - 0xF3 = { 2853, 3}, - 0xF4 = { 2856, 3}, - 0xF5 = { 2859, 3}, - 0xF6 = { 2862, 3}, - 0xF7 = { 2865, 3}, - 0xF8 = { 2868, 1}, - 0xF9 = { 2869, 1}, - 0xFA = { 2870, 1}, - 0xFB = { 2871, 1}, - 0xFC = { 2872, 1}, - 0xFD = { 2873, 1}, - 0xFE = { 2874, 1}, - 0xFF = { 2875, 1}, + 0x3B = { 1464, 160}, + 0x3C = { 1624, 94}, + 0x3D = { 1718, 43}, + 0x3E = { 1761, 42}, + 0x3F = { 1803, 160}, + 0x40 = { 1963, 12}, + 0x41 = { 1975, 1}, + 0x42 = { 1976, 12}, + 0x43 = { 1988, 1}, + 0x44 = { 1989, 1}, + 0x45 = { 1990, 2}, + 0x46 = { 1992, 1}, + 0x47 = { 1993, 1}, + 0x48 = { 1994, 13}, + 0x49 = { 2007, 1}, + 0x4A = { 2008, 17}, + 0x4B = { 2025, 1}, + 0x4C = { 2026, 13}, + 0x4D = { 2039, 2}, + 0x4E = { 2041, 17}, + 0x4F = { 2058, 1}, + 0x50 = { 2059, 1}, + 0x51 = { 2060, 1}, + 0x52 = { 2061, 1}, + 0x53 = { 2062, 1}, + 0x54 = { 2063, 1}, + 0x55 = { 2064, 1}, + 0x56 = { 2065, 1}, + 0x57 = { 2066, 6}, + 0x58 = { 2072, 1}, + 0x59 = { 2073, 1}, + 0x5A = { 2074, 1}, + 0x5B = { 2075, 1}, + 0x5C = { 2076, 1}, + 0x5D = { 2077, 3}, + 0x5E = { 2080, 1}, + 0x5F = { 2081, 1}, + 0x61 = { 2082, 6}, + 0x62 = { 2088, 6}, + 0x63 = { 2094, 6}, + 0x65 = { 2100, 6}, + 0x66 = { 2106, 6}, + 0x67 = { 2112, 6}, + 0x68 = { 2118, 5}, + 0x6A = { 2123, 4}, + 0x6B = { 2127, 5}, + 0x6C = { 2132, 2}, + 0x6E = { 2134, 4}, + 0x6F = { 2138, 5}, + 0x70 = { 2143, 9}, + 0x71 = { 2152, 2}, + 0x73 = { 2154, 1}, + 0x74 = { 2155, 5}, + 0x75 = { 2160, 7}, + 0x78 = { 2167, 3}, + 0x79 = { 2170, 1}, + 0x7A = { 2171, 1}, + 0x7B = { 2172, 1}, + 0x7C = { 2173, 3}, + 0x7D = { 2176, 3}, + 0x7E = { 2179, 1}, + 0x7F = { 2180, 2}, + 0x80 = { 2182, 1}, + 0x81 = { 2183, 2}, + 0x82 = { 2185, 1}, + 0x83 = { 2186, 2}, + 0x84 = { 2188, 1}, + 0x86 = { 2189, 1}, + 0x88 = { 2190, 1}, + 0x89 = { 2191, 2}, + 0x8A = { 2193, 1}, + 0x8B = { 2194, 3}, + 0x8C = { 2197, 1}, + 0x8E = { 2198, 1}, + 0x90 = { 2199, 1}, + 0x91 = { 2200, 2}, + 0x92 = { 2202, 2}, + 0x93 = { 2204, 2}, + 0x94 = { 2206, 1}, + 0x96 = { 2207, 1}, + 0x98 = { 2208, 1}, + 0x99 = { 2209, 2}, + 0x9A = { 2211, 1}, + 0x9B = { 2212, 2}, + 0x9C = { 2214, 1}, + 0x9E = { 2215, 1}, + 0xA0 = { 2216, 2}, + 0xA1 = { 2218, 2}, + 0xA2 = { 2220, 2}, + 0xA3 = { 2222, 2}, + 0xA4 = { 2224, 2}, + 0xA5 = { 2226, 2}, + 0xA6 = { 2228, 2}, + 0xA7 = { 2230, 2}, + 0xA8 = { 2232, 2}, + 0xA9 = { 2234, 2}, + 0xAA = { 2236, 2}, + 0xAB = { 2238, 2}, + 0xAC = { 2240, 2}, + 0xAD = { 2242, 2}, + 0xAE = { 2244, 2}, + 0xAF = { 2246, 2}, + 0xB0 = { 2248, 2}, + 0xB1 = { 2250, 2}, + 0xB2 = { 2252, 2}, + 0xB3 = { 2254, 2}, + 0xB4 = { 2256, 2}, + 0xB5 = { 2258, 2}, + 0xB6 = { 2260, 2}, + 0xB7 = { 2262, 2}, + 0xB8 = { 2264, 2}, + 0xB9 = { 2266, 2}, + 0xBA = { 2268, 2}, + 0xBB = { 2270, 2}, + 0xBC = { 2272, 2}, + 0xBD = { 2274, 2}, + 0xBE = { 2276, 2}, + 0xBF = { 2278, 2}, + 0xC0 = { 2280, 7}, + 0xC1 = { 2287, 4}, + 0xC2 = { 2291, 12}, + 0xC3 = { 2303, 6}, + 0xC4 = { 2309, 11}, + 0xC5 = { 2320, 8}, + 0xC6 = { 2328, 12}, + 0xC7 = { 2340, 6}, + 0xC8 = { 2346, 6}, + 0xC9 = { 2352, 6}, + 0xCA = { 2358, 12}, + 0xCB = { 2370, 8}, + 0xCC = { 2378, 6}, + 0xCD = { 2384, 6}, + 0xCE = { 2390, 12}, + 0xCF = { 2402, 6}, + 0xD0 = { 2408, 4}, + 0xD1 = { 2412, 4}, + 0xD2 = { 2416, 6}, + 0xD3 = { 2422, 4}, + 0xD4 = { 2426, 4}, + 0xD5 = { 2430, 4}, + 0xD6 = { 2434, 4}, + 0xD7 = { 2438, 4}, + 0xD8 = { 2442, 4}, + 0xD9 = { 2446, 4}, + 0xDA = { 2450, 2}, + 0xDB = { 2452, 2}, + 0xDC = { 2454, 4}, + 0xDD = { 2458, 4}, + 0xDE = { 2462, 2}, + 0xDF = { 2464, 2}, + 0xE0 = { 2466, 19}, + 0xE1 = { 2485, 14}, + 0xE2 = { 2499, 19}, + 0xE3 = { 2518, 15}, + 0xE4 = { 2533, 17}, + 0xE5 = { 2550, 13}, + 0xE6 = { 2563, 18}, + 0xE7 = { 2581, 15}, + 0xE8 = { 2596, 14}, + 0xE9 = { 2610, 11}, + 0xEA = { 2621, 10}, + 0xEB = { 2631, 91}, + 0xEC = { 2722, 15}, + 0xED = { 2737, 11}, + 0xEE = { 2748, 12}, + 0xEF = { 2760, 92}, + 0xF0 = { 2852, 3}, + 0xF1 = { 2855, 3}, + 0xF2 = { 2858, 3}, + 0xF3 = { 2861, 3}, + 0xF4 = { 2864, 3}, + 0xF5 = { 2867, 3}, + 0xF6 = { 2870, 3}, + 0xF7 = { 2873, 3}, + 0xF8 = { 2876, 1}, + 0xF9 = { 2877, 1}, + 0xFA = { 2878, 1}, + 0xFB = { 2879, 1}, + 0xFC = { 2880, 1}, + 0xFD = { 2881, 1}, + 0xFE = { 2882, 1}, + 0xFF = { 2883, 1}, } DECODE_INDEX_T32 := [128]lib.Decode_Index{ - 0x74 = { 2876, 23}, - 0x75 = { 2899, 19}, - 0x76 = { 2918, 19}, - 0x77 = { 2937, 104}, - 0x78 = { 3041, 31}, - 0x79 = { 3072, 38}, - 0x7A = { 3110, 23}, - 0x7B = { 3133, 14}, - 0x7C = { 3147, 20}, - 0x7D = { 3167, 71}, - 0x7E = { 3238, 23}, - 0x7F = { 3261, 126}, + 0x74 = { 2884, 23}, + 0x75 = { 2907, 19}, + 0x76 = { 2926, 19}, + 0x77 = { 2945, 104}, + 0x78 = { 3049, 31}, + 0x79 = { 3080, 38}, + 0x7A = { 3118, 23}, + 0x7B = { 3141, 14}, + 0x7C = { 3155, 20}, + 0x7D = { 3175, 71}, + 0x7E = { 3246, 23}, + 0x7F = { 3269, 126}, } DECODE_INDEX_T16 := [64]lib.Decode_Index{ - 0x00 = { 3387, 1}, - 0x01 = { 3388, 1}, - 0x02 = { 3389, 1}, - 0x03 = { 3390, 1}, - 0x04 = { 3391, 1}, - 0x05 = { 3392, 1}, - 0x06 = { 3393, 2}, - 0x07 = { 3395, 2}, - 0x08 = { 3397, 1}, - 0x09 = { 3398, 1}, - 0x0A = { 3399, 1}, - 0x0B = { 3400, 1}, - 0x0C = { 3401, 1}, - 0x0D = { 3402, 1}, - 0x0E = { 3403, 1}, - 0x0F = { 3404, 1}, - 0x10 = { 3405, 16}, - 0x11 = { 3421, 7}, - 0x12 = { 3428, 1}, - 0x13 = { 3429, 1}, - 0x14 = { 3430, 2}, - 0x15 = { 3432, 2}, - 0x16 = { 3434, 2}, - 0x17 = { 3436, 2}, - 0x18 = { 3438, 1}, - 0x19 = { 3439, 1}, - 0x1A = { 3440, 1}, - 0x1B = { 3441, 1}, - 0x1C = { 3442, 1}, - 0x1D = { 3443, 1}, - 0x1E = { 3444, 1}, - 0x1F = { 3445, 1}, - 0x20 = { 3446, 1}, - 0x21 = { 3447, 1}, - 0x22 = { 3448, 1}, - 0x23 = { 3449, 1}, - 0x24 = { 3450, 1}, - 0x25 = { 3451, 1}, - 0x26 = { 3452, 1}, - 0x27 = { 3453, 1}, - 0x28 = { 3454, 1}, - 0x29 = { 3455, 1}, - 0x2A = { 3456, 1}, - 0x2B = { 3457, 1}, - 0x2C = { 3458, 7}, - 0x2D = { 3465, 2}, - 0x2E = { 3467, 4}, - 0x2F = { 3471, 8}, - 0x30 = { 3479, 1}, - 0x31 = { 3480, 1}, - 0x32 = { 3481, 1}, - 0x33 = { 3482, 1}, - 0x34 = { 3483, 1}, - 0x35 = { 3484, 1}, - 0x36 = { 3485, 1}, - 0x37 = { 3486, 3}, - 0x38 = { 3489, 1}, - 0x39 = { 3490, 1}, + 0x00 = { 3395, 1}, + 0x01 = { 3396, 1}, + 0x02 = { 3397, 1}, + 0x03 = { 3398, 1}, + 0x04 = { 3399, 1}, + 0x05 = { 3400, 1}, + 0x06 = { 3401, 2}, + 0x07 = { 3403, 2}, + 0x08 = { 3405, 1}, + 0x09 = { 3406, 1}, + 0x0A = { 3407, 1}, + 0x0B = { 3408, 1}, + 0x0C = { 3409, 1}, + 0x0D = { 3410, 1}, + 0x0E = { 3411, 1}, + 0x0F = { 3412, 1}, + 0x10 = { 3413, 16}, + 0x11 = { 3429, 7}, + 0x12 = { 3436, 1}, + 0x13 = { 3437, 1}, + 0x14 = { 3438, 2}, + 0x15 = { 3440, 2}, + 0x16 = { 3442, 2}, + 0x17 = { 3444, 2}, + 0x18 = { 3446, 1}, + 0x19 = { 3447, 1}, + 0x1A = { 3448, 1}, + 0x1B = { 3449, 1}, + 0x1C = { 3450, 1}, + 0x1D = { 3451, 1}, + 0x1E = { 3452, 1}, + 0x1F = { 3453, 1}, + 0x20 = { 3454, 1}, + 0x21 = { 3455, 1}, + 0x22 = { 3456, 1}, + 0x23 = { 3457, 1}, + 0x24 = { 3458, 1}, + 0x25 = { 3459, 1}, + 0x26 = { 3460, 1}, + 0x27 = { 3461, 1}, + 0x28 = { 3462, 1}, + 0x29 = { 3463, 1}, + 0x2A = { 3464, 1}, + 0x2B = { 3465, 1}, + 0x2C = { 3466, 7}, + 0x2D = { 3473, 2}, + 0x2E = { 3475, 4}, + 0x2F = { 3479, 8}, + 0x30 = { 3487, 1}, + 0x31 = { 3488, 1}, + 0x32 = { 3489, 1}, + 0x33 = { 3490, 1}, + 0x34 = { 3491, 1}, + 0x35 = { 3492, 1}, + 0x36 = { 3493, 1}, + 0x37 = { 3494, 3}, + 0x38 = { 3497, 1}, + 0x39 = { 3498, 1}, } DECODE_INDEX_T32_SUB := [4096]lib.Decode_Index{ - 0xE84 = { 3491, 6}, - 0xE85 = { 3497, 2}, - 0xE86 = { 3499, 1}, - 0xE87 = { 3500, 1}, - 0xE88 = { 3501, 1}, - 0xE89 = { 3502, 1}, - 0xE8A = { 3503, 1}, - 0xE8B = { 3504, 2}, - 0xE8C = { 3506, 4}, - 0xE8D = { 3510, 6}, - 0xE8E = { 3516, 1}, - 0xE8F = { 3517, 1}, - 0xE90 = { 3518, 1}, - 0xE91 = { 3519, 1}, - 0xE92 = { 3520, 2}, - 0xE93 = { 3522, 1}, - 0xE94 = { 3523, 1}, - 0xE95 = { 3524, 1}, - 0xE96 = { 3525, 1}, - 0xE97 = { 3526, 2}, - 0xE9C = { 3528, 1}, - 0xE9D = { 3529, 1}, - 0xE9E = { 3530, 1}, - 0xE9F = { 3531, 1}, - 0xEA0 = { 3532, 1}, - 0xEA1 = { 3533, 2}, - 0xEA2 = { 3535, 1}, - 0xEA3 = { 3536, 1}, - 0xEA4 = { 3537, 6}, - 0xEA5 = { 3543, 2}, - 0xEA6 = { 3545, 1}, - 0xEA7 = { 3546, 1}, - 0xEA8 = { 3547, 1}, - 0xEA9 = { 3548, 2}, - 0xEB1 = { 3550, 1}, - 0xEB4 = { 3551, 1}, - 0xEB5 = { 3552, 1}, - 0xEB6 = { 3553, 1}, - 0xEB7 = { 3554, 1}, - 0xEBB = { 3555, 1}, - 0xEBC = { 3556, 1}, - 0xEBD = { 3557, 1}, - 0xEC0 = { 3558, 2}, - 0xEC1 = { 3560, 1}, - 0xEC2 = { 3561, 3}, - 0xEC3 = { 3564, 2}, - 0xEC4 = { 3566, 2}, - 0xEC5 = { 3568, 1}, - 0xEC6 = { 3569, 7}, - 0xEC7 = { 3576, 2}, - 0xEC8 = { 3578, 1}, - 0xEC9 = { 3579, 1}, - 0xECA = { 3580, 2}, - 0xECB = { 3582, 2}, - 0xECC = { 3584, 1}, - 0xECD = { 3585, 1}, - 0xECE = { 3586, 2}, - 0xECF = { 3588, 2}, - 0xED6 = { 3590, 4}, - 0xED8 = { 3594, 4}, - 0xED9 = { 3598, 4}, - 0xEDC = { 3602, 4}, - 0xEDD = { 3606, 4}, - 0xEE0 = { 3610, 24}, - 0xEE1 = { 3634, 23}, - 0xEE2 = { 3657, 22}, - 0xEE3 = { 3679, 29}, - 0xEE4 = { 3708, 23}, - 0xEE5 = { 3731, 22}, - 0xEE6 = { 3753, 22}, - 0xEE7 = { 3775, 29}, - 0xEE8 = { 3804, 28}, - 0xEE9 = { 3832, 12}, - 0xEEA = { 3844, 13}, - 0xEEB = { 3857, 18}, - 0xEEC = { 3875, 27}, - 0xEED = { 3902, 13}, - 0xEEE = { 3915, 22}, - 0xEEF = { 3937, 23}, - 0xEF0 = { 3960, 15}, - 0xEF1 = { 3975, 15}, - 0xEF2 = { 3990, 15}, - 0xEF3 = { 4005, 15}, - 0xEF4 = { 4020, 15}, - 0xEF5 = { 4035, 15}, - 0xEF6 = { 4050, 15}, - 0xEF7 = { 4065, 15}, - 0xEF8 = { 4080, 3}, - 0xEF9 = { 4083, 3}, - 0xEFA = { 4086, 3}, - 0xEFB = { 4089, 3}, - 0xEFC = { 4092, 3}, - 0xEFD = { 4095, 3}, - 0xEFE = { 4098, 3}, - 0xEFF = { 4101, 3}, - 0xF00 = { 4104, 11}, - 0xF01 = { 4115, 10}, - 0xF02 = { 4125, 8}, - 0xF03 = { 4133, 8}, - 0xF04 = { 4141, 8}, - 0xF05 = { 4149, 5}, - 0xF06 = { 4154, 5}, - 0xF07 = { 4159, 5}, - 0xF08 = { 4164, 6}, - 0xF09 = { 4170, 6}, - 0xF0A = { 4176, 4}, - 0xF0B = { 4180, 4}, - 0xF0C = { 4184, 4}, - 0xF0D = { 4188, 3}, - 0xF0E = { 4191, 4}, - 0xF0F = { 4195, 4}, - 0xF10 = { 4199, 7}, - 0xF11 = { 4206, 7}, - 0xF12 = { 4213, 6}, - 0xF13 = { 4219, 6}, - 0xF14 = { 4225, 5}, - 0xF15 = { 4230, 4}, - 0xF16 = { 4234, 5}, - 0xF17 = { 4239, 5}, - 0xF18 = { 4244, 5}, - 0xF19 = { 4249, 4}, - 0xF1A = { 4253, 4}, - 0xF1B = { 4257, 5}, - 0xF1C = { 4262, 5}, - 0xF1D = { 4267, 4}, - 0xF1E = { 4271, 4}, - 0xF1F = { 4275, 4}, - 0xF20 = { 4279, 5}, - 0xF21 = { 4284, 4}, - 0xF22 = { 4288, 4}, - 0xF23 = { 4292, 4}, - 0xF24 = { 4296, 5}, - 0xF25 = { 4301, 3}, - 0xF26 = { 4304, 4}, - 0xF27 = { 4308, 4}, - 0xF28 = { 4312, 5}, - 0xF29 = { 4317, 4}, - 0xF2A = { 4321, 4}, - 0xF2B = { 4325, 4}, - 0xF2C = { 4329, 5}, - 0xF2D = { 4334, 3}, - 0xF2E = { 4337, 4}, - 0xF2F = { 4341, 4}, - 0xF30 = { 4345, 6}, - 0xF31 = { 4351, 4}, - 0xF32 = { 4355, 6}, - 0xF33 = { 4361, 4}, - 0xF34 = { 4365, 5}, - 0xF35 = { 4370, 3}, - 0xF36 = { 4373, 6}, - 0xF37 = { 4379, 4}, - 0xF38 = { 4383, 7}, - 0xF39 = { 4390, 4}, - 0xF3A = { 4394, 19}, - 0xF3B = { 4413, 9}, - 0xF3C = { 4422, 5}, - 0xF3D = { 4427, 3}, - 0xF3E = { 4430, 5}, - 0xF3F = { 4435, 4}, - 0xF40 = { 4439, 6}, - 0xF41 = { 4445, 6}, - 0xF42 = { 4451, 5}, - 0xF43 = { 4456, 5}, - 0xF44 = { 4461, 6}, - 0xF45 = { 4467, 5}, - 0xF46 = { 4472, 5}, - 0xF47 = { 4477, 5}, - 0xF48 = { 4482, 6}, - 0xF49 = { 4488, 6}, - 0xF4A = { 4494, 4}, - 0xF4B = { 4498, 4}, - 0xF4C = { 4502, 4}, - 0xF4D = { 4506, 3}, - 0xF4E = { 4509, 4}, - 0xF4F = { 4513, 4}, - 0xF50 = { 4517, 5}, - 0xF51 = { 4522, 5}, - 0xF52 = { 4527, 4}, - 0xF53 = { 4531, 4}, - 0xF54 = { 4535, 5}, - 0xF55 = { 4540, 4}, - 0xF56 = { 4544, 5}, - 0xF57 = { 4549, 5}, - 0xF58 = { 4554, 5}, - 0xF59 = { 4559, 4}, - 0xF5A = { 4563, 4}, - 0xF5B = { 4567, 5}, - 0xF5C = { 4572, 5}, - 0xF5D = { 4577, 4}, - 0xF5E = { 4581, 4}, - 0xF5F = { 4585, 4}, - 0xF60 = { 4589, 5}, - 0xF61 = { 4594, 4}, - 0xF62 = { 4598, 4}, - 0xF63 = { 4602, 4}, - 0xF64 = { 4606, 5}, - 0xF65 = { 4611, 3}, - 0xF66 = { 4614, 4}, - 0xF67 = { 4618, 4}, - 0xF68 = { 4622, 5}, - 0xF69 = { 4627, 4}, - 0xF6A = { 4631, 4}, - 0xF6B = { 4635, 4}, - 0xF6C = { 4639, 5}, - 0xF6D = { 4644, 3}, - 0xF6E = { 4647, 4}, - 0xF6F = { 4651, 4}, - 0xF70 = { 4655, 5}, - 0xF71 = { 4660, 4}, - 0xF72 = { 4664, 4}, - 0xF73 = { 4668, 4}, - 0xF74 = { 4672, 4}, - 0xF75 = { 4676, 3}, - 0xF76 = { 4679, 4}, - 0xF77 = { 4683, 4}, - 0xF78 = { 4687, 8}, - 0xF79 = { 4695, 4}, - 0xF7A = { 4699, 4}, - 0xF7B = { 4703, 4}, - 0xF7C = { 4707, 4}, - 0xF7D = { 4711, 3}, - 0xF7E = { 4714, 4}, - 0xF7F = { 4718, 5}, - 0xF80 = { 4723, 1}, - 0xF81 = { 4724, 1}, - 0xF82 = { 4725, 1}, - 0xF83 = { 4726, 2}, - 0xF84 = { 4728, 1}, - 0xF85 = { 4729, 2}, - 0xF88 = { 4731, 1}, - 0xF89 = { 4732, 2}, - 0xF8A = { 4734, 1}, - 0xF8B = { 4735, 1}, - 0xF8C = { 4736, 1}, - 0xF8D = { 4737, 2}, - 0xF91 = { 4739, 1}, - 0xF93 = { 4740, 1}, - 0xF99 = { 4741, 2}, - 0xF9B = { 4743, 1}, - 0xFA0 = { 4744, 3}, - 0xFA1 = { 4747, 2}, - 0xFA2 = { 4749, 3}, - 0xFA3 = { 4752, 2}, - 0xFA4 = { 4754, 3}, - 0xFA5 = { 4757, 2}, - 0xFA6 = { 4759, 1}, - 0xFA8 = { 4760, 10}, - 0xFA9 = { 4770, 10}, - 0xFAA = { 4780, 6}, - 0xFAB = { 4786, 1}, - 0xFAC = { 4787, 6}, - 0xFAD = { 4793, 6}, - 0xFAE = { 4799, 6}, - 0xFB0 = { 4805, 3}, - 0xFB5 = { 4808, 1}, - 0xFB8 = { 4809, 1}, - 0xFB9 = { 4810, 1}, - 0xFBA = { 4811, 1}, - 0xFBB = { 4812, 1}, - 0xFBC = { 4813, 1}, - 0xFBE = { 4814, 1}, - 0xFC0 = { 4815, 1}, - 0xFC1 = { 4816, 1}, - 0xFC2 = { 4817, 3}, - 0xFC3 = { 4820, 3}, - 0xFC4 = { 4823, 1}, - 0xFC5 = { 4824, 1}, - 0xFC6 = { 4825, 2}, - 0xFC7 = { 4827, 2}, - 0xFC8 = { 4829, 7}, - 0xFC9 = { 4836, 11}, - 0xFCA = { 4847, 3}, - 0xFCB = { 4850, 3}, - 0xFCC = { 4853, 7}, - 0xFCD = { 4860, 7}, - 0xFCE = { 4867, 2}, - 0xFCF = { 4869, 2}, - 0xFD2 = { 4871, 1}, - 0xFD3 = { 4872, 1}, - 0xFD9 = { 4873, 4}, - 0xFDA = { 4877, 1}, - 0xFDB = { 4878, 1}, - 0xFE0 = { 4879, 28}, - 0xFE1 = { 4907, 26}, - 0xFE2 = { 4933, 26}, - 0xFE3 = { 4959, 32}, - 0xFE4 = { 4991, 29}, - 0xFE5 = { 5020, 27}, - 0xFE6 = { 5047, 27}, - 0xFE7 = { 5074, 33}, - 0xFE8 = { 5107, 32}, - 0xFE9 = { 5139, 17}, - 0xFEA = { 5156, 17}, - 0xFEB = { 5173, 29}, - 0xFEC = { 5202, 31}, - 0xFED = { 5233, 18}, - 0xFEE = { 5251, 26}, - 0xFEF = { 5277, 32}, - 0xFF0 = { 5309, 19}, - 0xFF1 = { 5328, 18}, - 0xFF2 = { 5346, 17}, - 0xFF3 = { 5363, 17}, - 0xFF4 = { 5380, 19}, - 0xFF5 = { 5399, 18}, - 0xFF6 = { 5417, 17}, - 0xFF7 = { 5434, 17}, - 0xFF8 = { 5451, 4}, - 0xFF9 = { 5455, 4}, - 0xFFA = { 5459, 4}, - 0xFFB = { 5463, 17}, - 0xFFC = { 5480, 4}, - 0xFFD = { 5484, 4}, - 0xFFE = { 5488, 4}, - 0xFFF = { 5492, 17}, + 0xE84 = { 3499, 6}, + 0xE85 = { 3505, 2}, + 0xE86 = { 3507, 1}, + 0xE87 = { 3508, 1}, + 0xE88 = { 3509, 1}, + 0xE89 = { 3510, 1}, + 0xE8A = { 3511, 1}, + 0xE8B = { 3512, 2}, + 0xE8C = { 3514, 4}, + 0xE8D = { 3518, 6}, + 0xE8E = { 3524, 1}, + 0xE8F = { 3525, 1}, + 0xE90 = { 3526, 1}, + 0xE91 = { 3527, 1}, + 0xE92 = { 3528, 2}, + 0xE93 = { 3530, 1}, + 0xE94 = { 3531, 1}, + 0xE95 = { 3532, 1}, + 0xE96 = { 3533, 1}, + 0xE97 = { 3534, 2}, + 0xE9C = { 3536, 1}, + 0xE9D = { 3537, 1}, + 0xE9E = { 3538, 1}, + 0xE9F = { 3539, 1}, + 0xEA0 = { 3540, 1}, + 0xEA1 = { 3541, 2}, + 0xEA2 = { 3543, 1}, + 0xEA3 = { 3544, 1}, + 0xEA4 = { 3545, 6}, + 0xEA5 = { 3551, 2}, + 0xEA6 = { 3553, 1}, + 0xEA7 = { 3554, 1}, + 0xEA8 = { 3555, 1}, + 0xEA9 = { 3556, 2}, + 0xEB1 = { 3558, 1}, + 0xEB4 = { 3559, 1}, + 0xEB5 = { 3560, 1}, + 0xEB6 = { 3561, 1}, + 0xEB7 = { 3562, 1}, + 0xEBB = { 3563, 1}, + 0xEBC = { 3564, 1}, + 0xEBD = { 3565, 1}, + 0xEC0 = { 3566, 2}, + 0xEC1 = { 3568, 1}, + 0xEC2 = { 3569, 3}, + 0xEC3 = { 3572, 2}, + 0xEC4 = { 3574, 2}, + 0xEC5 = { 3576, 1}, + 0xEC6 = { 3577, 7}, + 0xEC7 = { 3584, 2}, + 0xEC8 = { 3586, 1}, + 0xEC9 = { 3587, 1}, + 0xECA = { 3588, 2}, + 0xECB = { 3590, 2}, + 0xECC = { 3592, 1}, + 0xECD = { 3593, 1}, + 0xECE = { 3594, 2}, + 0xECF = { 3596, 2}, + 0xED6 = { 3598, 4}, + 0xED8 = { 3602, 4}, + 0xED9 = { 3606, 4}, + 0xEDC = { 3610, 4}, + 0xEDD = { 3614, 4}, + 0xEE0 = { 3618, 24}, + 0xEE1 = { 3642, 23}, + 0xEE2 = { 3665, 22}, + 0xEE3 = { 3687, 29}, + 0xEE4 = { 3716, 23}, + 0xEE5 = { 3739, 22}, + 0xEE6 = { 3761, 22}, + 0xEE7 = { 3783, 29}, + 0xEE8 = { 3812, 28}, + 0xEE9 = { 3840, 12}, + 0xEEA = { 3852, 13}, + 0xEEB = { 3865, 18}, + 0xEEC = { 3883, 27}, + 0xEED = { 3910, 13}, + 0xEEE = { 3923, 22}, + 0xEEF = { 3945, 23}, + 0xEF0 = { 3968, 15}, + 0xEF1 = { 3983, 15}, + 0xEF2 = { 3998, 15}, + 0xEF3 = { 4013, 15}, + 0xEF4 = { 4028, 15}, + 0xEF5 = { 4043, 15}, + 0xEF6 = { 4058, 15}, + 0xEF7 = { 4073, 15}, + 0xEF8 = { 4088, 3}, + 0xEF9 = { 4091, 3}, + 0xEFA = { 4094, 3}, + 0xEFB = { 4097, 3}, + 0xEFC = { 4100, 3}, + 0xEFD = { 4103, 3}, + 0xEFE = { 4106, 3}, + 0xEFF = { 4109, 3}, + 0xF00 = { 4112, 11}, + 0xF01 = { 4123, 10}, + 0xF02 = { 4133, 8}, + 0xF03 = { 4141, 8}, + 0xF04 = { 4149, 8}, + 0xF05 = { 4157, 5}, + 0xF06 = { 4162, 5}, + 0xF07 = { 4167, 5}, + 0xF08 = { 4172, 6}, + 0xF09 = { 4178, 6}, + 0xF0A = { 4184, 4}, + 0xF0B = { 4188, 4}, + 0xF0C = { 4192, 4}, + 0xF0D = { 4196, 3}, + 0xF0E = { 4199, 4}, + 0xF0F = { 4203, 4}, + 0xF10 = { 4207, 7}, + 0xF11 = { 4214, 7}, + 0xF12 = { 4221, 6}, + 0xF13 = { 4227, 6}, + 0xF14 = { 4233, 5}, + 0xF15 = { 4238, 4}, + 0xF16 = { 4242, 5}, + 0xF17 = { 4247, 5}, + 0xF18 = { 4252, 5}, + 0xF19 = { 4257, 4}, + 0xF1A = { 4261, 4}, + 0xF1B = { 4265, 5}, + 0xF1C = { 4270, 5}, + 0xF1D = { 4275, 4}, + 0xF1E = { 4279, 4}, + 0xF1F = { 4283, 4}, + 0xF20 = { 4287, 5}, + 0xF21 = { 4292, 4}, + 0xF22 = { 4296, 4}, + 0xF23 = { 4300, 4}, + 0xF24 = { 4304, 5}, + 0xF25 = { 4309, 3}, + 0xF26 = { 4312, 4}, + 0xF27 = { 4316, 4}, + 0xF28 = { 4320, 5}, + 0xF29 = { 4325, 4}, + 0xF2A = { 4329, 4}, + 0xF2B = { 4333, 4}, + 0xF2C = { 4337, 5}, + 0xF2D = { 4342, 3}, + 0xF2E = { 4345, 4}, + 0xF2F = { 4349, 4}, + 0xF30 = { 4353, 6}, + 0xF31 = { 4359, 4}, + 0xF32 = { 4363, 6}, + 0xF33 = { 4369, 4}, + 0xF34 = { 4373, 5}, + 0xF35 = { 4378, 3}, + 0xF36 = { 4381, 6}, + 0xF37 = { 4387, 4}, + 0xF38 = { 4391, 7}, + 0xF39 = { 4398, 4}, + 0xF3A = { 4402, 19}, + 0xF3B = { 4421, 9}, + 0xF3C = { 4430, 5}, + 0xF3D = { 4435, 3}, + 0xF3E = { 4438, 5}, + 0xF3F = { 4443, 4}, + 0xF40 = { 4447, 6}, + 0xF41 = { 4453, 6}, + 0xF42 = { 4459, 5}, + 0xF43 = { 4464, 5}, + 0xF44 = { 4469, 6}, + 0xF45 = { 4475, 5}, + 0xF46 = { 4480, 5}, + 0xF47 = { 4485, 5}, + 0xF48 = { 4490, 6}, + 0xF49 = { 4496, 6}, + 0xF4A = { 4502, 4}, + 0xF4B = { 4506, 4}, + 0xF4C = { 4510, 4}, + 0xF4D = { 4514, 3}, + 0xF4E = { 4517, 4}, + 0xF4F = { 4521, 4}, + 0xF50 = { 4525, 5}, + 0xF51 = { 4530, 5}, + 0xF52 = { 4535, 4}, + 0xF53 = { 4539, 4}, + 0xF54 = { 4543, 5}, + 0xF55 = { 4548, 4}, + 0xF56 = { 4552, 5}, + 0xF57 = { 4557, 5}, + 0xF58 = { 4562, 5}, + 0xF59 = { 4567, 4}, + 0xF5A = { 4571, 4}, + 0xF5B = { 4575, 5}, + 0xF5C = { 4580, 5}, + 0xF5D = { 4585, 4}, + 0xF5E = { 4589, 4}, + 0xF5F = { 4593, 4}, + 0xF60 = { 4597, 5}, + 0xF61 = { 4602, 4}, + 0xF62 = { 4606, 4}, + 0xF63 = { 4610, 4}, + 0xF64 = { 4614, 5}, + 0xF65 = { 4619, 3}, + 0xF66 = { 4622, 4}, + 0xF67 = { 4626, 4}, + 0xF68 = { 4630, 5}, + 0xF69 = { 4635, 4}, + 0xF6A = { 4639, 4}, + 0xF6B = { 4643, 4}, + 0xF6C = { 4647, 5}, + 0xF6D = { 4652, 3}, + 0xF6E = { 4655, 4}, + 0xF6F = { 4659, 4}, + 0xF70 = { 4663, 5}, + 0xF71 = { 4668, 4}, + 0xF72 = { 4672, 4}, + 0xF73 = { 4676, 4}, + 0xF74 = { 4680, 4}, + 0xF75 = { 4684, 3}, + 0xF76 = { 4687, 4}, + 0xF77 = { 4691, 4}, + 0xF78 = { 4695, 8}, + 0xF79 = { 4703, 4}, + 0xF7A = { 4707, 4}, + 0xF7B = { 4711, 4}, + 0xF7C = { 4715, 4}, + 0xF7D = { 4719, 3}, + 0xF7E = { 4722, 4}, + 0xF7F = { 4726, 5}, + 0xF80 = { 4731, 1}, + 0xF81 = { 4732, 1}, + 0xF82 = { 4733, 1}, + 0xF83 = { 4734, 2}, + 0xF84 = { 4736, 1}, + 0xF85 = { 4737, 2}, + 0xF88 = { 4739, 1}, + 0xF89 = { 4740, 2}, + 0xF8A = { 4742, 1}, + 0xF8B = { 4743, 1}, + 0xF8C = { 4744, 1}, + 0xF8D = { 4745, 2}, + 0xF91 = { 4747, 1}, + 0xF93 = { 4748, 1}, + 0xF99 = { 4749, 2}, + 0xF9B = { 4751, 1}, + 0xFA0 = { 4752, 3}, + 0xFA1 = { 4755, 2}, + 0xFA2 = { 4757, 3}, + 0xFA3 = { 4760, 2}, + 0xFA4 = { 4762, 3}, + 0xFA5 = { 4765, 2}, + 0xFA6 = { 4767, 1}, + 0xFA8 = { 4768, 10}, + 0xFA9 = { 4778, 10}, + 0xFAA = { 4788, 6}, + 0xFAB = { 4794, 1}, + 0xFAC = { 4795, 6}, + 0xFAD = { 4801, 6}, + 0xFAE = { 4807, 6}, + 0xFB0 = { 4813, 3}, + 0xFB5 = { 4816, 1}, + 0xFB8 = { 4817, 1}, + 0xFB9 = { 4818, 1}, + 0xFBA = { 4819, 1}, + 0xFBB = { 4820, 1}, + 0xFBC = { 4821, 1}, + 0xFBE = { 4822, 1}, + 0xFC0 = { 4823, 1}, + 0xFC1 = { 4824, 1}, + 0xFC2 = { 4825, 3}, + 0xFC3 = { 4828, 3}, + 0xFC4 = { 4831, 1}, + 0xFC5 = { 4832, 1}, + 0xFC6 = { 4833, 2}, + 0xFC7 = { 4835, 2}, + 0xFC8 = { 4837, 7}, + 0xFC9 = { 4844, 11}, + 0xFCA = { 4855, 3}, + 0xFCB = { 4858, 3}, + 0xFCC = { 4861, 7}, + 0xFCD = { 4868, 7}, + 0xFCE = { 4875, 2}, + 0xFCF = { 4877, 2}, + 0xFD2 = { 4879, 1}, + 0xFD3 = { 4880, 1}, + 0xFD9 = { 4881, 4}, + 0xFDA = { 4885, 1}, + 0xFDB = { 4886, 1}, + 0xFE0 = { 4887, 28}, + 0xFE1 = { 4915, 26}, + 0xFE2 = { 4941, 26}, + 0xFE3 = { 4967, 32}, + 0xFE4 = { 4999, 29}, + 0xFE5 = { 5028, 27}, + 0xFE6 = { 5055, 27}, + 0xFE7 = { 5082, 33}, + 0xFE8 = { 5115, 32}, + 0xFE9 = { 5147, 17}, + 0xFEA = { 5164, 17}, + 0xFEB = { 5181, 29}, + 0xFEC = { 5210, 31}, + 0xFED = { 5241, 18}, + 0xFEE = { 5259, 26}, + 0xFEF = { 5285, 32}, + 0xFF0 = { 5317, 19}, + 0xFF1 = { 5336, 18}, + 0xFF2 = { 5354, 17}, + 0xFF3 = { 5371, 17}, + 0xFF4 = { 5388, 19}, + 0xFF5 = { 5407, 18}, + 0xFF6 = { 5425, 17}, + 0xFF7 = { 5442, 17}, + 0xFF8 = { 5459, 4}, + 0xFF9 = { 5463, 4}, + 0xFFA = { 5467, 4}, + 0xFFB = { 5471, 17}, + 0xFFC = { 5488, 4}, + 0xFFD = { 5492, 4}, + 0xFFE = { 5496, 4}, + 0xFFF = { 5500, 17}, } diff --git a/core/rexcode/isa/arm32/tablegen/generated/encode_tables.odin b/core/rexcode/isa/arm32/tablegen/generated/encode_tables.odin index 35d119e3d..eae97f2f9 100644 --- a/core/rexcode/isa/arm32/tablegen/generated/encode_tables.odin +++ b/core/rexcode/isa/arm32/tablegen/generated/encode_tables.odin @@ -8,7 +8,7 @@ package rexcode_arm32_generated import lib "../.." @(rodata) -ENCODE_FORMS := [1722]lib.Encoding{ +ENCODE_FORMS := [1726]lib.Encoding{ // .AND { .AND, {.GPR,.GPR,.IMM_MOD,.NONE}, {.RD,.RN_A32,.A32_IMM_MOD,.NONE}, 0x02000000, 0x0FE00000, .BASE, .A32, {}, {.NONE,.NONE} }, { .AND, {.GPR,.GPR,.GPR_SHIFTED,.NONE}, {.RD,.RN_A32,.RM_A32,.NONE}, 0x00000000, 0x0FE00010, .BASE, .A32, {}, {.NONE,.NONE} }, @@ -887,17 +887,17 @@ ENCODE_FORMS := [1722]lib.Encoding{ // .STC2 { .STC2, {.COPROC_NUM,.COPROC_REG,.MEM,.NONE}, {.COPROC_NUM_FIELD,.COPROC_CRN_FIELD,.MEM_IMM8_OFFSET,.NONE}, 0xFC000000, 0xFF100000, .V5T, .A32, {}, {.NONE,.NONE} }, // .CRC32B - { .CRC32B, {.GPR,.GPR,.GPR,.NONE}, {.RD,.RN_A32,.RM_A32,.NONE}, 0x01000040, 0x0FF00FF0, .CRC32, .A32, {}, {.NONE,.NONE} }, + { .CRC32B, {.GPR,.GPR,.GPR,.NONE}, {.RD,.RN_A32,.RM_A32,.NONE}, 0xE1000040, 0xFFF00FF0, .CRC32, .A32, {}, {.NONE,.NONE} }, // .CRC32H - { .CRC32H, {.GPR,.GPR,.GPR,.NONE}, {.RD,.RN_A32,.RM_A32,.NONE}, 0x01200040, 0x0FF00FF0, .CRC32, .A32, {}, {.NONE,.NONE} }, + { .CRC32H, {.GPR,.GPR,.GPR,.NONE}, {.RD,.RN_A32,.RM_A32,.NONE}, 0xE1200040, 0xFFF00FF0, .CRC32, .A32, {}, {.NONE,.NONE} }, // .CRC32W - { .CRC32W, {.GPR,.GPR,.GPR,.NONE}, {.RD,.RN_A32,.RM_A32,.NONE}, 0x01400040, 0x0FF00FF0, .CRC32, .A32, {}, {.NONE,.NONE} }, + { .CRC32W, {.GPR,.GPR,.GPR,.NONE}, {.RD,.RN_A32,.RM_A32,.NONE}, 0xE1400040, 0xFFF00FF0, .CRC32, .A32, {}, {.NONE,.NONE} }, // .CRC32CB - { .CRC32CB, {.GPR,.GPR,.GPR,.NONE}, {.RD,.RN_A32,.RM_A32,.NONE}, 0x01000240, 0x0FF00FF0, .CRC32, .A32, {}, {.NONE,.NONE} }, + { .CRC32CB, {.GPR,.GPR,.GPR,.NONE}, {.RD,.RN_A32,.RM_A32,.NONE}, 0xE1000240, 0xFFF00FF0, .CRC32, .A32, {}, {.NONE,.NONE} }, // .CRC32CH - { .CRC32CH, {.GPR,.GPR,.GPR,.NONE}, {.RD,.RN_A32,.RM_A32,.NONE}, 0x01200240, 0x0FF00FF0, .CRC32, .A32, {}, {.NONE,.NONE} }, + { .CRC32CH, {.GPR,.GPR,.GPR,.NONE}, {.RD,.RN_A32,.RM_A32,.NONE}, 0xE1200240, 0xFFF00FF0, .CRC32, .A32, {}, {.NONE,.NONE} }, // .CRC32CW - { .CRC32CW, {.GPR,.GPR,.GPR,.NONE}, {.RD,.RN_A32,.RM_A32,.NONE}, 0x01400240, 0x0FF00FF0, .CRC32, .A32, {}, {.NONE,.NONE} }, + { .CRC32CW, {.GPR,.GPR,.GPR,.NONE}, {.RD,.RN_A32,.RM_A32,.NONE}, 0xE1400240, 0xFFF00FF0, .CRC32, .A32, {}, {.NONE,.NONE} }, // .VADD { .VADD, {.SPR,.SPR,.SPR,.NONE}, {.VD_S,.VN_S,.VM_S,.NONE}, 0x0E300A00, 0x0FB00B50, .VFPV2, .A32, {}, {.F32,.NONE} }, { .VADD, {.DPR,.DPR,.DPR,.NONE}, {.VD_D,.VN_D,.VM_D,.NONE}, 0x0E300B00, 0x0FB00B50, .VFPV2, .A32, {}, {.F64,.NONE} }, @@ -1859,8 +1859,12 @@ ENCODE_FORMS := [1722]lib.Encoding{ // .VDUP { .VDUP, {.DPR,.GPR,.NONE,.NONE}, {.VN_D,.RT_A32,.NONE,.NONE}, 0x0EC00B10, 0x0FF00FD0, .NEON, .A32, {}, {.SZ8,.NONE} }, { .VDUP, {.QPR,.GPR,.NONE,.NONE}, {.VN_Q,.RT_A32,.NONE,.NONE}, 0x0EE00B10, 0x0FF00FD0, .NEON, .A32, {}, {.SZ8,.NONE} }, - { .VDUP, {.DPR,.DPR_ELEM,.NONE,.NONE}, {.VD_D,.NEON_VM_SCALAR_32,.NONE,.NONE}, 0xF3B00C00, 0xFFB00FD0, .NEON, .A32, {}, {.NONE,.NONE} }, - { .VDUP, {.QPR,.DPR_ELEM,.NONE,.NONE}, {.VD_Q,.NEON_VM_SCALAR_32,.NONE,.NONE}, 0xF3B00C40, 0xFFB00FD0, .NEON, .A32, {}, {.NONE,.NONE} }, + { .VDUP, {.DPR,.DPR_ELEM,.NONE,.NONE}, {.VD_D,.NEON_VDUP_LANE_8,.NONE,.NONE}, 0xF3B10C00, 0xFFB10FD0, .NEON, .A32, {}, {.SZ8,.NONE} }, + { .VDUP, {.QPR,.DPR_ELEM,.NONE,.NONE}, {.VD_Q,.NEON_VDUP_LANE_8,.NONE,.NONE}, 0xF3B10C40, 0xFFB10FD0, .NEON, .A32, {}, {.SZ8,.NONE} }, + { .VDUP, {.DPR,.DPR_ELEM,.NONE,.NONE}, {.VD_D,.NEON_VDUP_LANE_16,.NONE,.NONE}, 0xF3B20C00, 0xFFB30FD0, .NEON, .A32, {}, {.SZ16,.NONE} }, + { .VDUP, {.QPR,.DPR_ELEM,.NONE,.NONE}, {.VD_Q,.NEON_VDUP_LANE_16,.NONE,.NONE}, 0xF3B20C40, 0xFFB30FD0, .NEON, .A32, {}, {.SZ16,.NONE} }, + { .VDUP, {.DPR,.DPR_ELEM,.NONE,.NONE}, {.VD_D,.NEON_VDUP_LANE_32,.NONE,.NONE}, 0xF3B40C00, 0xFFB70FD0, .NEON, .A32, {}, {.SZ32,.NONE} }, + { .VDUP, {.QPR,.DPR_ELEM,.NONE,.NONE}, {.VD_Q,.NEON_VDUP_LANE_32,.NONE,.NONE}, 0xF3B40C40, 0xFFB70FD0, .NEON, .A32, {}, {.SZ32,.NONE} }, { .VDUP, {.QPR,.GPR,.NONE,.NONE}, {.VD_Q,.RT_T32,.NONE,.NONE}, 0xEE800B10, 0xFF900F5F, .MVE_INT, .T32, {thumb32=true}, {.SZ32,.NONE} }, // .VSWP { .VSWP, {.DPR,.DPR,.NONE,.NONE}, {.VD_D,.VM_D,.NONE,.NONE}, 0xF3B20000, 0xFFB30FD0, .NEON, .A32, {}, {.NONE,.NONE} }, @@ -2724,198 +2728,198 @@ ENCODE_RUNS := [lib.Mnemonic]lib.Encode_Run{ .VTRN = { 1433, 6}, .VUZP = { 1439, 5}, .VZIP = { 1444, 5}, - .VDUP = { 1449, 5}, - .VSWP = { 1454, 2}, - .VLD1 = { 1456, 8}, - .VLD2 = { 1464, 7}, - .VLD3 = { 1471, 6}, - .VLD4 = { 1477, 6}, - .VST1 = { 1483, 7}, - .VST2 = { 1490, 6}, - .VST3 = { 1496, 5}, - .VST4 = { 1501, 5}, - .AESE = { 1506, 1}, - .AESD = { 1507, 1}, - .AESMC = { 1508, 1}, - .AESIMC = { 1509, 1}, - .SHA1H = { 1510, 1}, - .SHA1SU0 = { 1511, 1}, - .SHA1SU1 = { 1512, 1}, - .SHA1C = { 1513, 1}, - .SHA1M = { 1514, 1}, - .SHA1P = { 1515, 1}, - .SHA256H = { 1516, 1}, - .SHA256H2 = { 1517, 1}, - .SHA256SU0 = { 1518, 1}, - .SHA256SU1 = { 1519, 1}, - .VJCVT = { 1520, 1}, - .VSDOT = { 1521, 4}, - .VUDOT = { 1525, 4}, - .VDOT = { 1529, 2}, - .VMMLA = { 1531, 1}, - .VFMAL = { 1532, 2}, - .VFMSL = { 1534, 2}, - .VCMLA = { 1536, 5}, - .VCADD = { 1541, 2}, - .VSMMLA = { 1543, 1}, - .VUMMLA = { 1544, 1}, - .VUSMMLA = { 1545, 1}, - .VSUDOT = { 1546, 2}, - .VUSDOT = { 1548, 4}, - .VQABS = { 1552, 1}, - .VQNEG = { 1553, 1}, - .VMOVX = { 1554, 1}, - .VINS = { 1555, 1}, - .IT = { 1556, 1}, - .TT = { 1557, 1}, - .TTT = { 1558, 1}, - .TTA = { 1559, 1}, - .TTAT = { 1560, 1}, - .SG = { 1561, 1}, - .BXNS = { 1562, 1}, - .BLXNS = { 1563, 1}, - .PAC = { 1564, 1}, - .PACBTI = { 1565, 1}, - .AUT = { 1566, 1}, - .AUTG = { 1567, 1}, - .BTI = { 1568, 1}, - .WLS = { 1569, 1}, - .WLSTP = { 1570, 1}, - .DLS = { 1571, 1}, - .DLSTP = { 1572, 1}, - .LE = { 1573, 1}, - .LETP = { 1574, 1}, - .LCTP = { 1575, 1}, - .BF = { 1576, 1}, - .BFX = { 1577, 1}, - .BFL = { 1578, 1}, - .BFLX = { 1579, 1}, - .BFCSEL = { 1580, 1}, - .CX1 = { 1581, 1}, - .CX1A = { 1582, 1}, - .CX1D = { 1583, 1}, - .CX1DA = { 1584, 1}, - .CX2 = { 1585, 1}, - .CX2A = { 1586, 1}, - .CX2D = { 1587, 1}, - .CX2DA = { 1588, 1}, - .CX3 = { 1589, 1}, - .CX3A = { 1590, 1}, - .CX3D = { 1591, 1}, - .CX3DA = { 1592, 1}, - .VCX1 = { 1593, 2}, - .VCX1A = { 1595, 2}, - .VCX2 = { 1597, 2}, - .VCX2A = { 1599, 2}, - .VCX3 = { 1601, 2}, - .VCX3A = { 1603, 2}, - .VPT = { 1605, 1}, - .VPST = { 1606, 1}, - .VPSEL = { 1607, 1}, - .VPNOT = { 1608, 1}, - .VCTP = { 1609, 1}, - .VADDV = { 1610, 1}, - .VADDVA = { 1611, 1}, - .VADDLV = { 1612, 1}, - .VADDLVA = { 1613, 1}, - .VMAXV = { 1614, 1}, - .VMAXAV = { 1615, 1}, - .VMINV = { 1616, 1}, - .VMINAV = { 1617, 1}, - .VMAXNMV = { 1618, 1}, - .VMAXNMAV = { 1619, 1}, - .VMINNMV = { 1620, 1}, - .VMINNMAV = { 1621, 1}, - .VABAV = { 1622, 1}, - .VMLADAV = { 1623, 1}, - .VMLADAVA = { 1624, 1}, - .VMLADAVX = { 1625, 1}, - .VMLADAVAX = { 1626, 1}, - .VMLALDAV = { 1627, 1}, - .VMLALDAVA = { 1628, 1}, - .VMLALDAVX = { 1629, 1}, - .VMLALDAVAX = { 1630, 1}, - .VMLSDAV = { 1631, 1}, - .VMLSDAVA = { 1632, 1}, - .VMLSDAVX = { 1633, 1}, - .VMLSDAVAX = { 1634, 1}, - .VMLSLDAV = { 1635, 1}, - .VMLSLDAVA = { 1636, 1}, - .VMLSLDAVX = { 1637, 1}, - .VMLSLDAVAX = { 1638, 1}, - .VRMLALDAVH = { 1639, 1}, - .VRMLALDAVHA = { 1640, 1}, - .VRMLALDAVHX = { 1641, 1}, - .VRMLALDAVHAX = { 1642, 1}, - .VRMLSLDAVH = { 1643, 1}, - .VRMLSLDAVHA = { 1644, 1}, - .VRMLSLDAVHX = { 1645, 1}, - .VRMLSLDAVHAX = { 1646, 1}, - .VMLAV = { 1647, 1}, - .VMLAVA = { 1648, 1}, - .VMLSV = { 1649, 1}, - .VMLSVA = { 1650, 1}, - .VCMUL = { 1651, 1}, - .VHCADD = { 1652, 2}, - .VBRSR = { 1654, 1}, - .VSHLC = { 1655, 1}, - .VDDUP = { 1656, 1}, - .VIDUP = { 1657, 1}, - .VDWDUP = { 1658, 1}, - .VIWDUP = { 1659, 1}, - .VMOVNB = { 1660, 1}, - .VMOVNT = { 1661, 1}, - .VQMOVNB = { 1662, 1}, - .VQMOVNT = { 1663, 1}, - .VQMOVUNB = { 1664, 1}, - .VQMOVUNT = { 1665, 1}, - .VSHLLB = { 1666, 1}, - .VSHLLT = { 1667, 1}, - .VMULLB = { 1668, 1}, - .VMULLT = { 1669, 1}, - .VMLALB = { 1670, 1}, - .VMLALT = { 1671, 1}, - .VMLSLB = { 1672, 1}, - .VMLSLT = { 1673, 1}, - .VSHRNB = { 1674, 1}, - .VSHRNT = { 1675, 1}, - .VRSHRNB = { 1676, 1}, - .VRSHRNT = { 1677, 1}, - .VQSHRNB = { 1678, 1}, - .VQSHRNT = { 1679, 1}, - .VQRSHRNB = { 1680, 1}, - .VQRSHRNT = { 1681, 1}, - .VQSHRUNB = { 1682, 1}, - .VQSHRUNT = { 1683, 1}, - .VQRSHRUNB = { 1684, 1}, - .VQRSHRUNT = { 1685, 1}, - .VQDMLADH = { 1686, 1}, - .VQDMLADHX = { 1687, 1}, - .VQDMLSDH = { 1688, 1}, - .VQDMLSDHX = { 1689, 1}, - .VQRDMLADH = { 1690, 1}, - .VQRDMLADHX = { 1691, 1}, - .VQRDMLSDH = { 1692, 1}, - .VQRDMLSDHX = { 1693, 1}, - .VLDRB = { 1694, 2}, - .VLDRH = { 1696, 2}, - .VLDRW = { 1698, 2}, - .VLDRD = { 1700, 2}, - .VSTRB = { 1702, 2}, - .VSTRH = { 1704, 2}, - .VSTRW = { 1706, 2}, - .VSTRD = { 1708, 2}, - .VLD20 = { 1710, 1}, - .VLD21 = { 1711, 1}, - .VLD40 = { 1712, 1}, - .VLD41 = { 1713, 1}, - .VLD42 = { 1714, 1}, - .VLD43 = { 1715, 1}, - .VST20 = { 1716, 1}, - .VST21 = { 1717, 1}, - .VST40 = { 1718, 1}, - .VST41 = { 1719, 1}, - .VST42 = { 1720, 1}, - .VST43 = { 1721, 1}, - ._COUNT = { 1722, 0}, + .VDUP = { 1449, 9}, + .VSWP = { 1458, 2}, + .VLD1 = { 1460, 8}, + .VLD2 = { 1468, 7}, + .VLD3 = { 1475, 6}, + .VLD4 = { 1481, 6}, + .VST1 = { 1487, 7}, + .VST2 = { 1494, 6}, + .VST3 = { 1500, 5}, + .VST4 = { 1505, 5}, + .AESE = { 1510, 1}, + .AESD = { 1511, 1}, + .AESMC = { 1512, 1}, + .AESIMC = { 1513, 1}, + .SHA1H = { 1514, 1}, + .SHA1SU0 = { 1515, 1}, + .SHA1SU1 = { 1516, 1}, + .SHA1C = { 1517, 1}, + .SHA1M = { 1518, 1}, + .SHA1P = { 1519, 1}, + .SHA256H = { 1520, 1}, + .SHA256H2 = { 1521, 1}, + .SHA256SU0 = { 1522, 1}, + .SHA256SU1 = { 1523, 1}, + .VJCVT = { 1524, 1}, + .VSDOT = { 1525, 4}, + .VUDOT = { 1529, 4}, + .VDOT = { 1533, 2}, + .VMMLA = { 1535, 1}, + .VFMAL = { 1536, 2}, + .VFMSL = { 1538, 2}, + .VCMLA = { 1540, 5}, + .VCADD = { 1545, 2}, + .VSMMLA = { 1547, 1}, + .VUMMLA = { 1548, 1}, + .VUSMMLA = { 1549, 1}, + .VSUDOT = { 1550, 2}, + .VUSDOT = { 1552, 4}, + .VQABS = { 1556, 1}, + .VQNEG = { 1557, 1}, + .VMOVX = { 1558, 1}, + .VINS = { 1559, 1}, + .IT = { 1560, 1}, + .TT = { 1561, 1}, + .TTT = { 1562, 1}, + .TTA = { 1563, 1}, + .TTAT = { 1564, 1}, + .SG = { 1565, 1}, + .BXNS = { 1566, 1}, + .BLXNS = { 1567, 1}, + .PAC = { 1568, 1}, + .PACBTI = { 1569, 1}, + .AUT = { 1570, 1}, + .AUTG = { 1571, 1}, + .BTI = { 1572, 1}, + .WLS = { 1573, 1}, + .WLSTP = { 1574, 1}, + .DLS = { 1575, 1}, + .DLSTP = { 1576, 1}, + .LE = { 1577, 1}, + .LETP = { 1578, 1}, + .LCTP = { 1579, 1}, + .BF = { 1580, 1}, + .BFX = { 1581, 1}, + .BFL = { 1582, 1}, + .BFLX = { 1583, 1}, + .BFCSEL = { 1584, 1}, + .CX1 = { 1585, 1}, + .CX1A = { 1586, 1}, + .CX1D = { 1587, 1}, + .CX1DA = { 1588, 1}, + .CX2 = { 1589, 1}, + .CX2A = { 1590, 1}, + .CX2D = { 1591, 1}, + .CX2DA = { 1592, 1}, + .CX3 = { 1593, 1}, + .CX3A = { 1594, 1}, + .CX3D = { 1595, 1}, + .CX3DA = { 1596, 1}, + .VCX1 = { 1597, 2}, + .VCX1A = { 1599, 2}, + .VCX2 = { 1601, 2}, + .VCX2A = { 1603, 2}, + .VCX3 = { 1605, 2}, + .VCX3A = { 1607, 2}, + .VPT = { 1609, 1}, + .VPST = { 1610, 1}, + .VPSEL = { 1611, 1}, + .VPNOT = { 1612, 1}, + .VCTP = { 1613, 1}, + .VADDV = { 1614, 1}, + .VADDVA = { 1615, 1}, + .VADDLV = { 1616, 1}, + .VADDLVA = { 1617, 1}, + .VMAXV = { 1618, 1}, + .VMAXAV = { 1619, 1}, + .VMINV = { 1620, 1}, + .VMINAV = { 1621, 1}, + .VMAXNMV = { 1622, 1}, + .VMAXNMAV = { 1623, 1}, + .VMINNMV = { 1624, 1}, + .VMINNMAV = { 1625, 1}, + .VABAV = { 1626, 1}, + .VMLADAV = { 1627, 1}, + .VMLADAVA = { 1628, 1}, + .VMLADAVX = { 1629, 1}, + .VMLADAVAX = { 1630, 1}, + .VMLALDAV = { 1631, 1}, + .VMLALDAVA = { 1632, 1}, + .VMLALDAVX = { 1633, 1}, + .VMLALDAVAX = { 1634, 1}, + .VMLSDAV = { 1635, 1}, + .VMLSDAVA = { 1636, 1}, + .VMLSDAVX = { 1637, 1}, + .VMLSDAVAX = { 1638, 1}, + .VMLSLDAV = { 1639, 1}, + .VMLSLDAVA = { 1640, 1}, + .VMLSLDAVX = { 1641, 1}, + .VMLSLDAVAX = { 1642, 1}, + .VRMLALDAVH = { 1643, 1}, + .VRMLALDAVHA = { 1644, 1}, + .VRMLALDAVHX = { 1645, 1}, + .VRMLALDAVHAX = { 1646, 1}, + .VRMLSLDAVH = { 1647, 1}, + .VRMLSLDAVHA = { 1648, 1}, + .VRMLSLDAVHX = { 1649, 1}, + .VRMLSLDAVHAX = { 1650, 1}, + .VMLAV = { 1651, 1}, + .VMLAVA = { 1652, 1}, + .VMLSV = { 1653, 1}, + .VMLSVA = { 1654, 1}, + .VCMUL = { 1655, 1}, + .VHCADD = { 1656, 2}, + .VBRSR = { 1658, 1}, + .VSHLC = { 1659, 1}, + .VDDUP = { 1660, 1}, + .VIDUP = { 1661, 1}, + .VDWDUP = { 1662, 1}, + .VIWDUP = { 1663, 1}, + .VMOVNB = { 1664, 1}, + .VMOVNT = { 1665, 1}, + .VQMOVNB = { 1666, 1}, + .VQMOVNT = { 1667, 1}, + .VQMOVUNB = { 1668, 1}, + .VQMOVUNT = { 1669, 1}, + .VSHLLB = { 1670, 1}, + .VSHLLT = { 1671, 1}, + .VMULLB = { 1672, 1}, + .VMULLT = { 1673, 1}, + .VMLALB = { 1674, 1}, + .VMLALT = { 1675, 1}, + .VMLSLB = { 1676, 1}, + .VMLSLT = { 1677, 1}, + .VSHRNB = { 1678, 1}, + .VSHRNT = { 1679, 1}, + .VRSHRNB = { 1680, 1}, + .VRSHRNT = { 1681, 1}, + .VQSHRNB = { 1682, 1}, + .VQSHRNT = { 1683, 1}, + .VQRSHRNB = { 1684, 1}, + .VQRSHRNT = { 1685, 1}, + .VQSHRUNB = { 1686, 1}, + .VQSHRUNT = { 1687, 1}, + .VQRSHRUNB = { 1688, 1}, + .VQRSHRUNT = { 1689, 1}, + .VQDMLADH = { 1690, 1}, + .VQDMLADHX = { 1691, 1}, + .VQDMLSDH = { 1692, 1}, + .VQDMLSDHX = { 1693, 1}, + .VQRDMLADH = { 1694, 1}, + .VQRDMLADHX = { 1695, 1}, + .VQRDMLSDH = { 1696, 1}, + .VQRDMLSDHX = { 1697, 1}, + .VLDRB = { 1698, 2}, + .VLDRH = { 1700, 2}, + .VLDRW = { 1702, 2}, + .VLDRD = { 1704, 2}, + .VSTRB = { 1706, 2}, + .VSTRH = { 1708, 2}, + .VSTRW = { 1710, 2}, + .VSTRD = { 1712, 2}, + .VLD20 = { 1714, 1}, + .VLD21 = { 1715, 1}, + .VLD40 = { 1716, 1}, + .VLD41 = { 1717, 1}, + .VLD42 = { 1718, 1}, + .VLD43 = { 1719, 1}, + .VST20 = { 1720, 1}, + .VST21 = { 1721, 1}, + .VST40 = { 1722, 1}, + .VST41 = { 1723, 1}, + .VST42 = { 1724, 1}, + .VST43 = { 1725, 1}, + ._COUNT = { 1726, 0}, } diff --git a/core/rexcode/isa/arm32/tables/arm32.bucket_list.bin b/core/rexcode/isa/arm32/tables/arm32.bucket_list.bin index 090e3ecb9..1b8504fb4 100644 Binary files a/core/rexcode/isa/arm32/tables/arm32.bucket_list.bin and b/core/rexcode/isa/arm32/tables/arm32.bucket_list.bin differ diff --git a/core/rexcode/isa/arm32/tables/arm32.encode_forms.bin b/core/rexcode/isa/arm32/tables/arm32.encode_forms.bin index 684bc7c74..b8b1c1bc3 100644 Binary files a/core/rexcode/isa/arm32/tables/arm32.encode_forms.bin and b/core/rexcode/isa/arm32/tables/arm32.encode_forms.bin differ diff --git a/core/rexcode/isa/arm32/tables/arm32.encode_runs.bin b/core/rexcode/isa/arm32/tables/arm32.encode_runs.bin index 395bb43b1..d69326b43 100644 Binary files a/core/rexcode/isa/arm32/tables/arm32.encode_runs.bin and b/core/rexcode/isa/arm32/tables/arm32.encode_runs.bin differ diff --git a/core/rexcode/isa/arm32/tables/arm32.entries.bin b/core/rexcode/isa/arm32/tables/arm32.entries.bin index 3267fa3a7..ccd0cc891 100644 Binary files a/core/rexcode/isa/arm32/tables/arm32.entries.bin and b/core/rexcode/isa/arm32/tables/arm32.entries.bin differ diff --git a/core/rexcode/isa/arm32/tables/arm32.form_idx.bin b/core/rexcode/isa/arm32/tables/arm32.form_idx.bin index fb88f4c6d..a7ff273fd 100644 Binary files a/core/rexcode/isa/arm32/tables/arm32.form_idx.bin and b/core/rexcode/isa/arm32/tables/arm32.form_idx.bin differ diff --git a/core/rexcode/isa/arm32/tables/arm32.idx_a32.bin b/core/rexcode/isa/arm32/tables/arm32.idx_a32.bin index c9c9fba79..26c21d90b 100644 Binary files a/core/rexcode/isa/arm32/tables/arm32.idx_a32.bin and b/core/rexcode/isa/arm32/tables/arm32.idx_a32.bin differ diff --git a/core/rexcode/isa/arm32/tables/arm32.idx_t16.bin b/core/rexcode/isa/arm32/tables/arm32.idx_t16.bin index d5bf2176d..44ceecb73 100644 Binary files a/core/rexcode/isa/arm32/tables/arm32.idx_t16.bin and b/core/rexcode/isa/arm32/tables/arm32.idx_t16.bin differ diff --git a/core/rexcode/isa/arm32/tables/arm32.idx_t32.bin b/core/rexcode/isa/arm32/tables/arm32.idx_t32.bin index a23c28de5..c5259e4d3 100644 Binary files a/core/rexcode/isa/arm32/tables/arm32.idx_t32.bin and b/core/rexcode/isa/arm32/tables/arm32.idx_t32.bin differ diff --git a/core/rexcode/isa/arm32/tables/arm32.idx_t32_sub.bin b/core/rexcode/isa/arm32/tables/arm32.idx_t32_sub.bin index bdc4a975c..d841bb8e1 100644 Binary files a/core/rexcode/isa/arm32/tables/arm32.idx_t32_sub.bin and b/core/rexcode/isa/arm32/tables/arm32.idx_t32_sub.bin differ diff --git a/core/rexcode/isa/arm32/tests/smoke.odin b/core/rexcode/isa/arm32/tests/smoke.odin index 6108f8518..680b9087e 100644 --- a/core/rexcode/isa/arm32/tests/smoke.odin +++ b/core/rexcode/isa/arm32/tests/smoke.odin @@ -117,8 +117,8 @@ run_smoke :: proc() { check("STL (v8)", .STL, 0, 0x0180FC90, 0x0FF0FFF0) // ---- CRC32 ---- - check("CRC32B", .CRC32B, 0, 0x01000040, 0x0FF00FF0) - check("CRC32CW", .CRC32CW, 0, 0x01400240, 0x0FF00FF0) + check("CRC32B", .CRC32B, 0, 0xE1000040, 0xFFF00FF0) + check("CRC32CW", .CRC32CW, 0, 0xE1400240, 0xFFF00FF0) // ---- VFP scalar ---- check("VADD.F32", .VADD, 0, 0x0E300A00, 0x0FB00B50)