From e52953c7ff3a8fd588b563546d57d9fcf95a5719 Mon Sep 17 00:00:00 2001 From: Brendan Punsky Date: Tue, 16 Jun 2026 02:19:03 -0400 Subject: [PATCH] rexcode/arm64: NEON shift-by-immediate encode forms + encoder extension First encoder-extension family. Adds Operand_Type VEC_SHIFT and Operand_Encoding NEON_SHL_IMM/NEON_SHR_IMM: the element-size marker bit sits in the entry's bits, the encoder packs the amount into the low immh:immb bits (left = shift; right = esize - shift, esize from the vector operand via vec_esize/form.ops[0]), and the decoder recovers esize from immh to compute the amount. Adds 13 mnemonics (91 forms) via specgen: left SHL/SLI/SQSHLU/SQSHL, right SSHR/USHR/SRSHR/URSHR/SSRA/USRA/SRSRA/URSRA/SRI. specgen derives bits/mask empirically by varying registers AND the shift (canon = operand bits zero; other extreme sets all shift bits), so per-arrangement immh discrimination + the growing shift-field width fall out automatically. Verified end-to-end: encode matches llvm-mc byte-for-byte AND decode recovers mnemonic + amount (sshr/shl/sli/ushr/srsra across B/H/S/D); arm64 check + 461 tests pass. First of the encoder-extension phase ([[rexcode-encode-coverage]]); CCMP_IMM imm5@20:16 pattern generalizes here. --- core/rexcode/arm64/decoder.odin | 12 + core/rexcode/arm64/encoder.odin | 21 +- core/rexcode/arm64/encoding_types.odin | 10 + core/rexcode/arm64/mnemonic_builders.odin | 52 + .../arm64/tablegen/encoding_table.odin | 119 ++ .../tablegen/generated/decode_tables.odin | 635 +++++---- .../tablegen/generated/encode_tables.odin | 1210 +++++++++-------- core/rexcode/arm64/tablegen/specgen.lua | 45 + .../arm64/tables/arm64.encode_forms.bin | Bin 37800 -> 39620 bytes .../arm64/tables/arm64.encode_runs.bin | Bin 8960 -> 8960 bytes core/rexcode/arm64/tables/arm64.entries.bin | Bin 37840 -> 39660 bytes core/rexcode/arm64/tables/arm64.idx_op0.bin | Bin 64 -> 64 bytes 12 files changed, 1278 insertions(+), 826 deletions(-) diff --git a/core/rexcode/arm64/decoder.odin b/core/rexcode/arm64/decoder.odin index 86992aa09..928c05b61 100644 --- a/core/rexcode/arm64/decoder.odin +++ b/core/rexcode/arm64/decoder.odin @@ -199,6 +199,18 @@ extract_operand_inline :: #force_inline proc "contextless" ( case .BARRIER_FIELD: return Operand{immediate = i64((word >> 8) & 0xF), kind = .IMMEDIATE, size = 1} + // ---- NEON shift-by-immediate: recover the amount from immh:immb --------- + case .NEON_SHL_IMM, .NEON_SHR_IMM: + immh := (word >> 19) & 0xF + esize: i64 = 8 + if immh >= 8 { esize = 64 } + else if immh >= 4 { esize = 32 } + else if immh >= 2 { esize = 16 } + val := i64((word >> 16) & 0x7F) + amt := val - esize + if en == .NEON_SHR_IMM { amt = 2 * esize - val } + return Operand{immediate = amt, kind = .IMMEDIATE, size = 1} + // ---- Memory operand variants ------------------------------------------ case .OFFSET_BASE_U12: size := u32(1) << ((word >> 30) & 0x3) diff --git a/core/rexcode/arm64/encoder.odin b/core/rexcode/arm64/encoder.odin index ea381edb6..bba4c6a02 100644 --- a/core/rexcode/arm64/encoder.odin +++ b/core/rexcode/arm64/encoder.odin @@ -247,7 +247,7 @@ operand_matches_inline :: #force_inline proc "contextless" ( return op.kind == .IMMEDIATE case .IMM_12, .IMM_16, .IMM_8, .IMM_6, .IMM_5, .IMM_4, .IMM_3, .IMM_2, - .NZCV_IMM, .SYS_REG, .HW_SHIFT, .LSE_SIZE: + .NZCV_IMM, .SYS_REG, .HW_SHIFT, .LSE_SIZE, .VEC_SHIFT: return op.kind == .IMMEDIATE case .BITMASK_IMM: // The user passes the raw logical mask value; we validate that it @@ -268,6 +268,17 @@ operand_matches_inline :: #force_inline proc "contextless" ( // ============================================================================= @(private="file") +// Element size in bits for a NEON vector arrangement operand type. +vec_esize :: #force_inline proc "contextless" (ot: Operand_Type) -> u32 { + #partial switch ot { + case .V_8B, .V_16B: return 8 + case .V_4H, .V_8H, .V_4H_FP16, .V_8H_FP16: return 16 + case .V_2S, .V_4S: return 32 + case .V_1D, .V_2D: return 64 + } + return 8 +} + pack_operand_inline :: #force_inline proc( op: ^Operand, enc: Operand_Encoding, @@ -422,6 +433,14 @@ pack_operand_inline :: #force_inline proc( case .VA: return (u32(reg_hw(op.reg)) & 0x1F) << 10 + // NEON shift-by-immediate: the element-size marker is already in `bits`; + // the operand drives only the low immh:immb bits at 22:16. + case .NEON_SHL_IMM: + return (u32(op.immediate) & 0x3F) << 16 + case .NEON_SHR_IMM: + esize := vec_esize(form.ops[0]) + return ((esize - u32(op.immediate)) & 0x3F) << 16 + // NEON MOVI/FMOV immediate split: abc at bits 18-16, defgh at bits 9-5. case .NEON_IMM8_FMOV: v := u32(op.immediate) & 0xFF diff --git a/core/rexcode/arm64/encoding_types.odin b/core/rexcode/arm64/encoding_types.odin index 9f575f34d..88ef8542e 100644 --- a/core/rexcode/arm64/encoding_types.odin +++ b/core/rexcode/arm64/encoding_types.odin @@ -165,6 +165,10 @@ Operand_Type :: enum u8 { // ---- Condition code ---- COND, + + // ---- NEON shift-by-immediate amount (encoded into immh:immb together + // with the element size: left = esize+shift, right = 2*esize-shift) ---- + VEC_SHIFT, } // Where each operand's bits land in the 32-bit word. @@ -223,6 +227,12 @@ Operand_Encoding :: enum u8 { NEON_INDEX_S, // S lane index NEON_INDEX_D, // D lane index + // ---- NEON shift-by-immediate (immh:immb at bits 22:16) ---- + // The element-size marker bit is fixed in the entry's `bits`; the operand + // drives only the low bits. Left: low = shift. Right: low = esize - shift. + NEON_SHL_IMM, + NEON_SHR_IMM, + // ---- LSE atomics ------------------------------------------------------ ATOMIC_RS, // Rs (source / compare) at bits 16-20 ATOMIC_RT, // Rt (target) at bits 0-4 diff --git a/core/rexcode/arm64/mnemonic_builders.odin b/core/rexcode/arm64/mnemonic_builders.odin index f0598e20c..69260f0fd 100644 --- a/core/rexcode/arm64/mnemonic_builders.odin +++ b/core/rexcode/arm64/mnemonic_builders.odin @@ -1065,14 +1065,40 @@ inst_bif_r_r_r :: #force_inline proc "contextless" (dst: Regist emit_bif_r_r_r :: #force_inline proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register) { append(instructions, inst_bif_r_r_r(dst, src, src2)) } inst_bsl_r_r_r :: #force_inline proc "contextless" (dst: Register, src: Register, src2: Register) -> Instruction { return Instruction{mnemonic = .BSL, operand_count = 3, length = 4, ops = {op_v_16b(u8(reg_hw(dst))), op_v_16b(u8(reg_hw(src))), op_v_16b(u8(reg_hw(src2))), {}}} } emit_bsl_r_r_r :: #force_inline proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register) { append(instructions, inst_bsl_r_r_r(dst, src, src2)) } +inst_shl_v_r_r_i :: #force_inline proc "contextless" (dst: Register, src: Register, imm: i64) -> Instruction { return Instruction{mnemonic = .SHL_V, operand_count = 3, length = 4, ops = {op_v_8b(u8(reg_hw(dst))), op_v_8b(u8(reg_hw(src))), op_imm(imm, 4), {}}} } +emit_shl_v_r_r_i :: #force_inline proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, imm: i64) { append(instructions, inst_shl_v_r_r_i(dst, src, imm)) } +inst_sqshl_v_r_r_i :: #force_inline proc "contextless" (dst: Register, src: Register, imm: i64) -> Instruction { return Instruction{mnemonic = .SQSHL_V, operand_count = 3, length = 4, ops = {op_v_8b(u8(reg_hw(dst))), op_v_8b(u8(reg_hw(src))), op_imm(imm, 4), {}}} } +emit_sqshl_v_r_r_i :: #force_inline proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, imm: i64) { append(instructions, inst_sqshl_v_r_r_i(dst, src, imm)) } +inst_sqshlu_r_r_i :: #force_inline proc "contextless" (dst: Register, src: Register, imm: i64) -> Instruction { return Instruction{mnemonic = .SQSHLU, operand_count = 3, length = 4, ops = {op_v_8b(u8(reg_hw(dst))), op_v_8b(u8(reg_hw(src))), op_imm(imm, 4), {}}} } +emit_sqshlu_r_r_i :: #force_inline proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, imm: i64) { append(instructions, inst_sqshlu_r_r_i(dst, src, imm)) } inst_srshl_r_r_r :: #force_inline proc "contextless" (dst: Register, src: Register, src2: Register) -> Instruction { return Instruction{mnemonic = .SRSHL, operand_count = 3, length = 4, ops = {op_v_8b(u8(reg_hw(dst))), op_v_8b(u8(reg_hw(src))), op_v_8b(u8(reg_hw(src2))), {}}} } emit_srshl_r_r_r :: #force_inline proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register) { append(instructions, inst_srshl_r_r_r(dst, src, src2)) } inst_urshl_r_r_r :: #force_inline proc "contextless" (dst: Register, src: Register, src2: Register) -> Instruction { return Instruction{mnemonic = .URSHL, operand_count = 3, length = 4, ops = {op_v_8b(u8(reg_hw(dst))), op_v_8b(u8(reg_hw(src))), op_v_8b(u8(reg_hw(src2))), {}}} } emit_urshl_r_r_r :: #force_inline proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register) { append(instructions, inst_urshl_r_r_r(dst, src, src2)) } +inst_sshr_r_r_i :: #force_inline proc "contextless" (dst: Register, src: Register, imm: i64) -> Instruction { return Instruction{mnemonic = .SSHR, operand_count = 3, length = 4, ops = {op_v_8b(u8(reg_hw(dst))), op_v_8b(u8(reg_hw(src))), op_imm(imm, 4), {}}} } +emit_sshr_r_r_i :: #force_inline proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, imm: i64) { append(instructions, inst_sshr_r_r_i(dst, src, imm)) } +inst_ushr_r_r_i :: #force_inline proc "contextless" (dst: Register, src: Register, imm: i64) -> Instruction { return Instruction{mnemonic = .USHR, operand_count = 3, length = 4, ops = {op_v_8b(u8(reg_hw(dst))), op_v_8b(u8(reg_hw(src))), op_imm(imm, 4), {}}} } +emit_ushr_r_r_i :: #force_inline proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, imm: i64) { append(instructions, inst_ushr_r_r_i(dst, src, imm)) } +inst_ssra_r_r_i :: #force_inline proc "contextless" (dst: Register, src: Register, imm: i64) -> Instruction { return Instruction{mnemonic = .SSRA, operand_count = 3, length = 4, ops = {op_v_8b(u8(reg_hw(dst))), op_v_8b(u8(reg_hw(src))), op_imm(imm, 4), {}}} } +emit_ssra_r_r_i :: #force_inline proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, imm: i64) { append(instructions, inst_ssra_r_r_i(dst, src, imm)) } +inst_usra_r_r_i :: #force_inline proc "contextless" (dst: Register, src: Register, imm: i64) -> Instruction { return Instruction{mnemonic = .USRA, operand_count = 3, length = 4, ops = {op_v_8b(u8(reg_hw(dst))), op_v_8b(u8(reg_hw(src))), op_imm(imm, 4), {}}} } +emit_usra_r_r_i :: #force_inline proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, imm: i64) { append(instructions, inst_usra_r_r_i(dst, src, imm)) } +inst_srshr_r_r_i :: #force_inline proc "contextless" (dst: Register, src: Register, imm: i64) -> Instruction { return Instruction{mnemonic = .SRSHR, operand_count = 3, length = 4, ops = {op_v_8b(u8(reg_hw(dst))), op_v_8b(u8(reg_hw(src))), op_imm(imm, 4), {}}} } +emit_srshr_r_r_i :: #force_inline proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, imm: i64) { append(instructions, inst_srshr_r_r_i(dst, src, imm)) } +inst_urshr_r_r_i :: #force_inline proc "contextless" (dst: Register, src: Register, imm: i64) -> Instruction { return Instruction{mnemonic = .URSHR, operand_count = 3, length = 4, ops = {op_v_8b(u8(reg_hw(dst))), op_v_8b(u8(reg_hw(src))), op_imm(imm, 4), {}}} } +emit_urshr_r_r_i :: #force_inline proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, imm: i64) { append(instructions, inst_urshr_r_r_i(dst, src, imm)) } +inst_srsra_r_r_i :: #force_inline proc "contextless" (dst: Register, src: Register, imm: i64) -> Instruction { return Instruction{mnemonic = .SRSRA, operand_count = 3, length = 4, ops = {op_v_8b(u8(reg_hw(dst))), op_v_8b(u8(reg_hw(src))), op_imm(imm, 4), {}}} } +emit_srsra_r_r_i :: #force_inline proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, imm: i64) { append(instructions, inst_srsra_r_r_i(dst, src, imm)) } +inst_ursra_r_r_i :: #force_inline proc "contextless" (dst: Register, src: Register, imm: i64) -> Instruction { return Instruction{mnemonic = .URSRA, operand_count = 3, length = 4, ops = {op_v_8b(u8(reg_hw(dst))), op_v_8b(u8(reg_hw(src))), op_imm(imm, 4), {}}} } +emit_ursra_r_r_i :: #force_inline proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, imm: i64) { append(instructions, inst_ursra_r_r_i(dst, src, imm)) } inst_sshl_r_r_r :: #force_inline proc "contextless" (dst: Register, src: Register, src2: Register) -> Instruction { return Instruction{mnemonic = .SSHL, operand_count = 3, length = 4, ops = {op_v_8b(u8(reg_hw(dst))), op_v_8b(u8(reg_hw(src))), op_v_8b(u8(reg_hw(src2))), {}}} } emit_sshl_r_r_r :: #force_inline proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register) { append(instructions, inst_sshl_r_r_r(dst, src, src2)) } inst_ushl_r_r_r :: #force_inline proc "contextless" (dst: Register, src: Register, src2: Register) -> Instruction { return Instruction{mnemonic = .USHL, operand_count = 3, length = 4, ops = {op_v_8b(u8(reg_hw(dst))), op_v_8b(u8(reg_hw(src))), op_v_8b(u8(reg_hw(src2))), {}}} } emit_ushl_r_r_r :: #force_inline proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register) { append(instructions, inst_ushl_r_r_r(dst, src, src2)) } +inst_sli_r_r_i :: #force_inline proc "contextless" (dst: Register, src: Register, imm: i64) -> Instruction { return Instruction{mnemonic = .SLI, operand_count = 3, length = 4, ops = {op_v_8b(u8(reg_hw(dst))), op_v_8b(u8(reg_hw(src))), op_imm(imm, 4), {}}} } +emit_sli_r_r_i :: #force_inline proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, imm: i64) { append(instructions, inst_sli_r_r_i(dst, src, imm)) } +inst_sri_r_r_i :: #force_inline proc "contextless" (dst: Register, src: Register, imm: i64) -> Instruction { return Instruction{mnemonic = .SRI, operand_count = 3, length = 4, ops = {op_v_8b(u8(reg_hw(dst))), op_v_8b(u8(reg_hw(src))), op_imm(imm, 4), {}}} } +emit_sri_r_r_i :: #force_inline proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, imm: i64) { append(instructions, inst_sri_r_r_i(dst, src, imm)) } inst_not_v_r_r :: #force_inline proc "contextless" (dst: Register, src: Register) -> Instruction { return Instruction{mnemonic = .NOT_V, operand_count = 2, length = 4, ops = {op_v_8b(u8(reg_hw(dst))), op_v_8b(u8(reg_hw(src))), {}, {}}} } emit_not_v_r_r :: #force_inline proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register) { append(instructions, inst_not_v_r_r(dst, src)) } inst_rbit_v_r_r :: #force_inline proc "contextless" (dst: Register, src: Register) -> Instruction { return Instruction{mnemonic = .RBIT_V, operand_count = 2, length = 4, ops = {op_v_8b(u8(reg_hw(dst))), op_v_8b(u8(reg_hw(src))), {}, {}}} } @@ -2944,14 +2970,40 @@ inst_bif :: inst_bif_r_r_r emit_bif :: emit_bif_r_r_r inst_bsl :: inst_bsl_r_r_r emit_bsl :: emit_bsl_r_r_r +inst_shl_v :: inst_shl_v_r_r_i +emit_shl_v :: emit_shl_v_r_r_i +inst_sqshl_v :: inst_sqshl_v_r_r_i +emit_sqshl_v :: emit_sqshl_v_r_r_i +inst_sqshlu :: inst_sqshlu_r_r_i +emit_sqshlu :: emit_sqshlu_r_r_i inst_srshl :: inst_srshl_r_r_r emit_srshl :: emit_srshl_r_r_r inst_urshl :: inst_urshl_r_r_r emit_urshl :: emit_urshl_r_r_r +inst_sshr :: inst_sshr_r_r_i +emit_sshr :: emit_sshr_r_r_i +inst_ushr :: inst_ushr_r_r_i +emit_ushr :: emit_ushr_r_r_i +inst_ssra :: inst_ssra_r_r_i +emit_ssra :: emit_ssra_r_r_i +inst_usra :: inst_usra_r_r_i +emit_usra :: emit_usra_r_r_i +inst_srshr :: inst_srshr_r_r_i +emit_srshr :: emit_srshr_r_r_i +inst_urshr :: inst_urshr_r_r_i +emit_urshr :: emit_urshr_r_r_i +inst_srsra :: inst_srsra_r_r_i +emit_srsra :: emit_srsra_r_r_i +inst_ursra :: inst_ursra_r_r_i +emit_ursra :: emit_ursra_r_r_i inst_sshl :: inst_sshl_r_r_r emit_sshl :: emit_sshl_r_r_r inst_ushl :: inst_ushl_r_r_r emit_ushl :: emit_ushl_r_r_r +inst_sli :: inst_sli_r_r_i +emit_sli :: emit_sli_r_r_i +inst_sri :: inst_sri_r_r_i +emit_sri :: emit_sri_r_r_i inst_not_v :: inst_not_v_r_r emit_not_v :: emit_not_v_r_r inst_rbit_v :: inst_rbit_v_r_r diff --git a/core/rexcode/arm64/tablegen/encoding_table.odin b/core/rexcode/arm64/tablegen/encoding_table.odin index 8fea43b1c..091884fb8 100644 --- a/core/rexcode/arm64/tablegen/encoding_table.odin +++ b/core/rexcode/arm64/tablegen/encoding_table.odin @@ -4009,5 +4009,124 @@ ENCODING_TABLE := #partial [Mnemonic][]Encoding{ .FCVTXN2 = { {.FCVTXN2, {.V_4S, .V_2D, .NONE, .NONE}, {.VD, .VN, .NONE, .NONE}, 0x6E616800, 0xFFFFFC00, .NEON, {}}, }, + + // Advanced SIMD shift by immediate. + .SHL_V = { + {.SHL_V, {.V_8B, .V_8B, .VEC_SHIFT, .NONE}, {.VD, .VN, .NEON_SHL_IMM, .NONE}, 0x0F085400, 0xFFF8FC00, .NEON, {}}, + {.SHL_V, {.V_16B, .V_16B, .VEC_SHIFT, .NONE}, {.VD, .VN, .NEON_SHL_IMM, .NONE}, 0x4F085400, 0xFFF8FC00, .NEON, {}}, + {.SHL_V, {.V_4H, .V_4H, .VEC_SHIFT, .NONE}, {.VD, .VN, .NEON_SHL_IMM, .NONE}, 0x0F105400, 0xFFF0FC00, .NEON, {}}, + {.SHL_V, {.V_8H, .V_8H, .VEC_SHIFT, .NONE}, {.VD, .VN, .NEON_SHL_IMM, .NONE}, 0x4F105400, 0xFFF0FC00, .NEON, {}}, + {.SHL_V, {.V_2S, .V_2S, .VEC_SHIFT, .NONE}, {.VD, .VN, .NEON_SHL_IMM, .NONE}, 0x0F205400, 0xFFE0FC00, .NEON, {}}, + {.SHL_V, {.V_4S, .V_4S, .VEC_SHIFT, .NONE}, {.VD, .VN, .NEON_SHL_IMM, .NONE}, 0x4F205400, 0xFFE0FC00, .NEON, {}}, + {.SHL_V, {.V_2D, .V_2D, .VEC_SHIFT, .NONE}, {.VD, .VN, .NEON_SHL_IMM, .NONE}, 0x4F405400, 0xFFC0FC00, .NEON, {}}, + }, + .SLI = { + {.SLI, {.V_8B, .V_8B, .VEC_SHIFT, .NONE}, {.VD, .VN, .NEON_SHL_IMM, .NONE}, 0x2F085400, 0xFFF8FC00, .NEON, {}}, + {.SLI, {.V_16B, .V_16B, .VEC_SHIFT, .NONE}, {.VD, .VN, .NEON_SHL_IMM, .NONE}, 0x6F085400, 0xFFF8FC00, .NEON, {}}, + {.SLI, {.V_4H, .V_4H, .VEC_SHIFT, .NONE}, {.VD, .VN, .NEON_SHL_IMM, .NONE}, 0x2F105400, 0xFFF0FC00, .NEON, {}}, + {.SLI, {.V_8H, .V_8H, .VEC_SHIFT, .NONE}, {.VD, .VN, .NEON_SHL_IMM, .NONE}, 0x6F105400, 0xFFF0FC00, .NEON, {}}, + {.SLI, {.V_2S, .V_2S, .VEC_SHIFT, .NONE}, {.VD, .VN, .NEON_SHL_IMM, .NONE}, 0x2F205400, 0xFFE0FC00, .NEON, {}}, + {.SLI, {.V_4S, .V_4S, .VEC_SHIFT, .NONE}, {.VD, .VN, .NEON_SHL_IMM, .NONE}, 0x6F205400, 0xFFE0FC00, .NEON, {}}, + {.SLI, {.V_2D, .V_2D, .VEC_SHIFT, .NONE}, {.VD, .VN, .NEON_SHL_IMM, .NONE}, 0x6F405400, 0xFFC0FC00, .NEON, {}}, + }, + .SQSHLU = { + {.SQSHLU, {.V_8B, .V_8B, .VEC_SHIFT, .NONE}, {.VD, .VN, .NEON_SHL_IMM, .NONE}, 0x2F086400, 0xFFF8FC00, .NEON, {}}, + {.SQSHLU, {.V_16B, .V_16B, .VEC_SHIFT, .NONE}, {.VD, .VN, .NEON_SHL_IMM, .NONE}, 0x6F086400, 0xFFF8FC00, .NEON, {}}, + {.SQSHLU, {.V_4H, .V_4H, .VEC_SHIFT, .NONE}, {.VD, .VN, .NEON_SHL_IMM, .NONE}, 0x2F106400, 0xFFF0FC00, .NEON, {}}, + {.SQSHLU, {.V_8H, .V_8H, .VEC_SHIFT, .NONE}, {.VD, .VN, .NEON_SHL_IMM, .NONE}, 0x6F106400, 0xFFF0FC00, .NEON, {}}, + {.SQSHLU, {.V_2S, .V_2S, .VEC_SHIFT, .NONE}, {.VD, .VN, .NEON_SHL_IMM, .NONE}, 0x2F206400, 0xFFE0FC00, .NEON, {}}, + {.SQSHLU, {.V_4S, .V_4S, .VEC_SHIFT, .NONE}, {.VD, .VN, .NEON_SHL_IMM, .NONE}, 0x6F206400, 0xFFE0FC00, .NEON, {}}, + {.SQSHLU, {.V_2D, .V_2D, .VEC_SHIFT, .NONE}, {.VD, .VN, .NEON_SHL_IMM, .NONE}, 0x6F406400, 0xFFC0FC00, .NEON, {}}, + }, + .SQSHL_V = { + {.SQSHL_V, {.V_8B, .V_8B, .VEC_SHIFT, .NONE}, {.VD, .VN, .NEON_SHL_IMM, .NONE}, 0x0F087400, 0xFFF8FC00, .NEON, {}}, + {.SQSHL_V, {.V_16B, .V_16B, .VEC_SHIFT, .NONE}, {.VD, .VN, .NEON_SHL_IMM, .NONE}, 0x4F087400, 0xFFF8FC00, .NEON, {}}, + {.SQSHL_V, {.V_4H, .V_4H, .VEC_SHIFT, .NONE}, {.VD, .VN, .NEON_SHL_IMM, .NONE}, 0x0F107400, 0xFFF0FC00, .NEON, {}}, + {.SQSHL_V, {.V_8H, .V_8H, .VEC_SHIFT, .NONE}, {.VD, .VN, .NEON_SHL_IMM, .NONE}, 0x4F107400, 0xFFF0FC00, .NEON, {}}, + {.SQSHL_V, {.V_2S, .V_2S, .VEC_SHIFT, .NONE}, {.VD, .VN, .NEON_SHL_IMM, .NONE}, 0x0F207400, 0xFFE0FC00, .NEON, {}}, + {.SQSHL_V, {.V_4S, .V_4S, .VEC_SHIFT, .NONE}, {.VD, .VN, .NEON_SHL_IMM, .NONE}, 0x4F207400, 0xFFE0FC00, .NEON, {}}, + {.SQSHL_V, {.V_2D, .V_2D, .VEC_SHIFT, .NONE}, {.VD, .VN, .NEON_SHL_IMM, .NONE}, 0x4F407400, 0xFFC0FC00, .NEON, {}}, + }, + .SSHR = { + {.SSHR, {.V_8B, .V_8B, .VEC_SHIFT, .NONE}, {.VD, .VN, .NEON_SHR_IMM, .NONE}, 0x0F080400, 0xFFF8FC00, .NEON, {}}, + {.SSHR, {.V_16B, .V_16B, .VEC_SHIFT, .NONE}, {.VD, .VN, .NEON_SHR_IMM, .NONE}, 0x4F080400, 0xFFF8FC00, .NEON, {}}, + {.SSHR, {.V_4H, .V_4H, .VEC_SHIFT, .NONE}, {.VD, .VN, .NEON_SHR_IMM, .NONE}, 0x0F100400, 0xFFF0FC00, .NEON, {}}, + {.SSHR, {.V_8H, .V_8H, .VEC_SHIFT, .NONE}, {.VD, .VN, .NEON_SHR_IMM, .NONE}, 0x4F100400, 0xFFF0FC00, .NEON, {}}, + {.SSHR, {.V_2S, .V_2S, .VEC_SHIFT, .NONE}, {.VD, .VN, .NEON_SHR_IMM, .NONE}, 0x0F200400, 0xFFE0FC00, .NEON, {}}, + {.SSHR, {.V_4S, .V_4S, .VEC_SHIFT, .NONE}, {.VD, .VN, .NEON_SHR_IMM, .NONE}, 0x4F200400, 0xFFE0FC00, .NEON, {}}, + {.SSHR, {.V_2D, .V_2D, .VEC_SHIFT, .NONE}, {.VD, .VN, .NEON_SHR_IMM, .NONE}, 0x4F400400, 0xFFC0FC00, .NEON, {}}, + }, + .USHR = { + {.USHR, {.V_8B, .V_8B, .VEC_SHIFT, .NONE}, {.VD, .VN, .NEON_SHR_IMM, .NONE}, 0x2F080400, 0xFFF8FC00, .NEON, {}}, + {.USHR, {.V_16B, .V_16B, .VEC_SHIFT, .NONE}, {.VD, .VN, .NEON_SHR_IMM, .NONE}, 0x6F080400, 0xFFF8FC00, .NEON, {}}, + {.USHR, {.V_4H, .V_4H, .VEC_SHIFT, .NONE}, {.VD, .VN, .NEON_SHR_IMM, .NONE}, 0x2F100400, 0xFFF0FC00, .NEON, {}}, + {.USHR, {.V_8H, .V_8H, .VEC_SHIFT, .NONE}, {.VD, .VN, .NEON_SHR_IMM, .NONE}, 0x6F100400, 0xFFF0FC00, .NEON, {}}, + {.USHR, {.V_2S, .V_2S, .VEC_SHIFT, .NONE}, {.VD, .VN, .NEON_SHR_IMM, .NONE}, 0x2F200400, 0xFFE0FC00, .NEON, {}}, + {.USHR, {.V_4S, .V_4S, .VEC_SHIFT, .NONE}, {.VD, .VN, .NEON_SHR_IMM, .NONE}, 0x6F200400, 0xFFE0FC00, .NEON, {}}, + {.USHR, {.V_2D, .V_2D, .VEC_SHIFT, .NONE}, {.VD, .VN, .NEON_SHR_IMM, .NONE}, 0x6F400400, 0xFFC0FC00, .NEON, {}}, + }, + .SRSHR = { + {.SRSHR, {.V_8B, .V_8B, .VEC_SHIFT, .NONE}, {.VD, .VN, .NEON_SHR_IMM, .NONE}, 0x0F082400, 0xFFF8FC00, .NEON, {}}, + {.SRSHR, {.V_16B, .V_16B, .VEC_SHIFT, .NONE}, {.VD, .VN, .NEON_SHR_IMM, .NONE}, 0x4F082400, 0xFFF8FC00, .NEON, {}}, + {.SRSHR, {.V_4H, .V_4H, .VEC_SHIFT, .NONE}, {.VD, .VN, .NEON_SHR_IMM, .NONE}, 0x0F102400, 0xFFF0FC00, .NEON, {}}, + {.SRSHR, {.V_8H, .V_8H, .VEC_SHIFT, .NONE}, {.VD, .VN, .NEON_SHR_IMM, .NONE}, 0x4F102400, 0xFFF0FC00, .NEON, {}}, + {.SRSHR, {.V_2S, .V_2S, .VEC_SHIFT, .NONE}, {.VD, .VN, .NEON_SHR_IMM, .NONE}, 0x0F202400, 0xFFE0FC00, .NEON, {}}, + {.SRSHR, {.V_4S, .V_4S, .VEC_SHIFT, .NONE}, {.VD, .VN, .NEON_SHR_IMM, .NONE}, 0x4F202400, 0xFFE0FC00, .NEON, {}}, + {.SRSHR, {.V_2D, .V_2D, .VEC_SHIFT, .NONE}, {.VD, .VN, .NEON_SHR_IMM, .NONE}, 0x4F402400, 0xFFC0FC00, .NEON, {}}, + }, + .URSHR = { + {.URSHR, {.V_8B, .V_8B, .VEC_SHIFT, .NONE}, {.VD, .VN, .NEON_SHR_IMM, .NONE}, 0x2F082400, 0xFFF8FC00, .NEON, {}}, + {.URSHR, {.V_16B, .V_16B, .VEC_SHIFT, .NONE}, {.VD, .VN, .NEON_SHR_IMM, .NONE}, 0x6F082400, 0xFFF8FC00, .NEON, {}}, + {.URSHR, {.V_4H, .V_4H, .VEC_SHIFT, .NONE}, {.VD, .VN, .NEON_SHR_IMM, .NONE}, 0x2F102400, 0xFFF0FC00, .NEON, {}}, + {.URSHR, {.V_8H, .V_8H, .VEC_SHIFT, .NONE}, {.VD, .VN, .NEON_SHR_IMM, .NONE}, 0x6F102400, 0xFFF0FC00, .NEON, {}}, + {.URSHR, {.V_2S, .V_2S, .VEC_SHIFT, .NONE}, {.VD, .VN, .NEON_SHR_IMM, .NONE}, 0x2F202400, 0xFFE0FC00, .NEON, {}}, + {.URSHR, {.V_4S, .V_4S, .VEC_SHIFT, .NONE}, {.VD, .VN, .NEON_SHR_IMM, .NONE}, 0x6F202400, 0xFFE0FC00, .NEON, {}}, + {.URSHR, {.V_2D, .V_2D, .VEC_SHIFT, .NONE}, {.VD, .VN, .NEON_SHR_IMM, .NONE}, 0x6F402400, 0xFFC0FC00, .NEON, {}}, + }, + .SSRA = { + {.SSRA, {.V_8B, .V_8B, .VEC_SHIFT, .NONE}, {.VD, .VN, .NEON_SHR_IMM, .NONE}, 0x0F081400, 0xFFF8FC00, .NEON, {}}, + {.SSRA, {.V_16B, .V_16B, .VEC_SHIFT, .NONE}, {.VD, .VN, .NEON_SHR_IMM, .NONE}, 0x4F081400, 0xFFF8FC00, .NEON, {}}, + {.SSRA, {.V_4H, .V_4H, .VEC_SHIFT, .NONE}, {.VD, .VN, .NEON_SHR_IMM, .NONE}, 0x0F101400, 0xFFF0FC00, .NEON, {}}, + {.SSRA, {.V_8H, .V_8H, .VEC_SHIFT, .NONE}, {.VD, .VN, .NEON_SHR_IMM, .NONE}, 0x4F101400, 0xFFF0FC00, .NEON, {}}, + {.SSRA, {.V_2S, .V_2S, .VEC_SHIFT, .NONE}, {.VD, .VN, .NEON_SHR_IMM, .NONE}, 0x0F201400, 0xFFE0FC00, .NEON, {}}, + {.SSRA, {.V_4S, .V_4S, .VEC_SHIFT, .NONE}, {.VD, .VN, .NEON_SHR_IMM, .NONE}, 0x4F201400, 0xFFE0FC00, .NEON, {}}, + {.SSRA, {.V_2D, .V_2D, .VEC_SHIFT, .NONE}, {.VD, .VN, .NEON_SHR_IMM, .NONE}, 0x4F401400, 0xFFC0FC00, .NEON, {}}, + }, + .USRA = { + {.USRA, {.V_8B, .V_8B, .VEC_SHIFT, .NONE}, {.VD, .VN, .NEON_SHR_IMM, .NONE}, 0x2F081400, 0xFFF8FC00, .NEON, {}}, + {.USRA, {.V_16B, .V_16B, .VEC_SHIFT, .NONE}, {.VD, .VN, .NEON_SHR_IMM, .NONE}, 0x6F081400, 0xFFF8FC00, .NEON, {}}, + {.USRA, {.V_4H, .V_4H, .VEC_SHIFT, .NONE}, {.VD, .VN, .NEON_SHR_IMM, .NONE}, 0x2F101400, 0xFFF0FC00, .NEON, {}}, + {.USRA, {.V_8H, .V_8H, .VEC_SHIFT, .NONE}, {.VD, .VN, .NEON_SHR_IMM, .NONE}, 0x6F101400, 0xFFF0FC00, .NEON, {}}, + {.USRA, {.V_2S, .V_2S, .VEC_SHIFT, .NONE}, {.VD, .VN, .NEON_SHR_IMM, .NONE}, 0x2F201400, 0xFFE0FC00, .NEON, {}}, + {.USRA, {.V_4S, .V_4S, .VEC_SHIFT, .NONE}, {.VD, .VN, .NEON_SHR_IMM, .NONE}, 0x6F201400, 0xFFE0FC00, .NEON, {}}, + {.USRA, {.V_2D, .V_2D, .VEC_SHIFT, .NONE}, {.VD, .VN, .NEON_SHR_IMM, .NONE}, 0x6F401400, 0xFFC0FC00, .NEON, {}}, + }, + .SRSRA = { + {.SRSRA, {.V_8B, .V_8B, .VEC_SHIFT, .NONE}, {.VD, .VN, .NEON_SHR_IMM, .NONE}, 0x0F083400, 0xFFF8FC00, .NEON, {}}, + {.SRSRA, {.V_16B, .V_16B, .VEC_SHIFT, .NONE}, {.VD, .VN, .NEON_SHR_IMM, .NONE}, 0x4F083400, 0xFFF8FC00, .NEON, {}}, + {.SRSRA, {.V_4H, .V_4H, .VEC_SHIFT, .NONE}, {.VD, .VN, .NEON_SHR_IMM, .NONE}, 0x0F103400, 0xFFF0FC00, .NEON, {}}, + {.SRSRA, {.V_8H, .V_8H, .VEC_SHIFT, .NONE}, {.VD, .VN, .NEON_SHR_IMM, .NONE}, 0x4F103400, 0xFFF0FC00, .NEON, {}}, + {.SRSRA, {.V_2S, .V_2S, .VEC_SHIFT, .NONE}, {.VD, .VN, .NEON_SHR_IMM, .NONE}, 0x0F203400, 0xFFE0FC00, .NEON, {}}, + {.SRSRA, {.V_4S, .V_4S, .VEC_SHIFT, .NONE}, {.VD, .VN, .NEON_SHR_IMM, .NONE}, 0x4F203400, 0xFFE0FC00, .NEON, {}}, + {.SRSRA, {.V_2D, .V_2D, .VEC_SHIFT, .NONE}, {.VD, .VN, .NEON_SHR_IMM, .NONE}, 0x4F403400, 0xFFC0FC00, .NEON, {}}, + }, + .URSRA = { + {.URSRA, {.V_8B, .V_8B, .VEC_SHIFT, .NONE}, {.VD, .VN, .NEON_SHR_IMM, .NONE}, 0x2F083400, 0xFFF8FC00, .NEON, {}}, + {.URSRA, {.V_16B, .V_16B, .VEC_SHIFT, .NONE}, {.VD, .VN, .NEON_SHR_IMM, .NONE}, 0x6F083400, 0xFFF8FC00, .NEON, {}}, + {.URSRA, {.V_4H, .V_4H, .VEC_SHIFT, .NONE}, {.VD, .VN, .NEON_SHR_IMM, .NONE}, 0x2F103400, 0xFFF0FC00, .NEON, {}}, + {.URSRA, {.V_8H, .V_8H, .VEC_SHIFT, .NONE}, {.VD, .VN, .NEON_SHR_IMM, .NONE}, 0x6F103400, 0xFFF0FC00, .NEON, {}}, + {.URSRA, {.V_2S, .V_2S, .VEC_SHIFT, .NONE}, {.VD, .VN, .NEON_SHR_IMM, .NONE}, 0x2F203400, 0xFFE0FC00, .NEON, {}}, + {.URSRA, {.V_4S, .V_4S, .VEC_SHIFT, .NONE}, {.VD, .VN, .NEON_SHR_IMM, .NONE}, 0x6F203400, 0xFFE0FC00, .NEON, {}}, + {.URSRA, {.V_2D, .V_2D, .VEC_SHIFT, .NONE}, {.VD, .VN, .NEON_SHR_IMM, .NONE}, 0x6F403400, 0xFFC0FC00, .NEON, {}}, + }, + .SRI = { + {.SRI, {.V_8B, .V_8B, .VEC_SHIFT, .NONE}, {.VD, .VN, .NEON_SHR_IMM, .NONE}, 0x2F084400, 0xFFF8FC00, .NEON, {}}, + {.SRI, {.V_16B, .V_16B, .VEC_SHIFT, .NONE}, {.VD, .VN, .NEON_SHR_IMM, .NONE}, 0x6F084400, 0xFFF8FC00, .NEON, {}}, + {.SRI, {.V_4H, .V_4H, .VEC_SHIFT, .NONE}, {.VD, .VN, .NEON_SHR_IMM, .NONE}, 0x2F104400, 0xFFF0FC00, .NEON, {}}, + {.SRI, {.V_8H, .V_8H, .VEC_SHIFT, .NONE}, {.VD, .VN, .NEON_SHR_IMM, .NONE}, 0x6F104400, 0xFFF0FC00, .NEON, {}}, + {.SRI, {.V_2S, .V_2S, .VEC_SHIFT, .NONE}, {.VD, .VN, .NEON_SHR_IMM, .NONE}, 0x2F204400, 0xFFE0FC00, .NEON, {}}, + {.SRI, {.V_4S, .V_4S, .VEC_SHIFT, .NONE}, {.VD, .VN, .NEON_SHR_IMM, .NONE}, 0x6F204400, 0xFFE0FC00, .NEON, {}}, + {.SRI, {.V_2D, .V_2D, .VEC_SHIFT, .NONE}, {.VD, .VN, .NEON_SHR_IMM, .NONE}, 0x6F404400, 0xFFC0FC00, .NEON, {}}, + }, // SPECGEN:END } diff --git a/core/rexcode/arm64/tablegen/generated/decode_tables.odin b/core/rexcode/arm64/tablegen/generated/decode_tables.odin index d635b35d5..250bc089e 100644 --- a/core/rexcode/arm64/tablegen/generated/decode_tables.odin +++ b/core/rexcode/arm64/tablegen/generated/decode_tables.odin @@ -8,7 +8,7 @@ package rexcode_arm64_generated import lib "../.." @(rodata) -DECODE_ENTRIES := [1892]lib.Decode_Entry{ +DECODE_ENTRIES := [1983]lib.Decode_Entry{ { .AMX_SET, {.NONE,.NONE,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x00201220, 0xFFFFFFFF, .AMX, {} }, { .AMX_CLR, {.NONE,.NONE,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x00201240, 0xFFFFFFFF, .AMX, {} }, { .AMX_LDX, {.X_REG,.NONE,.NONE,.NONE}, {.RT,.NONE,.NONE,.NONE}, 0x00201000, 0xFFFFFFE0, .AMX, {is_64=true} }, @@ -66,8 +66,8 @@ DECODE_ENTRIES := [1892]lib.Decode_Entry{ { .SME_SMOPS, {.ZA_TILE_S,.P_REG_MERGE,.P_REG_MERGE,.Z_REG_B}, {.ZA_TILE_NUM_S,.PG,.PM3,.VN}, 0xA0800010, 0xFFE08010, .SME, {} }, { .SME_UMOPA, {.ZA_TILE_S,.P_REG_MERGE,.P_REG_MERGE,.Z_REG_B}, {.ZA_TILE_NUM_S,.PG,.PM3,.VN}, 0xA1A00000, 0xFFE08010, .SME, {} }, { .SME_UMOPA, {.ZA_TILE_D,.P_REG_MERGE,.P_REG_MERGE,.Z_REG_H}, {.ZA_TILE_NUM_D,.PG,.PM3,.VN}, 0xA1E00000, 0xFFE08010, .SME, {is_64=true} }, - { .SME_UMOPS, {.ZA_TILE_D,.P_REG_MERGE,.P_REG_MERGE,.Z_REG_H}, {.ZA_TILE_NUM_D,.PG,.PM3,.VN}, 0xA1E00010, 0xFFE08010, .SME, {is_64=true} }, { .SME_UMOPS, {.ZA_TILE_S,.P_REG_MERGE,.P_REG_MERGE,.Z_REG_B}, {.ZA_TILE_NUM_S,.PG,.PM3,.VN}, 0xA1A00010, 0xFFE08010, .SME, {} }, + { .SME_UMOPS, {.ZA_TILE_D,.P_REG_MERGE,.P_REG_MERGE,.Z_REG_H}, {.ZA_TILE_NUM_D,.PG,.PM3,.VN}, 0xA1E00010, 0xFFE08010, .SME, {is_64=true} }, { .SME_USMOPA, {.ZA_TILE_S,.P_REG_MERGE,.P_REG_MERGE,.Z_REG_B}, {.ZA_TILE_NUM_S,.PG,.PM3,.VN}, 0xA1800000, 0xFFE08010, .SME, {} }, { .SME_SUMOPA, {.ZA_TILE_S,.P_REG_MERGE,.P_REG_MERGE,.Z_REG_B}, {.ZA_TILE_NUM_S,.PG,.PM3,.VN}, 0xA0A00000, 0xFFE08010, .SME, {} }, { .SME_MOVA_Z_FROM_TILE, {.Z_REG_B,.P_REG_MERGE,.SME_SLICE_B,.NONE}, {.VD,.PG,.SME_SLICE_B,.NONE}, 0xC0020000, 0xFFE08010, .SME, {} }, @@ -92,14 +92,14 @@ DECODE_ENTRIES := [1892]lib.Decode_Entry{ { .SVE_REV_P, {.P_REG,.P_REG,.NONE,.NONE}, {.PD,.PN,.NONE,.NONE}, 0x05344000, 0xFFFFFE10, .SVE, {} }, { .SVE_PTRUE, {.P_REG,.SVE_PATTERN,.NONE,.NONE}, {.PD,.SVE_PATTERN,.NONE,.NONE}, 0x2518E000, 0xFFFFFC10, .SVE, {} }, { .SVE_PTRUES, {.P_REG,.SVE_PATTERN,.NONE,.NONE}, {.PD,.SVE_PATTERN,.NONE,.NONE}, 0x2519E000, 0xFFFFFC10, .SVE, {sets_flags=true} }, - { .SVE_DUP_Z, {.Z_REG_D,.X_REG,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x05E03800, 0xFFFFFC00, .SVE, {is_64=true} }, { .SVE_DUP_Z, {.Z_REG_B,.W_REG,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x05203800, 0xFFFFFC00, .SVE, {} }, - { .SVE_DUP_Z, {.Z_REG_H,.W_REG,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x05603800, 0xFFFFFC00, .SVE, {} }, { .SVE_DUP_Z, {.Z_REG_S,.W_REG,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x05A03800, 0xFFFFFC00, .SVE, {} }, + { .SVE_DUP_Z, {.Z_REG_H,.W_REG,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x05603800, 0xFFFFFC00, .SVE, {} }, + { .SVE_DUP_Z, {.Z_REG_D,.X_REG,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x05E03800, 0xFFFFFC00, .SVE, {is_64=true} }, + { .SVE_REV_Z, {.Z_REG_H,.Z_REG_H,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x05783800, 0xFFFFFC00, .SVE, {} }, { .SVE_REV_Z, {.Z_REG_D,.Z_REG_D,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x05F83800, 0xFFFFFC00, .SVE, {is_64=true} }, { .SVE_REV_Z, {.Z_REG_B,.Z_REG_B,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x05383800, 0xFFFFFC00, .SVE, {} }, { .SVE_REV_Z, {.Z_REG_S,.Z_REG_S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x05B83800, 0xFFFFFC00, .SVE, {} }, - { .SVE_REV_Z, {.Z_REG_H,.Z_REG_H,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x05783800, 0xFFFFFC00, .SVE, {} }, { .SVE_AESE, {.Z_REG_B,.Z_REG_B,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4522E000, 0xFFFFFC00, .SVE2, {} }, { .SVE_AESD, {.Z_REG_B,.Z_REG_B,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4522E400, 0xFFFFFC00, .SVE2, {} }, { .SME_RDSVL, {.X_REG,.IMM_6,.NONE,.NONE}, {.RD,.IMM6,.NONE,.NONE}, 0x04BF5800, 0xFFFFFC00, .SME, {is_64=true} }, @@ -116,88 +116,88 @@ DECODE_ENTRIES := [1892]lib.Decode_Entry{ { .SVE_SPLICE, {.Z_REG_B,.P_REG_GOV,.Z_REG_B,.Z_REG_B}, {.VD,.PG,.VD,.VN}, 0x052C8000, 0xFFFFE000, .SVE, {} }, { .SVE_BFCVT, {.Z_REG_H,.P_REG_MERGE,.Z_REG_S,.NONE}, {.VD,.PG,.VN,.NONE}, 0x658AA000, 0xFFFFE000, .SVE, {} }, { .SVE_BFCVTNT, {.Z_REG_H,.P_REG_MERGE,.Z_REG_S,.NONE}, {.VD,.PG,.VN,.NONE}, 0x648AA000, 0xFFFFE000, .SVE, {} }, - { .SVE_ADD_Z, {.Z_REG_H,.Z_REG_H,.Z_REG_H,.NONE}, {.VD,.VN,.VM,.NONE}, 0x04600000, 0xFFE0FC00, .SVE, {} }, - { .SVE_ADD_Z, {.Z_REG_S,.Z_REG_S,.Z_REG_S,.NONE}, {.VD,.VN,.VM,.NONE}, 0x04A00000, 0xFFE0FC00, .SVE, {} }, { .SVE_ADD_Z, {.Z_REG_D,.Z_REG_D,.Z_REG_D,.NONE}, {.VD,.VN,.VM,.NONE}, 0x04E00000, 0xFFE0FC00, .SVE, {is_64=true} }, + { .SVE_ADD_Z, {.Z_REG_S,.Z_REG_S,.Z_REG_S,.NONE}, {.VD,.VN,.VM,.NONE}, 0x04A00000, 0xFFE0FC00, .SVE, {} }, { .SVE_ADD_Z, {.Z_REG_B,.Z_REG_B,.Z_REG_B,.NONE}, {.VD,.VN,.VM,.NONE}, 0x04200000, 0xFFE0FC00, .SVE, {} }, + { .SVE_ADD_Z, {.Z_REG_H,.Z_REG_H,.Z_REG_H,.NONE}, {.VD,.VN,.VM,.NONE}, 0x04600000, 0xFFE0FC00, .SVE, {} }, { .SVE_SUB_Z, {.Z_REG_B,.Z_REG_B,.Z_REG_B,.NONE}, {.VD,.VN,.VM,.NONE}, 0x04200400, 0xFFE0FC00, .SVE, {} }, { .SVE_SUB_Z, {.Z_REG_S,.Z_REG_S,.Z_REG_S,.NONE}, {.VD,.VN,.VM,.NONE}, 0x04A00400, 0xFFE0FC00, .SVE, {} }, { .SVE_SUB_Z, {.Z_REG_D,.Z_REG_D,.Z_REG_D,.NONE}, {.VD,.VN,.VM,.NONE}, 0x04E00400, 0xFFE0FC00, .SVE, {is_64=true} }, { .SVE_SUB_Z, {.Z_REG_H,.Z_REG_H,.Z_REG_H,.NONE}, {.VD,.VN,.VM,.NONE}, 0x04600400, 0xFFE0FC00, .SVE, {} }, - { .SVE_SQADD_Z, {.Z_REG_D,.Z_REG_D,.Z_REG_D,.NONE}, {.VD,.VN,.VM,.NONE}, 0x04E01000, 0xFFE0FC00, .SVE, {is_64=true} }, - { .SVE_SQADD_Z, {.Z_REG_H,.Z_REG_H,.Z_REG_H,.NONE}, {.VD,.VN,.VM,.NONE}, 0x04601000, 0xFFE0FC00, .SVE, {} }, { .SVE_SQADD_Z, {.Z_REG_S,.Z_REG_S,.Z_REG_S,.NONE}, {.VD,.VN,.VM,.NONE}, 0x04A01000, 0xFFE0FC00, .SVE, {} }, + { .SVE_SQADD_Z, {.Z_REG_D,.Z_REG_D,.Z_REG_D,.NONE}, {.VD,.VN,.VM,.NONE}, 0x04E01000, 0xFFE0FC00, .SVE, {is_64=true} }, { .SVE_SQADD_Z, {.Z_REG_B,.Z_REG_B,.Z_REG_B,.NONE}, {.VD,.VN,.VM,.NONE}, 0x04201000, 0xFFE0FC00, .SVE, {} }, - { .SVE_UQADD_Z, {.Z_REG_B,.Z_REG_B,.Z_REG_B,.NONE}, {.VD,.VN,.VM,.NONE}, 0x04201400, 0xFFE0FC00, .SVE, {} }, - { .SVE_UQADD_Z, {.Z_REG_H,.Z_REG_H,.Z_REG_H,.NONE}, {.VD,.VN,.VM,.NONE}, 0x04601400, 0xFFE0FC00, .SVE, {} }, - { .SVE_UQADD_Z, {.Z_REG_D,.Z_REG_D,.Z_REG_D,.NONE}, {.VD,.VN,.VM,.NONE}, 0x04E01400, 0xFFE0FC00, .SVE, {is_64=true} }, + { .SVE_SQADD_Z, {.Z_REG_H,.Z_REG_H,.Z_REG_H,.NONE}, {.VD,.VN,.VM,.NONE}, 0x04601000, 0xFFE0FC00, .SVE, {} }, { .SVE_UQADD_Z, {.Z_REG_S,.Z_REG_S,.Z_REG_S,.NONE}, {.VD,.VN,.VM,.NONE}, 0x04A01400, 0xFFE0FC00, .SVE, {} }, - { .SVE_SQSUB_Z, {.Z_REG_B,.Z_REG_B,.Z_REG_B,.NONE}, {.VD,.VN,.VM,.NONE}, 0x04201800, 0xFFE0FC00, .SVE, {} }, - { .SVE_SQSUB_Z, {.Z_REG_D,.Z_REG_D,.Z_REG_D,.NONE}, {.VD,.VN,.VM,.NONE}, 0x04E01800, 0xFFE0FC00, .SVE, {is_64=true} }, - { .SVE_SQSUB_Z, {.Z_REG_H,.Z_REG_H,.Z_REG_H,.NONE}, {.VD,.VN,.VM,.NONE}, 0x04601800, 0xFFE0FC00, .SVE, {} }, + { .SVE_UQADD_Z, {.Z_REG_H,.Z_REG_H,.Z_REG_H,.NONE}, {.VD,.VN,.VM,.NONE}, 0x04601400, 0xFFE0FC00, .SVE, {} }, + { .SVE_UQADD_Z, {.Z_REG_B,.Z_REG_B,.Z_REG_B,.NONE}, {.VD,.VN,.VM,.NONE}, 0x04201400, 0xFFE0FC00, .SVE, {} }, + { .SVE_UQADD_Z, {.Z_REG_D,.Z_REG_D,.Z_REG_D,.NONE}, {.VD,.VN,.VM,.NONE}, 0x04E01400, 0xFFE0FC00, .SVE, {is_64=true} }, { .SVE_SQSUB_Z, {.Z_REG_S,.Z_REG_S,.Z_REG_S,.NONE}, {.VD,.VN,.VM,.NONE}, 0x04A01800, 0xFFE0FC00, .SVE, {} }, - { .SVE_UQSUB_Z, {.Z_REG_D,.Z_REG_D,.Z_REG_D,.NONE}, {.VD,.VN,.VM,.NONE}, 0x04E01C00, 0xFFE0FC00, .SVE, {is_64=true} }, - { .SVE_UQSUB_Z, {.Z_REG_B,.Z_REG_B,.Z_REG_B,.NONE}, {.VD,.VN,.VM,.NONE}, 0x04201C00, 0xFFE0FC00, .SVE, {} }, + { .SVE_SQSUB_Z, {.Z_REG_B,.Z_REG_B,.Z_REG_B,.NONE}, {.VD,.VN,.VM,.NONE}, 0x04201800, 0xFFE0FC00, .SVE, {} }, + { .SVE_SQSUB_Z, {.Z_REG_H,.Z_REG_H,.Z_REG_H,.NONE}, {.VD,.VN,.VM,.NONE}, 0x04601800, 0xFFE0FC00, .SVE, {} }, + { .SVE_SQSUB_Z, {.Z_REG_D,.Z_REG_D,.Z_REG_D,.NONE}, {.VD,.VN,.VM,.NONE}, 0x04E01800, 0xFFE0FC00, .SVE, {is_64=true} }, { .SVE_UQSUB_Z, {.Z_REG_H,.Z_REG_H,.Z_REG_H,.NONE}, {.VD,.VN,.VM,.NONE}, 0x04601C00, 0xFFE0FC00, .SVE, {} }, + { .SVE_UQSUB_Z, {.Z_REG_B,.Z_REG_B,.Z_REG_B,.NONE}, {.VD,.VN,.VM,.NONE}, 0x04201C00, 0xFFE0FC00, .SVE, {} }, { .SVE_UQSUB_Z, {.Z_REG_S,.Z_REG_S,.Z_REG_S,.NONE}, {.VD,.VN,.VM,.NONE}, 0x04A01C00, 0xFFE0FC00, .SVE, {} }, + { .SVE_UQSUB_Z, {.Z_REG_D,.Z_REG_D,.Z_REG_D,.NONE}, {.VD,.VN,.VM,.NONE}, 0x04E01C00, 0xFFE0FC00, .SVE, {is_64=true} }, { .SVE_FADD_Z, {.Z_REG_S,.Z_REG_S,.Z_REG_S,.NONE}, {.VD,.VN,.VM,.NONE}, 0x65800000, 0xFFE0FC00, .SVE, {} }, - { .SVE_FADD_Z, {.Z_REG_H,.Z_REG_H,.Z_REG_H,.NONE}, {.VD,.VN,.VM,.NONE}, 0x65400000, 0xFFE0FC00, .SVE, {} }, { .SVE_FADD_Z, {.Z_REG_D,.Z_REG_D,.Z_REG_D,.NONE}, {.VD,.VN,.VM,.NONE}, 0x65C00000, 0xFFE0FC00, .SVE, {is_64=true} }, - { .SVE_FSUB_Z, {.Z_REG_S,.Z_REG_S,.Z_REG_S,.NONE}, {.VD,.VN,.VM,.NONE}, 0x65800400, 0xFFE0FC00, .SVE, {} }, + { .SVE_FADD_Z, {.Z_REG_H,.Z_REG_H,.Z_REG_H,.NONE}, {.VD,.VN,.VM,.NONE}, 0x65400000, 0xFFE0FC00, .SVE, {} }, { .SVE_FSUB_Z, {.Z_REG_H,.Z_REG_H,.Z_REG_H,.NONE}, {.VD,.VN,.VM,.NONE}, 0x65400400, 0xFFE0FC00, .SVE, {} }, { .SVE_FSUB_Z, {.Z_REG_D,.Z_REG_D,.Z_REG_D,.NONE}, {.VD,.VN,.VM,.NONE}, 0x65C00400, 0xFFE0FC00, .SVE, {is_64=true} }, - { .SVE_FMUL_Z, {.Z_REG_H,.Z_REG_H,.Z_REG_H,.NONE}, {.VD,.VN,.VM,.NONE}, 0x65400800, 0xFFE0FC00, .SVE, {} }, + { .SVE_FSUB_Z, {.Z_REG_S,.Z_REG_S,.Z_REG_S,.NONE}, {.VD,.VN,.VM,.NONE}, 0x65800400, 0xFFE0FC00, .SVE, {} }, { .SVE_FMUL_Z, {.Z_REG_S,.Z_REG_S,.Z_REG_S,.NONE}, {.VD,.VN,.VM,.NONE}, 0x65800800, 0xFFE0FC00, .SVE, {} }, + { .SVE_FMUL_Z, {.Z_REG_H,.Z_REG_H,.Z_REG_H,.NONE}, {.VD,.VN,.VM,.NONE}, 0x65400800, 0xFFE0FC00, .SVE, {} }, { .SVE_FMUL_Z, {.Z_REG_D,.Z_REG_D,.Z_REG_D,.NONE}, {.VD,.VN,.VM,.NONE}, 0x65C00800, 0xFFE0FC00, .SVE, {is_64=true} }, + { .SVE_FRECPS, {.Z_REG_D,.Z_REG_D,.Z_REG_D,.NONE}, {.VD,.VN,.VM,.NONE}, 0x65C01800, 0xFFE0FC00, .SVE, {is_64=true} }, { .SVE_FRECPS, {.Z_REG_H,.Z_REG_H,.Z_REG_H,.NONE}, {.VD,.VN,.VM,.NONE}, 0x65401800, 0xFFE0FC00, .SVE, {} }, { .SVE_FRECPS, {.Z_REG_S,.Z_REG_S,.Z_REG_S,.NONE}, {.VD,.VN,.VM,.NONE}, 0x65801800, 0xFFE0FC00, .SVE, {} }, - { .SVE_FRECPS, {.Z_REG_D,.Z_REG_D,.Z_REG_D,.NONE}, {.VD,.VN,.VM,.NONE}, 0x65C01800, 0xFFE0FC00, .SVE, {is_64=true} }, - { .SVE_FRSQRTS, {.Z_REG_S,.Z_REG_S,.Z_REG_S,.NONE}, {.VD,.VN,.VM,.NONE}, 0x65801C00, 0xFFE0FC00, .SVE, {} }, { .SVE_FRSQRTS, {.Z_REG_H,.Z_REG_H,.Z_REG_H,.NONE}, {.VD,.VN,.VM,.NONE}, 0x65401C00, 0xFFE0FC00, .SVE, {} }, + { .SVE_FRSQRTS, {.Z_REG_S,.Z_REG_S,.Z_REG_S,.NONE}, {.VD,.VN,.VM,.NONE}, 0x65801C00, 0xFFE0FC00, .SVE, {} }, { .SVE_FRSQRTS, {.Z_REG_D,.Z_REG_D,.Z_REG_D,.NONE}, {.VD,.VN,.VM,.NONE}, 0x65C01C00, 0xFFE0FC00, .SVE, {is_64=true} }, - { .SVE_FTSMUL, {.Z_REG_H,.Z_REG_H,.Z_REG_H,.NONE}, {.VD,.VN,.VM,.NONE}, 0x65400C00, 0xFFE0FC00, .SVE, {} }, - { .SVE_FTSMUL, {.Z_REG_D,.Z_REG_D,.Z_REG_D,.NONE}, {.VD,.VN,.VM,.NONE}, 0x65C00C00, 0xFFE0FC00, .SVE, {is_64=true} }, { .SVE_FTSMUL, {.Z_REG_S,.Z_REG_S,.Z_REG_S,.NONE}, {.VD,.VN,.VM,.NONE}, 0x65800C00, 0xFFE0FC00, .SVE, {} }, - { .SVE_TBL, {.Z_REG_D,.Z_REG_D,.Z_REG_D,.NONE}, {.VD,.VN,.VM,.NONE}, 0x05E03000, 0xFFE0FC00, .SVE, {is_64=true} }, - { .SVE_TBL, {.Z_REG_H,.Z_REG_H,.Z_REG_H,.NONE}, {.VD,.VN,.VM,.NONE}, 0x05603000, 0xFFE0FC00, .SVE, {} }, + { .SVE_FTSMUL, {.Z_REG_D,.Z_REG_D,.Z_REG_D,.NONE}, {.VD,.VN,.VM,.NONE}, 0x65C00C00, 0xFFE0FC00, .SVE, {is_64=true} }, + { .SVE_FTSMUL, {.Z_REG_H,.Z_REG_H,.Z_REG_H,.NONE}, {.VD,.VN,.VM,.NONE}, 0x65400C00, 0xFFE0FC00, .SVE, {} }, { .SVE_TBL, {.Z_REG_B,.Z_REG_B,.Z_REG_B,.NONE}, {.VD,.VN,.VM,.NONE}, 0x05203000, 0xFFE0FC00, .SVE, {} }, + { .SVE_TBL, {.Z_REG_H,.Z_REG_H,.Z_REG_H,.NONE}, {.VD,.VN,.VM,.NONE}, 0x05603000, 0xFFE0FC00, .SVE, {} }, + { .SVE_TBL, {.Z_REG_D,.Z_REG_D,.Z_REG_D,.NONE}, {.VD,.VN,.VM,.NONE}, 0x05E03000, 0xFFE0FC00, .SVE, {is_64=true} }, { .SVE_TBL, {.Z_REG_S,.Z_REG_S,.Z_REG_S,.NONE}, {.VD,.VN,.VM,.NONE}, 0x05A03000, 0xFFE0FC00, .SVE, {} }, - { .SVE_ZIP1_Z, {.Z_REG_D,.Z_REG_D,.Z_REG_D,.NONE}, {.VD,.VN,.VM,.NONE}, 0x05E06000, 0xFFE0FC00, .SVE, {is_64=true} }, + { .SVE_ZIP1_Z, {.Z_REG_S,.Z_REG_S,.Z_REG_S,.NONE}, {.VD,.VN,.VM,.NONE}, 0x05A06000, 0xFFE0FC00, .SVE, {} }, { .SVE_ZIP1_Z, {.Z_REG_H,.Z_REG_H,.Z_REG_H,.NONE}, {.VD,.VN,.VM,.NONE}, 0x05606000, 0xFFE0FC00, .SVE, {} }, { .SVE_ZIP1_Z, {.Z_REG_B,.Z_REG_B,.Z_REG_B,.NONE}, {.VD,.VN,.VM,.NONE}, 0x05206000, 0xFFE0FC00, .SVE, {} }, - { .SVE_ZIP1_Z, {.Z_REG_S,.Z_REG_S,.Z_REG_S,.NONE}, {.VD,.VN,.VM,.NONE}, 0x05A06000, 0xFFE0FC00, .SVE, {} }, + { .SVE_ZIP1_Z, {.Z_REG_D,.Z_REG_D,.Z_REG_D,.NONE}, {.VD,.VN,.VM,.NONE}, 0x05E06000, 0xFFE0FC00, .SVE, {is_64=true} }, { .SVE_ZIP2_Z, {.Z_REG_S,.Z_REG_S,.Z_REG_S,.NONE}, {.VD,.VN,.VM,.NONE}, 0x05A06400, 0xFFE0FC00, .SVE, {} }, { .SVE_ZIP2_Z, {.Z_REG_B,.Z_REG_B,.Z_REG_B,.NONE}, {.VD,.VN,.VM,.NONE}, 0x05206400, 0xFFE0FC00, .SVE, {} }, - { .SVE_ZIP2_Z, {.Z_REG_H,.Z_REG_H,.Z_REG_H,.NONE}, {.VD,.VN,.VM,.NONE}, 0x05606400, 0xFFE0FC00, .SVE, {} }, { .SVE_ZIP2_Z, {.Z_REG_D,.Z_REG_D,.Z_REG_D,.NONE}, {.VD,.VN,.VM,.NONE}, 0x05E06400, 0xFFE0FC00, .SVE, {is_64=true} }, + { .SVE_ZIP2_Z, {.Z_REG_H,.Z_REG_H,.Z_REG_H,.NONE}, {.VD,.VN,.VM,.NONE}, 0x05606400, 0xFFE0FC00, .SVE, {} }, + { .SVE_UZP1_Z, {.Z_REG_B,.Z_REG_B,.Z_REG_B,.NONE}, {.VD,.VN,.VM,.NONE}, 0x05206800, 0xFFE0FC00, .SVE, {} }, { .SVE_UZP1_Z, {.Z_REG_S,.Z_REG_S,.Z_REG_S,.NONE}, {.VD,.VN,.VM,.NONE}, 0x05A06800, 0xFFE0FC00, .SVE, {} }, { .SVE_UZP1_Z, {.Z_REG_H,.Z_REG_H,.Z_REG_H,.NONE}, {.VD,.VN,.VM,.NONE}, 0x05606800, 0xFFE0FC00, .SVE, {} }, { .SVE_UZP1_Z, {.Z_REG_D,.Z_REG_D,.Z_REG_D,.NONE}, {.VD,.VN,.VM,.NONE}, 0x05E06800, 0xFFE0FC00, .SVE, {is_64=true} }, - { .SVE_UZP1_Z, {.Z_REG_B,.Z_REG_B,.Z_REG_B,.NONE}, {.VD,.VN,.VM,.NONE}, 0x05206800, 0xFFE0FC00, .SVE, {} }, - { .SVE_UZP2_Z, {.Z_REG_B,.Z_REG_B,.Z_REG_B,.NONE}, {.VD,.VN,.VM,.NONE}, 0x05206C00, 0xFFE0FC00, .SVE, {} }, - { .SVE_UZP2_Z, {.Z_REG_H,.Z_REG_H,.Z_REG_H,.NONE}, {.VD,.VN,.VM,.NONE}, 0x05606C00, 0xFFE0FC00, .SVE, {} }, - { .SVE_UZP2_Z, {.Z_REG_D,.Z_REG_D,.Z_REG_D,.NONE}, {.VD,.VN,.VM,.NONE}, 0x05E06C00, 0xFFE0FC00, .SVE, {is_64=true} }, { .SVE_UZP2_Z, {.Z_REG_S,.Z_REG_S,.Z_REG_S,.NONE}, {.VD,.VN,.VM,.NONE}, 0x05A06C00, 0xFFE0FC00, .SVE, {} }, - { .SVE_TRN1_Z, {.Z_REG_B,.Z_REG_B,.Z_REG_B,.NONE}, {.VD,.VN,.VM,.NONE}, 0x05207000, 0xFFE0FC00, .SVE, {} }, + { .SVE_UZP2_Z, {.Z_REG_H,.Z_REG_H,.Z_REG_H,.NONE}, {.VD,.VN,.VM,.NONE}, 0x05606C00, 0xFFE0FC00, .SVE, {} }, + { .SVE_UZP2_Z, {.Z_REG_B,.Z_REG_B,.Z_REG_B,.NONE}, {.VD,.VN,.VM,.NONE}, 0x05206C00, 0xFFE0FC00, .SVE, {} }, + { .SVE_UZP2_Z, {.Z_REG_D,.Z_REG_D,.Z_REG_D,.NONE}, {.VD,.VN,.VM,.NONE}, 0x05E06C00, 0xFFE0FC00, .SVE, {is_64=true} }, { .SVE_TRN1_Z, {.Z_REG_S,.Z_REG_S,.Z_REG_S,.NONE}, {.VD,.VN,.VM,.NONE}, 0x05A07000, 0xFFE0FC00, .SVE, {} }, { .SVE_TRN1_Z, {.Z_REG_D,.Z_REG_D,.Z_REG_D,.NONE}, {.VD,.VN,.VM,.NONE}, 0x05E07000, 0xFFE0FC00, .SVE, {is_64=true} }, + { .SVE_TRN1_Z, {.Z_REG_B,.Z_REG_B,.Z_REG_B,.NONE}, {.VD,.VN,.VM,.NONE}, 0x05207000, 0xFFE0FC00, .SVE, {} }, { .SVE_TRN1_Z, {.Z_REG_H,.Z_REG_H,.Z_REG_H,.NONE}, {.VD,.VN,.VM,.NONE}, 0x05607000, 0xFFE0FC00, .SVE, {} }, - { .SVE_TRN2_Z, {.Z_REG_D,.Z_REG_D,.Z_REG_D,.NONE}, {.VD,.VN,.VM,.NONE}, 0x05E07400, 0xFFE0FC00, .SVE, {is_64=true} }, { .SVE_TRN2_Z, {.Z_REG_S,.Z_REG_S,.Z_REG_S,.NONE}, {.VD,.VN,.VM,.NONE}, 0x05A07400, 0xFFE0FC00, .SVE, {} }, - { .SVE_TRN2_Z, {.Z_REG_H,.Z_REG_H,.Z_REG_H,.NONE}, {.VD,.VN,.VM,.NONE}, 0x05607400, 0xFFE0FC00, .SVE, {} }, { .SVE_TRN2_Z, {.Z_REG_B,.Z_REG_B,.Z_REG_B,.NONE}, {.VD,.VN,.VM,.NONE}, 0x05207400, 0xFFE0FC00, .SVE, {} }, - { .SVE_SQRDMLAH, {.Z_REG_H,.Z_REG_H,.Z_REG_H,.NONE}, {.VD,.VN,.VM,.NONE}, 0x44407000, 0xFFE0FC00, .SVE2, {} }, + { .SVE_TRN2_Z, {.Z_REG_D,.Z_REG_D,.Z_REG_D,.NONE}, {.VD,.VN,.VM,.NONE}, 0x05E07400, 0xFFE0FC00, .SVE, {is_64=true} }, + { .SVE_TRN2_Z, {.Z_REG_H,.Z_REG_H,.Z_REG_H,.NONE}, {.VD,.VN,.VM,.NONE}, 0x05607400, 0xFFE0FC00, .SVE, {} }, { .SVE_SQRDMLAH, {.Z_REG_D,.Z_REG_D,.Z_REG_D,.NONE}, {.VD,.VN,.VM,.NONE}, 0x44C07000, 0xFFE0FC00, .SVE2, {is_64=true} }, - { .SVE_SQRDMLAH, {.Z_REG_B,.Z_REG_B,.Z_REG_B,.NONE}, {.VD,.VN,.VM,.NONE}, 0x44007000, 0xFFE0FC00, .SVE2, {} }, { .SVE_SQRDMLAH, {.Z_REG_S,.Z_REG_S,.Z_REG_S,.NONE}, {.VD,.VN,.VM,.NONE}, 0x44807000, 0xFFE0FC00, .SVE2, {} }, + { .SVE_SQRDMLAH, {.Z_REG_B,.Z_REG_B,.Z_REG_B,.NONE}, {.VD,.VN,.VM,.NONE}, 0x44007000, 0xFFE0FC00, .SVE2, {} }, + { .SVE_SQRDMLAH, {.Z_REG_H,.Z_REG_H,.Z_REG_H,.NONE}, {.VD,.VN,.VM,.NONE}, 0x44407000, 0xFFE0FC00, .SVE2, {} }, { .SVE_SQRDMLSH, {.Z_REG_B,.Z_REG_B,.Z_REG_B,.NONE}, {.VD,.VN,.VM,.NONE}, 0x44007400, 0xFFE0FC00, .SVE2, {} }, - { .SVE_SQRDMLSH, {.Z_REG_S,.Z_REG_S,.Z_REG_S,.NONE}, {.VD,.VN,.VM,.NONE}, 0x44807400, 0xFFE0FC00, .SVE2, {} }, - { .SVE_SQRDMLSH, {.Z_REG_H,.Z_REG_H,.Z_REG_H,.NONE}, {.VD,.VN,.VM,.NONE}, 0x44407400, 0xFFE0FC00, .SVE2, {} }, { .SVE_SQRDMLSH, {.Z_REG_D,.Z_REG_D,.Z_REG_D,.NONE}, {.VD,.VN,.VM,.NONE}, 0x44C07400, 0xFFE0FC00, .SVE2, {is_64=true} }, - { .SVE_ADCLB, {.Z_REG_D,.Z_REG_D,.Z_REG_D,.NONE}, {.VD,.VN,.VM,.NONE}, 0x4540D000, 0xFFE0FC00, .SVE2, {is_64=true} }, + { .SVE_SQRDMLSH, {.Z_REG_H,.Z_REG_H,.Z_REG_H,.NONE}, {.VD,.VN,.VM,.NONE}, 0x44407400, 0xFFE0FC00, .SVE2, {} }, + { .SVE_SQRDMLSH, {.Z_REG_S,.Z_REG_S,.Z_REG_S,.NONE}, {.VD,.VN,.VM,.NONE}, 0x44807400, 0xFFE0FC00, .SVE2, {} }, { .SVE_ADCLB, {.Z_REG_S,.Z_REG_S,.Z_REG_S,.NONE}, {.VD,.VN,.VM,.NONE}, 0x4500D000, 0xFFE0FC00, .SVE2, {} }, - { .SVE_ADCLT, {.Z_REG_S,.Z_REG_S,.Z_REG_S,.NONE}, {.VD,.VN,.VM,.NONE}, 0x4500D400, 0xFFE0FC00, .SVE2, {} }, + { .SVE_ADCLB, {.Z_REG_D,.Z_REG_D,.Z_REG_D,.NONE}, {.VD,.VN,.VM,.NONE}, 0x4540D000, 0xFFE0FC00, .SVE2, {is_64=true} }, { .SVE_ADCLT, {.Z_REG_D,.Z_REG_D,.Z_REG_D,.NONE}, {.VD,.VN,.VM,.NONE}, 0x4540D400, 0xFFE0FC00, .SVE2, {is_64=true} }, + { .SVE_ADCLT, {.Z_REG_S,.Z_REG_S,.Z_REG_S,.NONE}, {.VD,.VN,.VM,.NONE}, 0x4500D400, 0xFFE0FC00, .SVE2, {} }, { .SVE_SBCLB, {.Z_REG_D,.Z_REG_D,.Z_REG_D,.NONE}, {.VD,.VN,.VM,.NONE}, 0x45C0D000, 0xFFE0FC00, .SVE2, {is_64=true} }, { .SVE_SBCLB, {.Z_REG_S,.Z_REG_S,.Z_REG_S,.NONE}, {.VD,.VN,.VM,.NONE}, 0x4580D000, 0xFFE0FC00, .SVE2, {} }, { .SVE_SBCLT, {.Z_REG_S,.Z_REG_S,.Z_REG_S,.NONE}, {.VD,.VN,.VM,.NONE}, 0x4580D400, 0xFFE0FC00, .SVE2, {} }, @@ -246,165 +246,165 @@ DECODE_ENTRIES := [1892]lib.Decode_Entry{ { .SVE_BICS_P, {.P_REG,.P_REG_ZERO,.P_REG,.P_REG}, {.PD,.PG4,.PN,.PM}, 0x25404010, 0xFFE0C210, .SVE, {sets_flags=true} }, { .SVE_ORRS_P, {.P_REG,.P_REG_ZERO,.P_REG,.P_REG}, {.PD,.PG4,.PN,.PM}, 0x25C04000, 0xFFE0C210, .SVE, {sets_flags=true} }, { .SVE_EORS_P, {.P_REG,.P_REG_ZERO,.P_REG,.P_REG}, {.PD,.PG4,.PN,.PM}, 0x25404200, 0xFFE0C210, .SVE, {sets_flags=true} }, - { .SVE_CMPNE, {.P_REG,.P_REG_ZERO,.Z_REG_H,.Z_REG_H}, {.PD,.PG,.VN,.VM}, 0x2440A010, 0xFFE0E010, .SVE, {sets_flags=true} }, { .SVE_CMPNE, {.P_REG,.P_REG_ZERO,.Z_REG_B,.Z_REG_B}, {.PD,.PG,.VN,.VM}, 0x2400A010, 0xFFE0E010, .SVE, {sets_flags=true} }, - { .SVE_CMPNE, {.P_REG,.P_REG_ZERO,.Z_REG_S,.Z_REG_S}, {.PD,.PG,.VN,.VM}, 0x2480A010, 0xFFE0E010, .SVE, {sets_flags=true} }, { .SVE_CMPNE, {.P_REG,.P_REG_ZERO,.Z_REG_D,.Z_REG_D}, {.PD,.PG,.VN,.VM}, 0x24C0A010, 0xFFE0E010, .SVE, {sets_flags=true, is_64=true} }, - { .SVE_CMPGE, {.P_REG,.P_REG_ZERO,.Z_REG_B,.Z_REG_B}, {.PD,.PG,.VN,.VM}, 0x24008000, 0xFFE0E010, .SVE, {sets_flags=true} }, - { .SVE_CMPGE, {.P_REG,.P_REG_ZERO,.Z_REG_D,.Z_REG_D}, {.PD,.PG,.VN,.VM}, 0x24C08000, 0xFFE0E010, .SVE, {sets_flags=true, is_64=true} }, + { .SVE_CMPNE, {.P_REG,.P_REG_ZERO,.Z_REG_S,.Z_REG_S}, {.PD,.PG,.VN,.VM}, 0x2480A010, 0xFFE0E010, .SVE, {sets_flags=true} }, + { .SVE_CMPNE, {.P_REG,.P_REG_ZERO,.Z_REG_H,.Z_REG_H}, {.PD,.PG,.VN,.VM}, 0x2440A010, 0xFFE0E010, .SVE, {sets_flags=true} }, { .SVE_CMPGE, {.P_REG,.P_REG_ZERO,.Z_REG_H,.Z_REG_H}, {.PD,.PG,.VN,.VM}, 0x24408000, 0xFFE0E010, .SVE, {sets_flags=true} }, { .SVE_CMPGE, {.P_REG,.P_REG_ZERO,.Z_REG_S,.Z_REG_S}, {.PD,.PG,.VN,.VM}, 0x24808000, 0xFFE0E010, .SVE, {sets_flags=true} }, - { .SVE_CMPGT, {.P_REG,.P_REG_ZERO,.Z_REG_H,.Z_REG_H}, {.PD,.PG,.VN,.VM}, 0x24408010, 0xFFE0E010, .SVE, {sets_flags=true} }, - { .SVE_CMPGT, {.P_REG,.P_REG_ZERO,.Z_REG_S,.Z_REG_S}, {.PD,.PG,.VN,.VM}, 0x24808010, 0xFFE0E010, .SVE, {sets_flags=true} }, - { .SVE_CMPGT, {.P_REG,.P_REG_ZERO,.Z_REG_D,.Z_REG_D}, {.PD,.PG,.VN,.VM}, 0x24C08010, 0xFFE0E010, .SVE, {sets_flags=true, is_64=true} }, + { .SVE_CMPGE, {.P_REG,.P_REG_ZERO,.Z_REG_D,.Z_REG_D}, {.PD,.PG,.VN,.VM}, 0x24C08000, 0xFFE0E010, .SVE, {sets_flags=true, is_64=true} }, + { .SVE_CMPGE, {.P_REG,.P_REG_ZERO,.Z_REG_B,.Z_REG_B}, {.PD,.PG,.VN,.VM}, 0x24008000, 0xFFE0E010, .SVE, {sets_flags=true} }, { .SVE_CMPGT, {.P_REG,.P_REG_ZERO,.Z_REG_B,.Z_REG_B}, {.PD,.PG,.VN,.VM}, 0x24008010, 0xFFE0E010, .SVE, {sets_flags=true} }, + { .SVE_CMPGT, {.P_REG,.P_REG_ZERO,.Z_REG_H,.Z_REG_H}, {.PD,.PG,.VN,.VM}, 0x24408010, 0xFFE0E010, .SVE, {sets_flags=true} }, + { .SVE_CMPGT, {.P_REG,.P_REG_ZERO,.Z_REG_D,.Z_REG_D}, {.PD,.PG,.VN,.VM}, 0x24C08010, 0xFFE0E010, .SVE, {sets_flags=true, is_64=true} }, + { .SVE_CMPGT, {.P_REG,.P_REG_ZERO,.Z_REG_S,.Z_REG_S}, {.PD,.PG,.VN,.VM}, 0x24808010, 0xFFE0E010, .SVE, {sets_flags=true} }, + { .SVE_CMPHI, {.P_REG,.P_REG_ZERO,.Z_REG_H,.Z_REG_H}, {.PD,.PG,.VN,.VM}, 0x24400010, 0xFFE0E010, .SVE, {sets_flags=true} }, { .SVE_CMPHI, {.P_REG,.P_REG_ZERO,.Z_REG_D,.Z_REG_D}, {.PD,.PG,.VN,.VM}, 0x24C00010, 0xFFE0E010, .SVE, {sets_flags=true, is_64=true} }, { .SVE_CMPHI, {.P_REG,.P_REG_ZERO,.Z_REG_S,.Z_REG_S}, {.PD,.PG,.VN,.VM}, 0x24800010, 0xFFE0E010, .SVE, {sets_flags=true} }, { .SVE_CMPHI, {.P_REG,.P_REG_ZERO,.Z_REG_B,.Z_REG_B}, {.PD,.PG,.VN,.VM}, 0x24000010, 0xFFE0E010, .SVE, {sets_flags=true} }, - { .SVE_CMPHI, {.P_REG,.P_REG_ZERO,.Z_REG_H,.Z_REG_H}, {.PD,.PG,.VN,.VM}, 0x24400010, 0xFFE0E010, .SVE, {sets_flags=true} }, { .SVE_CMPHS, {.P_REG,.P_REG_ZERO,.Z_REG_S,.Z_REG_S}, {.PD,.PG,.VN,.VM}, 0x24800000, 0xFFE0E010, .SVE, {sets_flags=true} }, - { .SVE_CMPHS, {.P_REG,.P_REG_ZERO,.Z_REG_D,.Z_REG_D}, {.PD,.PG,.VN,.VM}, 0x24C00000, 0xFFE0E010, .SVE, {sets_flags=true, is_64=true} }, - { .SVE_CMPHS, {.P_REG,.P_REG_ZERO,.Z_REG_B,.Z_REG_B}, {.PD,.PG,.VN,.VM}, 0x24000000, 0xFFE0E010, .SVE, {sets_flags=true} }, { .SVE_CMPHS, {.P_REG,.P_REG_ZERO,.Z_REG_H,.Z_REG_H}, {.PD,.PG,.VN,.VM}, 0x24400000, 0xFFE0E010, .SVE, {sets_flags=true} }, + { .SVE_CMPHS, {.P_REG,.P_REG_ZERO,.Z_REG_B,.Z_REG_B}, {.PD,.PG,.VN,.VM}, 0x24000000, 0xFFE0E010, .SVE, {sets_flags=true} }, + { .SVE_CMPHS, {.P_REG,.P_REG_ZERO,.Z_REG_D,.Z_REG_D}, {.PD,.PG,.VN,.VM}, 0x24C00000, 0xFFE0E010, .SVE, {sets_flags=true, is_64=true} }, { .SVE_LDR_P, {.P_REG,.MEM,.NONE,.NONE}, {.PD,.SVE_OFFSET_BASE_SI,.NONE,.NONE}, 0x85800000, 0xFFE0E010, .SVE, {} }, { .SVE_STR_P, {.P_REG,.MEM,.NONE,.NONE}, {.PD,.SVE_OFFSET_BASE_SI,.NONE,.NONE}, 0xE5800000, 0xFFE0E010, .SVE, {} }, - { .SVE_MATCH, {.P_REG,.P_REG_ZERO,.Z_REG_H,.Z_REG_H}, {.PD,.PG,.VN,.VM}, 0x45608000, 0xFFE0E010, .SVE2, {sets_flags=true} }, { .SVE_MATCH, {.P_REG,.P_REG_ZERO,.Z_REG_B,.Z_REG_B}, {.PD,.PG,.VN,.VM}, 0x45208000, 0xFFE0E010, .SVE2, {sets_flags=true} }, - { .SVE_NMATCH, {.P_REG,.P_REG_ZERO,.Z_REG_B,.Z_REG_B}, {.PD,.PG,.VN,.VM}, 0x45208010, 0xFFE0E010, .SVE2, {sets_flags=true} }, + { .SVE_MATCH, {.P_REG,.P_REG_ZERO,.Z_REG_H,.Z_REG_H}, {.PD,.PG,.VN,.VM}, 0x45608000, 0xFFE0E010, .SVE2, {sets_flags=true} }, { .SVE_NMATCH, {.P_REG,.P_REG_ZERO,.Z_REG_H,.Z_REG_H}, {.PD,.PG,.VN,.VM}, 0x45608010, 0xFFE0E010, .SVE2, {sets_flags=true} }, + { .SVE_NMATCH, {.P_REG,.P_REG_ZERO,.Z_REG_B,.Z_REG_B}, {.PD,.PG,.VN,.VM}, 0x45208010, 0xFFE0E010, .SVE2, {sets_flags=true} }, { .SVE_ADD_PRED, {.Z_REG_D,.P_REG_MERGE,.Z_REG_D,.Z_REG_D}, {.VD,.PG,.VD,.VM}, 0x04C00000, 0xFFE0E000, .SVE, {is_64=true} }, - { .SVE_ADD_PRED, {.Z_REG_H,.P_REG_MERGE,.Z_REG_H,.Z_REG_H}, {.VD,.PG,.VD,.VM}, 0x04400000, 0xFFE0E000, .SVE, {} }, { .SVE_ADD_PRED, {.Z_REG_B,.P_REG_MERGE,.Z_REG_B,.Z_REG_B}, {.VD,.PG,.VD,.VM}, 0x04000000, 0xFFE0E000, .SVE, {} }, + { .SVE_ADD_PRED, {.Z_REG_H,.P_REG_MERGE,.Z_REG_H,.Z_REG_H}, {.VD,.PG,.VD,.VM}, 0x04400000, 0xFFE0E000, .SVE, {} }, { .SVE_ADD_PRED, {.Z_REG_S,.P_REG_MERGE,.Z_REG_S,.Z_REG_S}, {.VD,.PG,.VD,.VM}, 0x04800000, 0xFFE0E000, .SVE, {} }, - { .SVE_SUB_PRED, {.Z_REG_D,.P_REG_MERGE,.Z_REG_D,.Z_REG_D}, {.VD,.PG,.VD,.VM}, 0x04C10000, 0xFFE0E000, .SVE, {is_64=true} }, - { .SVE_SUB_PRED, {.Z_REG_S,.P_REG_MERGE,.Z_REG_S,.Z_REG_S}, {.VD,.PG,.VD,.VM}, 0x04810000, 0xFFE0E000, .SVE, {} }, - { .SVE_SUB_PRED, {.Z_REG_B,.P_REG_MERGE,.Z_REG_B,.Z_REG_B}, {.VD,.PG,.VD,.VM}, 0x04010000, 0xFFE0E000, .SVE, {} }, { .SVE_SUB_PRED, {.Z_REG_H,.P_REG_MERGE,.Z_REG_H,.Z_REG_H}, {.VD,.PG,.VD,.VM}, 0x04410000, 0xFFE0E000, .SVE, {} }, - { .SVE_SUBR_PRED, {.Z_REG_S,.P_REG_MERGE,.Z_REG_S,.Z_REG_S}, {.VD,.PG,.VD,.VM}, 0x04830000, 0xFFE0E000, .SVE, {} }, - { .SVE_SUBR_PRED, {.Z_REG_H,.P_REG_MERGE,.Z_REG_H,.Z_REG_H}, {.VD,.PG,.VD,.VM}, 0x04430000, 0xFFE0E000, .SVE, {} }, - { .SVE_SUBR_PRED, {.Z_REG_B,.P_REG_MERGE,.Z_REG_B,.Z_REG_B}, {.VD,.PG,.VD,.VM}, 0x04030000, 0xFFE0E000, .SVE, {} }, + { .SVE_SUB_PRED, {.Z_REG_B,.P_REG_MERGE,.Z_REG_B,.Z_REG_B}, {.VD,.PG,.VD,.VM}, 0x04010000, 0xFFE0E000, .SVE, {} }, + { .SVE_SUB_PRED, {.Z_REG_S,.P_REG_MERGE,.Z_REG_S,.Z_REG_S}, {.VD,.PG,.VD,.VM}, 0x04810000, 0xFFE0E000, .SVE, {} }, + { .SVE_SUB_PRED, {.Z_REG_D,.P_REG_MERGE,.Z_REG_D,.Z_REG_D}, {.VD,.PG,.VD,.VM}, 0x04C10000, 0xFFE0E000, .SVE, {is_64=true} }, { .SVE_SUBR_PRED, {.Z_REG_D,.P_REG_MERGE,.Z_REG_D,.Z_REG_D}, {.VD,.PG,.VD,.VM}, 0x04C30000, 0xFFE0E000, .SVE, {is_64=true} }, + { .SVE_SUBR_PRED, {.Z_REG_B,.P_REG_MERGE,.Z_REG_B,.Z_REG_B}, {.VD,.PG,.VD,.VM}, 0x04030000, 0xFFE0E000, .SVE, {} }, + { .SVE_SUBR_PRED, {.Z_REG_H,.P_REG_MERGE,.Z_REG_H,.Z_REG_H}, {.VD,.PG,.VD,.VM}, 0x04430000, 0xFFE0E000, .SVE, {} }, + { .SVE_SUBR_PRED, {.Z_REG_S,.P_REG_MERGE,.Z_REG_S,.Z_REG_S}, {.VD,.PG,.VD,.VM}, 0x04830000, 0xFFE0E000, .SVE, {} }, { .SVE_MUL_PRED, {.Z_REG_H,.P_REG_MERGE,.Z_REG_H,.Z_REG_H}, {.VD,.PG,.VD,.VM}, 0x04500000, 0xFFE0E000, .SVE, {} }, { .SVE_MUL_PRED, {.Z_REG_D,.P_REG_MERGE,.Z_REG_D,.Z_REG_D}, {.VD,.PG,.VD,.VM}, 0x04D00000, 0xFFE0E000, .SVE, {is_64=true} }, - { .SVE_MUL_PRED, {.Z_REG_B,.P_REG_MERGE,.Z_REG_B,.Z_REG_B}, {.VD,.PG,.VD,.VM}, 0x04100000, 0xFFE0E000, .SVE, {} }, { .SVE_MUL_PRED, {.Z_REG_S,.P_REG_MERGE,.Z_REG_S,.Z_REG_S}, {.VD,.PG,.VD,.VM}, 0x04900000, 0xFFE0E000, .SVE, {} }, + { .SVE_MUL_PRED, {.Z_REG_B,.P_REG_MERGE,.Z_REG_B,.Z_REG_B}, {.VD,.PG,.VD,.VM}, 0x04100000, 0xFFE0E000, .SVE, {} }, + { .SVE_SMULH_PRED, {.Z_REG_S,.P_REG_MERGE,.Z_REG_S,.Z_REG_S}, {.VD,.PG,.VD,.VM}, 0x04920000, 0xFFE0E000, .SVE, {} }, { .SVE_SMULH_PRED, {.Z_REG_D,.P_REG_MERGE,.Z_REG_D,.Z_REG_D}, {.VD,.PG,.VD,.VM}, 0x04D20000, 0xFFE0E000, .SVE, {is_64=true} }, { .SVE_SMULH_PRED, {.Z_REG_H,.P_REG_MERGE,.Z_REG_H,.Z_REG_H}, {.VD,.PG,.VD,.VM}, 0x04520000, 0xFFE0E000, .SVE, {} }, - { .SVE_SMULH_PRED, {.Z_REG_S,.P_REG_MERGE,.Z_REG_S,.Z_REG_S}, {.VD,.PG,.VD,.VM}, 0x04920000, 0xFFE0E000, .SVE, {} }, { .SVE_SMULH_PRED, {.Z_REG_B,.P_REG_MERGE,.Z_REG_B,.Z_REG_B}, {.VD,.PG,.VD,.VM}, 0x04120000, 0xFFE0E000, .SVE, {} }, - { .SVE_UMULH_PRED, {.Z_REG_D,.P_REG_MERGE,.Z_REG_D,.Z_REG_D}, {.VD,.PG,.VD,.VM}, 0x04D30000, 0xFFE0E000, .SVE, {is_64=true} }, - { .SVE_UMULH_PRED, {.Z_REG_H,.P_REG_MERGE,.Z_REG_H,.Z_REG_H}, {.VD,.PG,.VD,.VM}, 0x04530000, 0xFFE0E000, .SVE, {} }, { .SVE_UMULH_PRED, {.Z_REG_S,.P_REG_MERGE,.Z_REG_S,.Z_REG_S}, {.VD,.PG,.VD,.VM}, 0x04930000, 0xFFE0E000, .SVE, {} }, + { .SVE_UMULH_PRED, {.Z_REG_H,.P_REG_MERGE,.Z_REG_H,.Z_REG_H}, {.VD,.PG,.VD,.VM}, 0x04530000, 0xFFE0E000, .SVE, {} }, + { .SVE_UMULH_PRED, {.Z_REG_D,.P_REG_MERGE,.Z_REG_D,.Z_REG_D}, {.VD,.PG,.VD,.VM}, 0x04D30000, 0xFFE0E000, .SVE, {is_64=true} }, { .SVE_UMULH_PRED, {.Z_REG_B,.P_REG_MERGE,.Z_REG_B,.Z_REG_B}, {.VD,.PG,.VD,.VM}, 0x04130000, 0xFFE0E000, .SVE, {} }, { .SVE_SDIV_PRED, {.Z_REG_S,.P_REG_MERGE,.Z_REG_S,.Z_REG_S}, {.VD,.PG,.VD,.VM}, 0x04940000, 0xFFE0E000, .SVE, {} }, { .SVE_SDIV_PRED, {.Z_REG_D,.P_REG_MERGE,.Z_REG_D,.Z_REG_D}, {.VD,.PG,.VD,.VM}, 0x04D40000, 0xFFE0E000, .SVE, {is_64=true} }, { .SVE_UDIV_PRED, {.Z_REG_D,.P_REG_MERGE,.Z_REG_D,.Z_REG_D}, {.VD,.PG,.VD,.VM}, 0x04D50000, 0xFFE0E000, .SVE, {is_64=true} }, { .SVE_UDIV_PRED, {.Z_REG_S,.P_REG_MERGE,.Z_REG_S,.Z_REG_S}, {.VD,.PG,.VD,.VM}, 0x04950000, 0xFFE0E000, .SVE, {} }, - { .SVE_SMAX_PRED, {.Z_REG_H,.P_REG_MERGE,.Z_REG_H,.Z_REG_H}, {.VD,.PG,.VD,.VM}, 0x04480000, 0xFFE0E000, .SVE, {} }, - { .SVE_SMAX_PRED, {.Z_REG_D,.P_REG_MERGE,.Z_REG_D,.Z_REG_D}, {.VD,.PG,.VD,.VM}, 0x04C80000, 0xFFE0E000, .SVE, {is_64=true} }, - { .SVE_SMAX_PRED, {.Z_REG_B,.P_REG_MERGE,.Z_REG_B,.Z_REG_B}, {.VD,.PG,.VD,.VM}, 0x04080000, 0xFFE0E000, .SVE, {} }, { .SVE_SMAX_PRED, {.Z_REG_S,.P_REG_MERGE,.Z_REG_S,.Z_REG_S}, {.VD,.PG,.VD,.VM}, 0x04880000, 0xFFE0E000, .SVE, {} }, - { .SVE_UMAX_PRED, {.Z_REG_B,.P_REG_MERGE,.Z_REG_B,.Z_REG_B}, {.VD,.PG,.VD,.VM}, 0x04090000, 0xFFE0E000, .SVE, {} }, - { .SVE_UMAX_PRED, {.Z_REG_D,.P_REG_MERGE,.Z_REG_D,.Z_REG_D}, {.VD,.PG,.VD,.VM}, 0x04C90000, 0xFFE0E000, .SVE, {is_64=true} }, + { .SVE_SMAX_PRED, {.Z_REG_H,.P_REG_MERGE,.Z_REG_H,.Z_REG_H}, {.VD,.PG,.VD,.VM}, 0x04480000, 0xFFE0E000, .SVE, {} }, + { .SVE_SMAX_PRED, {.Z_REG_B,.P_REG_MERGE,.Z_REG_B,.Z_REG_B}, {.VD,.PG,.VD,.VM}, 0x04080000, 0xFFE0E000, .SVE, {} }, + { .SVE_SMAX_PRED, {.Z_REG_D,.P_REG_MERGE,.Z_REG_D,.Z_REG_D}, {.VD,.PG,.VD,.VM}, 0x04C80000, 0xFFE0E000, .SVE, {is_64=true} }, { .SVE_UMAX_PRED, {.Z_REG_S,.P_REG_MERGE,.Z_REG_S,.Z_REG_S}, {.VD,.PG,.VD,.VM}, 0x04890000, 0xFFE0E000, .SVE, {} }, + { .SVE_UMAX_PRED, {.Z_REG_D,.P_REG_MERGE,.Z_REG_D,.Z_REG_D}, {.VD,.PG,.VD,.VM}, 0x04C90000, 0xFFE0E000, .SVE, {is_64=true} }, + { .SVE_UMAX_PRED, {.Z_REG_B,.P_REG_MERGE,.Z_REG_B,.Z_REG_B}, {.VD,.PG,.VD,.VM}, 0x04090000, 0xFFE0E000, .SVE, {} }, { .SVE_UMAX_PRED, {.Z_REG_H,.P_REG_MERGE,.Z_REG_H,.Z_REG_H}, {.VD,.PG,.VD,.VM}, 0x04490000, 0xFFE0E000, .SVE, {} }, { .SVE_SMIN_PRED, {.Z_REG_S,.P_REG_MERGE,.Z_REG_S,.Z_REG_S}, {.VD,.PG,.VD,.VM}, 0x048A0000, 0xFFE0E000, .SVE, {} }, { .SVE_SMIN_PRED, {.Z_REG_H,.P_REG_MERGE,.Z_REG_H,.Z_REG_H}, {.VD,.PG,.VD,.VM}, 0x044A0000, 0xFFE0E000, .SVE, {} }, { .SVE_SMIN_PRED, {.Z_REG_B,.P_REG_MERGE,.Z_REG_B,.Z_REG_B}, {.VD,.PG,.VD,.VM}, 0x040A0000, 0xFFE0E000, .SVE, {} }, { .SVE_SMIN_PRED, {.Z_REG_D,.P_REG_MERGE,.Z_REG_D,.Z_REG_D}, {.VD,.PG,.VD,.VM}, 0x04CA0000, 0xFFE0E000, .SVE, {is_64=true} }, - { .SVE_UMIN_PRED, {.Z_REG_S,.P_REG_MERGE,.Z_REG_S,.Z_REG_S}, {.VD,.PG,.VD,.VM}, 0x048B0000, 0xFFE0E000, .SVE, {} }, - { .SVE_UMIN_PRED, {.Z_REG_B,.P_REG_MERGE,.Z_REG_B,.Z_REG_B}, {.VD,.PG,.VD,.VM}, 0x040B0000, 0xFFE0E000, .SVE, {} }, { .SVE_UMIN_PRED, {.Z_REG_D,.P_REG_MERGE,.Z_REG_D,.Z_REG_D}, {.VD,.PG,.VD,.VM}, 0x04CB0000, 0xFFE0E000, .SVE, {is_64=true} }, { .SVE_UMIN_PRED, {.Z_REG_H,.P_REG_MERGE,.Z_REG_H,.Z_REG_H}, {.VD,.PG,.VD,.VM}, 0x044B0000, 0xFFE0E000, .SVE, {} }, + { .SVE_UMIN_PRED, {.Z_REG_S,.P_REG_MERGE,.Z_REG_S,.Z_REG_S}, {.VD,.PG,.VD,.VM}, 0x048B0000, 0xFFE0E000, .SVE, {} }, + { .SVE_UMIN_PRED, {.Z_REG_B,.P_REG_MERGE,.Z_REG_B,.Z_REG_B}, {.VD,.PG,.VD,.VM}, 0x040B0000, 0xFFE0E000, .SVE, {} }, { .SVE_SABD_PRED, {.Z_REG_H,.P_REG_MERGE,.Z_REG_H,.Z_REG_H}, {.VD,.PG,.VD,.VM}, 0x044C0000, 0xFFE0E000, .SVE, {} }, - { .SVE_SABD_PRED, {.Z_REG_D,.P_REG_MERGE,.Z_REG_D,.Z_REG_D}, {.VD,.PG,.VD,.VM}, 0x04CC0000, 0xFFE0E000, .SVE, {is_64=true} }, { .SVE_SABD_PRED, {.Z_REG_B,.P_REG_MERGE,.Z_REG_B,.Z_REG_B}, {.VD,.PG,.VD,.VM}, 0x040C0000, 0xFFE0E000, .SVE, {} }, + { .SVE_SABD_PRED, {.Z_REG_D,.P_REG_MERGE,.Z_REG_D,.Z_REG_D}, {.VD,.PG,.VD,.VM}, 0x04CC0000, 0xFFE0E000, .SVE, {is_64=true} }, { .SVE_SABD_PRED, {.Z_REG_S,.P_REG_MERGE,.Z_REG_S,.Z_REG_S}, {.VD,.PG,.VD,.VM}, 0x048C0000, 0xFFE0E000, .SVE, {} }, - { .SVE_UABD_PRED, {.Z_REG_H,.P_REG_MERGE,.Z_REG_H,.Z_REG_H}, {.VD,.PG,.VD,.VM}, 0x044D0000, 0xFFE0E000, .SVE, {} }, - { .SVE_UABD_PRED, {.Z_REG_S,.P_REG_MERGE,.Z_REG_S,.Z_REG_S}, {.VD,.PG,.VD,.VM}, 0x048D0000, 0xFFE0E000, .SVE, {} }, - { .SVE_UABD_PRED, {.Z_REG_B,.P_REG_MERGE,.Z_REG_B,.Z_REG_B}, {.VD,.PG,.VD,.VM}, 0x040D0000, 0xFFE0E000, .SVE, {} }, { .SVE_UABD_PRED, {.Z_REG_D,.P_REG_MERGE,.Z_REG_D,.Z_REG_D}, {.VD,.PG,.VD,.VM}, 0x04CD0000, 0xFFE0E000, .SVE, {is_64=true} }, + { .SVE_UABD_PRED, {.Z_REG_B,.P_REG_MERGE,.Z_REG_B,.Z_REG_B}, {.VD,.PG,.VD,.VM}, 0x040D0000, 0xFFE0E000, .SVE, {} }, + { .SVE_UABD_PRED, {.Z_REG_S,.P_REG_MERGE,.Z_REG_S,.Z_REG_S}, {.VD,.PG,.VD,.VM}, 0x048D0000, 0xFFE0E000, .SVE, {} }, + { .SVE_UABD_PRED, {.Z_REG_H,.P_REG_MERGE,.Z_REG_H,.Z_REG_H}, {.VD,.PG,.VD,.VM}, 0x044D0000, 0xFFE0E000, .SVE, {} }, + { .SVE_ASR_PRED, {.Z_REG_S,.P_REG_MERGE,.Z_REG_S,.Z_REG_S}, {.VD,.PG,.VD,.VM}, 0x04908000, 0xFFE0E000, .SVE, {} }, + { .SVE_ASR_PRED, {.Z_REG_D,.P_REG_MERGE,.Z_REG_D,.Z_REG_D}, {.VD,.PG,.VD,.VM}, 0x04D08000, 0xFFE0E000, .SVE, {is_64=true} }, { .SVE_ASR_PRED, {.Z_REG_B,.P_REG_MERGE,.Z_REG_B,.Z_REG_B}, {.VD,.PG,.VD,.VM}, 0x04108000, 0xFFE0E000, .SVE, {} }, { .SVE_ASR_PRED, {.Z_REG_H,.P_REG_MERGE,.Z_REG_H,.Z_REG_H}, {.VD,.PG,.VD,.VM}, 0x04508000, 0xFFE0E000, .SVE, {} }, - { .SVE_ASR_PRED, {.Z_REG_D,.P_REG_MERGE,.Z_REG_D,.Z_REG_D}, {.VD,.PG,.VD,.VM}, 0x04D08000, 0xFFE0E000, .SVE, {is_64=true} }, - { .SVE_ASR_PRED, {.Z_REG_S,.P_REG_MERGE,.Z_REG_S,.Z_REG_S}, {.VD,.PG,.VD,.VM}, 0x04908000, 0xFFE0E000, .SVE, {} }, - { .SVE_LSL_PRED, {.Z_REG_D,.P_REG_MERGE,.Z_REG_D,.Z_REG_D}, {.VD,.PG,.VD,.VM}, 0x04D38000, 0xFFE0E000, .SVE, {is_64=true} }, { .SVE_LSL_PRED, {.Z_REG_S,.P_REG_MERGE,.Z_REG_S,.Z_REG_S}, {.VD,.PG,.VD,.VM}, 0x04938000, 0xFFE0E000, .SVE, {} }, - { .SVE_LSL_PRED, {.Z_REG_H,.P_REG_MERGE,.Z_REG_H,.Z_REG_H}, {.VD,.PG,.VD,.VM}, 0x04538000, 0xFFE0E000, .SVE, {} }, { .SVE_LSL_PRED, {.Z_REG_B,.P_REG_MERGE,.Z_REG_B,.Z_REG_B}, {.VD,.PG,.VD,.VM}, 0x04138000, 0xFFE0E000, .SVE, {} }, - { .SVE_LSR_PRED, {.Z_REG_H,.P_REG_MERGE,.Z_REG_H,.Z_REG_H}, {.VD,.PG,.VD,.VM}, 0x04518000, 0xFFE0E000, .SVE, {} }, + { .SVE_LSL_PRED, {.Z_REG_D,.P_REG_MERGE,.Z_REG_D,.Z_REG_D}, {.VD,.PG,.VD,.VM}, 0x04D38000, 0xFFE0E000, .SVE, {is_64=true} }, + { .SVE_LSL_PRED, {.Z_REG_H,.P_REG_MERGE,.Z_REG_H,.Z_REG_H}, {.VD,.PG,.VD,.VM}, 0x04538000, 0xFFE0E000, .SVE, {} }, { .SVE_LSR_PRED, {.Z_REG_S,.P_REG_MERGE,.Z_REG_S,.Z_REG_S}, {.VD,.PG,.VD,.VM}, 0x04918000, 0xFFE0E000, .SVE, {} }, - { .SVE_LSR_PRED, {.Z_REG_D,.P_REG_MERGE,.Z_REG_D,.Z_REG_D}, {.VD,.PG,.VD,.VM}, 0x04D18000, 0xFFE0E000, .SVE, {is_64=true} }, + { .SVE_LSR_PRED, {.Z_REG_H,.P_REG_MERGE,.Z_REG_H,.Z_REG_H}, {.VD,.PG,.VD,.VM}, 0x04518000, 0xFFE0E000, .SVE, {} }, { .SVE_LSR_PRED, {.Z_REG_B,.P_REG_MERGE,.Z_REG_B,.Z_REG_B}, {.VD,.PG,.VD,.VM}, 0x04118000, 0xFFE0E000, .SVE, {} }, - { .SVE_ABS_PRED, {.Z_REG_H,.P_REG_MERGE,.Z_REG_H,.NONE}, {.VD,.PG,.VN,.NONE}, 0x0456A000, 0xFFE0E000, .SVE, {} }, - { .SVE_ABS_PRED, {.Z_REG_S,.P_REG_MERGE,.Z_REG_S,.NONE}, {.VD,.PG,.VN,.NONE}, 0x0496A000, 0xFFE0E000, .SVE, {} }, + { .SVE_LSR_PRED, {.Z_REG_D,.P_REG_MERGE,.Z_REG_D,.Z_REG_D}, {.VD,.PG,.VD,.VM}, 0x04D18000, 0xFFE0E000, .SVE, {is_64=true} }, { .SVE_ABS_PRED, {.Z_REG_D,.P_REG_MERGE,.Z_REG_D,.NONE}, {.VD,.PG,.VN,.NONE}, 0x04D6A000, 0xFFE0E000, .SVE, {is_64=true} }, + { .SVE_ABS_PRED, {.Z_REG_S,.P_REG_MERGE,.Z_REG_S,.NONE}, {.VD,.PG,.VN,.NONE}, 0x0496A000, 0xFFE0E000, .SVE, {} }, { .SVE_ABS_PRED, {.Z_REG_B,.P_REG_MERGE,.Z_REG_B,.NONE}, {.VD,.PG,.VN,.NONE}, 0x0416A000, 0xFFE0E000, .SVE, {} }, - { .SVE_NEG_PRED, {.Z_REG_B,.P_REG_MERGE,.Z_REG_B,.NONE}, {.VD,.PG,.VN,.NONE}, 0x0417A000, 0xFFE0E000, .SVE, {} }, + { .SVE_ABS_PRED, {.Z_REG_H,.P_REG_MERGE,.Z_REG_H,.NONE}, {.VD,.PG,.VN,.NONE}, 0x0456A000, 0xFFE0E000, .SVE, {} }, + { .SVE_NEG_PRED, {.Z_REG_H,.P_REG_MERGE,.Z_REG_H,.NONE}, {.VD,.PG,.VN,.NONE}, 0x0457A000, 0xFFE0E000, .SVE, {} }, { .SVE_NEG_PRED, {.Z_REG_D,.P_REG_MERGE,.Z_REG_D,.NONE}, {.VD,.PG,.VN,.NONE}, 0x04D7A000, 0xFFE0E000, .SVE, {is_64=true} }, { .SVE_NEG_PRED, {.Z_REG_S,.P_REG_MERGE,.Z_REG_S,.NONE}, {.VD,.PG,.VN,.NONE}, 0x0497A000, 0xFFE0E000, .SVE, {} }, - { .SVE_NEG_PRED, {.Z_REG_H,.P_REG_MERGE,.Z_REG_H,.NONE}, {.VD,.PG,.VN,.NONE}, 0x0457A000, 0xFFE0E000, .SVE, {} }, - { .SVE_CLS_PRED, {.Z_REG_B,.P_REG_MERGE,.Z_REG_B,.NONE}, {.VD,.PG,.VN,.NONE}, 0x0418A000, 0xFFE0E000, .SVE, {} }, - { .SVE_CLS_PRED, {.Z_REG_D,.P_REG_MERGE,.Z_REG_D,.NONE}, {.VD,.PG,.VN,.NONE}, 0x04D8A000, 0xFFE0E000, .SVE, {is_64=true} }, + { .SVE_NEG_PRED, {.Z_REG_B,.P_REG_MERGE,.Z_REG_B,.NONE}, {.VD,.PG,.VN,.NONE}, 0x0417A000, 0xFFE0E000, .SVE, {} }, { .SVE_CLS_PRED, {.Z_REG_S,.P_REG_MERGE,.Z_REG_S,.NONE}, {.VD,.PG,.VN,.NONE}, 0x0498A000, 0xFFE0E000, .SVE, {} }, + { .SVE_CLS_PRED, {.Z_REG_B,.P_REG_MERGE,.Z_REG_B,.NONE}, {.VD,.PG,.VN,.NONE}, 0x0418A000, 0xFFE0E000, .SVE, {} }, { .SVE_CLS_PRED, {.Z_REG_H,.P_REG_MERGE,.Z_REG_H,.NONE}, {.VD,.PG,.VN,.NONE}, 0x0458A000, 0xFFE0E000, .SVE, {} }, - { .SVE_CLZ_PRED, {.Z_REG_H,.P_REG_MERGE,.Z_REG_H,.NONE}, {.VD,.PG,.VN,.NONE}, 0x0459A000, 0xFFE0E000, .SVE, {} }, - { .SVE_CLZ_PRED, {.Z_REG_B,.P_REG_MERGE,.Z_REG_B,.NONE}, {.VD,.PG,.VN,.NONE}, 0x0419A000, 0xFFE0E000, .SVE, {} }, - { .SVE_CLZ_PRED, {.Z_REG_D,.P_REG_MERGE,.Z_REG_D,.NONE}, {.VD,.PG,.VN,.NONE}, 0x04D9A000, 0xFFE0E000, .SVE, {is_64=true} }, + { .SVE_CLS_PRED, {.Z_REG_D,.P_REG_MERGE,.Z_REG_D,.NONE}, {.VD,.PG,.VN,.NONE}, 0x04D8A000, 0xFFE0E000, .SVE, {is_64=true} }, { .SVE_CLZ_PRED, {.Z_REG_S,.P_REG_MERGE,.Z_REG_S,.NONE}, {.VD,.PG,.VN,.NONE}, 0x0499A000, 0xFFE0E000, .SVE, {} }, - { .SVE_CNT_PRED, {.Z_REG_S,.P_REG_MERGE,.Z_REG_S,.NONE}, {.VD,.PG,.VN,.NONE}, 0x049AA000, 0xFFE0E000, .SVE, {} }, - { .SVE_CNT_PRED, {.Z_REG_B,.P_REG_MERGE,.Z_REG_B,.NONE}, {.VD,.PG,.VN,.NONE}, 0x041AA000, 0xFFE0E000, .SVE, {} }, - { .SVE_CNT_PRED, {.Z_REG_D,.P_REG_MERGE,.Z_REG_D,.NONE}, {.VD,.PG,.VN,.NONE}, 0x04DAA000, 0xFFE0E000, .SVE, {is_64=true} }, + { .SVE_CLZ_PRED, {.Z_REG_B,.P_REG_MERGE,.Z_REG_B,.NONE}, {.VD,.PG,.VN,.NONE}, 0x0419A000, 0xFFE0E000, .SVE, {} }, + { .SVE_CLZ_PRED, {.Z_REG_H,.P_REG_MERGE,.Z_REG_H,.NONE}, {.VD,.PG,.VN,.NONE}, 0x0459A000, 0xFFE0E000, .SVE, {} }, + { .SVE_CLZ_PRED, {.Z_REG_D,.P_REG_MERGE,.Z_REG_D,.NONE}, {.VD,.PG,.VN,.NONE}, 0x04D9A000, 0xFFE0E000, .SVE, {is_64=true} }, { .SVE_CNT_PRED, {.Z_REG_H,.P_REG_MERGE,.Z_REG_H,.NONE}, {.VD,.PG,.VN,.NONE}, 0x045AA000, 0xFFE0E000, .SVE, {} }, - { .SVE_FADD_PRED, {.Z_REG_H,.P_REG_MERGE,.Z_REG_H,.Z_REG_H}, {.VD,.PG,.VD,.VM}, 0x65408000, 0xFFE0E000, .SVE, {} }, + { .SVE_CNT_PRED, {.Z_REG_B,.P_REG_MERGE,.Z_REG_B,.NONE}, {.VD,.PG,.VN,.NONE}, 0x041AA000, 0xFFE0E000, .SVE, {} }, + { .SVE_CNT_PRED, {.Z_REG_S,.P_REG_MERGE,.Z_REG_S,.NONE}, {.VD,.PG,.VN,.NONE}, 0x049AA000, 0xFFE0E000, .SVE, {} }, + { .SVE_CNT_PRED, {.Z_REG_D,.P_REG_MERGE,.Z_REG_D,.NONE}, {.VD,.PG,.VN,.NONE}, 0x04DAA000, 0xFFE0E000, .SVE, {is_64=true} }, { .SVE_FADD_PRED, {.Z_REG_D,.P_REG_MERGE,.Z_REG_D,.Z_REG_D}, {.VD,.PG,.VD,.VM}, 0x65C08000, 0xFFE0E000, .SVE, {is_64=true} }, + { .SVE_FADD_PRED, {.Z_REG_H,.P_REG_MERGE,.Z_REG_H,.Z_REG_H}, {.VD,.PG,.VD,.VM}, 0x65408000, 0xFFE0E000, .SVE, {} }, { .SVE_FADD_PRED, {.Z_REG_S,.P_REG_MERGE,.Z_REG_S,.Z_REG_S}, {.VD,.PG,.VD,.VM}, 0x65808000, 0xFFE0E000, .SVE, {} }, - { .SVE_FSUB_PRED, {.Z_REG_D,.P_REG_MERGE,.Z_REG_D,.Z_REG_D}, {.VD,.PG,.VD,.VM}, 0x65C18000, 0xFFE0E000, .SVE, {is_64=true} }, - { .SVE_FSUB_PRED, {.Z_REG_S,.P_REG_MERGE,.Z_REG_S,.Z_REG_S}, {.VD,.PG,.VD,.VM}, 0x65818000, 0xFFE0E000, .SVE, {} }, { .SVE_FSUB_PRED, {.Z_REG_H,.P_REG_MERGE,.Z_REG_H,.Z_REG_H}, {.VD,.PG,.VD,.VM}, 0x65418000, 0xFFE0E000, .SVE, {} }, + { .SVE_FSUB_PRED, {.Z_REG_S,.P_REG_MERGE,.Z_REG_S,.Z_REG_S}, {.VD,.PG,.VD,.VM}, 0x65818000, 0xFFE0E000, .SVE, {} }, + { .SVE_FSUB_PRED, {.Z_REG_D,.P_REG_MERGE,.Z_REG_D,.Z_REG_D}, {.VD,.PG,.VD,.VM}, 0x65C18000, 0xFFE0E000, .SVE, {is_64=true} }, + { .SVE_FMUL_PRED, {.Z_REG_S,.P_REG_MERGE,.Z_REG_S,.Z_REG_S}, {.VD,.PG,.VD,.VM}, 0x65828000, 0xFFE0E000, .SVE, {} }, { .SVE_FMUL_PRED, {.Z_REG_H,.P_REG_MERGE,.Z_REG_H,.Z_REG_H}, {.VD,.PG,.VD,.VM}, 0x65428000, 0xFFE0E000, .SVE, {} }, { .SVE_FMUL_PRED, {.Z_REG_D,.P_REG_MERGE,.Z_REG_D,.Z_REG_D}, {.VD,.PG,.VD,.VM}, 0x65C28000, 0xFFE0E000, .SVE, {is_64=true} }, - { .SVE_FMUL_PRED, {.Z_REG_S,.P_REG_MERGE,.Z_REG_S,.Z_REG_S}, {.VD,.PG,.VD,.VM}, 0x65828000, 0xFFE0E000, .SVE, {} }, { .SVE_FDIV_PRED, {.Z_REG_D,.P_REG_MERGE,.Z_REG_D,.Z_REG_D}, {.VD,.PG,.VD,.VM}, 0x65CD8000, 0xFFE0E000, .SVE, {is_64=true} }, { .SVE_FDIV_PRED, {.Z_REG_S,.P_REG_MERGE,.Z_REG_S,.Z_REG_S}, {.VD,.PG,.VD,.VM}, 0x658D8000, 0xFFE0E000, .SVE, {} }, { .SVE_FDIV_PRED, {.Z_REG_H,.P_REG_MERGE,.Z_REG_H,.Z_REG_H}, {.VD,.PG,.VD,.VM}, 0x654D8000, 0xFFE0E000, .SVE, {} }, - { .SVE_FMAX_PRED, {.Z_REG_D,.P_REG_MERGE,.Z_REG_D,.Z_REG_D}, {.VD,.PG,.VD,.VM}, 0x65C68000, 0xFFE0E000, .SVE, {is_64=true} }, { .SVE_FMAX_PRED, {.Z_REG_H,.P_REG_MERGE,.Z_REG_H,.Z_REG_H}, {.VD,.PG,.VD,.VM}, 0x65468000, 0xFFE0E000, .SVE, {} }, { .SVE_FMAX_PRED, {.Z_REG_S,.P_REG_MERGE,.Z_REG_S,.Z_REG_S}, {.VD,.PG,.VD,.VM}, 0x65868000, 0xFFE0E000, .SVE, {} }, + { .SVE_FMAX_PRED, {.Z_REG_D,.P_REG_MERGE,.Z_REG_D,.Z_REG_D}, {.VD,.PG,.VD,.VM}, 0x65C68000, 0xFFE0E000, .SVE, {is_64=true} }, { .SVE_FMIN_PRED, {.Z_REG_H,.P_REG_MERGE,.Z_REG_H,.Z_REG_H}, {.VD,.PG,.VD,.VM}, 0x65478000, 0xFFE0E000, .SVE, {} }, { .SVE_FMIN_PRED, {.Z_REG_S,.P_REG_MERGE,.Z_REG_S,.Z_REG_S}, {.VD,.PG,.VD,.VM}, 0x65878000, 0xFFE0E000, .SVE, {} }, { .SVE_FMIN_PRED, {.Z_REG_D,.P_REG_MERGE,.Z_REG_D,.Z_REG_D}, {.VD,.PG,.VD,.VM}, 0x65C78000, 0xFFE0E000, .SVE, {is_64=true} }, { .SVE_FMAXNM_PRED, {.Z_REG_H,.P_REG_MERGE,.Z_REG_H,.Z_REG_H}, {.VD,.PG,.VD,.VM}, 0x65448000, 0xFFE0E000, .SVE, {} }, - { .SVE_FMAXNM_PRED, {.Z_REG_D,.P_REG_MERGE,.Z_REG_D,.Z_REG_D}, {.VD,.PG,.VD,.VM}, 0x65C48000, 0xFFE0E000, .SVE, {is_64=true} }, { .SVE_FMAXNM_PRED, {.Z_REG_S,.P_REG_MERGE,.Z_REG_S,.Z_REG_S}, {.VD,.PG,.VD,.VM}, 0x65848000, 0xFFE0E000, .SVE, {} }, - { .SVE_FMINNM_PRED, {.Z_REG_D,.P_REG_MERGE,.Z_REG_D,.Z_REG_D}, {.VD,.PG,.VD,.VM}, 0x65C58000, 0xFFE0E000, .SVE, {is_64=true} }, + { .SVE_FMAXNM_PRED, {.Z_REG_D,.P_REG_MERGE,.Z_REG_D,.Z_REG_D}, {.VD,.PG,.VD,.VM}, 0x65C48000, 0xFFE0E000, .SVE, {is_64=true} }, { .SVE_FMINNM_PRED, {.Z_REG_H,.P_REG_MERGE,.Z_REG_H,.Z_REG_H}, {.VD,.PG,.VD,.VM}, 0x65458000, 0xFFE0E000, .SVE, {} }, + { .SVE_FMINNM_PRED, {.Z_REG_D,.P_REG_MERGE,.Z_REG_D,.Z_REG_D}, {.VD,.PG,.VD,.VM}, 0x65C58000, 0xFFE0E000, .SVE, {is_64=true} }, { .SVE_FMINNM_PRED, {.Z_REG_S,.P_REG_MERGE,.Z_REG_S,.Z_REG_S}, {.VD,.PG,.VD,.VM}, 0x65858000, 0xFFE0E000, .SVE, {} }, + { .SVE_FABS_Z, {.Z_REG_D,.P_REG_MERGE,.Z_REG_D,.NONE}, {.VD,.PG,.VN,.NONE}, 0x04DCA000, 0xFFE0E000, .SVE, {is_64=true} }, { .SVE_FABS_Z, {.Z_REG_H,.P_REG_MERGE,.Z_REG_H,.NONE}, {.VD,.PG,.VN,.NONE}, 0x045CA000, 0xFFE0E000, .SVE, {} }, { .SVE_FABS_Z, {.Z_REG_S,.P_REG_MERGE,.Z_REG_S,.NONE}, {.VD,.PG,.VN,.NONE}, 0x049CA000, 0xFFE0E000, .SVE, {} }, - { .SVE_FABS_Z, {.Z_REG_D,.P_REG_MERGE,.Z_REG_D,.NONE}, {.VD,.PG,.VN,.NONE}, 0x04DCA000, 0xFFE0E000, .SVE, {is_64=true} }, - { .SVE_FNEG_Z, {.Z_REG_H,.P_REG_MERGE,.Z_REG_H,.NONE}, {.VD,.PG,.VN,.NONE}, 0x045DA000, 0xFFE0E000, .SVE, {} }, - { .SVE_FNEG_Z, {.Z_REG_S,.P_REG_MERGE,.Z_REG_S,.NONE}, {.VD,.PG,.VN,.NONE}, 0x049DA000, 0xFFE0E000, .SVE, {} }, { .SVE_FNEG_Z, {.Z_REG_D,.P_REG_MERGE,.Z_REG_D,.NONE}, {.VD,.PG,.VN,.NONE}, 0x04DDA000, 0xFFE0E000, .SVE, {is_64=true} }, - { .SVE_FSQRT_Z, {.Z_REG_D,.P_REG_MERGE,.Z_REG_D,.NONE}, {.VD,.PG,.VN,.NONE}, 0x65CDA000, 0xFFE0E000, .SVE, {is_64=true} }, + { .SVE_FNEG_Z, {.Z_REG_S,.P_REG_MERGE,.Z_REG_S,.NONE}, {.VD,.PG,.VN,.NONE}, 0x049DA000, 0xFFE0E000, .SVE, {} }, + { .SVE_FNEG_Z, {.Z_REG_H,.P_REG_MERGE,.Z_REG_H,.NONE}, {.VD,.PG,.VN,.NONE}, 0x045DA000, 0xFFE0E000, .SVE, {} }, { .SVE_FSQRT_Z, {.Z_REG_H,.P_REG_MERGE,.Z_REG_H,.NONE}, {.VD,.PG,.VN,.NONE}, 0x654DA000, 0xFFE0E000, .SVE, {} }, { .SVE_FSQRT_Z, {.Z_REG_S,.P_REG_MERGE,.Z_REG_S,.NONE}, {.VD,.PG,.VN,.NONE}, 0x658DA000, 0xFFE0E000, .SVE, {} }, - { .SVE_FMLA, {.Z_REG_D,.P_REG_MERGE,.Z_REG_D,.Z_REG_D}, {.VD,.PG,.VN,.VM}, 0x65E00000, 0xFFE0E000, .SVE, {is_64=true} }, + { .SVE_FSQRT_Z, {.Z_REG_D,.P_REG_MERGE,.Z_REG_D,.NONE}, {.VD,.PG,.VN,.NONE}, 0x65CDA000, 0xFFE0E000, .SVE, {is_64=true} }, { .SVE_FMLA, {.Z_REG_H,.P_REG_MERGE,.Z_REG_H,.Z_REG_H}, {.VD,.PG,.VN,.VM}, 0x65600000, 0xFFE0E000, .SVE, {} }, { .SVE_FMLA, {.Z_REG_S,.P_REG_MERGE,.Z_REG_S,.Z_REG_S}, {.VD,.PG,.VN,.VM}, 0x65A00000, 0xFFE0E000, .SVE, {} }, + { .SVE_FMLA, {.Z_REG_D,.P_REG_MERGE,.Z_REG_D,.Z_REG_D}, {.VD,.PG,.VN,.VM}, 0x65E00000, 0xFFE0E000, .SVE, {is_64=true} }, + { .SVE_FMLS, {.Z_REG_H,.P_REG_MERGE,.Z_REG_H,.Z_REG_H}, {.VD,.PG,.VN,.VM}, 0x65602000, 0xFFE0E000, .SVE, {} }, { .SVE_FMLS, {.Z_REG_D,.P_REG_MERGE,.Z_REG_D,.Z_REG_D}, {.VD,.PG,.VN,.VM}, 0x65E02000, 0xFFE0E000, .SVE, {is_64=true} }, { .SVE_FMLS, {.Z_REG_S,.P_REG_MERGE,.Z_REG_S,.Z_REG_S}, {.VD,.PG,.VN,.VM}, 0x65A02000, 0xFFE0E000, .SVE, {} }, - { .SVE_FMLS, {.Z_REG_H,.P_REG_MERGE,.Z_REG_H,.Z_REG_H}, {.VD,.PG,.VN,.VM}, 0x65602000, 0xFFE0E000, .SVE, {} }, - { .SVE_FNMLA, {.Z_REG_S,.P_REG_MERGE,.Z_REG_S,.Z_REG_S}, {.VD,.PG,.VN,.VM}, 0x65A04000, 0xFFE0E000, .SVE, {} }, - { .SVE_FNMLA, {.Z_REG_H,.P_REG_MERGE,.Z_REG_H,.Z_REG_H}, {.VD,.PG,.VN,.VM}, 0x65604000, 0xFFE0E000, .SVE, {} }, { .SVE_FNMLA, {.Z_REG_D,.P_REG_MERGE,.Z_REG_D,.Z_REG_D}, {.VD,.PG,.VN,.VM}, 0x65E04000, 0xFFE0E000, .SVE, {is_64=true} }, + { .SVE_FNMLA, {.Z_REG_H,.P_REG_MERGE,.Z_REG_H,.Z_REG_H}, {.VD,.PG,.VN,.VM}, 0x65604000, 0xFFE0E000, .SVE, {} }, + { .SVE_FNMLA, {.Z_REG_S,.P_REG_MERGE,.Z_REG_S,.Z_REG_S}, {.VD,.PG,.VN,.VM}, 0x65A04000, 0xFFE0E000, .SVE, {} }, { .SVE_FNMLS, {.Z_REG_S,.P_REG_MERGE,.Z_REG_S,.Z_REG_S}, {.VD,.PG,.VN,.VM}, 0x65A06000, 0xFFE0E000, .SVE, {} }, { .SVE_FNMLS, {.Z_REG_D,.P_REG_MERGE,.Z_REG_D,.Z_REG_D}, {.VD,.PG,.VN,.VM}, 0x65E06000, 0xFFE0E000, .SVE, {is_64=true} }, { .SVE_FNMLS, {.Z_REG_H,.P_REG_MERGE,.Z_REG_H,.Z_REG_H}, {.VD,.PG,.VN,.VM}, 0x65606000, 0xFFE0E000, .SVE, {} }, - { .SVE_CMPEQ, {.P_REG,.P_REG_ZERO,.Z_REG_H,.Z_REG_H}, {.PD,.PG,.VN,.VM}, 0x2440A000, 0xFFE0E000, .SVE, {sets_flags=true} }, { .SVE_CMPEQ, {.P_REG,.P_REG_ZERO,.Z_REG_S,.Z_REG_S}, {.PD,.PG,.VN,.VM}, 0x2480A000, 0xFFE0E000, .SVE, {sets_flags=true} }, { .SVE_CMPEQ, {.P_REG,.P_REG_ZERO,.Z_REG_D,.Z_REG_D}, {.PD,.PG,.VN,.VM}, 0x24C0A000, 0xFFE0E000, .SVE, {sets_flags=true, is_64=true} }, { .SVE_CMPEQ, {.P_REG,.P_REG_ZERO,.Z_REG_B,.Z_REG_B}, {.PD,.PG,.VN,.VM}, 0x2400A000, 0xFFE0E000, .SVE, {sets_flags=true} }, + { .SVE_CMPEQ, {.P_REG,.P_REG_ZERO,.Z_REG_H,.Z_REG_H}, {.PD,.PG,.VN,.VM}, 0x2440A000, 0xFFE0E000, .SVE, {sets_flags=true} }, { .SVE_LD1B, {.Z_REG_B,.P_REG_ZERO,.MEM,.NONE}, {.VD,.PG,.SVE_OFFSET_BASE_SS,.NONE}, 0xA4004000, 0xFFE0E000, .SVE, {} }, { .SVE_LD1H, {.Z_REG_H,.P_REG_ZERO,.MEM,.NONE}, {.VD,.PG,.SVE_OFFSET_BASE_SS,.NONE}, 0xA4A04000, 0xFFE0E000, .SVE, {} }, { .SVE_LD1W, {.Z_REG_S,.P_REG_ZERO,.MEM,.NONE}, {.VD,.PG,.SVE_OFFSET_BASE_SS,.NONE}, 0xA5404000, 0xFFE0E000, .SVE, {} }, @@ -422,8 +422,8 @@ DECODE_ENTRIES := [1892]lib.Decode_Entry{ { .SVE_LDFF1H, {.Z_REG_H,.P_REG_ZERO,.MEM,.NONE}, {.VD,.PG,.SVE_OFFSET_BASE_SS,.NONE}, 0xA4A06000, 0xFFE0E000, .SVE, {} }, { .SVE_LDFF1W, {.Z_REG_S,.P_REG_ZERO,.MEM,.NONE}, {.VD,.PG,.SVE_OFFSET_BASE_SS,.NONE}, 0xA5406000, 0xFFE0E000, .SVE, {} }, { .SVE_LDFF1D, {.Z_REG_D,.P_REG_ZERO,.MEM,.NONE}, {.VD,.PG,.SVE_OFFSET_BASE_SS,.NONE}, 0xA5E06000, 0xFFE0E000, .SVE, {is_64=true} }, - { .SVE_HISTCNT, {.Z_REG_S,.P_REG_ZERO,.Z_REG_S,.Z_REG_S}, {.VD,.PG,.VN,.VM}, 0x45A0C000, 0xFFE0E000, .SVE2, {} }, { .SVE_HISTCNT, {.Z_REG_D,.P_REG_ZERO,.Z_REG_D,.Z_REG_D}, {.VD,.PG,.VN,.VM}, 0x45E0C000, 0xFFE0E000, .SVE2, {is_64=true} }, + { .SVE_HISTCNT, {.Z_REG_S,.P_REG_ZERO,.Z_REG_S,.Z_REG_S}, {.VD,.PG,.VN,.VM}, 0x45A0C000, 0xFFE0E000, .SVE2, {} }, { .SVE_PRFB, {.IMM_4,.P_REG_GOV,.MEM,.NONE}, {.ENC_SVE_PRFOP,.PG,.SVE_OFFSET_BASE_SS,.NONE}, 0x8400C000, 0xFFE0E000, .SVE, {} }, { .SVE_PRFH, {.IMM_4,.P_REG_GOV,.MEM,.NONE}, {.ENC_SVE_PRFOP,.PG,.SVE_OFFSET_BASE_SS,.NONE}, 0x8480C000, 0xFFE0E000, .SVE, {} }, { .SVE_PRFW, {.IMM_4,.P_REG_GOV,.MEM,.NONE}, {.ENC_SVE_PRFOP,.PG,.SVE_OFFSET_BASE_SS,.NONE}, 0x8500C000, 0xFFE0E000, .SVE, {} }, @@ -539,22 +539,22 @@ DECODE_ENTRIES := [1892]lib.Decode_Entry{ { .STNP, {.W_REG,.W_REG,.MEM,.NONE}, {.RT,.RT2,.OFFSET_BASE_S9,.NONE}, 0x28000000, 0xFFC00000, .BASE, {} }, { .STNP, {.X_REG,.X_REG,.MEM,.NONE}, {.RT,.RT2,.OFFSET_BASE_S9,.NONE}, 0xA8000000, 0xFFC00000, .BASE, {is_64=true} }, { .STGP, {.X_REG,.X_REG,.MEM,.NONE}, {.RT,.RT2,.OFFSET_BASE_S9,.NONE}, 0x69000000, 0xFFC00000, .MTE, {is_64=true} }, - { .MOV_REG, {.X_REG,.X_REG,.NONE,.NONE}, {.RD,.RM,.NONE,.NONE}, 0xAA0003E0, 0xFFE0FFE0, .BASE, {is_64=true} }, { .MOV_REG, {.W_REG,.W_REG,.NONE,.NONE}, {.RD,.RM,.NONE,.NONE}, 0x2A0003E0, 0xFFE0FFE0, .BASE, {} }, - { .MVN, {.W_REG,.W_REG,.NONE,.NONE}, {.RD,.RM,.NONE,.NONE}, 0x2A2003E0, 0xFFE0FFE0, .BASE, {} }, + { .MOV_REG, {.X_REG,.X_REG,.NONE,.NONE}, {.RD,.RM,.NONE,.NONE}, 0xAA0003E0, 0xFFE0FFE0, .BASE, {is_64=true} }, { .MVN, {.X_REG,.X_REG,.NONE,.NONE}, {.RD,.RM,.NONE,.NONE}, 0xAA2003E0, 0xFFE0FFE0, .BASE, {is_64=true} }, + { .MVN, {.W_REG,.W_REG,.NONE,.NONE}, {.RD,.RM,.NONE,.NONE}, 0x2A2003E0, 0xFFE0FFE0, .BASE, {} }, { .CMP_ER, {.XSP_REG,.X_EXTENDED,.NONE,.NONE}, {.RN,.RM,.NONE,.NONE}, 0xEB20001F, 0xFFE0001F, .BASE, {sets_flags=true, is_64=true} }, { .CMP_ER, {.WSP_REG,.W_EXTENDED,.NONE,.NONE}, {.RN,.RM,.NONE,.NONE}, 0x6B20001F, 0xFFE0001F, .BASE, {sets_flags=true} }, { .CMN_ER, {.XSP_REG,.X_EXTENDED,.NONE,.NONE}, {.RN,.RM,.NONE,.NONE}, 0xAB20001F, 0xFFE0001F, .BASE, {sets_flags=true, is_64=true} }, { .CMN_ER, {.WSP_REG,.W_EXTENDED,.NONE,.NONE}, {.RN,.RM,.NONE,.NONE}, 0x2B20001F, 0xFFE0001F, .BASE, {sets_flags=true} }, - { .NEG_SR, {.X_REG,.X_SHIFTED,.NONE,.NONE}, {.RD,.RM,.NONE,.NONE}, 0xCB0003E0, 0xFF2003E0, .BASE, {is_64=true} }, { .NEG_SR, {.W_REG,.W_SHIFTED,.NONE,.NONE}, {.RD,.RM,.NONE,.NONE}, 0x4B0003E0, 0xFF2003E0, .BASE, {} }, - { .NEGS, {.W_REG,.W_SHIFTED,.NONE,.NONE}, {.RD,.RM,.NONE,.NONE}, 0x6B0003E0, 0xFF2003E0, .BASE, {sets_flags=true} }, + { .NEG_SR, {.X_REG,.X_SHIFTED,.NONE,.NONE}, {.RD,.RM,.NONE,.NONE}, 0xCB0003E0, 0xFF2003E0, .BASE, {is_64=true} }, { .NEGS, {.X_REG,.X_SHIFTED,.NONE,.NONE}, {.RD,.RM,.NONE,.NONE}, 0xEB0003E0, 0xFF2003E0, .BASE, {sets_flags=true, is_64=true} }, - { .CMP_SR, {.W_REG,.W_SHIFTED,.NONE,.NONE}, {.RN,.RM,.NONE,.NONE}, 0x6B00001F, 0xFF20001F, .BASE, {sets_flags=true} }, + { .NEGS, {.W_REG,.W_SHIFTED,.NONE,.NONE}, {.RD,.RM,.NONE,.NONE}, 0x6B0003E0, 0xFF2003E0, .BASE, {sets_flags=true} }, { .CMP_SR, {.X_REG,.X_SHIFTED,.NONE,.NONE}, {.RN,.RM,.NONE,.NONE}, 0xEB00001F, 0xFF20001F, .BASE, {sets_flags=true, is_64=true} }, - { .CMN_SR, {.X_REG,.X_SHIFTED,.NONE,.NONE}, {.RN,.RM,.NONE,.NONE}, 0xAB00001F, 0xFF20001F, .BASE, {sets_flags=true, is_64=true} }, + { .CMP_SR, {.W_REG,.W_SHIFTED,.NONE,.NONE}, {.RN,.RM,.NONE,.NONE}, 0x6B00001F, 0xFF20001F, .BASE, {sets_flags=true} }, { .CMN_SR, {.W_REG,.W_SHIFTED,.NONE,.NONE}, {.RN,.RM,.NONE,.NONE}, 0x2B00001F, 0xFF20001F, .BASE, {sets_flags=true} }, + { .CMN_SR, {.X_REG,.X_SHIFTED,.NONE,.NONE}, {.RN,.RM,.NONE,.NONE}, 0xAB00001F, 0xFF20001F, .BASE, {sets_flags=true, is_64=true} }, { .TST_SR, {.X_REG,.X_SHIFTED,.NONE,.NONE}, {.RN,.RM,.NONE,.NONE}, 0xEA00001F, 0xFF20001F, .BASE, {sets_flags=true, is_64=true} }, { .TST_SR, {.W_REG,.W_SHIFTED,.NONE,.NONE}, {.RN,.RM,.NONE,.NONE}, 0x6A00001F, 0xFF20001F, .BASE, {sets_flags=true} }, { .ADD_ER, {.XSP_REG,.XSP_REG,.X_EXTENDED,.NONE}, {.RD,.RN,.RM,.NONE}, 0x8B200000, 0xFFE00000, .BASE, {is_64=true} }, @@ -591,8 +591,8 @@ DECODE_ENTRIES := [1892]lib.Decode_Entry{ { .EON_SR, {.X_REG,.X_REG,.X_SHIFTED,.NONE}, {.RD,.RN,.RM,.NONE}, 0xCA200000, 0xFF200000, .BASE, {is_64=true} }, { .LD1, {.V_2D,.MEM,.NONE,.NONE}, {.VD,.OFFSET_BASE_A,.NONE,.NONE}, 0x4C407C00, 0xFFFFFC00, .NEON, {} }, { .ST1, {.V_2D,.MEM,.NONE,.NONE}, {.VD,.OFFSET_BASE_A,.NONE,.NONE}, 0x4C007C00, 0xFFFFFC00, .NEON, {} }, - { .LD1, {.V_8H,.MEM,.NONE,.NONE}, {.VD,.OFFSET_BASE_A,.NONE,.NONE}, 0x4C407400, 0xFFFFF400, .NEON, {} }, { .LD1, {.V_4S,.MEM,.NONE,.NONE}, {.VD,.OFFSET_BASE_A,.NONE,.NONE}, 0x4C407800, 0xFFFFF800, .NEON, {} }, + { .LD1, {.V_8H,.MEM,.NONE,.NONE}, {.VD,.OFFSET_BASE_A,.NONE,.NONE}, 0x4C407400, 0xFFFFF400, .NEON, {} }, { .ST1, {.V_4S,.MEM,.NONE,.NONE}, {.VD,.OFFSET_BASE_A,.NONE,.NONE}, 0x4C007800, 0xFFFFF800, .NEON, {} }, { .ST1, {.V_8H,.MEM,.NONE,.NONE}, {.VD,.OFFSET_BASE_A,.NONE,.NONE}, 0x4C007400, 0xFFFFF400, .NEON, {} }, { .LD1, {.V_16B,.MEM,.NONE,.NONE}, {.VD,.OFFSET_BASE_A,.NONE,.NONE}, 0x4C407000, 0xFFFFF000, .NEON, {} }, @@ -621,265 +621,317 @@ DECODE_ENTRIES := [1892]lib.Decode_Entry{ { .ABS_V, {.V_2S,.V_2S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0EA0B800, 0xFFFFFC00, .NEON, {} }, { .ADDV, {.H_REG,.V_8H,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4E71B800, 0xFFFFFC00, .NEON, {} }, { .ADDV, {.B_REG,.V_8B,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0E31B800, 0xFFFFFC00, .NEON, {} }, - { .ADDV, {.H_REG,.V_4H,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0E71B800, 0xFFFFFC00, .NEON, {} }, { .ADDV, {.S_REG,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4EB1B800, 0xFFFFFC00, .NEON, {} }, + { .ADDV, {.H_REG,.V_4H,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0E71B800, 0xFFFFFC00, .NEON, {} }, { .ADDV, {.B_REG,.V_16B,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4E31B800, 0xFFFFFC00, .NEON, {} }, - { .SADDLP, {.V_8H,.V_16B,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4E202800, 0xFFFFFC00, .NEON, {} }, - { .SADDLP, {.V_2D,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4EA02800, 0xFFFFFC00, .NEON, {} }, - { .SADDLP, {.V_1D,.V_2S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0EA02800, 0xFFFFFC00, .NEON, {} }, { .SADDLP, {.V_4S,.V_8H,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4E602800, 0xFFFFFC00, .NEON, {} }, + { .SADDLP, {.V_2D,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4EA02800, 0xFFFFFC00, .NEON, {} }, { .SADDLP, {.V_4H,.V_8B,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0E202800, 0xFFFFFC00, .NEON, {} }, { .SADDLP, {.V_2S,.V_4H,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0E602800, 0xFFFFFC00, .NEON, {} }, + { .SADDLP, {.V_8H,.V_16B,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4E202800, 0xFFFFFC00, .NEON, {} }, + { .SADDLP, {.V_1D,.V_2S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0EA02800, 0xFFFFFC00, .NEON, {} }, + { .UADDLP, {.V_4S,.V_8H,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6E602800, 0xFFFFFC00, .NEON, {} }, { .UADDLP, {.V_2S,.V_4H,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2E602800, 0xFFFFFC00, .NEON, {} }, { .UADDLP, {.V_1D,.V_2S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2EA02800, 0xFFFFFC00, .NEON, {} }, - { .UADDLP, {.V_4S,.V_8H,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6E602800, 0xFFFFFC00, .NEON, {} }, + { .UADDLP, {.V_4H,.V_8B,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2E202800, 0xFFFFFC00, .NEON, {} }, { .UADDLP, {.V_2D,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6EA02800, 0xFFFFFC00, .NEON, {} }, { .UADDLP, {.V_8H,.V_16B,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6E202800, 0xFFFFFC00, .NEON, {} }, - { .UADDLP, {.V_4H,.V_8B,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2E202800, 0xFFFFFC00, .NEON, {} }, { .SADALP, {.V_2D,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4EA06800, 0xFFFFFC00, .NEON, {} }, - { .SADALP, {.V_8H,.V_16B,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4E206800, 0xFFFFFC00, .NEON, {} }, - { .SADALP, {.V_4S,.V_8H,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4E606800, 0xFFFFFC00, .NEON, {} }, - { .SADALP, {.V_1D,.V_2S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0EA06800, 0xFFFFFC00, .NEON, {} }, { .SADALP, {.V_2S,.V_4H,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0E606800, 0xFFFFFC00, .NEON, {} }, + { .SADALP, {.V_4S,.V_8H,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4E606800, 0xFFFFFC00, .NEON, {} }, + { .SADALP, {.V_8H,.V_16B,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4E206800, 0xFFFFFC00, .NEON, {} }, + { .SADALP, {.V_1D,.V_2S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0EA06800, 0xFFFFFC00, .NEON, {} }, { .SADALP, {.V_4H,.V_8B,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0E206800, 0xFFFFFC00, .NEON, {} }, - { .UADALP, {.V_2D,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6EA06800, 0xFFFFFC00, .NEON, {} }, - { .UADALP, {.V_8H,.V_16B,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6E206800, 0xFFFFFC00, .NEON, {} }, { .UADALP, {.V_1D,.V_2S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2EA06800, 0xFFFFFC00, .NEON, {} }, { .UADALP, {.V_4H,.V_8B,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2E206800, 0xFFFFFC00, .NEON, {} }, + { .UADALP, {.V_8H,.V_16B,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6E206800, 0xFFFFFC00, .NEON, {} }, { .UADALP, {.V_2S,.V_4H,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2E606800, 0xFFFFFC00, .NEON, {} }, + { .UADALP, {.V_2D,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6EA06800, 0xFFFFFC00, .NEON, {} }, { .UADALP, {.V_4S,.V_8H,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6E606800, 0xFFFFFC00, .NEON, {} }, - { .SADDLV, {.S_REG,.V_8H,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4E703800, 0xFFFFFC00, .NEON, {} }, - { .SADDLV, {.S_REG,.V_4H,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0E703800, 0xFFFFFC00, .NEON, {} }, - { .SADDLV, {.H_REG,.V_8B,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0E303800, 0xFFFFFC00, .NEON, {} }, - { .SADDLV, {.H_REG,.V_16B,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4E303800, 0xFFFFFC00, .NEON, {} }, { .SADDLV, {.D_REG,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4EB03800, 0xFFFFFC00, .NEON, {} }, - { .UADDLV, {.S_REG,.V_8H,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6E703800, 0xFFFFFC00, .NEON, {} }, - { .UADDLV, {.D_REG,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6EB03800, 0xFFFFFC00, .NEON, {} }, - { .UADDLV, {.S_REG,.V_4H,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2E703800, 0xFFFFFC00, .NEON, {} }, - { .UADDLV, {.H_REG,.V_8B,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2E303800, 0xFFFFFC00, .NEON, {} }, + { .SADDLV, {.H_REG,.V_8B,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0E303800, 0xFFFFFC00, .NEON, {} }, + { .SADDLV, {.S_REG,.V_8H,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4E703800, 0xFFFFFC00, .NEON, {} }, + { .SADDLV, {.H_REG,.V_16B,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4E303800, 0xFFFFFC00, .NEON, {} }, + { .SADDLV, {.S_REG,.V_4H,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0E703800, 0xFFFFFC00, .NEON, {} }, { .UADDLV, {.H_REG,.V_16B,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6E303800, 0xFFFFFC00, .NEON, {} }, - { .SMAXV, {.B_REG,.V_8B,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0E30A800, 0xFFFFFC00, .NEON, {} }, + { .UADDLV, {.H_REG,.V_8B,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2E303800, 0xFFFFFC00, .NEON, {} }, + { .UADDLV, {.S_REG,.V_8H,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6E703800, 0xFFFFFC00, .NEON, {} }, + { .UADDLV, {.S_REG,.V_4H,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2E703800, 0xFFFFFC00, .NEON, {} }, + { .UADDLV, {.D_REG,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6EB03800, 0xFFFFFC00, .NEON, {} }, { .SMAXV, {.H_REG,.V_8H,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4E70A800, 0xFFFFFC00, .NEON, {} }, { .SMAXV, {.B_REG,.V_16B,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4E30A800, 0xFFFFFC00, .NEON, {} }, { .SMAXV, {.S_REG,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4EB0A800, 0xFFFFFC00, .NEON, {} }, + { .SMAXV, {.B_REG,.V_8B,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0E30A800, 0xFFFFFC00, .NEON, {} }, { .SMAXV, {.H_REG,.V_4H,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0E70A800, 0xFFFFFC00, .NEON, {} }, - { .UMAXV, {.H_REG,.V_8H,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6E70A800, 0xFFFFFC00, .NEON, {} }, + { .UMAXV, {.H_REG,.V_4H,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2E70A800, 0xFFFFFC00, .NEON, {} }, { .UMAXV, {.S_REG,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6EB0A800, 0xFFFFFC00, .NEON, {} }, { .UMAXV, {.B_REG,.V_16B,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6E30A800, 0xFFFFFC00, .NEON, {} }, - { .UMAXV, {.H_REG,.V_4H,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2E70A800, 0xFFFFFC00, .NEON, {} }, + { .UMAXV, {.H_REG,.V_8H,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6E70A800, 0xFFFFFC00, .NEON, {} }, { .UMAXV, {.B_REG,.V_8B,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2E30A800, 0xFFFFFC00, .NEON, {} }, - { .SMINV, {.B_REG,.V_8B,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0E31A800, 0xFFFFFC00, .NEON, {} }, - { .SMINV, {.H_REG,.V_4H,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0E71A800, 0xFFFFFC00, .NEON, {} }, - { .SMINV, {.B_REG,.V_16B,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4E31A800, 0xFFFFFC00, .NEON, {} }, - { .SMINV, {.S_REG,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4EB1A800, 0xFFFFFC00, .NEON, {} }, { .SMINV, {.H_REG,.V_8H,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4E71A800, 0xFFFFFC00, .NEON, {} }, - { .UMINV, {.H_REG,.V_8H,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6E71A800, 0xFFFFFC00, .NEON, {} }, - { .UMINV, {.B_REG,.V_16B,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6E31A800, 0xFFFFFC00, .NEON, {} }, + { .SMINV, {.S_REG,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4EB1A800, 0xFFFFFC00, .NEON, {} }, + { .SMINV, {.H_REG,.V_4H,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0E71A800, 0xFFFFFC00, .NEON, {} }, + { .SMINV, {.B_REG,.V_8B,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0E31A800, 0xFFFFFC00, .NEON, {} }, + { .SMINV, {.B_REG,.V_16B,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4E31A800, 0xFFFFFC00, .NEON, {} }, { .UMINV, {.S_REG,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6EB1A800, 0xFFFFFC00, .NEON, {} }, + { .UMINV, {.H_REG,.V_8H,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6E71A800, 0xFFFFFC00, .NEON, {} }, { .UMINV, {.B_REG,.V_8B,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2E31A800, 0xFFFFFC00, .NEON, {} }, { .UMINV, {.H_REG,.V_4H,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2E71A800, 0xFFFFFC00, .NEON, {} }, - { .XTN, {.V_2S,.V_2D,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0EA12800, 0xFFFFFC00, .NEON, {} }, + { .UMINV, {.B_REG,.V_16B,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6E31A800, 0xFFFFFC00, .NEON, {} }, { .XTN, {.V_4H,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0E612800, 0xFFFFFC00, .NEON, {} }, { .XTN, {.V_8B,.V_8H,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0E212800, 0xFFFFFC00, .NEON, {} }, + { .XTN, {.V_2S,.V_2D,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0EA12800, 0xFFFFFC00, .NEON, {} }, { .XTN2, {.V_16B,.V_8H,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4E212800, 0xFFFFFC00, .NEON, {} }, { .XTN2, {.V_8H,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4E612800, 0xFFFFFC00, .NEON, {} }, { .XTN2, {.V_4S,.V_2D,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4EA12800, 0xFFFFFC00, .NEON, {} }, { .SQXTN, {.V_2S,.V_2D,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0EA14800, 0xFFFFFC00, .NEON, {} }, - { .SQXTN, {.V_4H,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0E614800, 0xFFFFFC00, .NEON, {} }, { .SQXTN, {.V_8B,.V_8H,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0E214800, 0xFFFFFC00, .NEON, {} }, + { .SQXTN, {.V_4H,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0E614800, 0xFFFFFC00, .NEON, {} }, { .SQXTN2, {.V_16B,.V_8H,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4E214800, 0xFFFFFC00, .NEON, {} }, - { .SQXTN2, {.V_8H,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4E614800, 0xFFFFFC00, .NEON, {} }, { .SQXTN2, {.V_4S,.V_2D,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4EA14800, 0xFFFFFC00, .NEON, {} }, - { .UQXTN, {.V_2S,.V_2D,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2EA14800, 0xFFFFFC00, .NEON, {} }, + { .SQXTN2, {.V_8H,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4E614800, 0xFFFFFC00, .NEON, {} }, { .UQXTN, {.V_4H,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2E614800, 0xFFFFFC00, .NEON, {} }, { .UQXTN, {.V_8B,.V_8H,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2E214800, 0xFFFFFC00, .NEON, {} }, - { .UQXTN2, {.V_16B,.V_8H,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6E214800, 0xFFFFFC00, .NEON, {} }, - { .UQXTN2, {.V_8H,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6E614800, 0xFFFFFC00, .NEON, {} }, + { .UQXTN, {.V_2S,.V_2D,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2EA14800, 0xFFFFFC00, .NEON, {} }, { .UQXTN2, {.V_4S,.V_2D,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6EA14800, 0xFFFFFC00, .NEON, {} }, - { .SQXTUN, {.V_2S,.V_2D,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2EA12800, 0xFFFFFC00, .NEON, {} }, - { .SQXTUN, {.V_8B,.V_8H,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2E212800, 0xFFFFFC00, .NEON, {} }, + { .UQXTN2, {.V_8H,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6E614800, 0xFFFFFC00, .NEON, {} }, + { .UQXTN2, {.V_16B,.V_8H,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6E214800, 0xFFFFFC00, .NEON, {} }, { .SQXTUN, {.V_4H,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2E612800, 0xFFFFFC00, .NEON, {} }, + { .SQXTUN, {.V_8B,.V_8H,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2E212800, 0xFFFFFC00, .NEON, {} }, + { .SQXTUN, {.V_2S,.V_2D,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2EA12800, 0xFFFFFC00, .NEON, {} }, { .SQXTUN2, {.V_4S,.V_2D,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6EA12800, 0xFFFFFC00, .NEON, {} }, { .SQXTUN2, {.V_16B,.V_8H,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6E212800, 0xFFFFFC00, .NEON, {} }, { .SQXTUN2, {.V_8H,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6E612800, 0xFFFFFC00, .NEON, {} }, - { .FNEG_V, {.V_8H_FP16,.V_8H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6EF8F800, 0xFFFFFC00, .FP16, {} }, - { .FNEG_V, {.V_2D,.V_2D,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6EE0F800, 0xFFFFFC00, .NEON, {} }, - { .FNEG_V, {.V_4S,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6EA0F800, 0xFFFFFC00, .NEON, {} }, { .FNEG_V, {.V_2S,.V_2S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2EA0F800, 0xFFFFFC00, .NEON, {} }, { .FNEG_V, {.V_4H_FP16,.V_4H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2EF8F800, 0xFFFFFC00, .FP16, {} }, + { .FNEG_V, {.V_4S,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6EA0F800, 0xFFFFFC00, .NEON, {} }, + { .FNEG_V, {.V_2D,.V_2D,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6EE0F800, 0xFFFFFC00, .NEON, {} }, + { .FNEG_V, {.V_8H_FP16,.V_8H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6EF8F800, 0xFFFFFC00, .FP16, {} }, + { .FABS_V, {.V_4H_FP16,.V_4H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0EF8F800, 0xFFFFFC00, .FP16, {} }, + { .FABS_V, {.V_2D,.V_2D,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4EE0F800, 0xFFFFFC00, .NEON, {} }, { .FABS_V, {.V_8H_FP16,.V_8H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4EF8F800, 0xFFFFFC00, .FP16, {} }, { .FABS_V, {.V_2S,.V_2S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0EA0F800, 0xFFFFFC00, .NEON, {} }, - { .FABS_V, {.V_2D,.V_2D,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4EE0F800, 0xFFFFFC00, .NEON, {} }, - { .FABS_V, {.V_4H_FP16,.V_4H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0EF8F800, 0xFFFFFC00, .FP16, {} }, { .FABS_V, {.V_4S,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4EA0F800, 0xFFFFFC00, .NEON, {} }, - { .FSQRT_V, {.V_2S,.V_2S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2EA1F800, 0xFFFFFC00, .NEON, {} }, { .FSQRT_V, {.V_4H_FP16,.V_4H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2EF9F800, 0xFFFFFC00, .FP16, {} }, { .FSQRT_V, {.V_4S,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6EA1F800, 0xFFFFFC00, .NEON, {} }, - { .FSQRT_V, {.V_2D,.V_2D,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6EE1F800, 0xFFFFFC00, .NEON, {} }, { .FSQRT_V, {.V_8H_FP16,.V_8H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6EF9F800, 0xFFFFFC00, .FP16, {} }, - { .FMAXV_V, {.S_REG,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6E30F800, 0xFFFFFC00, .NEON, {} }, + { .FSQRT_V, {.V_2D,.V_2D,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6EE1F800, 0xFFFFFC00, .NEON, {} }, + { .FSQRT_V, {.V_2S,.V_2S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2EA1F800, 0xFFFFFC00, .NEON, {} }, { .FMAXV_V, {.H_REG,.V_4H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0E30F800, 0xFFFFFC00, .FP16, {} }, { .FMAXV_V, {.H_REG,.V_8H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4E30F800, 0xFFFFFC00, .FP16, {} }, + { .FMAXV_V, {.S_REG,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6E30F800, 0xFFFFFC00, .NEON, {} }, { .FMINV_V, {.H_REG,.V_8H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4EB0F800, 0xFFFFFC00, .FP16, {} }, { .FMINV_V, {.S_REG,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6EB0F800, 0xFFFFFC00, .NEON, {} }, { .FMINV_V, {.H_REG,.V_4H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0EB0F800, 0xFFFFFC00, .FP16, {} }, - { .FMAXNMV, {.S_REG,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6E30C800, 0xFFFFFC00, .NEON, {} }, - { .FMAXNMV, {.H_REG,.V_8H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4E30C800, 0xFFFFFC00, .FP16, {} }, { .FMAXNMV, {.H_REG,.V_4H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0E30C800, 0xFFFFFC00, .FP16, {} }, + { .FMAXNMV, {.H_REG,.V_8H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4E30C800, 0xFFFFFC00, .FP16, {} }, + { .FMAXNMV, {.S_REG,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6E30C800, 0xFFFFFC00, .NEON, {} }, { .FMINNMV, {.H_REG,.V_4H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0EB0C800, 0xFFFFFC00, .FP16, {} }, { .FMINNMV, {.H_REG,.V_8H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4EB0C800, 0xFFFFFC00, .FP16, {} }, { .FMINNMV, {.S_REG,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6EB0C800, 0xFFFFFC00, .NEON, {} }, + { .FRECPE, {.V_4S,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4EA1D800, 0xFFFFFC00, .NEON, {} }, { .FRECPE, {.V_8H_FP16,.V_8H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4EF9D800, 0xFFFFFC00, .FP16, {} }, { .FRECPE, {.V_4H_FP16,.V_4H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0EF9D800, 0xFFFFFC00, .FP16, {} }, - { .FRECPE, {.V_4S,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4EA1D800, 0xFFFFFC00, .NEON, {} }, - { .FRECPE, {.V_2D,.V_2D,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4EE1D800, 0xFFFFFC00, .NEON, {} }, { .FRECPE, {.V_2S,.V_2S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0EA1D800, 0xFFFFFC00, .NEON, {} }, - { .FRSQRTE, {.V_2D,.V_2D,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6EE1D800, 0xFFFFFC00, .NEON, {} }, - { .FRSQRTE, {.V_4H_FP16,.V_4H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2EF9D800, 0xFFFFFC00, .FP16, {} }, + { .FRECPE, {.V_2D,.V_2D,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4EE1D800, 0xFFFFFC00, .NEON, {} }, { .FRSQRTE, {.V_4S,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6EA1D800, 0xFFFFFC00, .NEON, {} }, - { .FRSQRTE, {.V_8H_FP16,.V_8H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6EF9D800, 0xFFFFFC00, .FP16, {} }, + { .FRSQRTE, {.V_2D,.V_2D,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6EE1D800, 0xFFFFFC00, .NEON, {} }, { .FRSQRTE, {.V_2S,.V_2S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2EA1D800, 0xFFFFFC00, .NEON, {} }, - { .FRINTA_V, {.V_4H_FP16,.V_4H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2E798800, 0xFFFFFC00, .FP16, {} }, + { .FRSQRTE, {.V_8H_FP16,.V_8H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6EF9D800, 0xFFFFFC00, .FP16, {} }, + { .FRSQRTE, {.V_4H_FP16,.V_4H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2EF9D800, 0xFFFFFC00, .FP16, {} }, { .FRINTA_V, {.V_2S,.V_2S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2E218800, 0xFFFFFC00, .NEON, {} }, - { .FRINTA_V, {.V_2D,.V_2D,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6E618800, 0xFFFFFC00, .NEON, {} }, { .FRINTA_V, {.V_8H_FP16,.V_8H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6E798800, 0xFFFFFC00, .FP16, {} }, + { .FRINTA_V, {.V_2D,.V_2D,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6E618800, 0xFFFFFC00, .NEON, {} }, { .FRINTA_V, {.V_4S,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6E218800, 0xFFFFFC00, .NEON, {} }, - { .FRINTI_V, {.V_2D,.V_2D,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6EE19800, 0xFFFFFC00, .NEON, {} }, - { .FRINTI_V, {.V_4S,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6EA19800, 0xFFFFFC00, .NEON, {} }, - { .FRINTI_V, {.V_2S,.V_2S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2EA19800, 0xFFFFFC00, .NEON, {} }, + { .FRINTA_V, {.V_4H_FP16,.V_4H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2E798800, 0xFFFFFC00, .FP16, {} }, { .FRINTI_V, {.V_4H_FP16,.V_4H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2EF99800, 0xFFFFFC00, .FP16, {} }, { .FRINTI_V, {.V_8H_FP16,.V_8H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6EF99800, 0xFFFFFC00, .FP16, {} }, + { .FRINTI_V, {.V_2S,.V_2S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2EA19800, 0xFFFFFC00, .NEON, {} }, + { .FRINTI_V, {.V_4S,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6EA19800, 0xFFFFFC00, .NEON, {} }, + { .FRINTI_V, {.V_2D,.V_2D,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6EE19800, 0xFFFFFC00, .NEON, {} }, { .FRINTM_V, {.V_2S,.V_2S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0E219800, 0xFFFFFC00, .NEON, {} }, { .FRINTM_V, {.V_4S,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4E219800, 0xFFFFFC00, .NEON, {} }, - { .FRINTM_V, {.V_4H_FP16,.V_4H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0E799800, 0xFFFFFC00, .FP16, {} }, - { .FRINTM_V, {.V_8H_FP16,.V_8H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4E799800, 0xFFFFFC00, .FP16, {} }, { .FRINTM_V, {.V_2D,.V_2D,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4E619800, 0xFFFFFC00, .NEON, {} }, - { .FRINTN_V, {.V_4H_FP16,.V_4H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0E798800, 0xFFFFFC00, .FP16, {} }, + { .FRINTM_V, {.V_8H_FP16,.V_8H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4E799800, 0xFFFFFC00, .FP16, {} }, + { .FRINTM_V, {.V_4H_FP16,.V_4H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0E799800, 0xFFFFFC00, .FP16, {} }, { .FRINTN_V, {.V_2S,.V_2S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0E218800, 0xFFFFFC00, .NEON, {} }, - { .FRINTN_V, {.V_2D,.V_2D,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4E618800, 0xFFFFFC00, .NEON, {} }, - { .FRINTN_V, {.V_4S,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4E218800, 0xFFFFFC00, .NEON, {} }, { .FRINTN_V, {.V_8H_FP16,.V_8H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4E798800, 0xFFFFFC00, .FP16, {} }, - { .FRINTP_V, {.V_2D,.V_2D,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4EE18800, 0xFFFFFC00, .NEON, {} }, - { .FRINTP_V, {.V_2S,.V_2S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0EA18800, 0xFFFFFC00, .NEON, {} }, - { .FRINTP_V, {.V_4H_FP16,.V_4H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0EF98800, 0xFFFFFC00, .FP16, {} }, + { .FRINTN_V, {.V_4H_FP16,.V_4H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0E798800, 0xFFFFFC00, .FP16, {} }, + { .FRINTN_V, {.V_4S,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4E218800, 0xFFFFFC00, .NEON, {} }, + { .FRINTN_V, {.V_2D,.V_2D,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4E618800, 0xFFFFFC00, .NEON, {} }, { .FRINTP_V, {.V_8H_FP16,.V_8H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4EF98800, 0xFFFFFC00, .FP16, {} }, { .FRINTP_V, {.V_4S,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4EA18800, 0xFFFFFC00, .NEON, {} }, - { .FRINTX_V, {.V_2D,.V_2D,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6E619800, 0xFFFFFC00, .NEON, {} }, + { .FRINTP_V, {.V_2D,.V_2D,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4EE18800, 0xFFFFFC00, .NEON, {} }, + { .FRINTP_V, {.V_4H_FP16,.V_4H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0EF98800, 0xFFFFFC00, .FP16, {} }, + { .FRINTP_V, {.V_2S,.V_2S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0EA18800, 0xFFFFFC00, .NEON, {} }, { .FRINTX_V, {.V_8H_FP16,.V_8H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6E799800, 0xFFFFFC00, .FP16, {} }, + { .FRINTX_V, {.V_2S,.V_2S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2E219800, 0xFFFFFC00, .NEON, {} }, { .FRINTX_V, {.V_4H_FP16,.V_4H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2E799800, 0xFFFFFC00, .FP16, {} }, { .FRINTX_V, {.V_4S,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6E219800, 0xFFFFFC00, .NEON, {} }, - { .FRINTX_V, {.V_2S,.V_2S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2E219800, 0xFFFFFC00, .NEON, {} }, + { .FRINTX_V, {.V_2D,.V_2D,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6E619800, 0xFFFFFC00, .NEON, {} }, { .FRINTZ_V, {.V_8H_FP16,.V_8H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4EF99800, 0xFFFFFC00, .FP16, {} }, - { .FRINTZ_V, {.V_2S,.V_2S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0EA19800, 0xFFFFFC00, .NEON, {} }, { .FRINTZ_V, {.V_2D,.V_2D,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4EE19800, 0xFFFFFC00, .NEON, {} }, - { .FRINTZ_V, {.V_4S,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4EA19800, 0xFFFFFC00, .NEON, {} }, { .FRINTZ_V, {.V_4H_FP16,.V_4H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0EF99800, 0xFFFFFC00, .FP16, {} }, + { .FRINTZ_V, {.V_2S,.V_2S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0EA19800, 0xFFFFFC00, .NEON, {} }, + { .FRINTZ_V, {.V_4S,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4EA19800, 0xFFFFFC00, .NEON, {} }, { .SCVTF_V, {.V_2D,.V_2D,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4E61D800, 0xFFFFFC00, .NEON, {} }, - { .SCVTF_V, {.V_4S,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4E21D800, 0xFFFFFC00, .NEON, {} }, - { .SCVTF_V, {.V_8H_FP16,.V_8H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4E79D800, 0xFFFFFC00, .FP16, {} }, { .SCVTF_V, {.V_4H_FP16,.V_4H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0E79D800, 0xFFFFFC00, .FP16, {} }, { .SCVTF_V, {.V_2S,.V_2S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0E21D800, 0xFFFFFC00, .NEON, {} }, + { .SCVTF_V, {.V_4S,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4E21D800, 0xFFFFFC00, .NEON, {} }, + { .SCVTF_V, {.V_8H_FP16,.V_8H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4E79D800, 0xFFFFFC00, .FP16, {} }, + { .UCVTF_V, {.V_8H_FP16,.V_8H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6E79D800, 0xFFFFFC00, .FP16, {} }, { .UCVTF_V, {.V_4H_FP16,.V_4H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2E79D800, 0xFFFFFC00, .FP16, {} }, { .UCVTF_V, {.V_2S,.V_2S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2E21D800, 0xFFFFFC00, .NEON, {} }, - { .UCVTF_V, {.V_2D,.V_2D,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6E61D800, 0xFFFFFC00, .NEON, {} }, { .UCVTF_V, {.V_4S,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6E21D800, 0xFFFFFC00, .NEON, {} }, - { .UCVTF_V, {.V_8H_FP16,.V_8H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6E79D800, 0xFFFFFC00, .FP16, {} }, + { .UCVTF_V, {.V_2D,.V_2D,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6E61D800, 0xFFFFFC00, .NEON, {} }, { .FCVTAS_V, {.V_2S,.V_2S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0E21C800, 0xFFFFFC00, .NEON, {} }, { .FCVTAS_V, {.V_4H_FP16,.V_4H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0E79C800, 0xFFFFFC00, .FP16, {} }, { .FCVTAS_V, {.V_2D,.V_2D,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4E61C800, 0xFFFFFC00, .NEON, {} }, - { .FCVTAS_V, {.V_4S,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4E21C800, 0xFFFFFC00, .NEON, {} }, { .FCVTAS_V, {.V_8H_FP16,.V_8H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4E79C800, 0xFFFFFC00, .FP16, {} }, + { .FCVTAS_V, {.V_4S,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4E21C800, 0xFFFFFC00, .NEON, {} }, { .FCVTAU_V, {.V_8H_FP16,.V_8H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6E79C800, 0xFFFFFC00, .FP16, {} }, - { .FCVTAU_V, {.V_4H_FP16,.V_4H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2E79C800, 0xFFFFFC00, .FP16, {} }, - { .FCVTAU_V, {.V_2D,.V_2D,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6E61C800, 0xFFFFFC00, .NEON, {} }, { .FCVTAU_V, {.V_2S,.V_2S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2E21C800, 0xFFFFFC00, .NEON, {} }, + { .FCVTAU_V, {.V_2D,.V_2D,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6E61C800, 0xFFFFFC00, .NEON, {} }, + { .FCVTAU_V, {.V_4H_FP16,.V_4H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2E79C800, 0xFFFFFC00, .FP16, {} }, { .FCVTAU_V, {.V_4S,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6E21C800, 0xFFFFFC00, .NEON, {} }, - { .FCVTMS_V, {.V_2S,.V_2S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0E21B800, 0xFFFFFC00, .NEON, {} }, - { .FCVTMS_V, {.V_4S,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4E21B800, 0xFFFFFC00, .NEON, {} }, - { .FCVTMS_V, {.V_2D,.V_2D,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4E61B800, 0xFFFFFC00, .NEON, {} }, { .FCVTMS_V, {.V_4H_FP16,.V_4H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0E79B800, 0xFFFFFC00, .FP16, {} }, { .FCVTMS_V, {.V_8H_FP16,.V_8H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4E79B800, 0xFFFFFC00, .FP16, {} }, - { .FCVTMU_V, {.V_2S,.V_2S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2E21B800, 0xFFFFFC00, .NEON, {} }, + { .FCVTMS_V, {.V_2D,.V_2D,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4E61B800, 0xFFFFFC00, .NEON, {} }, + { .FCVTMS_V, {.V_2S,.V_2S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0E21B800, 0xFFFFFC00, .NEON, {} }, + { .FCVTMS_V, {.V_4S,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4E21B800, 0xFFFFFC00, .NEON, {} }, { .FCVTMU_V, {.V_2D,.V_2D,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6E61B800, 0xFFFFFC00, .NEON, {} }, { .FCVTMU_V, {.V_4S,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6E21B800, 0xFFFFFC00, .NEON, {} }, - { .FCVTMU_V, {.V_4H_FP16,.V_4H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2E79B800, 0xFFFFFC00, .FP16, {} }, { .FCVTMU_V, {.V_8H_FP16,.V_8H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6E79B800, 0xFFFFFC00, .FP16, {} }, + { .FCVTMU_V, {.V_4H_FP16,.V_4H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2E79B800, 0xFFFFFC00, .FP16, {} }, + { .FCVTMU_V, {.V_2S,.V_2S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2E21B800, 0xFFFFFC00, .NEON, {} }, + { .FCVTNS_V, {.V_2D,.V_2D,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4E61A800, 0xFFFFFC00, .NEON, {} }, + { .FCVTNS_V, {.V_4S,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4E21A800, 0xFFFFFC00, .NEON, {} }, + { .FCVTNS_V, {.V_2S,.V_2S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0E21A800, 0xFFFFFC00, .NEON, {} }, { .FCVTNS_V, {.V_8H_FP16,.V_8H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4E79A800, 0xFFFFFC00, .FP16, {} }, { .FCVTNS_V, {.V_4H_FP16,.V_4H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0E79A800, 0xFFFFFC00, .FP16, {} }, - { .FCVTNS_V, {.V_2S,.V_2S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0E21A800, 0xFFFFFC00, .NEON, {} }, - { .FCVTNS_V, {.V_4S,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4E21A800, 0xFFFFFC00, .NEON, {} }, - { .FCVTNS_V, {.V_2D,.V_2D,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4E61A800, 0xFFFFFC00, .NEON, {} }, - { .FCVTNU_V, {.V_4H_FP16,.V_4H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2E79A800, 0xFFFFFC00, .FP16, {} }, - { .FCVTNU_V, {.V_2S,.V_2S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2E21A800, 0xFFFFFC00, .NEON, {} }, { .FCVTNU_V, {.V_4S,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6E21A800, 0xFFFFFC00, .NEON, {} }, { .FCVTNU_V, {.V_8H_FP16,.V_8H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6E79A800, 0xFFFFFC00, .FP16, {} }, + { .FCVTNU_V, {.V_2S,.V_2S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2E21A800, 0xFFFFFC00, .NEON, {} }, + { .FCVTNU_V, {.V_4H_FP16,.V_4H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2E79A800, 0xFFFFFC00, .FP16, {} }, { .FCVTNU_V, {.V_2D,.V_2D,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6E61A800, 0xFFFFFC00, .NEON, {} }, + { .FCVTPS_V, {.V_4S,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4EA1A800, 0xFFFFFC00, .NEON, {} }, + { .FCVTPS_V, {.V_2D,.V_2D,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4EE1A800, 0xFFFFFC00, .NEON, {} }, + { .FCVTPS_V, {.V_4H_FP16,.V_4H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0EF9A800, 0xFFFFFC00, .FP16, {} }, { .FCVTPS_V, {.V_2S,.V_2S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0EA1A800, 0xFFFFFC00, .NEON, {} }, { .FCVTPS_V, {.V_8H_FP16,.V_8H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4EF9A800, 0xFFFFFC00, .FP16, {} }, - { .FCVTPS_V, {.V_4S,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4EA1A800, 0xFFFFFC00, .NEON, {} }, - { .FCVTPS_V, {.V_4H_FP16,.V_4H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0EF9A800, 0xFFFFFC00, .FP16, {} }, - { .FCVTPS_V, {.V_2D,.V_2D,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4EE1A800, 0xFFFFFC00, .NEON, {} }, { .FCVTPU_V, {.V_4H_FP16,.V_4H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2EF9A800, 0xFFFFFC00, .FP16, {} }, { .FCVTPU_V, {.V_2S,.V_2S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2EA1A800, 0xFFFFFC00, .NEON, {} }, { .FCVTPU_V, {.V_8H_FP16,.V_8H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6EF9A800, 0xFFFFFC00, .FP16, {} }, - { .FCVTPU_V, {.V_2D,.V_2D,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6EE1A800, 0xFFFFFC00, .NEON, {} }, { .FCVTPU_V, {.V_4S,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6EA1A800, 0xFFFFFC00, .NEON, {} }, - { .FCVTZS_V, {.V_4H_FP16,.V_4H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0EF9B800, 0xFFFFFC00, .FP16, {} }, - { .FCVTZS_V, {.V_2S,.V_2S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0EA1B800, 0xFFFFFC00, .NEON, {} }, - { .FCVTZS_V, {.V_8H_FP16,.V_8H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4EF9B800, 0xFFFFFC00, .FP16, {} }, + { .FCVTPU_V, {.V_2D,.V_2D,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6EE1A800, 0xFFFFFC00, .NEON, {} }, { .FCVTZS_V, {.V_4S,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4EA1B800, 0xFFFFFC00, .NEON, {} }, { .FCVTZS_V, {.V_2D,.V_2D,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4EE1B800, 0xFFFFFC00, .NEON, {} }, - { .FCVTZU_V, {.V_2S,.V_2S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2EA1B800, 0xFFFFFC00, .NEON, {} }, - { .FCVTZU_V, {.V_2D,.V_2D,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6EE1B800, 0xFFFFFC00, .NEON, {} }, - { .FCVTZU_V, {.V_4S,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6EA1B800, 0xFFFFFC00, .NEON, {} }, - { .FCVTZU_V, {.V_8H_FP16,.V_8H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6EF9B800, 0xFFFFFC00, .FP16, {} }, + { .FCVTZS_V, {.V_8H_FP16,.V_8H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4EF9B800, 0xFFFFFC00, .FP16, {} }, + { .FCVTZS_V, {.V_4H_FP16,.V_4H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0EF9B800, 0xFFFFFC00, .FP16, {} }, + { .FCVTZS_V, {.V_2S,.V_2S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0EA1B800, 0xFFFFFC00, .NEON, {} }, { .FCVTZU_V, {.V_4H_FP16,.V_4H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2EF9B800, 0xFFFFFC00, .FP16, {} }, + { .FCVTZU_V, {.V_2D,.V_2D,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6EE1B800, 0xFFFFFC00, .NEON, {} }, + { .FCVTZU_V, {.V_8H_FP16,.V_8H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6EF9B800, 0xFFFFFC00, .FP16, {} }, + { .FCVTZU_V, {.V_4S,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6EA1B800, 0xFFFFFC00, .NEON, {} }, + { .FCVTZU_V, {.V_2S,.V_2S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2EA1B800, 0xFFFFFC00, .NEON, {} }, { .FCVTL, {.V_2D,.V_2S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0E617800, 0xFFFFFC00, .NEON, {} }, { .FCVTL, {.V_4S,.V_4H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0E217800, 0xFFFFFC00, .FP16, {} }, - { .FCVTL2, {.V_2D,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4E617800, 0xFFFFFC00, .NEON, {} }, { .FCVTL2, {.V_4S,.V_8H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4E217800, 0xFFFFFC00, .FP16, {} }, - { .FCVTN, {.V_2S,.V_2D,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0E616800, 0xFFFFFC00, .NEON, {} }, + { .FCVTL2, {.V_2D,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4E617800, 0xFFFFFC00, .NEON, {} }, { .FCVTN, {.V_4H_FP16,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0E216800, 0xFFFFFC00, .FP16, {} }, + { .FCVTN, {.V_2S,.V_2D,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0E616800, 0xFFFFFC00, .NEON, {} }, { .FCVTN2, {.V_4S,.V_2D,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4E616800, 0xFFFFFC00, .NEON, {} }, { .FCVTN2, {.V_8H_FP16,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4E216800, 0xFFFFFC00, .FP16, {} }, { .FCVTXN, {.V_2S,.V_2D,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2E616800, 0xFFFFFC00, .NEON, {} }, { .FCVTXN2, {.V_4S,.V_2D,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6E616800, 0xFFFFFC00, .NEON, {} }, - { .NOT_V, {.V_16B,.V_16B,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6E205800, 0xFFFFFC00, .NEON, {} }, { .NOT_V, {.V_8B,.V_8B,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2E205800, 0xFFFFFC00, .NEON, {} }, + { .NOT_V, {.V_16B,.V_16B,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6E205800, 0xFFFFFC00, .NEON, {} }, { .RBIT_V, {.V_16B,.V_16B,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6E605800, 0xFFFFFC00, .NEON, {} }, { .RBIT_V, {.V_8B,.V_8B,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2E605800, 0xFFFFFC00, .NEON, {} }, { .REV16_V, {.V_16B,.V_16B,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4E201800, 0xFFFFFC00, .NEON, {} }, { .REV16_V, {.V_8B,.V_8B,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0E201800, 0xFFFFFC00, .NEON, {} }, - { .REV32_V, {.V_4H,.V_4H,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2E600800, 0xFFFFFC00, .NEON, {} }, - { .REV32_V, {.V_8H,.V_8H,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6E600800, 0xFFFFFC00, .NEON, {} }, { .REV32_V, {.V_8B,.V_8B,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2E200800, 0xFFFFFC00, .NEON, {} }, + { .REV32_V, {.V_8H,.V_8H,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6E600800, 0xFFFFFC00, .NEON, {} }, + { .REV32_V, {.V_4H,.V_4H,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2E600800, 0xFFFFFC00, .NEON, {} }, { .REV32_V, {.V_16B,.V_16B,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6E200800, 0xFFFFFC00, .NEON, {} }, { .REV64, {.V_8H,.V_8H,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4E600800, 0xFFFFFC00, .NEON, {} }, + { .REV64, {.V_4S,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4EA00800, 0xFFFFFC00, .NEON, {} }, + { .REV64, {.V_2S,.V_2S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0EA00800, 0xFFFFFC00, .NEON, {} }, + { .REV64, {.V_16B,.V_16B,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4E200800, 0xFFFFFC00, .NEON, {} }, { .REV64, {.V_4H,.V_4H,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0E600800, 0xFFFFFC00, .NEON, {} }, { .REV64, {.V_8B,.V_8B,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0E200800, 0xFFFFFC00, .NEON, {} }, - { .REV64, {.V_16B,.V_16B,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4E200800, 0xFFFFFC00, .NEON, {} }, - { .REV64, {.V_2S,.V_2S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0EA00800, 0xFFFFFC00, .NEON, {} }, - { .REV64, {.V_4S,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4EA00800, 0xFFFFFC00, .NEON, {} }, - { .CLS_V, {.V_8H,.V_8H,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4E604800, 0xFFFFFC00, .NEON, {} }, - { .CLS_V, {.V_2S,.V_2S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0EA04800, 0xFFFFFC00, .NEON, {} }, - { .CLS_V, {.V_4H,.V_4H,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0E604800, 0xFFFFFC00, .NEON, {} }, - { .CLS_V, {.V_16B,.V_16B,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4E204800, 0xFFFFFC00, .NEON, {} }, - { .CLS_V, {.V_8B,.V_8B,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0E204800, 0xFFFFFC00, .NEON, {} }, { .CLS_V, {.V_4S,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4EA04800, 0xFFFFFC00, .NEON, {} }, + { .CLS_V, {.V_8B,.V_8B,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0E204800, 0xFFFFFC00, .NEON, {} }, + { .CLS_V, {.V_4H,.V_4H,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0E604800, 0xFFFFFC00, .NEON, {} }, + { .CLS_V, {.V_2S,.V_2S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0EA04800, 0xFFFFFC00, .NEON, {} }, + { .CLS_V, {.V_8H,.V_8H,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4E604800, 0xFFFFFC00, .NEON, {} }, + { .CLS_V, {.V_16B,.V_16B,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4E204800, 0xFFFFFC00, .NEON, {} }, { .CLZ_V, {.V_8B,.V_8B,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2E204800, 0xFFFFFC00, .NEON, {} }, - { .CLZ_V, {.V_2S,.V_2S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2EA04800, 0xFFFFFC00, .NEON, {} }, - { .CLZ_V, {.V_8H,.V_8H,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6E604800, 0xFFFFFC00, .NEON, {} }, - { .CLZ_V, {.V_4S,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6EA04800, 0xFFFFFC00, .NEON, {} }, { .CLZ_V, {.V_16B,.V_16B,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6E204800, 0xFFFFFC00, .NEON, {} }, + { .CLZ_V, {.V_4S,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6EA04800, 0xFFFFFC00, .NEON, {} }, + { .CLZ_V, {.V_2S,.V_2S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2EA04800, 0xFFFFFC00, .NEON, {} }, { .CLZ_V, {.V_4H,.V_4H,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2E604800, 0xFFFFFC00, .NEON, {} }, + { .CLZ_V, {.V_8H,.V_8H,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6E604800, 0xFFFFFC00, .NEON, {} }, { .CNT, {.V_8B,.V_8B,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0E205800, 0xFFFFFC00, .NEON, {} }, { .CNT, {.V_16B,.V_16B,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4E205800, 0xFFFFFC00, .NEON, {} }, - { .URECPE_V, {.V_2S,.V_2S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0EA1C800, 0xFFFFFC00, .NEON, {} }, { .URECPE_V, {.V_4S,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4EA1C800, 0xFFFFFC00, .NEON, {} }, - { .URSQRTE_V, {.V_2S,.V_2S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2EA1C800, 0xFFFFFC00, .NEON, {} }, + { .URECPE_V, {.V_2S,.V_2S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0EA1C800, 0xFFFFFC00, .NEON, {} }, { .URSQRTE_V, {.V_4S,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6EA1C800, 0xFFFFFC00, .NEON, {} }, - { .NOT_V_ALIAS, {.V_8B,.V_8B,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2E205800, 0xFFFFFC00, .NEON, {} }, + { .URSQRTE_V, {.V_2S,.V_2S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2EA1C800, 0xFFFFFC00, .NEON, {} }, { .NOT_V_ALIAS, {.V_16B,.V_16B,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6E205800, 0xFFFFFC00, .NEON, {} }, + { .NOT_V_ALIAS, {.V_8B,.V_8B,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2E205800, 0xFFFFFC00, .NEON, {} }, + { .SHL_V, {.V_8B,.V_8B,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHL_IMM,.NONE}, 0x0F085400, 0xFFF8FC00, .NEON, {} }, + { .SHL_V, {.V_16B,.V_16B,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHL_IMM,.NONE}, 0x4F085400, 0xFFF8FC00, .NEON, {} }, + { .SQSHL_V, {.V_16B,.V_16B,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHL_IMM,.NONE}, 0x4F087400, 0xFFF8FC00, .NEON, {} }, + { .SQSHL_V, {.V_8B,.V_8B,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHL_IMM,.NONE}, 0x0F087400, 0xFFF8FC00, .NEON, {} }, + { .SQSHLU, {.V_16B,.V_16B,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHL_IMM,.NONE}, 0x6F086400, 0xFFF8FC00, .NEON, {} }, + { .SQSHLU, {.V_8B,.V_8B,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHL_IMM,.NONE}, 0x2F086400, 0xFFF8FC00, .NEON, {} }, + { .SSHR, {.V_8B,.V_8B,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x0F080400, 0xFFF8FC00, .NEON, {} }, + { .SSHR, {.V_16B,.V_16B,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x4F080400, 0xFFF8FC00, .NEON, {} }, + { .USHR, {.V_16B,.V_16B,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x6F080400, 0xFFF8FC00, .NEON, {} }, + { .USHR, {.V_8B,.V_8B,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x2F080400, 0xFFF8FC00, .NEON, {} }, + { .SSRA, {.V_16B,.V_16B,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x4F081400, 0xFFF8FC00, .NEON, {} }, + { .SSRA, {.V_8B,.V_8B,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x0F081400, 0xFFF8FC00, .NEON, {} }, + { .USRA, {.V_16B,.V_16B,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x6F081400, 0xFFF8FC00, .NEON, {} }, + { .USRA, {.V_8B,.V_8B,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x2F081400, 0xFFF8FC00, .NEON, {} }, + { .SRSHR, {.V_8B,.V_8B,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x0F082400, 0xFFF8FC00, .NEON, {} }, + { .SRSHR, {.V_16B,.V_16B,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x4F082400, 0xFFF8FC00, .NEON, {} }, + { .URSHR, {.V_8B,.V_8B,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x2F082400, 0xFFF8FC00, .NEON, {} }, + { .URSHR, {.V_16B,.V_16B,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x6F082400, 0xFFF8FC00, .NEON, {} }, + { .SRSRA, {.V_8B,.V_8B,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x0F083400, 0xFFF8FC00, .NEON, {} }, + { .SRSRA, {.V_16B,.V_16B,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x4F083400, 0xFFF8FC00, .NEON, {} }, + { .URSRA, {.V_8B,.V_8B,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x2F083400, 0xFFF8FC00, .NEON, {} }, + { .URSRA, {.V_16B,.V_16B,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x6F083400, 0xFFF8FC00, .NEON, {} }, + { .SLI, {.V_16B,.V_16B,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHL_IMM,.NONE}, 0x6F085400, 0xFFF8FC00, .NEON, {} }, + { .SLI, {.V_8B,.V_8B,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHL_IMM,.NONE}, 0x2F085400, 0xFFF8FC00, .NEON, {} }, + { .SRI, {.V_8B,.V_8B,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x2F084400, 0xFFF8FC00, .NEON, {} }, + { .SRI, {.V_16B,.V_16B,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x6F084400, 0xFFF8FC00, .NEON, {} }, + { .SHL_V, {.V_8H,.V_8H,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHL_IMM,.NONE}, 0x4F105400, 0xFFF0FC00, .NEON, {} }, + { .SHL_V, {.V_4H,.V_4H,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHL_IMM,.NONE}, 0x0F105400, 0xFFF0FC00, .NEON, {} }, + { .SQSHL_V, {.V_4H,.V_4H,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHL_IMM,.NONE}, 0x0F107400, 0xFFF0FC00, .NEON, {} }, + { .SQSHL_V, {.V_8H,.V_8H,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHL_IMM,.NONE}, 0x4F107400, 0xFFF0FC00, .NEON, {} }, + { .SQSHLU, {.V_8H,.V_8H,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHL_IMM,.NONE}, 0x6F106400, 0xFFF0FC00, .NEON, {} }, + { .SQSHLU, {.V_4H,.V_4H,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHL_IMM,.NONE}, 0x2F106400, 0xFFF0FC00, .NEON, {} }, + { .SSHR, {.V_4H,.V_4H,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x0F100400, 0xFFF0FC00, .NEON, {} }, + { .SSHR, {.V_8H,.V_8H,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x4F100400, 0xFFF0FC00, .NEON, {} }, + { .USHR, {.V_4H,.V_4H,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x2F100400, 0xFFF0FC00, .NEON, {} }, + { .USHR, {.V_8H,.V_8H,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x6F100400, 0xFFF0FC00, .NEON, {} }, + { .SSRA, {.V_4H,.V_4H,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x0F101400, 0xFFF0FC00, .NEON, {} }, + { .SSRA, {.V_8H,.V_8H,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x4F101400, 0xFFF0FC00, .NEON, {} }, + { .USRA, {.V_8H,.V_8H,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x6F101400, 0xFFF0FC00, .NEON, {} }, + { .USRA, {.V_4H,.V_4H,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x2F101400, 0xFFF0FC00, .NEON, {} }, + { .SRSHR, {.V_4H,.V_4H,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x0F102400, 0xFFF0FC00, .NEON, {} }, + { .SRSHR, {.V_8H,.V_8H,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x4F102400, 0xFFF0FC00, .NEON, {} }, + { .URSHR, {.V_8H,.V_8H,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x6F102400, 0xFFF0FC00, .NEON, {} }, + { .URSHR, {.V_4H,.V_4H,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x2F102400, 0xFFF0FC00, .NEON, {} }, + { .SRSRA, {.V_4H,.V_4H,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x0F103400, 0xFFF0FC00, .NEON, {} }, + { .SRSRA, {.V_8H,.V_8H,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x4F103400, 0xFFF0FC00, .NEON, {} }, + { .URSRA, {.V_4H,.V_4H,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x2F103400, 0xFFF0FC00, .NEON, {} }, + { .URSRA, {.V_8H,.V_8H,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x6F103400, 0xFFF0FC00, .NEON, {} }, + { .SLI, {.V_4H,.V_4H,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHL_IMM,.NONE}, 0x2F105400, 0xFFF0FC00, .NEON, {} }, + { .SLI, {.V_8H,.V_8H,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHL_IMM,.NONE}, 0x6F105400, 0xFFF0FC00, .NEON, {} }, + { .SRI, {.V_8H,.V_8H,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x6F104400, 0xFFF0FC00, .NEON, {} }, + { .SRI, {.V_4H,.V_4H,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x2F104400, 0xFFF0FC00, .NEON, {} }, { .SHA512H, {.Q_REG,.Q_REG,.V_2D,.NONE}, {.VD,.VN,.VM,.NONE}, 0xCE608000, 0xFFE0FC00, .CRYPTO, {} }, { .SHA512H2, {.Q_REG,.Q_REG,.V_2D,.NONE}, {.VD,.VN,.VM,.NONE}, 0xCE608400, 0xFFE0FC00, .CRYPTO, {} }, { .SHA512SU1, {.V_2D,.V_2D,.V_2D,.NONE}, {.VD,.VN,.VM,.NONE}, 0xCE608800, 0xFFE0FC00, .CRYPTO, {} }, @@ -1334,36 +1386,75 @@ DECODE_ENTRIES := [1892]lib.Decode_Entry{ { .BIT, {.V_16B,.V_16B,.V_16B,.NONE}, {.VD,.VN,.VM,.NONE}, 0x6EA01C00, 0xFFE0FC00, .NEON, {} }, { .BIF, {.V_16B,.V_16B,.V_16B,.NONE}, {.VD,.VN,.VM,.NONE}, 0x6EE01C00, 0xFFE0FC00, .NEON, {} }, { .BSL, {.V_16B,.V_16B,.V_16B,.NONE}, {.VD,.VN,.VM,.NONE}, 0x6E601C00, 0xFFE0FC00, .NEON, {} }, + { .SHL_V, {.V_2S,.V_2S,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHL_IMM,.NONE}, 0x0F205400, 0xFFE0FC00, .NEON, {} }, + { .SHL_V, {.V_4S,.V_4S,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHL_IMM,.NONE}, 0x4F205400, 0xFFE0FC00, .NEON, {} }, + { .SQSHL_V, {.V_2S,.V_2S,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHL_IMM,.NONE}, 0x0F207400, 0xFFE0FC00, .NEON, {} }, + { .SQSHL_V, {.V_4S,.V_4S,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHL_IMM,.NONE}, 0x4F207400, 0xFFE0FC00, .NEON, {} }, + { .SQSHLU, {.V_2S,.V_2S,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHL_IMM,.NONE}, 0x2F206400, 0xFFE0FC00, .NEON, {} }, + { .SQSHLU, {.V_4S,.V_4S,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHL_IMM,.NONE}, 0x6F206400, 0xFFE0FC00, .NEON, {} }, { .SRSHL, {.V_2D,.V_2D,.V_2D,.NONE}, {.VD,.VN,.VM,.NONE}, 0x4EE05400, 0xFFE0FC00, .NEON, {} }, - { .SRSHL, {.V_2S,.V_2S,.V_2S,.NONE}, {.VD,.VN,.VM,.NONE}, 0x0EA05400, 0xFFE0FC00, .NEON, {} }, - { .SRSHL, {.V_8H,.V_8H,.V_8H,.NONE}, {.VD,.VN,.VM,.NONE}, 0x4E605400, 0xFFE0FC00, .NEON, {} }, { .SRSHL, {.V_4S,.V_4S,.V_4S,.NONE}, {.VD,.VN,.VM,.NONE}, 0x4EA05400, 0xFFE0FC00, .NEON, {} }, - { .SRSHL, {.V_8B,.V_8B,.V_8B,.NONE}, {.VD,.VN,.VM,.NONE}, 0x0E205400, 0xFFE0FC00, .NEON, {} }, - { .SRSHL, {.V_16B,.V_16B,.V_16B,.NONE}, {.VD,.VN,.VM,.NONE}, 0x4E205400, 0xFFE0FC00, .NEON, {} }, { .SRSHL, {.V_4H,.V_4H,.V_4H,.NONE}, {.VD,.VN,.VM,.NONE}, 0x0E605400, 0xFFE0FC00, .NEON, {} }, - { .URSHL, {.V_4H,.V_4H,.V_4H,.NONE}, {.VD,.VN,.VM,.NONE}, 0x2E605400, 0xFFE0FC00, .NEON, {} }, - { .URSHL, {.V_16B,.V_16B,.V_16B,.NONE}, {.VD,.VN,.VM,.NONE}, 0x6E205400, 0xFFE0FC00, .NEON, {} }, - { .URSHL, {.V_8H,.V_8H,.V_8H,.NONE}, {.VD,.VN,.VM,.NONE}, 0x6E605400, 0xFFE0FC00, .NEON, {} }, - { .URSHL, {.V_8B,.V_8B,.V_8B,.NONE}, {.VD,.VN,.VM,.NONE}, 0x2E205400, 0xFFE0FC00, .NEON, {} }, - { .URSHL, {.V_2S,.V_2S,.V_2S,.NONE}, {.VD,.VN,.VM,.NONE}, 0x2EA05400, 0xFFE0FC00, .NEON, {} }, + { .SRSHL, {.V_16B,.V_16B,.V_16B,.NONE}, {.VD,.VN,.VM,.NONE}, 0x4E205400, 0xFFE0FC00, .NEON, {} }, + { .SRSHL, {.V_8H,.V_8H,.V_8H,.NONE}, {.VD,.VN,.VM,.NONE}, 0x4E605400, 0xFFE0FC00, .NEON, {} }, + { .SRSHL, {.V_8B,.V_8B,.V_8B,.NONE}, {.VD,.VN,.VM,.NONE}, 0x0E205400, 0xFFE0FC00, .NEON, {} }, + { .SRSHL, {.V_2S,.V_2S,.V_2S,.NONE}, {.VD,.VN,.VM,.NONE}, 0x0EA05400, 0xFFE0FC00, .NEON, {} }, { .URSHL, {.V_4S,.V_4S,.V_4S,.NONE}, {.VD,.VN,.VM,.NONE}, 0x6EA05400, 0xFFE0FC00, .NEON, {} }, + { .URSHL, {.V_2S,.V_2S,.V_2S,.NONE}, {.VD,.VN,.VM,.NONE}, 0x2EA05400, 0xFFE0FC00, .NEON, {} }, { .URSHL, {.V_2D,.V_2D,.V_2D,.NONE}, {.VD,.VN,.VM,.NONE}, 0x6EE05400, 0xFFE0FC00, .NEON, {} }, + { .URSHL, {.V_16B,.V_16B,.V_16B,.NONE}, {.VD,.VN,.VM,.NONE}, 0x6E205400, 0xFFE0FC00, .NEON, {} }, + { .URSHL, {.V_8B,.V_8B,.V_8B,.NONE}, {.VD,.VN,.VM,.NONE}, 0x2E205400, 0xFFE0FC00, .NEON, {} }, + { .URSHL, {.V_4H,.V_4H,.V_4H,.NONE}, {.VD,.VN,.VM,.NONE}, 0x2E605400, 0xFFE0FC00, .NEON, {} }, + { .URSHL, {.V_8H,.V_8H,.V_8H,.NONE}, {.VD,.VN,.VM,.NONE}, 0x6E605400, 0xFFE0FC00, .NEON, {} }, + { .SSHR, {.V_2S,.V_2S,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x0F200400, 0xFFE0FC00, .NEON, {} }, + { .SSHR, {.V_4S,.V_4S,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x4F200400, 0xFFE0FC00, .NEON, {} }, + { .USHR, {.V_4S,.V_4S,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x6F200400, 0xFFE0FC00, .NEON, {} }, + { .USHR, {.V_2S,.V_2S,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x2F200400, 0xFFE0FC00, .NEON, {} }, + { .SSRA, {.V_4S,.V_4S,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x4F201400, 0xFFE0FC00, .NEON, {} }, + { .SSRA, {.V_2S,.V_2S,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x0F201400, 0xFFE0FC00, .NEON, {} }, + { .USRA, {.V_4S,.V_4S,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x6F201400, 0xFFE0FC00, .NEON, {} }, + { .USRA, {.V_2S,.V_2S,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x2F201400, 0xFFE0FC00, .NEON, {} }, + { .SRSHR, {.V_4S,.V_4S,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x4F202400, 0xFFE0FC00, .NEON, {} }, + { .SRSHR, {.V_2S,.V_2S,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x0F202400, 0xFFE0FC00, .NEON, {} }, + { .URSHR, {.V_2S,.V_2S,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x2F202400, 0xFFE0FC00, .NEON, {} }, + { .URSHR, {.V_4S,.V_4S,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x6F202400, 0xFFE0FC00, .NEON, {} }, + { .SRSRA, {.V_2S,.V_2S,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x0F203400, 0xFFE0FC00, .NEON, {} }, + { .SRSRA, {.V_4S,.V_4S,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x4F203400, 0xFFE0FC00, .NEON, {} }, + { .URSRA, {.V_4S,.V_4S,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x6F203400, 0xFFE0FC00, .NEON, {} }, + { .URSRA, {.V_2S,.V_2S,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x2F203400, 0xFFE0FC00, .NEON, {} }, + { .SSHL, {.V_4S,.V_4S,.V_4S,.NONE}, {.VD,.VN,.VM,.NONE}, 0x4EA04400, 0xFFE0FC00, .NEON, {} }, + { .SSHL, {.V_8H,.V_8H,.V_8H,.NONE}, {.VD,.VN,.VM,.NONE}, 0x4E604400, 0xFFE0FC00, .NEON, {} }, + { .SSHL, {.V_4H,.V_4H,.V_4H,.NONE}, {.VD,.VN,.VM,.NONE}, 0x0E604400, 0xFFE0FC00, .NEON, {} }, + { .SSHL, {.V_2S,.V_2S,.V_2S,.NONE}, {.VD,.VN,.VM,.NONE}, 0x0EA04400, 0xFFE0FC00, .NEON, {} }, + { .SSHL, {.V_2D,.V_2D,.V_2D,.NONE}, {.VD,.VN,.VM,.NONE}, 0x4EE04400, 0xFFE0FC00, .NEON, {} }, { .SSHL, {.V_8B,.V_8B,.V_8B,.NONE}, {.VD,.VN,.VM,.NONE}, 0x0E204400, 0xFFE0FC00, .NEON, {} }, { .SSHL, {.V_16B,.V_16B,.V_16B,.NONE}, {.VD,.VN,.VM,.NONE}, 0x4E204400, 0xFFE0FC00, .NEON, {} }, - { .SSHL, {.V_4H,.V_4H,.V_4H,.NONE}, {.VD,.VN,.VM,.NONE}, 0x0E604400, 0xFFE0FC00, .NEON, {} }, - { .SSHL, {.V_2D,.V_2D,.V_2D,.NONE}, {.VD,.VN,.VM,.NONE}, 0x4EE04400, 0xFFE0FC00, .NEON, {} }, - { .SSHL, {.V_2S,.V_2S,.V_2S,.NONE}, {.VD,.VN,.VM,.NONE}, 0x0EA04400, 0xFFE0FC00, .NEON, {} }, - { .SSHL, {.V_8H,.V_8H,.V_8H,.NONE}, {.VD,.VN,.VM,.NONE}, 0x4E604400, 0xFFE0FC00, .NEON, {} }, - { .SSHL, {.V_4S,.V_4S,.V_4S,.NONE}, {.VD,.VN,.VM,.NONE}, 0x4EA04400, 0xFFE0FC00, .NEON, {} }, - { .USHL, {.V_2S,.V_2S,.V_2S,.NONE}, {.VD,.VN,.VM,.NONE}, 0x2EA04400, 0xFFE0FC00, .NEON, {} }, { .USHL, {.V_2D,.V_2D,.V_2D,.NONE}, {.VD,.VN,.VM,.NONE}, 0x6EE04400, 0xFFE0FC00, .NEON, {} }, - { .USHL, {.V_4S,.V_4S,.V_4S,.NONE}, {.VD,.VN,.VM,.NONE}, 0x6EA04400, 0xFFE0FC00, .NEON, {} }, + { .USHL, {.V_2S,.V_2S,.V_2S,.NONE}, {.VD,.VN,.VM,.NONE}, 0x2EA04400, 0xFFE0FC00, .NEON, {} }, { .USHL, {.V_4H,.V_4H,.V_4H,.NONE}, {.VD,.VN,.VM,.NONE}, 0x2E604400, 0xFFE0FC00, .NEON, {} }, { .USHL, {.V_16B,.V_16B,.V_16B,.NONE}, {.VD,.VN,.VM,.NONE}, 0x6E204400, 0xFFE0FC00, .NEON, {} }, { .USHL, {.V_8H,.V_8H,.V_8H,.NONE}, {.VD,.VN,.VM,.NONE}, 0x6E604400, 0xFFE0FC00, .NEON, {} }, + { .USHL, {.V_4S,.V_4S,.V_4S,.NONE}, {.VD,.VN,.VM,.NONE}, 0x6EA04400, 0xFFE0FC00, .NEON, {} }, { .USHL, {.V_8B,.V_8B,.V_8B,.NONE}, {.VD,.VN,.VM,.NONE}, 0x2E204400, 0xFFE0FC00, .NEON, {} }, - { .MOV_V_ALIAS, {.V_16B,.V_16B,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4EA01C00, 0xFFE0FC00, .NEON, {} }, + { .SLI, {.V_4S,.V_4S,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHL_IMM,.NONE}, 0x6F205400, 0xFFE0FC00, .NEON, {} }, + { .SLI, {.V_2S,.V_2S,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHL_IMM,.NONE}, 0x2F205400, 0xFFE0FC00, .NEON, {} }, + { .SRI, {.V_2S,.V_2S,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x2F204400, 0xFFE0FC00, .NEON, {} }, + { .SRI, {.V_4S,.V_4S,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x6F204400, 0xFFE0FC00, .NEON, {} }, { .MOV_V_ALIAS, {.V_8B,.V_8B,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0EA01C00, 0xFFE0FC00, .NEON, {} }, + { .MOV_V_ALIAS, {.V_16B,.V_16B,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4EA01C00, 0xFFE0FC00, .NEON, {} }, + { .SHL_V, {.V_2D,.V_2D,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHL_IMM,.NONE}, 0x4F405400, 0xFFC0FC00, .NEON, {} }, + { .SQSHL_V, {.V_2D,.V_2D,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHL_IMM,.NONE}, 0x4F407400, 0xFFC0FC00, .NEON, {} }, + { .SQSHLU, {.V_2D,.V_2D,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHL_IMM,.NONE}, 0x6F406400, 0xFFC0FC00, .NEON, {} }, + { .SSHR, {.V_2D,.V_2D,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x4F400400, 0xFFC0FC00, .NEON, {} }, + { .USHR, {.V_2D,.V_2D,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x6F400400, 0xFFC0FC00, .NEON, {} }, + { .SSRA, {.V_2D,.V_2D,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x4F401400, 0xFFC0FC00, .NEON, {} }, + { .USRA, {.V_2D,.V_2D,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x6F401400, 0xFFC0FC00, .NEON, {} }, + { .SRSHR, {.V_2D,.V_2D,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x4F402400, 0xFFC0FC00, .NEON, {} }, + { .URSHR, {.V_2D,.V_2D,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x6F402400, 0xFFC0FC00, .NEON, {} }, + { .SRSRA, {.V_2D,.V_2D,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x4F403400, 0xFFC0FC00, .NEON, {} }, + { .URSRA, {.V_2D,.V_2D,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x6F403400, 0xFFC0FC00, .NEON, {} }, + { .SLI, {.V_2D,.V_2D,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHL_IMM,.NONE}, 0x6F405400, 0xFFC0FC00, .NEON, {} }, + { .SRI, {.V_2D,.V_2D,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x6F404400, 0xFFC0FC00, .NEON, {} }, { .SM3TT1A, {.V_4S,.V_4S,.V_ELEM_S,.NONE}, {.VD,.VN,.VM,.NONE}, 0xCE408000, 0xFFE0CC00, .CRYPTO, {} }, { .SM3TT1B, {.V_4S,.V_4S,.V_ELEM_S,.NONE}, {.VD,.VN,.VM,.NONE}, 0xCE408400, 0xFFE0CC00, .CRYPTO, {} }, { .SM3TT2A, {.V_4S,.V_4S,.V_ELEM_S,.NONE}, {.VD,.VN,.VM,.NONE}, 0xCE408800, 0xFFE0CC00, .CRYPTO, {} }, @@ -1380,10 +1471,10 @@ DECODE_ENTRIES := [1892]lib.Decode_Entry{ { .BCAX, {.V_16B,.V_16B,.V_16B,.V_16B}, {.VD,.VN,.VM,.VA}, 0xCE200000, 0xFFE08000, .CRYPTO, {} }, { .SM3SS1, {.V_4S,.V_4S,.V_4S,.V_4S}, {.VD,.VN,.VM,.VA}, 0xCE400000, 0xFFE08000, .CRYPTO, {} }, { .XAR, {.V_2D,.V_2D,.V_2D,.IMM_6}, {.VD,.VN,.VM,.IMM6}, 0xCE800000, 0xFFE00000, .CRYPTO, {} }, - { .CMP_IMM, {.XSP_REG,.IMM_12,.NONE,.NONE}, {.RN,.IMM12,.NONE,.NONE}, 0xF100001F, 0xFF80001F, .BASE, {sets_flags=true, is_64=true} }, { .CMP_IMM, {.WSP_REG,.IMM_12,.NONE,.NONE}, {.RN,.IMM12,.NONE,.NONE}, 0x7100001F, 0xFF80001F, .BASE, {sets_flags=true} }, - { .CMN_IMM, {.WSP_REG,.IMM_12,.NONE,.NONE}, {.RN,.IMM12,.NONE,.NONE}, 0x3100001F, 0xFF80001F, .BASE, {sets_flags=true} }, + { .CMP_IMM, {.XSP_REG,.IMM_12,.NONE,.NONE}, {.RN,.IMM12,.NONE,.NONE}, 0xF100001F, 0xFF80001F, .BASE, {sets_flags=true, is_64=true} }, { .CMN_IMM, {.XSP_REG,.IMM_12,.NONE,.NONE}, {.RN,.IMM12,.NONE,.NONE}, 0xB100001F, 0xFF80001F, .BASE, {sets_flags=true, is_64=true} }, + { .CMN_IMM, {.WSP_REG,.IMM_12,.NONE,.NONE}, {.RN,.IMM12,.NONE,.NONE}, 0x3100001F, 0xFF80001F, .BASE, {sets_flags=true} }, { .ADDG, {.XSP_REG,.XSP_REG,.IMM_6,.IMM_4}, {.RD,.RN,.IMM6,.IMM_HW}, 0x91800000, 0xFFC0C000, .MTE, {is_64=true} }, { .SUBG, {.XSP_REG,.XSP_REG,.IMM_6,.IMM_4}, {.RD,.RN,.IMM6,.IMM_HW}, 0xD1800000, 0xFFC0C000, .MTE, {is_64=true} }, { .ADD_IMM, {.XSP_REG,.XSP_REG,.IMM_12,.NONE}, {.RD,.RN,.IMM12,.NONE}, 0x91000000, 0xFF800000, .BASE, {is_64=true} }, @@ -1664,16 +1755,16 @@ DECODE_ENTRIES := [1892]lib.Decode_Entry{ { .LDGM, {.X_REG,.MEM,.NONE,.NONE}, {.RT,.OFFSET_BASE_A,.NONE,.NONE}, 0xD9E00000, 0xFFE00C00, .MTE, {is_64=true} }, { .STGM, {.X_REG,.MEM,.NONE,.NONE}, {.RT,.OFFSET_BASE_A,.NONE,.NONE}, 0xD9A00000, 0xFFE00C00, .MTE, {is_64=true} }, { .STZGM, {.X_REG,.MEM,.NONE,.NONE}, {.RT,.OFFSET_BASE_A,.NONE,.NONE}, 0xD9200000, 0xFFE00C00, .MTE, {is_64=true} }, - { .LDAPUR, {.X_REG,.MEM,.NONE,.NONE}, {.RT,.OFFSET_BASE_S9,.NONE,.NONE}, 0xD9400000, 0xFFE00C00, .BASE, {is_64=true} }, { .LDAPUR, {.W_REG,.MEM,.NONE,.NONE}, {.RT,.OFFSET_BASE_S9,.NONE,.NONE}, 0x99400000, 0xFFE00C00, .BASE, {} }, + { .LDAPUR, {.X_REG,.MEM,.NONE,.NONE}, {.RT,.OFFSET_BASE_S9,.NONE,.NONE}, 0xD9400000, 0xFFE00C00, .BASE, {is_64=true} }, { .STLUR, {.X_REG,.MEM,.NONE,.NONE}, {.RT,.OFFSET_BASE_S9,.NONE,.NONE}, 0xD9000000, 0xFFE00C00, .BASE, {is_64=true} }, { .STLUR, {.W_REG,.MEM,.NONE,.NONE}, {.RT,.OFFSET_BASE_S9,.NONE,.NONE}, 0x99000000, 0xFFE00C00, .BASE, {} }, { .LDAPURB, {.W_REG,.MEM,.NONE,.NONE}, {.RT,.OFFSET_BASE_S9,.NONE,.NONE}, 0x19400000, 0xFFE00C00, .BASE, {} }, { .STLURB, {.W_REG,.MEM,.NONE,.NONE}, {.RT,.OFFSET_BASE_S9,.NONE,.NONE}, 0x19000000, 0xFFE00C00, .BASE, {} }, { .LDAPURH, {.W_REG,.MEM,.NONE,.NONE}, {.RT,.OFFSET_BASE_S9,.NONE,.NONE}, 0x59400000, 0xFFE00C00, .BASE, {} }, { .STLURH, {.W_REG,.MEM,.NONE,.NONE}, {.RT,.OFFSET_BASE_S9,.NONE,.NONE}, 0x59000000, 0xFFE00C00, .BASE, {} }, - { .LDAPURSB, {.X_REG,.MEM,.NONE,.NONE}, {.RT,.OFFSET_BASE_S9,.NONE,.NONE}, 0x19800000, 0xFFE00C00, .BASE, {is_64=true} }, { .LDAPURSB, {.W_REG,.MEM,.NONE,.NONE}, {.RT,.OFFSET_BASE_S9,.NONE,.NONE}, 0x19C00000, 0xFFE00C00, .BASE, {} }, + { .LDAPURSB, {.X_REG,.MEM,.NONE,.NONE}, {.RT,.OFFSET_BASE_S9,.NONE,.NONE}, 0x19800000, 0xFFE00C00, .BASE, {is_64=true} }, { .LDAPURSH, {.W_REG,.MEM,.NONE,.NONE}, {.RT,.OFFSET_BASE_S9,.NONE,.NONE}, 0x59C00000, 0xFFE00C00, .BASE, {} }, { .LDAPURSH, {.X_REG,.MEM,.NONE,.NONE}, {.RT,.OFFSET_BASE_S9,.NONE,.NONE}, 0x59800000, 0xFFE00C00, .BASE, {is_64=true} }, { .LDAPURSW, {.X_REG,.MEM,.NONE,.NONE}, {.RT,.OFFSET_BASE_S9,.NONE,.NONE}, 0x99800000, 0xFFE00C00, .BASE, {is_64=true} }, @@ -1728,10 +1819,10 @@ DECODE_ENTRIES := [1892]lib.Decode_Entry{ { .AUTIB, {.X_REG,.XSP_REG,.NONE,.NONE}, {.RD,.RN,.NONE,.NONE}, 0xDAC11400, 0xFFFFFC00, .PAC, {is_64=true} }, { .AUTDA, {.X_REG,.XSP_REG,.NONE,.NONE}, {.RD,.RN,.NONE,.NONE}, 0xDAC11800, 0xFFFFFC00, .PAC, {is_64=true} }, { .AUTDB, {.X_REG,.XSP_REG,.NONE,.NONE}, {.RD,.RN,.NONE,.NONE}, 0xDAC11C00, 0xFFFFFC00, .PAC, {is_64=true} }, - { .NGC, {.W_REG,.W_REG,.NONE,.NONE}, {.RD,.RM,.NONE,.NONE}, 0x5A0003E0, 0xFFE0FFE0, .BASE, {} }, { .NGC, {.X_REG,.X_REG,.NONE,.NONE}, {.RD,.RM,.NONE,.NONE}, 0xDA0003E0, 0xFFE0FFE0, .BASE, {is_64=true} }, - { .NGCS, {.X_REG,.X_REG,.NONE,.NONE}, {.RD,.RM,.NONE,.NONE}, 0xFA0003E0, 0xFFE0FFE0, .BASE, {sets_flags=true, is_64=true} }, + { .NGC, {.W_REG,.W_REG,.NONE,.NONE}, {.RD,.RM,.NONE,.NONE}, 0x5A0003E0, 0xFFE0FFE0, .BASE, {} }, { .NGCS, {.W_REG,.W_REG,.NONE,.NONE}, {.RD,.RM,.NONE,.NONE}, 0x7A0003E0, 0xFFE0FFE0, .BASE, {sets_flags=true} }, + { .NGCS, {.X_REG,.X_REG,.NONE,.NONE}, {.RD,.RM,.NONE,.NONE}, 0xFA0003E0, 0xFFE0FFE0, .BASE, {sets_flags=true, is_64=true} }, { .LSLV, {.W_REG,.W_REG,.W_REG,.NONE}, {.RD,.RN,.RM,.NONE}, 0x1AC02000, 0xFFE0FC00, .BASE, {} }, { .LSLV, {.X_REG,.X_REG,.X_REG,.NONE}, {.RD,.RN,.RM,.NONE}, 0x9AC02000, 0xFFE0FC00, .BASE, {is_64=true} }, { .LSRV, {.X_REG,.X_REG,.X_REG,.NONE}, {.RD,.RN,.RM,.NONE}, 0x9AC02400, 0xFFE0FC00, .BASE, {is_64=true} }, @@ -1759,10 +1850,10 @@ DECODE_ENTRIES := [1892]lib.Decode_Entry{ { .CRC32CH, {.W_REG,.W_REG,.W_REG,.NONE}, {.RD,.RN,.RM,.NONE}, 0x1AC05400, 0xFFE0FC00, .CRC32, {} }, { .CRC32CW, {.W_REG,.W_REG,.W_REG,.NONE}, {.RD,.RN,.RM,.NONE}, 0x1AC05800, 0xFFE0FC00, .CRC32, {} }, { .CRC32CX, {.W_REG,.W_REG,.X_REG,.NONE}, {.RD,.RN,.RM,.NONE}, 0x9AC05C00, 0xFFE0FC00, .CRC32, {is_64=true} }, - { .ADC, {.W_REG,.W_REG,.W_REG,.NONE}, {.RD,.RN,.RM,.NONE}, 0x1A000000, 0xFFE0FC00, .BASE, {} }, { .ADC, {.X_REG,.X_REG,.X_REG,.NONE}, {.RD,.RN,.RM,.NONE}, 0x9A000000, 0xFFE0FC00, .BASE, {is_64=true} }, - { .ADCS, {.X_REG,.X_REG,.X_REG,.NONE}, {.RD,.RN,.RM,.NONE}, 0xBA000000, 0xFFE0FC00, .BASE, {sets_flags=true, is_64=true} }, + { .ADC, {.W_REG,.W_REG,.W_REG,.NONE}, {.RD,.RN,.RM,.NONE}, 0x1A000000, 0xFFE0FC00, .BASE, {} }, { .ADCS, {.W_REG,.W_REG,.W_REG,.NONE}, {.RD,.RN,.RM,.NONE}, 0x3A000000, 0xFFE0FC00, .BASE, {sets_flags=true} }, + { .ADCS, {.X_REG,.X_REG,.X_REG,.NONE}, {.RD,.RN,.RM,.NONE}, 0xBA000000, 0xFFE0FC00, .BASE, {sets_flags=true, is_64=true} }, { .SBC, {.W_REG,.W_REG,.W_REG,.NONE}, {.RD,.RN,.RM,.NONE}, 0x5A000000, 0xFFE0FC00, .BASE, {} }, { .SBC, {.X_REG,.X_REG,.X_REG,.NONE}, {.RD,.RN,.RM,.NONE}, 0xDA000000, 0xFFE0FC00, .BASE, {is_64=true} }, { .SBCS, {.X_REG,.X_REG,.X_REG,.NONE}, {.RD,.RN,.RM,.NONE}, 0xFA000000, 0xFFE0FC00, .BASE, {sets_flags=true, is_64=true} }, @@ -1790,16 +1881,16 @@ DECODE_ENTRIES := [1892]lib.Decode_Entry{ { .CPYP, {.XSP_REG,.XSP_REG,.X_REG,.NONE}, {.RD,.RN,.RM,.NONE}, 0x1D000400, 0xFFE03C00, .BASE, {is_64=true} }, { .CPYM, {.XSP_REG,.XSP_REG,.X_REG,.NONE}, {.RD,.RN,.RM,.NONE}, 0x1D400400, 0xFFE03C00, .BASE, {is_64=true} }, { .CPYE, {.XSP_REG,.XSP_REG,.X_REG,.NONE}, {.RD,.RN,.RM,.NONE}, 0x1D800400, 0xFFE03C00, .BASE, {is_64=true} }, - { .LDR_V, {.Q_REG,.MEM,.NONE,.NONE}, {.RT,.OFFSET_BASE_U12,.NONE,.NONE}, 0x3DC00000, 0xFFC00000, .FP, {} }, - { .LDR_V, {.D_REG,.MEM,.NONE,.NONE}, {.RT,.OFFSET_BASE_U12,.NONE,.NONE}, 0xFD400000, 0xFFC00000, .FP, {} }, + { .LDR_V, {.S_REG,.MEM,.NONE,.NONE}, {.RT,.OFFSET_BASE_U12,.NONE,.NONE}, 0xBD400000, 0xFFC00000, .FP, {} }, { .LDR_V, {.B_REG,.MEM,.NONE,.NONE}, {.RT,.OFFSET_BASE_U12,.NONE,.NONE}, 0x3D400000, 0xFFC00000, .FP, {} }, { .LDR_V, {.H_REG,.MEM,.NONE,.NONE}, {.RT,.OFFSET_BASE_U12,.NONE,.NONE}, 0x7D400000, 0xFFC00000, .FP, {} }, - { .LDR_V, {.S_REG,.MEM,.NONE,.NONE}, {.RT,.OFFSET_BASE_U12,.NONE,.NONE}, 0xBD400000, 0xFFC00000, .FP, {} }, - { .STR_V, {.Q_REG,.MEM,.NONE,.NONE}, {.RT,.OFFSET_BASE_U12,.NONE,.NONE}, 0x3D800000, 0xFFC00000, .FP, {} }, + { .LDR_V, {.D_REG,.MEM,.NONE,.NONE}, {.RT,.OFFSET_BASE_U12,.NONE,.NONE}, 0xFD400000, 0xFFC00000, .FP, {} }, + { .LDR_V, {.Q_REG,.MEM,.NONE,.NONE}, {.RT,.OFFSET_BASE_U12,.NONE,.NONE}, 0x3DC00000, 0xFFC00000, .FP, {} }, { .STR_V, {.D_REG,.MEM,.NONE,.NONE}, {.RT,.OFFSET_BASE_U12,.NONE,.NONE}, 0xFD000000, 0xFFC00000, .FP, {} }, - { .STR_V, {.H_REG,.MEM,.NONE,.NONE}, {.RT,.OFFSET_BASE_U12,.NONE,.NONE}, 0x7D000000, 0xFFC00000, .FP, {} }, { .STR_V, {.B_REG,.MEM,.NONE,.NONE}, {.RT,.OFFSET_BASE_U12,.NONE,.NONE}, 0x3D000000, 0xFFC00000, .FP, {} }, + { .STR_V, {.Q_REG,.MEM,.NONE,.NONE}, {.RT,.OFFSET_BASE_U12,.NONE,.NONE}, 0x3D800000, 0xFFC00000, .FP, {} }, { .STR_V, {.S_REG,.MEM,.NONE,.NONE}, {.RT,.OFFSET_BASE_U12,.NONE,.NONE}, 0xBD000000, 0xFFC00000, .FP, {} }, + { .STR_V, {.H_REG,.MEM,.NONE,.NONE}, {.RT,.OFFSET_BASE_U12,.NONE,.NONE}, 0x7D000000, 0xFFC00000, .FP, {} }, { .FMOV_REG, {.S_REG,.S_REG,.NONE,.NONE}, {.RD,.RN,.NONE,.NONE}, 0x1E204000, 0xFFFFFC00, .FP, {} }, { .FMOV_REG, {.D_REG,.D_REG,.NONE,.NONE}, {.RD,.RN,.NONE,.NONE}, 0x1E604000, 0xFFFFFC00, .FP, {} }, { .FMOV_GEN, {.D_REG,.X_REG,.NONE,.NONE}, {.RD,.RN,.NONE,.NONE}, 0x9E670000, 0xFFFFFC00, .FP, {is_64=true} }, @@ -1910,14 +2001,14 @@ DECODE_INDEX_OP0 := [16]lib.Decode_Index{ 0x04 = { 454, 76}, 0x05 = { 530, 50}, 0x06 = { 580, 8}, - 0x07 = { 588, 783}, - 0x08 = {1371, 16}, - 0x09 = {1387, 34}, - 0x0A = {1421, 98}, - 0x0B = {1519, 21}, - 0x0C = {1540, 150}, - 0x0D = {1690, 88}, - 0x0E = {1778, 13}, - 0x0F = {1791, 101}, + 0x07 = { 588, 874}, + 0x08 = {1462, 16}, + 0x09 = {1478, 34}, + 0x0A = {1512, 98}, + 0x0B = {1610, 21}, + 0x0C = {1631, 150}, + 0x0D = {1781, 88}, + 0x0E = {1869, 13}, + 0x0F = {1882, 101}, } diff --git a/core/rexcode/arm64/tablegen/generated/encode_tables.odin b/core/rexcode/arm64/tablegen/generated/encode_tables.odin index d5f4c3697..f03adb70b 100644 --- a/core/rexcode/arm64/tablegen/generated/encode_tables.odin +++ b/core/rexcode/arm64/tablegen/generated/encode_tables.odin @@ -8,7 +8,7 @@ package rexcode_arm64_generated import lib "../.." @(rodata) -ENCODE_FORMS := [1890]lib.Encoding{ +ENCODE_FORMS := [1981]lib.Encoding{ // .ADD_IMM { .ADD_IMM, {.WSP_REG,.WSP_REG,.IMM_12,.NONE}, {.RD,.RN,.IMM12,.NONE}, 0x11000000, 0xFF800000, .BASE, {} }, { .ADD_IMM, {.XSP_REG,.XSP_REG,.IMM_12,.NONE}, {.RD,.RN,.IMM12,.NONE}, 0x91000000, 0xFF800000, .BASE, {is_64=true} }, @@ -1730,6 +1730,30 @@ ENCODE_FORMS := [1890]lib.Encoding{ { .BIF, {.V_16B,.V_16B,.V_16B,.NONE}, {.VD,.VN,.VM,.NONE}, 0x6EE01C00, 0xFFE0FC00, .NEON, {} }, // .BSL { .BSL, {.V_16B,.V_16B,.V_16B,.NONE}, {.VD,.VN,.VM,.NONE}, 0x6E601C00, 0xFFE0FC00, .NEON, {} }, + // .SHL_V + { .SHL_V, {.V_8B,.V_8B,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHL_IMM,.NONE}, 0x0F085400, 0xFFF8FC00, .NEON, {} }, + { .SHL_V, {.V_16B,.V_16B,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHL_IMM,.NONE}, 0x4F085400, 0xFFF8FC00, .NEON, {} }, + { .SHL_V, {.V_4H,.V_4H,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHL_IMM,.NONE}, 0x0F105400, 0xFFF0FC00, .NEON, {} }, + { .SHL_V, {.V_8H,.V_8H,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHL_IMM,.NONE}, 0x4F105400, 0xFFF0FC00, .NEON, {} }, + { .SHL_V, {.V_2S,.V_2S,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHL_IMM,.NONE}, 0x0F205400, 0xFFE0FC00, .NEON, {} }, + { .SHL_V, {.V_4S,.V_4S,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHL_IMM,.NONE}, 0x4F205400, 0xFFE0FC00, .NEON, {} }, + { .SHL_V, {.V_2D,.V_2D,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHL_IMM,.NONE}, 0x4F405400, 0xFFC0FC00, .NEON, {} }, + // .SQSHL_V + { .SQSHL_V, {.V_8B,.V_8B,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHL_IMM,.NONE}, 0x0F087400, 0xFFF8FC00, .NEON, {} }, + { .SQSHL_V, {.V_16B,.V_16B,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHL_IMM,.NONE}, 0x4F087400, 0xFFF8FC00, .NEON, {} }, + { .SQSHL_V, {.V_4H,.V_4H,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHL_IMM,.NONE}, 0x0F107400, 0xFFF0FC00, .NEON, {} }, + { .SQSHL_V, {.V_8H,.V_8H,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHL_IMM,.NONE}, 0x4F107400, 0xFFF0FC00, .NEON, {} }, + { .SQSHL_V, {.V_2S,.V_2S,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHL_IMM,.NONE}, 0x0F207400, 0xFFE0FC00, .NEON, {} }, + { .SQSHL_V, {.V_4S,.V_4S,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHL_IMM,.NONE}, 0x4F207400, 0xFFE0FC00, .NEON, {} }, + { .SQSHL_V, {.V_2D,.V_2D,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHL_IMM,.NONE}, 0x4F407400, 0xFFC0FC00, .NEON, {} }, + // .SQSHLU + { .SQSHLU, {.V_8B,.V_8B,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHL_IMM,.NONE}, 0x2F086400, 0xFFF8FC00, .NEON, {} }, + { .SQSHLU, {.V_16B,.V_16B,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHL_IMM,.NONE}, 0x6F086400, 0xFFF8FC00, .NEON, {} }, + { .SQSHLU, {.V_4H,.V_4H,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHL_IMM,.NONE}, 0x2F106400, 0xFFF0FC00, .NEON, {} }, + { .SQSHLU, {.V_8H,.V_8H,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHL_IMM,.NONE}, 0x6F106400, 0xFFF0FC00, .NEON, {} }, + { .SQSHLU, {.V_2S,.V_2S,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHL_IMM,.NONE}, 0x2F206400, 0xFFE0FC00, .NEON, {} }, + { .SQSHLU, {.V_4S,.V_4S,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHL_IMM,.NONE}, 0x6F206400, 0xFFE0FC00, .NEON, {} }, + { .SQSHLU, {.V_2D,.V_2D,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHL_IMM,.NONE}, 0x6F406400, 0xFFC0FC00, .NEON, {} }, // .SRSHL { .SRSHL, {.V_8B,.V_8B,.V_8B,.NONE}, {.VD,.VN,.VM,.NONE}, 0x0E205400, 0xFFE0FC00, .NEON, {} }, { .SRSHL, {.V_16B,.V_16B,.V_16B,.NONE}, {.VD,.VN,.VM,.NONE}, 0x4E205400, 0xFFE0FC00, .NEON, {} }, @@ -1746,6 +1770,70 @@ ENCODE_FORMS := [1890]lib.Encoding{ { .URSHL, {.V_2S,.V_2S,.V_2S,.NONE}, {.VD,.VN,.VM,.NONE}, 0x2EA05400, 0xFFE0FC00, .NEON, {} }, { .URSHL, {.V_4S,.V_4S,.V_4S,.NONE}, {.VD,.VN,.VM,.NONE}, 0x6EA05400, 0xFFE0FC00, .NEON, {} }, { .URSHL, {.V_2D,.V_2D,.V_2D,.NONE}, {.VD,.VN,.VM,.NONE}, 0x6EE05400, 0xFFE0FC00, .NEON, {} }, + // .SSHR + { .SSHR, {.V_8B,.V_8B,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x0F080400, 0xFFF8FC00, .NEON, {} }, + { .SSHR, {.V_16B,.V_16B,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x4F080400, 0xFFF8FC00, .NEON, {} }, + { .SSHR, {.V_4H,.V_4H,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x0F100400, 0xFFF0FC00, .NEON, {} }, + { .SSHR, {.V_8H,.V_8H,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x4F100400, 0xFFF0FC00, .NEON, {} }, + { .SSHR, {.V_2S,.V_2S,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x0F200400, 0xFFE0FC00, .NEON, {} }, + { .SSHR, {.V_4S,.V_4S,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x4F200400, 0xFFE0FC00, .NEON, {} }, + { .SSHR, {.V_2D,.V_2D,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x4F400400, 0xFFC0FC00, .NEON, {} }, + // .USHR + { .USHR, {.V_8B,.V_8B,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x2F080400, 0xFFF8FC00, .NEON, {} }, + { .USHR, {.V_16B,.V_16B,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x6F080400, 0xFFF8FC00, .NEON, {} }, + { .USHR, {.V_4H,.V_4H,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x2F100400, 0xFFF0FC00, .NEON, {} }, + { .USHR, {.V_8H,.V_8H,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x6F100400, 0xFFF0FC00, .NEON, {} }, + { .USHR, {.V_2S,.V_2S,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x2F200400, 0xFFE0FC00, .NEON, {} }, + { .USHR, {.V_4S,.V_4S,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x6F200400, 0xFFE0FC00, .NEON, {} }, + { .USHR, {.V_2D,.V_2D,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x6F400400, 0xFFC0FC00, .NEON, {} }, + // .SSRA + { .SSRA, {.V_8B,.V_8B,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x0F081400, 0xFFF8FC00, .NEON, {} }, + { .SSRA, {.V_16B,.V_16B,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x4F081400, 0xFFF8FC00, .NEON, {} }, + { .SSRA, {.V_4H,.V_4H,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x0F101400, 0xFFF0FC00, .NEON, {} }, + { .SSRA, {.V_8H,.V_8H,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x4F101400, 0xFFF0FC00, .NEON, {} }, + { .SSRA, {.V_2S,.V_2S,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x0F201400, 0xFFE0FC00, .NEON, {} }, + { .SSRA, {.V_4S,.V_4S,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x4F201400, 0xFFE0FC00, .NEON, {} }, + { .SSRA, {.V_2D,.V_2D,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x4F401400, 0xFFC0FC00, .NEON, {} }, + // .USRA + { .USRA, {.V_8B,.V_8B,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x2F081400, 0xFFF8FC00, .NEON, {} }, + { .USRA, {.V_16B,.V_16B,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x6F081400, 0xFFF8FC00, .NEON, {} }, + { .USRA, {.V_4H,.V_4H,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x2F101400, 0xFFF0FC00, .NEON, {} }, + { .USRA, {.V_8H,.V_8H,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x6F101400, 0xFFF0FC00, .NEON, {} }, + { .USRA, {.V_2S,.V_2S,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x2F201400, 0xFFE0FC00, .NEON, {} }, + { .USRA, {.V_4S,.V_4S,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x6F201400, 0xFFE0FC00, .NEON, {} }, + { .USRA, {.V_2D,.V_2D,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x6F401400, 0xFFC0FC00, .NEON, {} }, + // .SRSHR + { .SRSHR, {.V_8B,.V_8B,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x0F082400, 0xFFF8FC00, .NEON, {} }, + { .SRSHR, {.V_16B,.V_16B,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x4F082400, 0xFFF8FC00, .NEON, {} }, + { .SRSHR, {.V_4H,.V_4H,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x0F102400, 0xFFF0FC00, .NEON, {} }, + { .SRSHR, {.V_8H,.V_8H,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x4F102400, 0xFFF0FC00, .NEON, {} }, + { .SRSHR, {.V_2S,.V_2S,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x0F202400, 0xFFE0FC00, .NEON, {} }, + { .SRSHR, {.V_4S,.V_4S,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x4F202400, 0xFFE0FC00, .NEON, {} }, + { .SRSHR, {.V_2D,.V_2D,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x4F402400, 0xFFC0FC00, .NEON, {} }, + // .URSHR + { .URSHR, {.V_8B,.V_8B,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x2F082400, 0xFFF8FC00, .NEON, {} }, + { .URSHR, {.V_16B,.V_16B,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x6F082400, 0xFFF8FC00, .NEON, {} }, + { .URSHR, {.V_4H,.V_4H,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x2F102400, 0xFFF0FC00, .NEON, {} }, + { .URSHR, {.V_8H,.V_8H,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x6F102400, 0xFFF0FC00, .NEON, {} }, + { .URSHR, {.V_2S,.V_2S,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x2F202400, 0xFFE0FC00, .NEON, {} }, + { .URSHR, {.V_4S,.V_4S,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x6F202400, 0xFFE0FC00, .NEON, {} }, + { .URSHR, {.V_2D,.V_2D,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x6F402400, 0xFFC0FC00, .NEON, {} }, + // .SRSRA + { .SRSRA, {.V_8B,.V_8B,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x0F083400, 0xFFF8FC00, .NEON, {} }, + { .SRSRA, {.V_16B,.V_16B,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x4F083400, 0xFFF8FC00, .NEON, {} }, + { .SRSRA, {.V_4H,.V_4H,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x0F103400, 0xFFF0FC00, .NEON, {} }, + { .SRSRA, {.V_8H,.V_8H,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x4F103400, 0xFFF0FC00, .NEON, {} }, + { .SRSRA, {.V_2S,.V_2S,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x0F203400, 0xFFE0FC00, .NEON, {} }, + { .SRSRA, {.V_4S,.V_4S,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x4F203400, 0xFFE0FC00, .NEON, {} }, + { .SRSRA, {.V_2D,.V_2D,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x4F403400, 0xFFC0FC00, .NEON, {} }, + // .URSRA + { .URSRA, {.V_8B,.V_8B,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x2F083400, 0xFFF8FC00, .NEON, {} }, + { .URSRA, {.V_16B,.V_16B,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x6F083400, 0xFFF8FC00, .NEON, {} }, + { .URSRA, {.V_4H,.V_4H,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x2F103400, 0xFFF0FC00, .NEON, {} }, + { .URSRA, {.V_8H,.V_8H,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x6F103400, 0xFFF0FC00, .NEON, {} }, + { .URSRA, {.V_2S,.V_2S,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x2F203400, 0xFFE0FC00, .NEON, {} }, + { .URSRA, {.V_4S,.V_4S,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x6F203400, 0xFFE0FC00, .NEON, {} }, + { .URSRA, {.V_2D,.V_2D,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x6F403400, 0xFFC0FC00, .NEON, {} }, // .SSHL { .SSHL, {.V_8B,.V_8B,.V_8B,.NONE}, {.VD,.VN,.VM,.NONE}, 0x0E204400, 0xFFE0FC00, .NEON, {} }, { .SSHL, {.V_16B,.V_16B,.V_16B,.NONE}, {.VD,.VN,.VM,.NONE}, 0x4E204400, 0xFFE0FC00, .NEON, {} }, @@ -1762,6 +1850,22 @@ ENCODE_FORMS := [1890]lib.Encoding{ { .USHL, {.V_2S,.V_2S,.V_2S,.NONE}, {.VD,.VN,.VM,.NONE}, 0x2EA04400, 0xFFE0FC00, .NEON, {} }, { .USHL, {.V_4S,.V_4S,.V_4S,.NONE}, {.VD,.VN,.VM,.NONE}, 0x6EA04400, 0xFFE0FC00, .NEON, {} }, { .USHL, {.V_2D,.V_2D,.V_2D,.NONE}, {.VD,.VN,.VM,.NONE}, 0x6EE04400, 0xFFE0FC00, .NEON, {} }, + // .SLI + { .SLI, {.V_8B,.V_8B,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHL_IMM,.NONE}, 0x2F085400, 0xFFF8FC00, .NEON, {} }, + { .SLI, {.V_16B,.V_16B,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHL_IMM,.NONE}, 0x6F085400, 0xFFF8FC00, .NEON, {} }, + { .SLI, {.V_4H,.V_4H,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHL_IMM,.NONE}, 0x2F105400, 0xFFF0FC00, .NEON, {} }, + { .SLI, {.V_8H,.V_8H,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHL_IMM,.NONE}, 0x6F105400, 0xFFF0FC00, .NEON, {} }, + { .SLI, {.V_2S,.V_2S,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHL_IMM,.NONE}, 0x2F205400, 0xFFE0FC00, .NEON, {} }, + { .SLI, {.V_4S,.V_4S,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHL_IMM,.NONE}, 0x6F205400, 0xFFE0FC00, .NEON, {} }, + { .SLI, {.V_2D,.V_2D,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHL_IMM,.NONE}, 0x6F405400, 0xFFC0FC00, .NEON, {} }, + // .SRI + { .SRI, {.V_8B,.V_8B,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x2F084400, 0xFFF8FC00, .NEON, {} }, + { .SRI, {.V_16B,.V_16B,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x6F084400, 0xFFF8FC00, .NEON, {} }, + { .SRI, {.V_4H,.V_4H,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x2F104400, 0xFFF0FC00, .NEON, {} }, + { .SRI, {.V_8H,.V_8H,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x6F104400, 0xFFF0FC00, .NEON, {} }, + { .SRI, {.V_2S,.V_2S,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x2F204400, 0xFFE0FC00, .NEON, {} }, + { .SRI, {.V_4S,.V_4S,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x6F204400, 0xFFE0FC00, .NEON, {} }, + { .SRI, {.V_2D,.V_2D,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x6F404400, 0xFFC0FC00, .NEON, {} }, // .NOT_V { .NOT_V, {.V_8B,.V_8B,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2E205800, 0xFFFFFC00, .NEON, {} }, { .NOT_V, {.V_16B,.V_16B,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6E205800, 0xFFFFFC00, .NEON, {} }, @@ -3408,556 +3512,556 @@ ENCODE_RUNS := [lib.Mnemonic]lib.Encode_Run{ .BIT = { 1197, 1}, .BIF = { 1198, 1}, .BSL = { 1199, 1}, - .SHL_V = { 1200, 0}, - .SQSHL_V = { 1200, 0}, - .SQSHLU = { 1200, 0}, - .SRSHL = { 1200, 7}, - .URSHL = { 1207, 7}, - .SSHR = { 1214, 0}, - .USHR = { 1214, 0}, - .SSRA = { 1214, 0}, - .USRA = { 1214, 0}, - .SRSHR = { 1214, 0}, - .URSHR = { 1214, 0}, - .SRSRA = { 1214, 0}, - .URSRA = { 1214, 0}, - .SSHL = { 1214, 7}, - .USHL = { 1221, 7}, - .SLI = { 1228, 0}, - .SRI = { 1228, 0}, - .SSHLL = { 1228, 0}, - .SSHLL2 = { 1228, 0}, - .USHLL = { 1228, 0}, - .USHLL2 = { 1228, 0}, - .SXTL = { 1228, 0}, - .SXTL2 = { 1228, 0}, - .UXTL = { 1228, 0}, - .UXTL2 = { 1228, 0}, - .SHRN = { 1228, 0}, - .SHRN2 = { 1228, 0}, - .RSHRN = { 1228, 0}, - .RSHRN2 = { 1228, 0}, - .SQSHRN = { 1228, 0}, - .SQSHRN2 = { 1228, 0}, - .UQSHRN = { 1228, 0}, - .UQSHRN2 = { 1228, 0}, - .SQRSHRN = { 1228, 0}, - .SQRSHRN2 = { 1228, 0}, - .UQRSHRN = { 1228, 0}, - .UQRSHRN2 = { 1228, 0}, - .SQSHRUN = { 1228, 0}, - .SQSHRUN2 = { 1228, 0}, - .SQRSHRUN = { 1228, 0}, - .SQRSHRUN2 = { 1228, 0}, - .DUP_V = { 1228, 0}, - .INS = { 1228, 0}, - .MOV_V = { 1228, 0}, - .EXT_V = { 1228, 0}, - .TBL = { 1228, 0}, - .TBX = { 1228, 0}, - .ZIP1 = { 1228, 0}, - .ZIP2 = { 1228, 0}, - .UZP1 = { 1228, 0}, - .UZP2 = { 1228, 0}, - .TRN1 = { 1228, 0}, - .TRN2 = { 1228, 0}, - .NOT_V = { 1228, 2}, - .RBIT_V = { 1230, 2}, - .REV16_V = { 1232, 2}, - .REV32_V = { 1234, 4}, - .REV64 = { 1238, 6}, - .CLS_V = { 1244, 6}, - .CLZ_V = { 1250, 6}, - .CNT = { 1256, 2}, - .URECPE_V = { 1258, 2}, - .URSQRTE_V = { 1260, 2}, - .MOVI = { 1262, 0}, - .MVNI = { 1262, 0}, - .FMOV_V_IMM = { 1262, 0}, - .LD1 = { 1262, 4}, - .LD2 = { 1266, 0}, - .LD3 = { 1266, 0}, - .LD4 = { 1266, 0}, - .ST1 = { 1266, 4}, - .ST2 = { 1270, 0}, - .ST3 = { 1270, 0}, - .ST4 = { 1270, 0}, - .LD1R = { 1270, 0}, - .LD2R = { 1270, 0}, - .LD3R = { 1270, 0}, - .LD4R = { 1270, 0}, - .LD1_LANE = { 1270, 0}, - .LD2_LANE = { 1270, 0}, - .LD3_LANE = { 1270, 0}, - .LD4_LANE = { 1270, 0}, - .ST1_LANE = { 1270, 0}, - .ST2_LANE = { 1270, 0}, - .ST3_LANE = { 1270, 0}, - .ST4_LANE = { 1270, 0}, - .LDR_V = { 1270, 5}, - .STR_V = { 1275, 5}, - .LDP_V = { 1280, 0}, - .STP_V = { 1280, 0}, - .LDUR_V = { 1280, 0}, - .STUR_V = { 1280, 0}, - .SVE_ADD_Z = { 1280, 4}, - .SVE_SUB_Z = { 1284, 4}, - .SVE_SQADD_Z = { 1288, 4}, - .SVE_UQADD_Z = { 1292, 4}, - .SVE_SQSUB_Z = { 1296, 4}, - .SVE_UQSUB_Z = { 1300, 4}, - .SVE_ADD_PRED = { 1304, 4}, - .SVE_SUB_PRED = { 1308, 4}, - .SVE_SUBR_PRED = { 1312, 4}, - .SVE_MUL_PRED = { 1316, 4}, - .SVE_SMULH_PRED = { 1320, 4}, - .SVE_UMULH_PRED = { 1324, 4}, - .SVE_SDIV_PRED = { 1328, 2}, - .SVE_UDIV_PRED = { 1330, 2}, - .SVE_SMAX_PRED = { 1332, 4}, - .SVE_UMAX_PRED = { 1336, 4}, - .SVE_SMIN_PRED = { 1340, 4}, - .SVE_UMIN_PRED = { 1344, 4}, - .SVE_SABD_PRED = { 1348, 4}, - .SVE_UABD_PRED = { 1352, 4}, - .SVE_AND_PRED = { 1356, 1}, - .SVE_ORR_PRED = { 1357, 1}, - .SVE_EOR_PRED = { 1358, 1}, - .SVE_BIC_PRED = { 1359, 1}, - .SVE_ASR_PRED = { 1360, 4}, - .SVE_LSL_PRED = { 1364, 4}, - .SVE_LSR_PRED = { 1368, 4}, - .SVE_ASRR_PRED = { 1372, 0}, - .SVE_LSLR_PRED = { 1372, 0}, - .SVE_LSRR_PRED = { 1372, 0}, - .SVE_ABS_PRED = { 1372, 4}, - .SVE_NEG_PRED = { 1376, 4}, - .SVE_CLS_PRED = { 1380, 4}, - .SVE_CLZ_PRED = { 1384, 4}, - .SVE_CNT_PRED = { 1388, 4}, - .SVE_MOV_PRED = { 1392, 0}, - .SVE_FADD_Z = { 1392, 3}, - .SVE_FSUB_Z = { 1395, 3}, - .SVE_FMUL_Z = { 1398, 3}, - .SVE_FRECPS = { 1401, 3}, - .SVE_FRSQRTS = { 1404, 3}, - .SVE_FTSMUL = { 1407, 3}, - .SVE_FADD_PRED = { 1410, 3}, - .SVE_FSUB_PRED = { 1413, 3}, - .SVE_FSUBR_PRED = { 1416, 0}, - .SVE_FMUL_PRED = { 1416, 3}, - .SVE_FDIV_PRED = { 1419, 3}, - .SVE_FDIVR_PRED = { 1422, 0}, - .SVE_FMAX_PRED = { 1422, 3}, - .SVE_FMIN_PRED = { 1425, 3}, - .SVE_FMAXNM_PRED = { 1428, 3}, - .SVE_FMINNM_PRED = { 1431, 3}, - .SVE_FABS_Z = { 1434, 3}, - .SVE_FNEG_Z = { 1437, 3}, - .SVE_FSQRT_Z = { 1440, 3}, - .SVE_FRECPX_Z = { 1443, 0}, - .SVE_FRINTN = { 1443, 0}, - .SVE_FRINTP = { 1443, 0}, - .SVE_FRINTM = { 1443, 0}, - .SVE_FRINTZ = { 1443, 0}, - .SVE_FRINTA = { 1443, 0}, - .SVE_FRINTX = { 1443, 0}, - .SVE_FRINTI = { 1443, 0}, - .SVE_FMLA = { 1443, 3}, - .SVE_FMLS = { 1446, 3}, - .SVE_FNMLA = { 1449, 3}, - .SVE_FNMLS = { 1452, 3}, - .SVE_AND_P = { 1455, 1}, - .SVE_BIC_P = { 1456, 1}, - .SVE_ORR_P = { 1457, 1}, - .SVE_EOR_P = { 1458, 1}, - .SVE_NAND_P = { 1459, 1}, - .SVE_NOR_P = { 1460, 1}, - .SVE_ORN_P = { 1461, 1}, - .SVE_SEL_P = { 1462, 1}, - .SVE_ANDS_P = { 1463, 1}, - .SVE_BICS_P = { 1464, 1}, - .SVE_ORRS_P = { 1465, 1}, - .SVE_EORS_P = { 1466, 1}, - .SVE_NANDS_P = { 1467, 0}, - .SVE_NORS_P = { 1467, 0}, - .SVE_ORNS_P = { 1467, 0}, - .SVE_NOT_P = { 1467, 0}, - .SVE_MOV_P = { 1467, 0}, - .SVE_MOVS_P = { 1467, 0}, - .SVE_PTRUE = { 1467, 1}, - .SVE_PTRUES = { 1468, 1}, - .SVE_PFALSE = { 1469, 1}, - .SVE_PFIRST = { 1470, 1}, - .SVE_PNEXT = { 1471, 1}, - .SVE_BRKA = { 1472, 0}, - .SVE_BRKB = { 1472, 0}, - .SVE_BRKAS = { 1472, 0}, - .SVE_BRKBS = { 1472, 0}, - .SVE_BRKPA = { 1472, 0}, - .SVE_BRKPB = { 1472, 0}, - .SVE_BRKN = { 1472, 0}, - .SVE_RDFFR = { 1472, 0}, - .SVE_WRFFR = { 1472, 0}, - .SVE_SETFFR = { 1472, 0}, - .SVE_CMPEQ = { 1472, 4}, - .SVE_CMPNE = { 1476, 4}, - .SVE_CMPGE = { 1480, 4}, - .SVE_CMPGT = { 1484, 4}, - .SVE_CMPLE = { 1488, 0}, - .SVE_CMPLT = { 1488, 0}, - .SVE_CMPHI = { 1488, 4}, - .SVE_CMPHS = { 1492, 4}, - .SVE_CMPLO = { 1496, 0}, - .SVE_CMPLS = { 1496, 0}, - .SVE_FCMEQ = { 1496, 0}, - .SVE_FCMNE = { 1496, 0}, - .SVE_FCMGE = { 1496, 0}, - .SVE_FCMGT = { 1496, 0}, - .SVE_FCMLE = { 1496, 0}, - .SVE_FCMLT = { 1496, 0}, - .SVE_FCMUO = { 1496, 0}, - .SVE_DUP_Z = { 1496, 4}, - .SVE_INSR = { 1500, 0}, - .SVE_REV_Z = { 1500, 4}, - .SVE_REV_P = { 1504, 1}, - .SVE_TBL = { 1505, 4}, - .SVE_ZIP1_Z = { 1509, 4}, - .SVE_ZIP2_Z = { 1513, 4}, - .SVE_UZP1_Z = { 1517, 4}, - .SVE_UZP2_Z = { 1521, 4}, - .SVE_TRN1_Z = { 1525, 4}, - .SVE_TRN2_Z = { 1529, 4}, - .SVE_ZIP1_P = { 1533, 1}, - .SVE_ZIP2_P = { 1534, 1}, - .SVE_UZP1_P = { 1535, 1}, - .SVE_UZP2_P = { 1536, 1}, - .SVE_TRN1_P = { 1537, 1}, - .SVE_TRN2_P = { 1538, 1}, - .SVE_CPY_Z = { 1539, 0}, - .SVE_COMPACT = { 1539, 0}, - .SVE_EXT_Z = { 1539, 0}, - .SVE_LD1B = { 1539, 1}, - .SVE_LD1H = { 1540, 1}, - .SVE_LD1W = { 1541, 1}, - .SVE_LD1D = { 1542, 1}, - .SVE_LD1SB = { 1543, 1}, - .SVE_LD1SH = { 1544, 1}, - .SVE_LD1SW = { 1545, 1}, - .SVE_ST1B = { 1546, 1}, - .SVE_ST1H = { 1547, 1}, - .SVE_ST1W = { 1548, 1}, - .SVE_ST1D = { 1549, 1}, - .SVE_LDR_Z = { 1550, 1}, - .SVE_STR_Z = { 1551, 1}, - .SVE_LDR_P = { 1552, 1}, - .SVE_STR_P = { 1553, 1}, - .SVE_LDFF1B = { 1554, 1}, - .SVE_LDFF1H = { 1555, 1}, - .SVE_LDFF1W = { 1556, 1}, - .SVE_LDFF1D = { 1557, 1}, - .SVE_WHILEGE = { 1558, 1}, - .SVE_WHILEGT = { 1559, 1}, - .SVE_WHILELE = { 1560, 1}, - .SVE_WHILELT = { 1561, 1}, - .SVE_WHILEHI = { 1562, 1}, - .SVE_WHILEHS = { 1563, 1}, - .SVE_WHILELO = { 1564, 1}, - .SVE_WHILELS = { 1565, 1}, - .SVE_SQRDMLAH = { 1566, 4}, - .SVE_SQRDMLSH = { 1570, 4}, - .SVE_ADCLB = { 1574, 2}, - .SVE_ADCLT = { 1576, 2}, - .SVE_SBCLB = { 1578, 2}, - .SVE_SBCLT = { 1580, 2}, - .SVE_TBL2 = { 1582, 1}, - .SVE_TBX = { 1583, 1}, - .SVE_AESE = { 1584, 1}, - .SVE_AESD = { 1585, 1}, - .SVE_AESMC = { 1586, 1}, - .SVE_AESIMC = { 1587, 1}, - .SVE_BCAX_Z = { 1588, 0}, - .SVE_XAR_Z = { 1588, 0}, - .SVE_EOR3_Z = { 1588, 0}, - .SVE_MATCH = { 1588, 2}, - .SVE_NMATCH = { 1590, 2}, - .SVE_HISTCNT = { 1592, 2}, - .SVE_HISTSEG = { 1594, 1}, - .SME_SMSTART = { 1595, 1}, - .SME_SMSTOP = { 1596, 1}, - .SME_RDSVL = { 1597, 1}, - .SME_ADDHA = { 1598, 0}, - .SME_ADDVA = { 1598, 0}, - .SME_ZERO = { 1598, 1}, - .SME_FMOPA = { 1599, 1}, - .SME_FMOPS = { 1600, 1}, - .SME_BFMOPA = { 1601, 1}, - .SME_BFMOPS = { 1602, 1}, - .SME_SMOPA = { 1603, 2}, - .SME_SMOPS = { 1605, 2}, - .SME_UMOPA = { 1607, 2}, - .SME_UMOPS = { 1609, 2}, - .SME_USMOPA = { 1611, 1}, - .SME_SUMOPA = { 1612, 1}, - .SME_MOVA_TO_Z = { 1613, 0}, - .SME_MOVA_TO_ZA = { 1613, 0}, - .SME_LD1B_ZA = { 1613, 0}, - .SME_LD1H_ZA = { 1613, 0}, - .SME_LD1W_ZA = { 1613, 0}, - .SME_LD1D_ZA = { 1613, 0}, - .SME_LD1Q_ZA = { 1613, 0}, - .SME_ST1B_ZA = { 1613, 0}, - .SME_ST1H_ZA = { 1613, 0}, - .SME_ST1W_ZA = { 1613, 0}, - .SME_ST1D_ZA = { 1613, 0}, - .SME_ST1Q_ZA = { 1613, 0}, - .SME_LDR_ZA = { 1613, 1}, - .SME_STR_ZA = { 1614, 1}, - .SVE_FMLA_IDX_H = { 1615, 1}, - .SVE_FMLA_IDX_S = { 1616, 1}, - .SVE_FMLA_IDX_D = { 1617, 1}, - .SVE_FMLS_IDX_H = { 1618, 1}, - .SVE_FMLS_IDX_S = { 1619, 1}, - .SVE_FMLS_IDX_D = { 1620, 1}, - .SVE_LD1B_GATHER_S = { 1621, 1}, - .SVE_LD1B_GATHER_D = { 1622, 1}, - .SVE_LD1H_GATHER_S = { 1623, 1}, - .SVE_LD1H_GATHER_D = { 1624, 1}, - .SVE_LD1W_GATHER_S = { 1625, 1}, - .SVE_LD1W_GATHER_D = { 1626, 1}, - .SVE_LD1D_GATHER_D = { 1627, 1}, - .SVE_LD1SB_GATHER_S = { 1628, 1}, - .SVE_LD1SB_GATHER_D = { 1629, 1}, - .SVE_LD1SH_GATHER_S = { 1630, 1}, - .SVE_LD1SH_GATHER_D = { 1631, 1}, - .SVE_LD1SW_GATHER_D = { 1632, 1}, - .SVE_ST1B_SCATTER_S = { 1633, 1}, - .SVE_ST1B_SCATTER_D = { 1634, 1}, - .SVE_ST1H_SCATTER_S = { 1635, 1}, - .SVE_ST1H_SCATTER_D = { 1636, 1}, - .SVE_ST1W_SCATTER_S = { 1637, 1}, - .SVE_ST1W_SCATTER_D = { 1638, 1}, - .SVE_ST1D_SCATTER_D = { 1639, 1}, - .SME_LD1B_TILE = { 1640, 1}, - .SME_LD1H_TILE = { 1641, 1}, - .SME_LD1W_TILE = { 1642, 1}, - .SME_LD1D_TILE = { 1643, 1}, - .SME_LD1Q_TILE = { 1644, 1}, - .SME_ST1B_TILE = { 1645, 1}, - .SME_ST1H_TILE = { 1646, 1}, - .SME_ST1W_TILE = { 1647, 1}, - .SME_ST1D_TILE = { 1648, 1}, - .SME_ST1Q_TILE = { 1649, 1}, - .SME_MOVA_Z_FROM_TILE = { 1650, 1}, - .SME_MOVA_TILE_FROM_Z = { 1651, 1}, - .FCMLA_4H = { 1652, 1}, - .FCMLA_8H = { 1653, 1}, - .FCMLA_4S = { 1654, 1}, - .FCMLA_2D = { 1655, 1}, - .FCADD_4H = { 1656, 1}, - .FCADD_8H = { 1657, 1}, - .FCADD_4S = { 1658, 1}, - .FCADD_2D = { 1659, 1}, - .SVE_PRFB = { 1660, 1}, - .SVE_PRFH = { 1661, 1}, - .SVE_PRFW = { 1662, 1}, - .SVE_PRFD = { 1663, 1}, - .SVE_LDNT1B = { 1664, 1}, - .SVE_LDNT1H = { 1665, 1}, - .SVE_LDNT1W = { 1666, 1}, - .SVE_LDNT1D = { 1667, 1}, - .SVE_STNT1B = { 1668, 1}, - .SVE_STNT1H = { 1669, 1}, - .SVE_STNT1W = { 1670, 1}, - .SVE_STNT1D = { 1671, 1}, - .SVE_EXT = { 1672, 1}, - .SVE_SPLICE = { 1673, 1}, - .SVE_INDEX_II = { 1674, 1}, - .SVE_INDEX_IR = { 1675, 1}, - .SVE_INDEX_RI = { 1676, 1}, - .SVE_INDEX_RR = { 1677, 1}, - .SVE_BSL = { 1678, 1}, - .SVE_BSL1N = { 1679, 1}, - .SVE_BSL2N = { 1680, 1}, - .SVE_NBSL = { 1681, 1}, - .SVE_PMUL_VEC = { 1682, 1}, - .SVE_PMULLB = { 1683, 1}, - .SVE_PMULLT = { 1684, 1}, - .SVE_BFCVT = { 1685, 1}, - .SVE_BFCVTNT = { 1686, 1}, - .LDRAA = { 1687, 1}, - .LDRAB = { 1688, 1}, - .LDRAA_PRE = { 1689, 1}, - .LDRAB_PRE = { 1690, 1}, - .TSTART = { 1691, 1}, - .TCOMMIT = { 1692, 1}, - .TCANCEL = { 1693, 1}, - .TTEST = { 1694, 1}, - .WFET = { 1695, 1}, - .WFIT = { 1696, 1}, - .BC_COND = { 1697, 1}, - .UXTB = { 1698, 1}, - .UXTH = { 1699, 1}, - .UXTW = { 1700, 1}, - .SXTB = { 1701, 1}, - .SXTH = { 1702, 1}, - .SXTW = { 1703, 1}, - .ADC = { 1704, 2}, - .ADCS = { 1706, 2}, - .SBC = { 1708, 2}, - .SBCS = { 1710, 2}, - .NGC = { 1712, 2}, - .NGCS = { 1714, 2}, - .LDAPUR = { 1716, 2}, - .STLUR = { 1718, 2}, - .LDAPURB = { 1720, 1}, - .STLURB = { 1721, 1}, - .LDAPURH = { 1722, 1}, - .STLURH = { 1723, 1}, - .LDAPURSB = { 1724, 2}, - .LDAPURSH = { 1726, 2}, - .LDAPURSW = { 1728, 1}, - .SVE_BFADD = { 1729, 1}, - .SVE_BFSUB = { 1730, 1}, - .SVE_BFMUL = { 1731, 1}, - .SVE_BFMLA = { 1732, 1}, - .SVE_BFMLS = { 1733, 1}, - .SB = { 1734, 1}, - .CSDB = { 1735, 1}, - .DGH = { 1736, 1}, - .PSB_CSYNC = { 1737, 1}, - .TSB_CSYNC = { 1738, 1}, - .BTI_J = { 1739, 1}, - .BTI_C = { 1740, 1}, - .BTI_JC = { 1741, 1}, - .MOV_V_ALIAS = { 1742, 2}, - .NOT_V_ALIAS = { 1744, 2}, - .LSL_IMM = { 1746, 2}, - .LSR_IMM = { 1748, 2}, - .ASR_IMM = { 1750, 2}, - .ROR_IMM = { 1752, 2}, - .SVE_BFADD_UNPRED = { 1754, 1}, - .SVE_BFSUB_UNPRED = { 1755, 1}, - .SVE_BFMUL_UNPRED = { 1756, 1}, - .SVE_BFCLAMP = { 1757, 1}, - .SVE_BFMAXNM = { 1758, 1}, - .SVE_BFMINNM = { 1759, 1}, - .SME2_LUTI2_B = { 1760, 1}, - .SME2_LUTI4_B = { 1761, 1}, - .SME2_LD1B_X2 = { 1762, 1}, - .SME2_LD1H_X2 = { 1763, 1}, - .SME2_LD1W_X2 = { 1764, 1}, - .SME2_LD1D_X2 = { 1765, 1}, - .SME2_LD1B_X4 = { 1766, 1}, - .SME2_LD1H_X4 = { 1767, 1}, - .SME2_LD1W_X4 = { 1768, 1}, - .SME2_LD1D_X4 = { 1769, 1}, - .SME2_ST1B_X2 = { 1770, 1}, - .SME2_ST1H_X2 = { 1771, 1}, - .SME2_ST1W_X2 = { 1772, 1}, - .SME2_ST1D_X2 = { 1773, 1}, - .SME2_ST1B_X4 = { 1774, 1}, - .SME2_ST1H_X4 = { 1775, 1}, - .SME2_ST1W_X4 = { 1776, 1}, - .SME2_ST1D_X4 = { 1777, 1}, - .SME2_ZIP_3 = { 1778, 1}, - .SME2_ZIP_4 = { 1779, 1}, - .SME2_UZP_3 = { 1780, 1}, - .SME2_UZP_4 = { 1781, 1}, - .TLBI_RPALOS = { 1782, 1}, - .TLBI_RPAOS = { 1783, 1}, - .AT_S1E1A = { 1784, 1}, - .DC_CIPAPA = { 1785, 1}, - .DC_CIGDPAPA = { 1786, 1}, - .TLBI_PAALL = { 1787, 1}, - .TLBI_PAALLOS = { 1788, 1}, - .AMX_LDX = { 1789, 1}, - .AMX_LDY = { 1790, 1}, - .AMX_STX = { 1791, 1}, - .AMX_STY = { 1792, 1}, - .AMX_LDZ = { 1793, 1}, - .AMX_STZ = { 1794, 1}, - .AMX_LDZI = { 1795, 1}, - .AMX_STZI = { 1796, 1}, - .AMX_EXTRX = { 1797, 1}, - .AMX_EXTRY = { 1798, 1}, - .AMX_FMA64 = { 1799, 1}, - .AMX_FMS64 = { 1800, 1}, - .AMX_FMA32 = { 1801, 1}, - .AMX_FMS32 = { 1802, 1}, - .AMX_MAC16 = { 1803, 1}, - .AMX_FMA16 = { 1804, 1}, - .AMX_FMS16 = { 1805, 1}, - .AMX_SET = { 1806, 1}, - .AMX_CLR = { 1807, 1}, - .AMX_VECINT = { 1808, 1}, - .AMX_VECFP = { 1809, 1}, - .AMX_MATINT = { 1810, 1}, - .AMX_MATFP = { 1811, 1}, - .AMX_GENLUT = { 1812, 1}, - .CPYP = { 1813, 1}, - .CPYM = { 1814, 1}, - .CPYE = { 1815, 1}, - .CPYFP = { 1816, 1}, - .CPYFM = { 1817, 1}, - .CPYFE = { 1818, 1}, - .SETP = { 1819, 1}, - .SETM = { 1820, 1}, - .SETE = { 1821, 1}, - .DC_IVAC = { 1822, 1}, - .DC_ISW = { 1823, 1}, - .DC_CSW = { 1824, 1}, - .DC_CISW = { 1825, 1}, - .DC_ZVA = { 1826, 1}, - .DC_CVAC = { 1827, 1}, - .DC_CVAU = { 1828, 1}, - .DC_CIVAC = { 1829, 1}, - .IC_IALLUIS = { 1830, 1}, - .IC_IALLU = { 1831, 1}, - .IC_IVAU = { 1832, 1}, - .AT_S1E1R = { 1833, 1}, - .AT_S1E1W = { 1834, 1}, - .AT_S1E0R = { 1835, 1}, - .AT_S1E0W = { 1836, 1}, - .AT_S1E2R = { 1837, 1}, - .AT_S1E2W = { 1838, 1}, - .AT_S1E3R = { 1839, 1}, - .AT_S1E3W = { 1840, 1}, - .AT_S12E1R = { 1841, 1}, - .AT_S12E1W = { 1842, 1}, - .AT_S12E0R = { 1843, 1}, - .AT_S12E0W = { 1844, 1}, - .TLBI_VMALLE1 = { 1845, 1}, - .TLBI_VMALLE1IS = { 1846, 1}, - .TLBI_VAE1 = { 1847, 1}, - .TLBI_VAE1IS = { 1848, 1}, - .TLBI_ASIDE1 = { 1849, 1}, - .TLBI_ASIDE1IS = { 1850, 1}, - .TLBI_VAAE1 = { 1851, 1}, - .TLBI_VAAE1IS = { 1852, 1}, - .TLBI_VALE1 = { 1853, 1}, - .TLBI_VALE1IS = { 1854, 1}, - .TLBI_VAALE1 = { 1855, 1}, - .TLBI_VAALE1IS = { 1856, 1}, - .TLBI_ALLE1 = { 1857, 1}, - .TLBI_ALLE1IS = { 1858, 1}, - .TLBI_ALLE2 = { 1859, 1}, - .TLBI_ALLE2IS = { 1860, 1}, - .TLBI_ALLE3 = { 1861, 1}, - .TLBI_ALLE3IS = { 1862, 1}, - .PRFM = { 1863, 1}, - .PRFUM = { 1864, 1}, - .PRFM_LIT = { 1865, 1}, - .MOV_REG = { 1866, 2}, - .MOV_BITMASK = { 1868, 2}, - .MVN = { 1870, 2}, - .NEG_SR = { 1872, 2}, - .NEGS = { 1874, 2}, - .CMP_SR = { 1876, 2}, - .CMP_ER = { 1878, 2}, - .CMP_IMM = { 1880, 2}, - .CMN_SR = { 1882, 2}, - .CMN_ER = { 1884, 2}, - .CMN_IMM = { 1886, 2}, - .TST_SR = { 1888, 2}, + .SHL_V = { 1200, 7}, + .SQSHL_V = { 1207, 7}, + .SQSHLU = { 1214, 7}, + .SRSHL = { 1221, 7}, + .URSHL = { 1228, 7}, + .SSHR = { 1235, 7}, + .USHR = { 1242, 7}, + .SSRA = { 1249, 7}, + .USRA = { 1256, 7}, + .SRSHR = { 1263, 7}, + .URSHR = { 1270, 7}, + .SRSRA = { 1277, 7}, + .URSRA = { 1284, 7}, + .SSHL = { 1291, 7}, + .USHL = { 1298, 7}, + .SLI = { 1305, 7}, + .SRI = { 1312, 7}, + .SSHLL = { 1319, 0}, + .SSHLL2 = { 1319, 0}, + .USHLL = { 1319, 0}, + .USHLL2 = { 1319, 0}, + .SXTL = { 1319, 0}, + .SXTL2 = { 1319, 0}, + .UXTL = { 1319, 0}, + .UXTL2 = { 1319, 0}, + .SHRN = { 1319, 0}, + .SHRN2 = { 1319, 0}, + .RSHRN = { 1319, 0}, + .RSHRN2 = { 1319, 0}, + .SQSHRN = { 1319, 0}, + .SQSHRN2 = { 1319, 0}, + .UQSHRN = { 1319, 0}, + .UQSHRN2 = { 1319, 0}, + .SQRSHRN = { 1319, 0}, + .SQRSHRN2 = { 1319, 0}, + .UQRSHRN = { 1319, 0}, + .UQRSHRN2 = { 1319, 0}, + .SQSHRUN = { 1319, 0}, + .SQSHRUN2 = { 1319, 0}, + .SQRSHRUN = { 1319, 0}, + .SQRSHRUN2 = { 1319, 0}, + .DUP_V = { 1319, 0}, + .INS = { 1319, 0}, + .MOV_V = { 1319, 0}, + .EXT_V = { 1319, 0}, + .TBL = { 1319, 0}, + .TBX = { 1319, 0}, + .ZIP1 = { 1319, 0}, + .ZIP2 = { 1319, 0}, + .UZP1 = { 1319, 0}, + .UZP2 = { 1319, 0}, + .TRN1 = { 1319, 0}, + .TRN2 = { 1319, 0}, + .NOT_V = { 1319, 2}, + .RBIT_V = { 1321, 2}, + .REV16_V = { 1323, 2}, + .REV32_V = { 1325, 4}, + .REV64 = { 1329, 6}, + .CLS_V = { 1335, 6}, + .CLZ_V = { 1341, 6}, + .CNT = { 1347, 2}, + .URECPE_V = { 1349, 2}, + .URSQRTE_V = { 1351, 2}, + .MOVI = { 1353, 0}, + .MVNI = { 1353, 0}, + .FMOV_V_IMM = { 1353, 0}, + .LD1 = { 1353, 4}, + .LD2 = { 1357, 0}, + .LD3 = { 1357, 0}, + .LD4 = { 1357, 0}, + .ST1 = { 1357, 4}, + .ST2 = { 1361, 0}, + .ST3 = { 1361, 0}, + .ST4 = { 1361, 0}, + .LD1R = { 1361, 0}, + .LD2R = { 1361, 0}, + .LD3R = { 1361, 0}, + .LD4R = { 1361, 0}, + .LD1_LANE = { 1361, 0}, + .LD2_LANE = { 1361, 0}, + .LD3_LANE = { 1361, 0}, + .LD4_LANE = { 1361, 0}, + .ST1_LANE = { 1361, 0}, + .ST2_LANE = { 1361, 0}, + .ST3_LANE = { 1361, 0}, + .ST4_LANE = { 1361, 0}, + .LDR_V = { 1361, 5}, + .STR_V = { 1366, 5}, + .LDP_V = { 1371, 0}, + .STP_V = { 1371, 0}, + .LDUR_V = { 1371, 0}, + .STUR_V = { 1371, 0}, + .SVE_ADD_Z = { 1371, 4}, + .SVE_SUB_Z = { 1375, 4}, + .SVE_SQADD_Z = { 1379, 4}, + .SVE_UQADD_Z = { 1383, 4}, + .SVE_SQSUB_Z = { 1387, 4}, + .SVE_UQSUB_Z = { 1391, 4}, + .SVE_ADD_PRED = { 1395, 4}, + .SVE_SUB_PRED = { 1399, 4}, + .SVE_SUBR_PRED = { 1403, 4}, + .SVE_MUL_PRED = { 1407, 4}, + .SVE_SMULH_PRED = { 1411, 4}, + .SVE_UMULH_PRED = { 1415, 4}, + .SVE_SDIV_PRED = { 1419, 2}, + .SVE_UDIV_PRED = { 1421, 2}, + .SVE_SMAX_PRED = { 1423, 4}, + .SVE_UMAX_PRED = { 1427, 4}, + .SVE_SMIN_PRED = { 1431, 4}, + .SVE_UMIN_PRED = { 1435, 4}, + .SVE_SABD_PRED = { 1439, 4}, + .SVE_UABD_PRED = { 1443, 4}, + .SVE_AND_PRED = { 1447, 1}, + .SVE_ORR_PRED = { 1448, 1}, + .SVE_EOR_PRED = { 1449, 1}, + .SVE_BIC_PRED = { 1450, 1}, + .SVE_ASR_PRED = { 1451, 4}, + .SVE_LSL_PRED = { 1455, 4}, + .SVE_LSR_PRED = { 1459, 4}, + .SVE_ASRR_PRED = { 1463, 0}, + .SVE_LSLR_PRED = { 1463, 0}, + .SVE_LSRR_PRED = { 1463, 0}, + .SVE_ABS_PRED = { 1463, 4}, + .SVE_NEG_PRED = { 1467, 4}, + .SVE_CLS_PRED = { 1471, 4}, + .SVE_CLZ_PRED = { 1475, 4}, + .SVE_CNT_PRED = { 1479, 4}, + .SVE_MOV_PRED = { 1483, 0}, + .SVE_FADD_Z = { 1483, 3}, + .SVE_FSUB_Z = { 1486, 3}, + .SVE_FMUL_Z = { 1489, 3}, + .SVE_FRECPS = { 1492, 3}, + .SVE_FRSQRTS = { 1495, 3}, + .SVE_FTSMUL = { 1498, 3}, + .SVE_FADD_PRED = { 1501, 3}, + .SVE_FSUB_PRED = { 1504, 3}, + .SVE_FSUBR_PRED = { 1507, 0}, + .SVE_FMUL_PRED = { 1507, 3}, + .SVE_FDIV_PRED = { 1510, 3}, + .SVE_FDIVR_PRED = { 1513, 0}, + .SVE_FMAX_PRED = { 1513, 3}, + .SVE_FMIN_PRED = { 1516, 3}, + .SVE_FMAXNM_PRED = { 1519, 3}, + .SVE_FMINNM_PRED = { 1522, 3}, + .SVE_FABS_Z = { 1525, 3}, + .SVE_FNEG_Z = { 1528, 3}, + .SVE_FSQRT_Z = { 1531, 3}, + .SVE_FRECPX_Z = { 1534, 0}, + .SVE_FRINTN = { 1534, 0}, + .SVE_FRINTP = { 1534, 0}, + .SVE_FRINTM = { 1534, 0}, + .SVE_FRINTZ = { 1534, 0}, + .SVE_FRINTA = { 1534, 0}, + .SVE_FRINTX = { 1534, 0}, + .SVE_FRINTI = { 1534, 0}, + .SVE_FMLA = { 1534, 3}, + .SVE_FMLS = { 1537, 3}, + .SVE_FNMLA = { 1540, 3}, + .SVE_FNMLS = { 1543, 3}, + .SVE_AND_P = { 1546, 1}, + .SVE_BIC_P = { 1547, 1}, + .SVE_ORR_P = { 1548, 1}, + .SVE_EOR_P = { 1549, 1}, + .SVE_NAND_P = { 1550, 1}, + .SVE_NOR_P = { 1551, 1}, + .SVE_ORN_P = { 1552, 1}, + .SVE_SEL_P = { 1553, 1}, + .SVE_ANDS_P = { 1554, 1}, + .SVE_BICS_P = { 1555, 1}, + .SVE_ORRS_P = { 1556, 1}, + .SVE_EORS_P = { 1557, 1}, + .SVE_NANDS_P = { 1558, 0}, + .SVE_NORS_P = { 1558, 0}, + .SVE_ORNS_P = { 1558, 0}, + .SVE_NOT_P = { 1558, 0}, + .SVE_MOV_P = { 1558, 0}, + .SVE_MOVS_P = { 1558, 0}, + .SVE_PTRUE = { 1558, 1}, + .SVE_PTRUES = { 1559, 1}, + .SVE_PFALSE = { 1560, 1}, + .SVE_PFIRST = { 1561, 1}, + .SVE_PNEXT = { 1562, 1}, + .SVE_BRKA = { 1563, 0}, + .SVE_BRKB = { 1563, 0}, + .SVE_BRKAS = { 1563, 0}, + .SVE_BRKBS = { 1563, 0}, + .SVE_BRKPA = { 1563, 0}, + .SVE_BRKPB = { 1563, 0}, + .SVE_BRKN = { 1563, 0}, + .SVE_RDFFR = { 1563, 0}, + .SVE_WRFFR = { 1563, 0}, + .SVE_SETFFR = { 1563, 0}, + .SVE_CMPEQ = { 1563, 4}, + .SVE_CMPNE = { 1567, 4}, + .SVE_CMPGE = { 1571, 4}, + .SVE_CMPGT = { 1575, 4}, + .SVE_CMPLE = { 1579, 0}, + .SVE_CMPLT = { 1579, 0}, + .SVE_CMPHI = { 1579, 4}, + .SVE_CMPHS = { 1583, 4}, + .SVE_CMPLO = { 1587, 0}, + .SVE_CMPLS = { 1587, 0}, + .SVE_FCMEQ = { 1587, 0}, + .SVE_FCMNE = { 1587, 0}, + .SVE_FCMGE = { 1587, 0}, + .SVE_FCMGT = { 1587, 0}, + .SVE_FCMLE = { 1587, 0}, + .SVE_FCMLT = { 1587, 0}, + .SVE_FCMUO = { 1587, 0}, + .SVE_DUP_Z = { 1587, 4}, + .SVE_INSR = { 1591, 0}, + .SVE_REV_Z = { 1591, 4}, + .SVE_REV_P = { 1595, 1}, + .SVE_TBL = { 1596, 4}, + .SVE_ZIP1_Z = { 1600, 4}, + .SVE_ZIP2_Z = { 1604, 4}, + .SVE_UZP1_Z = { 1608, 4}, + .SVE_UZP2_Z = { 1612, 4}, + .SVE_TRN1_Z = { 1616, 4}, + .SVE_TRN2_Z = { 1620, 4}, + .SVE_ZIP1_P = { 1624, 1}, + .SVE_ZIP2_P = { 1625, 1}, + .SVE_UZP1_P = { 1626, 1}, + .SVE_UZP2_P = { 1627, 1}, + .SVE_TRN1_P = { 1628, 1}, + .SVE_TRN2_P = { 1629, 1}, + .SVE_CPY_Z = { 1630, 0}, + .SVE_COMPACT = { 1630, 0}, + .SVE_EXT_Z = { 1630, 0}, + .SVE_LD1B = { 1630, 1}, + .SVE_LD1H = { 1631, 1}, + .SVE_LD1W = { 1632, 1}, + .SVE_LD1D = { 1633, 1}, + .SVE_LD1SB = { 1634, 1}, + .SVE_LD1SH = { 1635, 1}, + .SVE_LD1SW = { 1636, 1}, + .SVE_ST1B = { 1637, 1}, + .SVE_ST1H = { 1638, 1}, + .SVE_ST1W = { 1639, 1}, + .SVE_ST1D = { 1640, 1}, + .SVE_LDR_Z = { 1641, 1}, + .SVE_STR_Z = { 1642, 1}, + .SVE_LDR_P = { 1643, 1}, + .SVE_STR_P = { 1644, 1}, + .SVE_LDFF1B = { 1645, 1}, + .SVE_LDFF1H = { 1646, 1}, + .SVE_LDFF1W = { 1647, 1}, + .SVE_LDFF1D = { 1648, 1}, + .SVE_WHILEGE = { 1649, 1}, + .SVE_WHILEGT = { 1650, 1}, + .SVE_WHILELE = { 1651, 1}, + .SVE_WHILELT = { 1652, 1}, + .SVE_WHILEHI = { 1653, 1}, + .SVE_WHILEHS = { 1654, 1}, + .SVE_WHILELO = { 1655, 1}, + .SVE_WHILELS = { 1656, 1}, + .SVE_SQRDMLAH = { 1657, 4}, + .SVE_SQRDMLSH = { 1661, 4}, + .SVE_ADCLB = { 1665, 2}, + .SVE_ADCLT = { 1667, 2}, + .SVE_SBCLB = { 1669, 2}, + .SVE_SBCLT = { 1671, 2}, + .SVE_TBL2 = { 1673, 1}, + .SVE_TBX = { 1674, 1}, + .SVE_AESE = { 1675, 1}, + .SVE_AESD = { 1676, 1}, + .SVE_AESMC = { 1677, 1}, + .SVE_AESIMC = { 1678, 1}, + .SVE_BCAX_Z = { 1679, 0}, + .SVE_XAR_Z = { 1679, 0}, + .SVE_EOR3_Z = { 1679, 0}, + .SVE_MATCH = { 1679, 2}, + .SVE_NMATCH = { 1681, 2}, + .SVE_HISTCNT = { 1683, 2}, + .SVE_HISTSEG = { 1685, 1}, + .SME_SMSTART = { 1686, 1}, + .SME_SMSTOP = { 1687, 1}, + .SME_RDSVL = { 1688, 1}, + .SME_ADDHA = { 1689, 0}, + .SME_ADDVA = { 1689, 0}, + .SME_ZERO = { 1689, 1}, + .SME_FMOPA = { 1690, 1}, + .SME_FMOPS = { 1691, 1}, + .SME_BFMOPA = { 1692, 1}, + .SME_BFMOPS = { 1693, 1}, + .SME_SMOPA = { 1694, 2}, + .SME_SMOPS = { 1696, 2}, + .SME_UMOPA = { 1698, 2}, + .SME_UMOPS = { 1700, 2}, + .SME_USMOPA = { 1702, 1}, + .SME_SUMOPA = { 1703, 1}, + .SME_MOVA_TO_Z = { 1704, 0}, + .SME_MOVA_TO_ZA = { 1704, 0}, + .SME_LD1B_ZA = { 1704, 0}, + .SME_LD1H_ZA = { 1704, 0}, + .SME_LD1W_ZA = { 1704, 0}, + .SME_LD1D_ZA = { 1704, 0}, + .SME_LD1Q_ZA = { 1704, 0}, + .SME_ST1B_ZA = { 1704, 0}, + .SME_ST1H_ZA = { 1704, 0}, + .SME_ST1W_ZA = { 1704, 0}, + .SME_ST1D_ZA = { 1704, 0}, + .SME_ST1Q_ZA = { 1704, 0}, + .SME_LDR_ZA = { 1704, 1}, + .SME_STR_ZA = { 1705, 1}, + .SVE_FMLA_IDX_H = { 1706, 1}, + .SVE_FMLA_IDX_S = { 1707, 1}, + .SVE_FMLA_IDX_D = { 1708, 1}, + .SVE_FMLS_IDX_H = { 1709, 1}, + .SVE_FMLS_IDX_S = { 1710, 1}, + .SVE_FMLS_IDX_D = { 1711, 1}, + .SVE_LD1B_GATHER_S = { 1712, 1}, + .SVE_LD1B_GATHER_D = { 1713, 1}, + .SVE_LD1H_GATHER_S = { 1714, 1}, + .SVE_LD1H_GATHER_D = { 1715, 1}, + .SVE_LD1W_GATHER_S = { 1716, 1}, + .SVE_LD1W_GATHER_D = { 1717, 1}, + .SVE_LD1D_GATHER_D = { 1718, 1}, + .SVE_LD1SB_GATHER_S = { 1719, 1}, + .SVE_LD1SB_GATHER_D = { 1720, 1}, + .SVE_LD1SH_GATHER_S = { 1721, 1}, + .SVE_LD1SH_GATHER_D = { 1722, 1}, + .SVE_LD1SW_GATHER_D = { 1723, 1}, + .SVE_ST1B_SCATTER_S = { 1724, 1}, + .SVE_ST1B_SCATTER_D = { 1725, 1}, + .SVE_ST1H_SCATTER_S = { 1726, 1}, + .SVE_ST1H_SCATTER_D = { 1727, 1}, + .SVE_ST1W_SCATTER_S = { 1728, 1}, + .SVE_ST1W_SCATTER_D = { 1729, 1}, + .SVE_ST1D_SCATTER_D = { 1730, 1}, + .SME_LD1B_TILE = { 1731, 1}, + .SME_LD1H_TILE = { 1732, 1}, + .SME_LD1W_TILE = { 1733, 1}, + .SME_LD1D_TILE = { 1734, 1}, + .SME_LD1Q_TILE = { 1735, 1}, + .SME_ST1B_TILE = { 1736, 1}, + .SME_ST1H_TILE = { 1737, 1}, + .SME_ST1W_TILE = { 1738, 1}, + .SME_ST1D_TILE = { 1739, 1}, + .SME_ST1Q_TILE = { 1740, 1}, + .SME_MOVA_Z_FROM_TILE = { 1741, 1}, + .SME_MOVA_TILE_FROM_Z = { 1742, 1}, + .FCMLA_4H = { 1743, 1}, + .FCMLA_8H = { 1744, 1}, + .FCMLA_4S = { 1745, 1}, + .FCMLA_2D = { 1746, 1}, + .FCADD_4H = { 1747, 1}, + .FCADD_8H = { 1748, 1}, + .FCADD_4S = { 1749, 1}, + .FCADD_2D = { 1750, 1}, + .SVE_PRFB = { 1751, 1}, + .SVE_PRFH = { 1752, 1}, + .SVE_PRFW = { 1753, 1}, + .SVE_PRFD = { 1754, 1}, + .SVE_LDNT1B = { 1755, 1}, + .SVE_LDNT1H = { 1756, 1}, + .SVE_LDNT1W = { 1757, 1}, + .SVE_LDNT1D = { 1758, 1}, + .SVE_STNT1B = { 1759, 1}, + .SVE_STNT1H = { 1760, 1}, + .SVE_STNT1W = { 1761, 1}, + .SVE_STNT1D = { 1762, 1}, + .SVE_EXT = { 1763, 1}, + .SVE_SPLICE = { 1764, 1}, + .SVE_INDEX_II = { 1765, 1}, + .SVE_INDEX_IR = { 1766, 1}, + .SVE_INDEX_RI = { 1767, 1}, + .SVE_INDEX_RR = { 1768, 1}, + .SVE_BSL = { 1769, 1}, + .SVE_BSL1N = { 1770, 1}, + .SVE_BSL2N = { 1771, 1}, + .SVE_NBSL = { 1772, 1}, + .SVE_PMUL_VEC = { 1773, 1}, + .SVE_PMULLB = { 1774, 1}, + .SVE_PMULLT = { 1775, 1}, + .SVE_BFCVT = { 1776, 1}, + .SVE_BFCVTNT = { 1777, 1}, + .LDRAA = { 1778, 1}, + .LDRAB = { 1779, 1}, + .LDRAA_PRE = { 1780, 1}, + .LDRAB_PRE = { 1781, 1}, + .TSTART = { 1782, 1}, + .TCOMMIT = { 1783, 1}, + .TCANCEL = { 1784, 1}, + .TTEST = { 1785, 1}, + .WFET = { 1786, 1}, + .WFIT = { 1787, 1}, + .BC_COND = { 1788, 1}, + .UXTB = { 1789, 1}, + .UXTH = { 1790, 1}, + .UXTW = { 1791, 1}, + .SXTB = { 1792, 1}, + .SXTH = { 1793, 1}, + .SXTW = { 1794, 1}, + .ADC = { 1795, 2}, + .ADCS = { 1797, 2}, + .SBC = { 1799, 2}, + .SBCS = { 1801, 2}, + .NGC = { 1803, 2}, + .NGCS = { 1805, 2}, + .LDAPUR = { 1807, 2}, + .STLUR = { 1809, 2}, + .LDAPURB = { 1811, 1}, + .STLURB = { 1812, 1}, + .LDAPURH = { 1813, 1}, + .STLURH = { 1814, 1}, + .LDAPURSB = { 1815, 2}, + .LDAPURSH = { 1817, 2}, + .LDAPURSW = { 1819, 1}, + .SVE_BFADD = { 1820, 1}, + .SVE_BFSUB = { 1821, 1}, + .SVE_BFMUL = { 1822, 1}, + .SVE_BFMLA = { 1823, 1}, + .SVE_BFMLS = { 1824, 1}, + .SB = { 1825, 1}, + .CSDB = { 1826, 1}, + .DGH = { 1827, 1}, + .PSB_CSYNC = { 1828, 1}, + .TSB_CSYNC = { 1829, 1}, + .BTI_J = { 1830, 1}, + .BTI_C = { 1831, 1}, + .BTI_JC = { 1832, 1}, + .MOV_V_ALIAS = { 1833, 2}, + .NOT_V_ALIAS = { 1835, 2}, + .LSL_IMM = { 1837, 2}, + .LSR_IMM = { 1839, 2}, + .ASR_IMM = { 1841, 2}, + .ROR_IMM = { 1843, 2}, + .SVE_BFADD_UNPRED = { 1845, 1}, + .SVE_BFSUB_UNPRED = { 1846, 1}, + .SVE_BFMUL_UNPRED = { 1847, 1}, + .SVE_BFCLAMP = { 1848, 1}, + .SVE_BFMAXNM = { 1849, 1}, + .SVE_BFMINNM = { 1850, 1}, + .SME2_LUTI2_B = { 1851, 1}, + .SME2_LUTI4_B = { 1852, 1}, + .SME2_LD1B_X2 = { 1853, 1}, + .SME2_LD1H_X2 = { 1854, 1}, + .SME2_LD1W_X2 = { 1855, 1}, + .SME2_LD1D_X2 = { 1856, 1}, + .SME2_LD1B_X4 = { 1857, 1}, + .SME2_LD1H_X4 = { 1858, 1}, + .SME2_LD1W_X4 = { 1859, 1}, + .SME2_LD1D_X4 = { 1860, 1}, + .SME2_ST1B_X2 = { 1861, 1}, + .SME2_ST1H_X2 = { 1862, 1}, + .SME2_ST1W_X2 = { 1863, 1}, + .SME2_ST1D_X2 = { 1864, 1}, + .SME2_ST1B_X4 = { 1865, 1}, + .SME2_ST1H_X4 = { 1866, 1}, + .SME2_ST1W_X4 = { 1867, 1}, + .SME2_ST1D_X4 = { 1868, 1}, + .SME2_ZIP_3 = { 1869, 1}, + .SME2_ZIP_4 = { 1870, 1}, + .SME2_UZP_3 = { 1871, 1}, + .SME2_UZP_4 = { 1872, 1}, + .TLBI_RPALOS = { 1873, 1}, + .TLBI_RPAOS = { 1874, 1}, + .AT_S1E1A = { 1875, 1}, + .DC_CIPAPA = { 1876, 1}, + .DC_CIGDPAPA = { 1877, 1}, + .TLBI_PAALL = { 1878, 1}, + .TLBI_PAALLOS = { 1879, 1}, + .AMX_LDX = { 1880, 1}, + .AMX_LDY = { 1881, 1}, + .AMX_STX = { 1882, 1}, + .AMX_STY = { 1883, 1}, + .AMX_LDZ = { 1884, 1}, + .AMX_STZ = { 1885, 1}, + .AMX_LDZI = { 1886, 1}, + .AMX_STZI = { 1887, 1}, + .AMX_EXTRX = { 1888, 1}, + .AMX_EXTRY = { 1889, 1}, + .AMX_FMA64 = { 1890, 1}, + .AMX_FMS64 = { 1891, 1}, + .AMX_FMA32 = { 1892, 1}, + .AMX_FMS32 = { 1893, 1}, + .AMX_MAC16 = { 1894, 1}, + .AMX_FMA16 = { 1895, 1}, + .AMX_FMS16 = { 1896, 1}, + .AMX_SET = { 1897, 1}, + .AMX_CLR = { 1898, 1}, + .AMX_VECINT = { 1899, 1}, + .AMX_VECFP = { 1900, 1}, + .AMX_MATINT = { 1901, 1}, + .AMX_MATFP = { 1902, 1}, + .AMX_GENLUT = { 1903, 1}, + .CPYP = { 1904, 1}, + .CPYM = { 1905, 1}, + .CPYE = { 1906, 1}, + .CPYFP = { 1907, 1}, + .CPYFM = { 1908, 1}, + .CPYFE = { 1909, 1}, + .SETP = { 1910, 1}, + .SETM = { 1911, 1}, + .SETE = { 1912, 1}, + .DC_IVAC = { 1913, 1}, + .DC_ISW = { 1914, 1}, + .DC_CSW = { 1915, 1}, + .DC_CISW = { 1916, 1}, + .DC_ZVA = { 1917, 1}, + .DC_CVAC = { 1918, 1}, + .DC_CVAU = { 1919, 1}, + .DC_CIVAC = { 1920, 1}, + .IC_IALLUIS = { 1921, 1}, + .IC_IALLU = { 1922, 1}, + .IC_IVAU = { 1923, 1}, + .AT_S1E1R = { 1924, 1}, + .AT_S1E1W = { 1925, 1}, + .AT_S1E0R = { 1926, 1}, + .AT_S1E0W = { 1927, 1}, + .AT_S1E2R = { 1928, 1}, + .AT_S1E2W = { 1929, 1}, + .AT_S1E3R = { 1930, 1}, + .AT_S1E3W = { 1931, 1}, + .AT_S12E1R = { 1932, 1}, + .AT_S12E1W = { 1933, 1}, + .AT_S12E0R = { 1934, 1}, + .AT_S12E0W = { 1935, 1}, + .TLBI_VMALLE1 = { 1936, 1}, + .TLBI_VMALLE1IS = { 1937, 1}, + .TLBI_VAE1 = { 1938, 1}, + .TLBI_VAE1IS = { 1939, 1}, + .TLBI_ASIDE1 = { 1940, 1}, + .TLBI_ASIDE1IS = { 1941, 1}, + .TLBI_VAAE1 = { 1942, 1}, + .TLBI_VAAE1IS = { 1943, 1}, + .TLBI_VALE1 = { 1944, 1}, + .TLBI_VALE1IS = { 1945, 1}, + .TLBI_VAALE1 = { 1946, 1}, + .TLBI_VAALE1IS = { 1947, 1}, + .TLBI_ALLE1 = { 1948, 1}, + .TLBI_ALLE1IS = { 1949, 1}, + .TLBI_ALLE2 = { 1950, 1}, + .TLBI_ALLE2IS = { 1951, 1}, + .TLBI_ALLE3 = { 1952, 1}, + .TLBI_ALLE3IS = { 1953, 1}, + .PRFM = { 1954, 1}, + .PRFUM = { 1955, 1}, + .PRFM_LIT = { 1956, 1}, + .MOV_REG = { 1957, 2}, + .MOV_BITMASK = { 1959, 2}, + .MVN = { 1961, 2}, + .NEG_SR = { 1963, 2}, + .NEGS = { 1965, 2}, + .CMP_SR = { 1967, 2}, + .CMP_ER = { 1969, 2}, + .CMP_IMM = { 1971, 2}, + .CMN_SR = { 1973, 2}, + .CMN_ER = { 1975, 2}, + .CMN_IMM = { 1977, 2}, + .TST_SR = { 1979, 2}, } diff --git a/core/rexcode/arm64/tablegen/specgen.lua b/core/rexcode/arm64/tablegen/specgen.lua index e48357238..0850aedb5 100644 --- a/core/rexcode/arm64/tablegen/specgen.lua +++ b/core/rexcode/arm64/tablegen/specgen.lua @@ -231,6 +231,51 @@ for _, fam in ipairs(DIFF) do sections[#sections+1] = "\t// Advanced SIMD "..fam.title..".\n" .. table.concat(blk, "\n") end +-- ---- NEON shift-by-immediate ---------------------------------------------- +-- Vd.T, Vn.T, #shift. immh:immb carries element size + amount; mask is +-- derived empirically by also varying the shift (canon = operand bits 0, other = +-- all shift bits set). The encoder/decoder compute the amount (NEON_SHL/SHR_IMM). +local ESIZE = {["8B"]=8,["16B"]=8,["4H"]=16,["8H"]=16,["2S"]=32,["4S"]=32,["1D"]=64,["2D"]=64} +local SHIFT_ARR = {"8B","16B","4H","8H","2S","4S","2D"} +local function emit_shift(mnem, llvm, dir) + local enc_tok = (dir == "L") and ".NEON_SHL_IMM" or ".NEON_SHR_IMM" + local rows = {} + for _, a in ipairs(SHIFT_ARR) do + local es = ESIZE[a] + local canon = (dir == "L") and 0 or es + local other = (dir == "L") and (es - 1) or 1 + local sa = ARR[a].asm + local function mk(r, sh) return string.format("%s v%d.%s, v%d.%s, #%d", llvm, r, sa, r, sa, sh) end + local bits, regV, shV = word(mk(0, canon)), word(mk(31, canon)), word(mk(0, other)) + if bits and regV and shV then + local mask = bit.band(bit.bnot(bit.bor(bit.bxor(bits, regV), bit.bxor(bits, shV))), 0xFFFFFFFF) + rows[#rows+1] = string.format( + "\t\t{.%s, {.%s, .%s, .VEC_SHIFT, .NONE}, {.VD, .VN, %s, .NONE}, 0x%s, 0x%s, .NEON, {}},", + mnem, ARR[a].vt, ARR[a].vt, enc_tok, bit.tohex(bits):upper(), bit.tohex(mask):upper()) + n_forms = n_forms + 1 + else + skips[#skips+1] = mnem.." ."..a + end + end + if #rows == 0 then return nil end + n_mnem = n_mnem + 1 + return string.format("\t.%s = {\n%s\n\t},", mnem, table.concat(rows, "\n")) +end +local SHIFTS = { + {"SHL_V","shl","L"},{"SLI","sli","L"},{"SQSHLU","sqshlu","L"},{"SQSHL_V","sqshl","L"}, + {"SSHR","sshr","R"},{"USHR","ushr","R"},{"SRSHR","srshr","R"},{"URSHR","urshr","R"}, + {"SSRA","ssra","R"},{"USRA","usra","R"},{"SRSRA","srsra","R"},{"URSRA","ursra","R"}, + {"SRI","sri","R"}, +} +do + local blk = {} + for _, it in ipairs(SHIFTS) do + local b = emit_shift(it[1], it[2], it[3]) + if b then blk[#blk+1] = b end + end + sections[#sections+1] = "\t// Advanced SIMD shift by immediate.\n" .. table.concat(blk, "\n") +end + -- ---- splice into the SoT --------------------------------------------------- local region = "\t// SPECGEN:BEGIN\n" .. table.concat(sections, "\n\n") .. "\n\t// SPECGEN:END" local fh = assert(io.open(TABLE, "r")); local src = fh:read("*a"); fh:close() diff --git a/core/rexcode/arm64/tables/arm64.encode_forms.bin b/core/rexcode/arm64/tables/arm64.encode_forms.bin index eb105f2fe169bf334109ffb98061acfd424d1f63..31d4a8f2cb0f5ed1d715145c9a453fac91183b89 100644 GIT binary patch delta 10422 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 delta 8545 zcmX@Im1)ItrVS;6wt5T<3=BdH3eZ zF^z!RI50DhX z9QY7P9n66bk<`H)_y|cI%z=-P)WID1xE`U<0p`NT2!#%?Abf(P4(7loNa|n?e2SzF z=D?>&>R=9h231$D%fR3ObKx^2g)kRBhbq)%UE_{Wg5az&FNa|n?e2q|-0CV7Lgt`Qn1K%L2gE{aGLp?mdC%|0z z7D*v22;U+Z2y@^&By}(czC%(6bKrY~x&oL3-^0|^GcXjuT=)S=Ai4kU=I9*qz>l5Pe|%O4y=FhpH<*9LSX~Ug`W`$8( zqz>l5uSn`(4*bTzSPv^&8(=Q{hNKYWLXZQ$BMhur&;ib}4BrvzY8IRTiwXQdQuhF= z?gx^(2T*lC;p*xc{=f|UiBR|lX5cTlLWVyu1Aif@gBkc6p{`~D2iP$Te~`o;K*jzd z#QuQQ)&FN@_=hA2Q}`btRi)pYV?$C0Gmj0SZnL{wrTylV zcnQYMcTyx6H}j-_XRS9LzvgdQV+3sHWR|YgAj!RbC3*VhKMoDK{C)8 zE`~6$87_t}?=VD6U@nq*0uV8Vx%Ef}2EYWF5C%?wiy;iW01*?Ihh(4-M2uk`l6gUJ zF@$-O;9?N->OsMO2_h&kAIU&rh#13sBm;xtVh95#!^I#5g3P-N5ffN|5F@^<5 zA$^5~p&k_P0t=B8PK7F5h@|i;L`+~2k^?y)VhoFr9OwZTLpZPlE{1U635b}$Vy1dT zqTz%HGAu?i&=W3(Ft8IYhA{9XL`+}_k^{LQVhl@=%=3baLCvdIWnk!n3nC0W1rZZi ziew-+M2ul6l7ZfEF{pv63=G|HF@$-iAz}i{kj&#@VR%pv%67|;4D^90WLSn2B|UI4 zgn?%uVgk#N4CIA~F)T+i&lfI+a9}T7Oraj0kIzB`1y&%%yA%t1VvfUblfeo;1w-(7jST0!$H;|zL zmP^(mnFq@yYmv+Y=aTyWyaMZx3>1Wf0>e5a0|Vh=@E~lM2p5A#Ny9~mn7}5Gc?`-% zDhvz@#2{h}n?UA4#lqlX@=EpcP{C<%K?NlRsMs}#n80Qv1H~a?44aV*42O%!E5Xd0 z4i`h1cO4=oumxdW{Q^*Yf)e2tBm*NL3K_P5f)MJM8E`R#fj1yx0$ULVE&!zkka=5? z%!`DmW7vvh-b}Dq6feV8P@F(5xd|5J71)MkASe-n4BUofU=&0h!!{%XXTilF4%~d9 zxSA1Mzco0dLaLd4Amxy{tf2uehKRuf5HW%MAgdttV1pw>jA1{L-bT0>LhnI{n7~0K zy-umn`t2Z+<|c?jhJzq~Ln_gRLl7~6Lr9u^Az}=Nko5M##Sj*sg@_3pLDK665o0(~ zkEFQ`CWvJ5F^HJJQ6$ao5HW_MNP64hVhD?mL&OA*A?bC2h%p?4>IKzr4J~j%gytg< zF@fVqnq47c49B6Gl~oxUTH#^{y+q*AZSpa9c+6`|Py zruiyDvja@?RhVW~1_zklYY4pwFum6hdJ|xJuOaj%fb@duH-YO+ipq+L`o;!^3=Ryc z0*64k`377}04{bDF2>-{09AJjA?5_rdmAn$-~>~52QJ0{7rV=(SP!*W0B+ztCPhVv zV+7y^-bZM5aDZ6M@c=F+02g}*7h`ZZ09E%0A?5_r`;tjfn}I>!f`Or);emvzz@PvB zc^O{81sNVlLc};;Gbu7KFzAEE@SaGhe)tbk_XgxZ27Lp428II>ssjH&Vs8;*M1Y9i3b=sd0Ex-TLBt$DV)g%d!GiMg5WxnJAXH320U~w)A|~+@ZlJ&d z1{DEN%a8*k1~E`zfdi5l#5{oo4M<`T^8^+gfQU)_Vp3GDhq|xnBmB0XT zHG?j~#|f~|(nI(-0Tx>N2p=cFLd$?zk%@^xpM{-)K|n#ZUf_?ye?AFAxS)W5f+|GJ z2q7i{6ElX3F~G%4;9>$2FmG(7mv&kzI`6M%~agT&;Z>KY;HLf~Qo z3=L4RP>`4`RNVrIx=>~fB_%m$upI~LA%X&7aD@U44G=MgFt|bih64~WfpEAw28IO- zAqIxS)iE$UfQSi1z|{%B)kVP73Bc9WN5T~{Ff>3kGejYYEr3|ekj`x9&A?y=PLT`` z8NeZvfh48?70YCnlasSoR#CNOU{FY5__N?YFGCiyyu7@lvWlu51H*z8(6ARTLpHO5 zf`X%Ry^5+m1H%J|pg;~nGYd>}EtAd3s2$sR0r z1S}>{h@`Her5-HEP=utg0jjVVNg+ckL|qAzI)krXyS6;>iCggK@PNepIjHMAtMW?*Pwcmj3|Lk+YfLJ||GMN-!QRaXa9R}WGM z6%?pPQpoTWVqgPQAxIrmOrQ}-tO24XKeLdK5GZAX#PT3w6PQIrM4(~~P_c>3 zVq#)Yu>(-CNz8(Rf*>((h9?es3~xZ@O@^5V63c^#O@W!`&G4ilkKs){Na0kNf!+*H z4nP%7V|GySX7B-p*a1+Y1J&cxk;Fjh3nVrJNeq;*L1HtJ#9+16EJTHK09N75W|pgm z)w>6vbtl6dXd<>`U^oD)W9LE>EJ&;YQtt}PLsYQ|pacuDcs`ys1-F(@0r`p+ScgJZQwQgjv?kjzQTBRMjf5K+2b;%(8Y&49aGc zx|7%nlxho&1Cp<?%}jb4MQwqo^OKZV86WV?SVKVzOmmV)386us=yGAdrE9p+T5|;lY0f zhQ|=8fWXO;6Otgq2rOXp_!wS7%>(sMS)pRDm@O=1?Sq0lVxJLW51?WKUzjZvVGdM)I`C^fLQnxF_zfZE02BL;5KDlH z3H)HTRD?MYD#q{=A+`V}_6s3)04DYuDi&bL!0-SnDDa2bLROX`2o%E?6b^zC7C*yZ zW=l&3hR`qu28IV_2O0i=nhpQp>KNhb{zKJm_Ly{WNU$;t2*O Lz0Ddk=P&{Q|Ic^5 diff --git a/core/rexcode/arm64/tables/arm64.encode_runs.bin b/core/rexcode/arm64/tables/arm64.encode_runs.bin index 95373420998c7e1088c67645fd7beccc0d4a9355..b14d95634375beeaab508dbc65e964bf7d001897 100644 GIT binary patch literal 8960 zcmZQT0!$1H3^2?BWwSwP4k*n9rFoz<9|HpeBLf2iKa>`LiVHz$5hyJNr6r)W6qJ^M z(sEE*0ZJ=DX%#4~2BkHiv=)@sfzo=iP}%|N4@W5N z1f`v!vADp?nYx z;>SbHOMudeP&x@pCqvCih4Ry&{0u0a1r^VR(m7D^JSbfN6)%L+MNsh)D8Cd+mqEoV zp!`ZGzZy!{LdEN#{01o91f^S`@~u$14NA8|=?AU~s%|Efo&}|6L+LqCdM=cn2c_pj=><@FA=G_~q2_~V zP@Y;26<-OZS3~KwPAg^TKa@TQr4K{tqfq)dls*Zi zPebXmQ2IOr0|UsNm!b4^D194B--r5VAZSp!e+YHwV<`O;N_ zd#LzFDE||b{tOlW3gv%;@_#_-Ur_oFl>P?|2TEv=e?WyNh-LyMK9JdD&>;ORjF7UM z4N7xBX)Z=c`OFQad7$EaP+9;=3qffSC@lu1C7}8wp|li~mWI+YP+AsB%Ry;*D6IhX z4?Y^?ekG`SWhkuzwO-T?M79p>z$@oH{7o0HvFtbPH5nE0k`7 z((O>X14?&7=`JYU4W)aabT5?dgVOy_dIFT52&E@M>B&%f3Y4A-rKdsZ=}>wGl%5Ht zXF=)NPBUfb36x$6rI$hJCI4j3zXgprME%p?NE9Ll->!YcR}ghPBCU^2$VhwrH?`B<52npls*ZiPeJL^Q2Gp%J`1JKLFw~Q`T~@`2&FGU z>B~_13Y5MIrLRHh>rnazl)ee2Z$atXQ2Gv(z6+)ALFxNY`T>-F2&ErE>BrFY{}f6; zhl;;|(l4R(D=7UMO22{9Z=v)%DE%Hve}K{-q4Xyx{TWJsfzn^0^fxH|9ZLUz(m$c} zFDU&RO8z7M6JK=r+X(jTDoHz@rF8gBogG!ru<99f|>2bAW9(tJ=_5K4lkm1*K)7v;ve?hSF+KS`$j^Kxus_Z3LxFp|k~*wuaJnP}&hnyFh7oDD4HMeW7#! zln#c{VNf~}O22fGt1*L1DbOSS_-P8o7TcC6s zl0eO#Ka^$x zbqYXz02YY5IiWNklop245>Q$eN-IHWbttU^r46C98I-n$(hgAC6-s+SX@4jk0;MCN zbR3jUhSC``&UBgRZx00lwJd+*FyD!Xi)jQ4l2GLN^gMLvmHwB zgVIN#^cg698A{)R(hs5Z3n={_N`HgWf1xxBE5v`?P+AB|OG0S{D6I|(90mr4Q5w=Q z#1;;qevT$9BzN_RuU zvlmMDL&YaU>FH2D5qm>!I{!D7_u(Z)`Nkzq_I8 z_Cx8zQ2IEOJ`L3mqCxe{IaWx!;3Aa10;R7*>040xE|h)%r5{7h0ns3Ho85kHyp+V)dI8?s`l$M0jQczkNYA!WtPIYeVfrra|iUq4LI1d1}xgbIqaVfoKrl8tQKwsC^Dl+678`KxrQ+9RQ_6pmYRO ze#Wx?u6>=g3{ekx(7=4Lg_vz-46{`GL)VQ)i(`FPlwVop!7_rdB`*< zUS>h%XG7^ZP9tUL z9h6=Vr8hw7jZk_Ml->-bw?OHwPAg^TAC%q?r4K;q zgHZYqls*ilk3i|8Q2H2@J`SZ%K9bJ!9F#r}r7u9~i%|L!l)en5 zuR!UmQ2H8_z7C~tKAO(+9+bWhr5`})hfw+vlzt4QpFruSQ2H5^ zeh#HyK9Q8*zd-4)Q2HB`{tl&oKAz6=AC&$Nr9p!;p!Cbg4yi|(pfoc(r2Jro((F*06H0SKXb^l$M5y%Rp&aC@lx2<)O3!lvae&N>ExEN~=I=RVb|nrPZOd z29(x>+N%wvb)mFAls1IY#!%W6s?Q8cn?q>}C~XO)t)R3ul(vD=wouv*O4~ze2Po|b zrJbO(Gn96L(ymb24NAL1X%8sv38lTDv^SLYfzrNE+7C+mL+Jo09SEg^pmZ>l4uR64 zP&y1shePQIC>;rl&*o& zwNSbaO4mc_1}NPKrJJC1Gn8(D(ydUs4NA8|=?*B}38lNBbT^dlfzrKDx(`bCL+J@n zdLopb1f?fK=_ycpDwLiErKdyb8BlsAl%55pXG7^ZP^4 q=_OElDKsB0hteyd^lB)*7D}&&(i@@lW+=TCN^ghKJE8P$C=CG9*f`k$ literal 8960 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 Ql#YVZF;F@VN+&>R0EbFYkpKVy diff --git a/core/rexcode/arm64/tables/arm64.entries.bin b/core/rexcode/arm64/tables/arm64.entries.bin index 26f42891cad44f4d5d0c7131c01e2ec895a59e89..4b1c204e9ed1596cc608823dd3c20d4352d68793 100644 GIT binary patch delta 13909 zcmcbxoaxP0rVY;+>)jYYfa3te|NsB_8U8X`S~4(%M=&rjJTN=R@CPLJA1=lO7yH9( zAuG!eqN2*ca6#c9!=DHL`5FGf#TemYub3??WbH#jRXG?OdJZsr0I7Qo5_5!zb=5-! z-!NM!dozTXSc6=%fZ+j1;ah~50s~a+9YV|jCiWg7mH-tK_`qzb?9C7kGOqzD#_$m# zwg4tp{|O;@04DeuA@%?&Ch&#XLJ{Ub1*l`bBE%G6V&4#A4luFr2(bjHn7|KaOGR&n z@OrQdp@IxQA%Y;W1u(H+2(be&vEK->2T(DAKxTC%C3zPUGZhAgh6aHKPzVOW#RTAD z!5}d?sJg~_h{6!Kpa4TdBSb6|Bqj@0xBw=mp`;||3by0`L`)!z873ycfDltxQUdE0 zU}%7-V+cnwZ^1%{dExbN%?u0=Ac6uBaD@U4Foh9tbpmj8k#Kbk3=I&y3{gm83!oPF zFv}|GFesb2GcYhP9e`Ne%dDd$%iwNOuL4SNP{DL&J8uRC3mcFS!$Sse5N05WDL}=V zn01uB8Qek9#K7=CfB_WL&CI&W-V7dKF$btv3$vcGH-jfwtN|+4%B-*K&EN$VJMciD z9;8{IjoCoio533*_z+@XJF|`=%n}8t<_>0EMVKWCP_a&CJw=!$3!q|M%=(HjOCCVP z1iG0G6k&EefZFkziB*w-fx&R{V^-@pLnA{5h653*0{{O1=Vf@yq^PLK02VtU2^HgE zR#aqQFf?LdU~n*Dg{XVUq^QlnU}yy@F(gz4{($tpLK2gNh;dAwz$P|%7n{)JC2V5y z3QPOyB`T zoxn6ExLyI6-pK--BD~X?c(f*e;})9i!lO00 ziAP9;AE7iQ0jhoS1s;*fQ+RA9EAWa;{=p+Q`5BLh5Zv!MpoIV6Kd-=K4_+-Hxa9>f z%O@A`B00Te!Q`F1(vw?w#nj+#DuG#K!3;OG;D8Ir?R)~01^7f1EfAh6V1P(4SRhP`LRfUc0U{|w_h&4j-6`115 zNBE}JJ1{UTNC9c)Wyl6;c2rhTb!1?801*?&1?dBcIWVxm)a4=6vB1Ihx0G4dj)_6pf`x&>117eNS(eF;L7ByZfx!hNHu(nsuX;lkb_NCk1yzAR3jg^e z44D;~m>57}0&p=SgqR3SoiSXD0WM|&7ZZ?xsWXL(F~G&l5MnY4d{B$cA%c_R1;y&^ z85k5&82&8y&&!Yl3VC~F6;*o%7MR#|CPigMMMF~~V+IEXRe?jG!s-TGOaLx+6E4Q! z&;V6;3nAtN(|a2(Cg228R}V7q4qT7{EC>?23l|fB8+Z>?4}cvb05|YHTpfdh1H@vE z2XHX~xY$Fu7=yzBsJcf?iuEwxIl(mlWKvX?l{GX`Q59Igpd#?#!GB&3keGr3MC<@W zOade(FAouGfQW(B$;m;)9H3&qm=u*EVhjz)Vi3Lc3=J^NAcYW17#d)ffW#nfSU&rgIFv8vA6y|FULQ)3k4WpE(D1|H8a2*0}_L3W`H>w zBnEMy00Yc{|Ctn(A?g_5>Of);2Qt9z0EyK@G&7)RhFHu1w^)l=(VKz65Zo4OXaz?J zgEq3*Q;3*5Gc4*D8WdbXVtgDRF{s522~aT)W>}O6)T0PO93ueNJPWD%KEML%3GfQc zVv_M zxe+dgXmcEdhzZO=a^PXO7{Y!B`eh6>I_QWyXiLs)zPA|^1G z3E{vA5HW_iNFEV@ip@h(Hwi9=Ft7d+L{MNJlEpy~F@||a1`0vN<|7$687_th{$RKm z!jj7nF@gC=<_SZ@>KPUw88`(Z$glt@Sg%0D1QsHRU4@GwLSZUIjA0Ryc^z;ugabX` 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
}CUauS&=<)k+Gfs+Vt5ffaOhr;B!PO_6H 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 delta 39 ucmZ>8m>{Rb&m7Gvz>v+V#L&x{#PFU~l!1k98pABM2!>B=ybS-@QW*f8Gze(`