From a1e359b64ac4303645c86a47139b54fc52ba80a6 Mon Sep 17 00:00:00 2001 From: Brendan Punsky Date: Wed, 17 Jun 2026 23:03:53 -0400 Subject: [PATCH] rexcode/arm64: NEON permute, compare-zero, SXTL/UXTL encode forms ZIP1/2, UZP1/2, TRN1/2 (three-same permute); CMLE/CMLT and FP FCMLE/FCMLT (compare against zero, with the literal #0 / #0.0 operand); SXTL/SXTL2/UXTL/UXTL2 (= SSHLL/USHLL #0, plain 2-register widen, shift implicit in the static bits). All reuse the VD/VN/VM register slots, so no encoder change. specgen gains an emit_cmp0 shape plus permute and widen families. All forms byte-exact vs llvm-mc; 461 tests green. --- core/rexcode/arm64/mnemonic_builders.odin | 56 + .../arm64/tablegen/encoding_table.odin | 112 ++ .../tablegen/generated/decode_tables.odin | 652 +++++---- .../tablegen/generated/encode_tables.odin | 1240 +++++++++-------- core/rexcode/arm64/tablegen/specgen.lua | 47 + .../arm64/tables/arm64.encode_forms.bin | Bin 39860 -> 41420 bytes .../arm64/tables/arm64.encode_runs.bin | Bin 8960 -> 8960 bytes core/rexcode/arm64/tables/arm64.entries.bin | Bin 39900 -> 41460 bytes core/rexcode/arm64/tables/arm64.idx_op0.bin | Bin 64 -> 64 bytes 9 files changed, 1246 insertions(+), 861 deletions(-) diff --git a/core/rexcode/arm64/mnemonic_builders.odin b/core/rexcode/arm64/mnemonic_builders.odin index 8082ca451..725dbf2c7 100644 --- a/core/rexcode/arm64/mnemonic_builders.odin +++ b/core/rexcode/arm64/mnemonic_builders.odin @@ -1033,6 +1033,10 @@ inst_fcmge_r_r_r :: #force_inline proc "contextless" (dst: Regist emit_fcmge_r_r_r :: #force_inline proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register) { append(instructions, inst_fcmge_r_r_r(dst, src, src2)) } inst_fcmgt_r_r_r :: #force_inline proc "contextless" (dst: Register, src: Register, src2: Register) -> Instruction { return Instruction{mnemonic = .FCMGT, operand_count = 3, length = 4, ops = {op_v_2s(u8(reg_hw(dst))), op_v_2s(u8(reg_hw(src))), op_v_2s(u8(reg_hw(src2))), {}}} } emit_fcmgt_r_r_r :: #force_inline proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register) { append(instructions, inst_fcmgt_r_r_r(dst, src, src2)) } +inst_fcmle_r_r :: #force_inline proc "contextless" (dst: Register, src: Register) -> Instruction { return Instruction{mnemonic = .FCMLE, operand_count = 2, length = 4, ops = {op_v_2s(u8(reg_hw(dst))), op_v_2s(u8(reg_hw(src))), {}, {}}} } +emit_fcmle_r_r :: #force_inline proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register) { append(instructions, inst_fcmle_r_r(dst, src)) } +inst_fcmlt_r_r :: #force_inline proc "contextless" (dst: Register, src: Register) -> Instruction { return Instruction{mnemonic = .FCMLT, operand_count = 2, length = 4, ops = {op_v_2s(u8(reg_hw(dst))), op_v_2s(u8(reg_hw(src))), {}, {}}} } +emit_fcmlt_r_r :: #force_inline proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register) { append(instructions, inst_fcmlt_r_r(dst, src)) } inst_facge_r_r_r :: #force_inline proc "contextless" (dst: Register, src: Register, src2: Register) -> Instruction { return Instruction{mnemonic = .FACGE, operand_count = 3, length = 4, ops = {op_v_2s(u8(reg_hw(dst))), op_v_2s(u8(reg_hw(src))), op_v_2s(u8(reg_hw(src2))), {}}} } emit_facge_r_r_r :: #force_inline proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register) { append(instructions, inst_facge_r_r_r(dst, src, src2)) } inst_facgt_r_r_r :: #force_inline proc "contextless" (dst: Register, src: Register, src2: Register) -> Instruction { return Instruction{mnemonic = .FACGT, operand_count = 3, length = 4, ops = {op_v_2s(u8(reg_hw(dst))), op_v_2s(u8(reg_hw(src))), op_v_2s(u8(reg_hw(src2))), {}}} } @@ -1047,6 +1051,10 @@ inst_cmhi_r_r_r :: #force_inline proc "contextless" (dst: Regist emit_cmhi_r_r_r :: #force_inline proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register) { append(instructions, inst_cmhi_r_r_r(dst, src, src2)) } inst_cmhs_r_r_r :: #force_inline proc "contextless" (dst: Register, src: Register, src2: Register) -> Instruction { return Instruction{mnemonic = .CMHS, 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_cmhs_r_r_r :: #force_inline proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register) { append(instructions, inst_cmhs_r_r_r(dst, src, src2)) } +inst_cmle_r_r :: #force_inline proc "contextless" (dst: Register, src: Register) -> Instruction { return Instruction{mnemonic = .CMLE, operand_count = 2, length = 4, ops = {op_v_8b(u8(reg_hw(dst))), op_v_8b(u8(reg_hw(src))), {}, {}}} } +emit_cmle_r_r :: #force_inline proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register) { append(instructions, inst_cmle_r_r(dst, src)) } +inst_cmlt_r_r :: #force_inline proc "contextless" (dst: Register, src: Register) -> Instruction { return Instruction{mnemonic = .CMLT, operand_count = 2, length = 4, ops = {op_v_8b(u8(reg_hw(dst))), op_v_8b(u8(reg_hw(src))), {}, {}}} } +emit_cmlt_r_r :: #force_inline proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register) { append(instructions, inst_cmlt_r_r(dst, src)) } inst_cmtst_r_r_r :: #force_inline proc "contextless" (dst: Register, src: Register, src2: Register) -> Instruction { return Instruction{mnemonic = .CMTST, 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_cmtst_r_r_r :: #force_inline proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register) { append(instructions, inst_cmtst_r_r_r(dst, src, src2)) } inst_and_v_r_r_r :: #force_inline proc "contextless" (dst: Register, src: Register, src2: Register) -> Instruction { return Instruction{mnemonic = .AND_V, 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))), {}}} } @@ -1107,6 +1115,26 @@ inst_ushll_r_r_i :: #force_inline proc "contextless" (dst: Regist emit_ushll_r_r_i :: #force_inline proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, imm: i64) { append(instructions, inst_ushll_r_r_i(dst, src, imm)) } inst_ushll2_r_r_i :: #force_inline proc "contextless" (dst: Register, src: Register, imm: i64) -> Instruction { return Instruction{mnemonic = .USHLL2, operand_count = 3, length = 4, ops = {op_v_8h(u8(reg_hw(dst))), op_v_16b(u8(reg_hw(src))), op_imm(imm, 4), {}}} } emit_ushll2_r_r_i :: #force_inline proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, imm: i64) { append(instructions, inst_ushll2_r_r_i(dst, src, imm)) } +inst_sxtl_r_r :: #force_inline proc "contextless" (dst: Register, src: Register) -> Instruction { return Instruction{mnemonic = .SXTL, operand_count = 2, length = 4, ops = {op_v_8h(u8(reg_hw(dst))), op_v_8b(u8(reg_hw(src))), {}, {}}} } +emit_sxtl_r_r :: #force_inline proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register) { append(instructions, inst_sxtl_r_r(dst, src)) } +inst_sxtl2_r_r :: #force_inline proc "contextless" (dst: Register, src: Register) -> Instruction { return Instruction{mnemonic = .SXTL2, operand_count = 2, length = 4, ops = {op_v_8h(u8(reg_hw(dst))), op_v_16b(u8(reg_hw(src))), {}, {}}} } +emit_sxtl2_r_r :: #force_inline proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register) { append(instructions, inst_sxtl2_r_r(dst, src)) } +inst_uxtl_r_r :: #force_inline proc "contextless" (dst: Register, src: Register) -> Instruction { return Instruction{mnemonic = .UXTL, operand_count = 2, length = 4, ops = {op_v_8h(u8(reg_hw(dst))), op_v_8b(u8(reg_hw(src))), {}, {}}} } +emit_uxtl_r_r :: #force_inline proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register) { append(instructions, inst_uxtl_r_r(dst, src)) } +inst_uxtl2_r_r :: #force_inline proc "contextless" (dst: Register, src: Register) -> Instruction { return Instruction{mnemonic = .UXTL2, operand_count = 2, length = 4, ops = {op_v_8h(u8(reg_hw(dst))), op_v_16b(u8(reg_hw(src))), {}, {}}} } +emit_uxtl2_r_r :: #force_inline proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register) { append(instructions, inst_uxtl2_r_r(dst, src)) } +inst_zip1_r_r_r :: #force_inline proc "contextless" (dst: Register, src: Register, src2: Register) -> Instruction { return Instruction{mnemonic = .ZIP1, 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_zip1_r_r_r :: #force_inline proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register) { append(instructions, inst_zip1_r_r_r(dst, src, src2)) } +inst_zip2_r_r_r :: #force_inline proc "contextless" (dst: Register, src: Register, src2: Register) -> Instruction { return Instruction{mnemonic = .ZIP2, 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_zip2_r_r_r :: #force_inline proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register) { append(instructions, inst_zip2_r_r_r(dst, src, src2)) } +inst_uzp1_r_r_r :: #force_inline proc "contextless" (dst: Register, src: Register, src2: Register) -> Instruction { return Instruction{mnemonic = .UZP1, 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_uzp1_r_r_r :: #force_inline proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register) { append(instructions, inst_uzp1_r_r_r(dst, src, src2)) } +inst_uzp2_r_r_r :: #force_inline proc "contextless" (dst: Register, src: Register, src2: Register) -> Instruction { return Instruction{mnemonic = .UZP2, 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_uzp2_r_r_r :: #force_inline proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register) { append(instructions, inst_uzp2_r_r_r(dst, src, src2)) } +inst_trn1_r_r_r :: #force_inline proc "contextless" (dst: Register, src: Register, src2: Register) -> Instruction { return Instruction{mnemonic = .TRN1, 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_trn1_r_r_r :: #force_inline proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register) { append(instructions, inst_trn1_r_r_r(dst, src, src2)) } +inst_trn2_r_r_r :: #force_inline proc "contextless" (dst: Register, src: Register, src2: Register) -> Instruction { return Instruction{mnemonic = .TRN2, 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_trn2_r_r_r :: #force_inline proc(instructions: ^[dynamic]Instruction, dst: Register, src: Register, src2: Register) { append(instructions, inst_trn2_r_r_r(dst, src, src2)) } 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))), {}, {}}} } @@ -2946,6 +2974,10 @@ inst_fcmge :: inst_fcmge_r_r_r emit_fcmge :: emit_fcmge_r_r_r inst_fcmgt :: inst_fcmgt_r_r_r emit_fcmgt :: emit_fcmgt_r_r_r +inst_fcmle :: inst_fcmle_r_r +emit_fcmle :: emit_fcmle_r_r +inst_fcmlt :: inst_fcmlt_r_r +emit_fcmlt :: emit_fcmlt_r_r inst_facge :: inst_facge_r_r_r emit_facge :: emit_facge_r_r_r inst_facgt :: inst_facgt_r_r_r @@ -2960,6 +2992,10 @@ inst_cmhi :: inst_cmhi_r_r_r emit_cmhi :: emit_cmhi_r_r_r inst_cmhs :: inst_cmhs_r_r_r emit_cmhs :: emit_cmhs_r_r_r +inst_cmle :: inst_cmle_r_r +emit_cmle :: emit_cmle_r_r +inst_cmlt :: inst_cmlt_r_r +emit_cmlt :: emit_cmlt_r_r inst_cmtst :: inst_cmtst_r_r_r emit_cmtst :: emit_cmtst_r_r_r inst_and_v :: inst_and_v_r_r_r @@ -3020,6 +3056,26 @@ inst_ushll :: inst_ushll_r_r_i emit_ushll :: emit_ushll_r_r_i inst_ushll2 :: inst_ushll2_r_r_i emit_ushll2 :: emit_ushll2_r_r_i +inst_sxtl :: inst_sxtl_r_r +emit_sxtl :: emit_sxtl_r_r +inst_sxtl2 :: inst_sxtl2_r_r +emit_sxtl2 :: emit_sxtl2_r_r +inst_uxtl :: inst_uxtl_r_r +emit_uxtl :: emit_uxtl_r_r +inst_uxtl2 :: inst_uxtl2_r_r +emit_uxtl2 :: emit_uxtl2_r_r +inst_zip1 :: inst_zip1_r_r_r +emit_zip1 :: emit_zip1_r_r_r +inst_zip2 :: inst_zip2_r_r_r +emit_zip2 :: emit_zip2_r_r_r +inst_uzp1 :: inst_uzp1_r_r_r +emit_uzp1 :: emit_uzp1_r_r_r +inst_uzp2 :: inst_uzp2_r_r_r +emit_uzp2 :: emit_uzp2_r_r_r +inst_trn1 :: inst_trn1_r_r_r +emit_trn1 :: emit_trn1_r_r_r +inst_trn2 :: inst_trn2_r_r_r +emit_trn2 :: emit_trn2_r_r_r 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 7a8ce1da7..61c5c7e18 100644 --- a/core/rexcode/arm64/tablegen/encoding_table.odin +++ b/core/rexcode/arm64/tablegen/encoding_table.odin @@ -3260,6 +3260,62 @@ ENCODING_TABLE := #partial [Mnemonic][]Encoding{ {.URSHL, {.V_2D, .V_2D, .V_2D, .NONE}, {.VD, .VN, .VM, .NONE}, 0x6EE05400, 0xFFE0FC00, .NEON, {}}, }, + // Advanced SIMD permute (ZIP/UZP/TRN). + .ZIP1 = { + {.ZIP1, {.V_8B, .V_8B, .V_8B, .NONE}, {.VD, .VN, .VM, .NONE}, 0x0E003800, 0xFFE0FC00, .NEON, {}}, + {.ZIP1, {.V_16B, .V_16B, .V_16B, .NONE}, {.VD, .VN, .VM, .NONE}, 0x4E003800, 0xFFE0FC00, .NEON, {}}, + {.ZIP1, {.V_4H, .V_4H, .V_4H, .NONE}, {.VD, .VN, .VM, .NONE}, 0x0E403800, 0xFFE0FC00, .NEON, {}}, + {.ZIP1, {.V_8H, .V_8H, .V_8H, .NONE}, {.VD, .VN, .VM, .NONE}, 0x4E403800, 0xFFE0FC00, .NEON, {}}, + {.ZIP1, {.V_2S, .V_2S, .V_2S, .NONE}, {.VD, .VN, .VM, .NONE}, 0x0E803800, 0xFFE0FC00, .NEON, {}}, + {.ZIP1, {.V_4S, .V_4S, .V_4S, .NONE}, {.VD, .VN, .VM, .NONE}, 0x4E803800, 0xFFE0FC00, .NEON, {}}, + {.ZIP1, {.V_2D, .V_2D, .V_2D, .NONE}, {.VD, .VN, .VM, .NONE}, 0x4EC03800, 0xFFE0FC00, .NEON, {}}, + }, + .ZIP2 = { + {.ZIP2, {.V_8B, .V_8B, .V_8B, .NONE}, {.VD, .VN, .VM, .NONE}, 0x0E007800, 0xFFE0FC00, .NEON, {}}, + {.ZIP2, {.V_16B, .V_16B, .V_16B, .NONE}, {.VD, .VN, .VM, .NONE}, 0x4E007800, 0xFFE0FC00, .NEON, {}}, + {.ZIP2, {.V_4H, .V_4H, .V_4H, .NONE}, {.VD, .VN, .VM, .NONE}, 0x0E407800, 0xFFE0FC00, .NEON, {}}, + {.ZIP2, {.V_8H, .V_8H, .V_8H, .NONE}, {.VD, .VN, .VM, .NONE}, 0x4E407800, 0xFFE0FC00, .NEON, {}}, + {.ZIP2, {.V_2S, .V_2S, .V_2S, .NONE}, {.VD, .VN, .VM, .NONE}, 0x0E807800, 0xFFE0FC00, .NEON, {}}, + {.ZIP2, {.V_4S, .V_4S, .V_4S, .NONE}, {.VD, .VN, .VM, .NONE}, 0x4E807800, 0xFFE0FC00, .NEON, {}}, + {.ZIP2, {.V_2D, .V_2D, .V_2D, .NONE}, {.VD, .VN, .VM, .NONE}, 0x4EC07800, 0xFFE0FC00, .NEON, {}}, + }, + .UZP1 = { + {.UZP1, {.V_8B, .V_8B, .V_8B, .NONE}, {.VD, .VN, .VM, .NONE}, 0x0E001800, 0xFFE0FC00, .NEON, {}}, + {.UZP1, {.V_16B, .V_16B, .V_16B, .NONE}, {.VD, .VN, .VM, .NONE}, 0x4E001800, 0xFFE0FC00, .NEON, {}}, + {.UZP1, {.V_4H, .V_4H, .V_4H, .NONE}, {.VD, .VN, .VM, .NONE}, 0x0E401800, 0xFFE0FC00, .NEON, {}}, + {.UZP1, {.V_8H, .V_8H, .V_8H, .NONE}, {.VD, .VN, .VM, .NONE}, 0x4E401800, 0xFFE0FC00, .NEON, {}}, + {.UZP1, {.V_2S, .V_2S, .V_2S, .NONE}, {.VD, .VN, .VM, .NONE}, 0x0E801800, 0xFFE0FC00, .NEON, {}}, + {.UZP1, {.V_4S, .V_4S, .V_4S, .NONE}, {.VD, .VN, .VM, .NONE}, 0x4E801800, 0xFFE0FC00, .NEON, {}}, + {.UZP1, {.V_2D, .V_2D, .V_2D, .NONE}, {.VD, .VN, .VM, .NONE}, 0x4EC01800, 0xFFE0FC00, .NEON, {}}, + }, + .UZP2 = { + {.UZP2, {.V_8B, .V_8B, .V_8B, .NONE}, {.VD, .VN, .VM, .NONE}, 0x0E005800, 0xFFE0FC00, .NEON, {}}, + {.UZP2, {.V_16B, .V_16B, .V_16B, .NONE}, {.VD, .VN, .VM, .NONE}, 0x4E005800, 0xFFE0FC00, .NEON, {}}, + {.UZP2, {.V_4H, .V_4H, .V_4H, .NONE}, {.VD, .VN, .VM, .NONE}, 0x0E405800, 0xFFE0FC00, .NEON, {}}, + {.UZP2, {.V_8H, .V_8H, .V_8H, .NONE}, {.VD, .VN, .VM, .NONE}, 0x4E405800, 0xFFE0FC00, .NEON, {}}, + {.UZP2, {.V_2S, .V_2S, .V_2S, .NONE}, {.VD, .VN, .VM, .NONE}, 0x0E805800, 0xFFE0FC00, .NEON, {}}, + {.UZP2, {.V_4S, .V_4S, .V_4S, .NONE}, {.VD, .VN, .VM, .NONE}, 0x4E805800, 0xFFE0FC00, .NEON, {}}, + {.UZP2, {.V_2D, .V_2D, .V_2D, .NONE}, {.VD, .VN, .VM, .NONE}, 0x4EC05800, 0xFFE0FC00, .NEON, {}}, + }, + .TRN1 = { + {.TRN1, {.V_8B, .V_8B, .V_8B, .NONE}, {.VD, .VN, .VM, .NONE}, 0x0E002800, 0xFFE0FC00, .NEON, {}}, + {.TRN1, {.V_16B, .V_16B, .V_16B, .NONE}, {.VD, .VN, .VM, .NONE}, 0x4E002800, 0xFFE0FC00, .NEON, {}}, + {.TRN1, {.V_4H, .V_4H, .V_4H, .NONE}, {.VD, .VN, .VM, .NONE}, 0x0E402800, 0xFFE0FC00, .NEON, {}}, + {.TRN1, {.V_8H, .V_8H, .V_8H, .NONE}, {.VD, .VN, .VM, .NONE}, 0x4E402800, 0xFFE0FC00, .NEON, {}}, + {.TRN1, {.V_2S, .V_2S, .V_2S, .NONE}, {.VD, .VN, .VM, .NONE}, 0x0E802800, 0xFFE0FC00, .NEON, {}}, + {.TRN1, {.V_4S, .V_4S, .V_4S, .NONE}, {.VD, .VN, .VM, .NONE}, 0x4E802800, 0xFFE0FC00, .NEON, {}}, + {.TRN1, {.V_2D, .V_2D, .V_2D, .NONE}, {.VD, .VN, .VM, .NONE}, 0x4EC02800, 0xFFE0FC00, .NEON, {}}, + }, + .TRN2 = { + {.TRN2, {.V_8B, .V_8B, .V_8B, .NONE}, {.VD, .VN, .VM, .NONE}, 0x0E006800, 0xFFE0FC00, .NEON, {}}, + {.TRN2, {.V_16B, .V_16B, .V_16B, .NONE}, {.VD, .VN, .VM, .NONE}, 0x4E006800, 0xFFE0FC00, .NEON, {}}, + {.TRN2, {.V_4H, .V_4H, .V_4H, .NONE}, {.VD, .VN, .VM, .NONE}, 0x0E406800, 0xFFE0FC00, .NEON, {}}, + {.TRN2, {.V_8H, .V_8H, .V_8H, .NONE}, {.VD, .VN, .VM, .NONE}, 0x4E406800, 0xFFE0FC00, .NEON, {}}, + {.TRN2, {.V_2S, .V_2S, .V_2S, .NONE}, {.VD, .VN, .VM, .NONE}, 0x0E806800, 0xFFE0FC00, .NEON, {}}, + {.TRN2, {.V_4S, .V_4S, .V_4S, .NONE}, {.VD, .VN, .VM, .NONE}, 0x4E806800, 0xFFE0FC00, .NEON, {}}, + {.TRN2, {.V_2D, .V_2D, .V_2D, .NONE}, {.VD, .VN, .VM, .NONE}, 0x4EC06800, 0xFFE0FC00, .NEON, {}}, + }, + // Advanced SIMD two-register misc. .ABS_V = { {.ABS_V, {.V_8B, .V_8B, .NONE, .NONE}, {.VD, .VN, .NONE, .NONE}, 0x0E20B800, 0xFFFFFC00, .NEON, {}}, @@ -3879,6 +3935,28 @@ ENCODING_TABLE := #partial [Mnemonic][]Encoding{ {.SQXTUN2, {.V_4S, .V_2D, .NONE, .NONE}, {.VD, .VN, .NONE, .NONE}, 0x6EA12800, 0xFFFFFC00, .NEON, {}}, }, + // Advanced SIMD two-register widen (SXTL/UXTL = SSHLL/USHLL #0). + .SXTL = { + {.SXTL, {.V_8H, .V_8B, .NONE, .NONE}, {.VD, .VN, .NONE, .NONE}, 0x0F08A400, 0xFFFFFC00, .NEON, {}}, + {.SXTL, {.V_4S, .V_4H, .NONE, .NONE}, {.VD, .VN, .NONE, .NONE}, 0x0F10A400, 0xFFFFFC00, .NEON, {}}, + {.SXTL, {.V_2D, .V_2S, .NONE, .NONE}, {.VD, .VN, .NONE, .NONE}, 0x0F20A400, 0xFFFFFC00, .NEON, {}}, + }, + .SXTL2 = { + {.SXTL2, {.V_8H, .V_16B, .NONE, .NONE}, {.VD, .VN, .NONE, .NONE}, 0x4F08A400, 0xFFFFFC00, .NEON, {}}, + {.SXTL2, {.V_4S, .V_8H, .NONE, .NONE}, {.VD, .VN, .NONE, .NONE}, 0x4F10A400, 0xFFFFFC00, .NEON, {}}, + {.SXTL2, {.V_2D, .V_4S, .NONE, .NONE}, {.VD, .VN, .NONE, .NONE}, 0x4F20A400, 0xFFFFFC00, .NEON, {}}, + }, + .UXTL = { + {.UXTL, {.V_8H, .V_8B, .NONE, .NONE}, {.VD, .VN, .NONE, .NONE}, 0x2F08A400, 0xFFFFFC00, .NEON, {}}, + {.UXTL, {.V_4S, .V_4H, .NONE, .NONE}, {.VD, .VN, .NONE, .NONE}, 0x2F10A400, 0xFFFFFC00, .NEON, {}}, + {.UXTL, {.V_2D, .V_2S, .NONE, .NONE}, {.VD, .VN, .NONE, .NONE}, 0x2F20A400, 0xFFFFFC00, .NEON, {}}, + }, + .UXTL2 = { + {.UXTL2, {.V_8H, .V_16B, .NONE, .NONE}, {.VD, .VN, .NONE, .NONE}, 0x6F08A400, 0xFFFFFC00, .NEON, {}}, + {.UXTL2, {.V_4S, .V_8H, .NONE, .NONE}, {.VD, .VN, .NONE, .NONE}, 0x6F10A400, 0xFFFFFC00, .NEON, {}}, + {.UXTL2, {.V_2D, .V_4S, .NONE, .NONE}, {.VD, .VN, .NONE, .NONE}, 0x6F20A400, 0xFFFFFC00, .NEON, {}}, + }, + // Advanced SIMD two-register pairwise long. .SADDLP = { {.SADDLP, {.V_4H, .V_8B, .NONE, .NONE}, {.VD, .VN, .NONE, .NONE}, 0x0E202800, 0xFFFFFC00, .NEON, {}}, @@ -4010,6 +4088,40 @@ ENCODING_TABLE := #partial [Mnemonic][]Encoding{ {.FCVTXN2, {.V_4S, .V_2D, .NONE, .NONE}, {.VD, .VN, .NONE, .NONE}, 0x6E616800, 0xFFFFFC00, .NEON, {}}, }, + // Advanced SIMD compare against zero. + .CMLE = { + {.CMLE, {.V_8B, .V_8B, .NONE, .NONE}, {.VD, .VN, .NONE, .NONE}, 0x2E209800, 0xFFFFFC00, .NEON, {}}, + {.CMLE, {.V_16B, .V_16B, .NONE, .NONE}, {.VD, .VN, .NONE, .NONE}, 0x6E209800, 0xFFFFFC00, .NEON, {}}, + {.CMLE, {.V_4H, .V_4H, .NONE, .NONE}, {.VD, .VN, .NONE, .NONE}, 0x2E609800, 0xFFFFFC00, .NEON, {}}, + {.CMLE, {.V_8H, .V_8H, .NONE, .NONE}, {.VD, .VN, .NONE, .NONE}, 0x6E609800, 0xFFFFFC00, .NEON, {}}, + {.CMLE, {.V_2S, .V_2S, .NONE, .NONE}, {.VD, .VN, .NONE, .NONE}, 0x2EA09800, 0xFFFFFC00, .NEON, {}}, + {.CMLE, {.V_4S, .V_4S, .NONE, .NONE}, {.VD, .VN, .NONE, .NONE}, 0x6EA09800, 0xFFFFFC00, .NEON, {}}, + {.CMLE, {.V_2D, .V_2D, .NONE, .NONE}, {.VD, .VN, .NONE, .NONE}, 0x6EE09800, 0xFFFFFC00, .NEON, {}}, + }, + .CMLT = { + {.CMLT, {.V_8B, .V_8B, .NONE, .NONE}, {.VD, .VN, .NONE, .NONE}, 0x0E20A800, 0xFFFFFC00, .NEON, {}}, + {.CMLT, {.V_16B, .V_16B, .NONE, .NONE}, {.VD, .VN, .NONE, .NONE}, 0x4E20A800, 0xFFFFFC00, .NEON, {}}, + {.CMLT, {.V_4H, .V_4H, .NONE, .NONE}, {.VD, .VN, .NONE, .NONE}, 0x0E60A800, 0xFFFFFC00, .NEON, {}}, + {.CMLT, {.V_8H, .V_8H, .NONE, .NONE}, {.VD, .VN, .NONE, .NONE}, 0x4E60A800, 0xFFFFFC00, .NEON, {}}, + {.CMLT, {.V_2S, .V_2S, .NONE, .NONE}, {.VD, .VN, .NONE, .NONE}, 0x0EA0A800, 0xFFFFFC00, .NEON, {}}, + {.CMLT, {.V_4S, .V_4S, .NONE, .NONE}, {.VD, .VN, .NONE, .NONE}, 0x4EA0A800, 0xFFFFFC00, .NEON, {}}, + {.CMLT, {.V_2D, .V_2D, .NONE, .NONE}, {.VD, .VN, .NONE, .NONE}, 0x4EE0A800, 0xFFFFFC00, .NEON, {}}, + }, + .FCMLE = { + {.FCMLE, {.V_2S, .V_2S, .NONE, .NONE}, {.VD, .VN, .NONE, .NONE}, 0x2EA0D800, 0xFFFFFC00, .NEON, {}}, + {.FCMLE, {.V_4S, .V_4S, .NONE, .NONE}, {.VD, .VN, .NONE, .NONE}, 0x6EA0D800, 0xFFFFFC00, .NEON, {}}, + {.FCMLE, {.V_2D, .V_2D, .NONE, .NONE}, {.VD, .VN, .NONE, .NONE}, 0x6EE0D800, 0xFFFFFC00, .NEON, {}}, + {.FCMLE, {.V_4H_FP16, .V_4H_FP16, .NONE, .NONE}, {.VD, .VN, .NONE, .NONE}, 0x2EF8D800, 0xFFFFFC00, .FP16, {}}, + {.FCMLE, {.V_8H_FP16, .V_8H_FP16, .NONE, .NONE}, {.VD, .VN, .NONE, .NONE}, 0x6EF8D800, 0xFFFFFC00, .FP16, {}}, + }, + .FCMLT = { + {.FCMLT, {.V_2S, .V_2S, .NONE, .NONE}, {.VD, .VN, .NONE, .NONE}, 0x0EA0E800, 0xFFFFFC00, .NEON, {}}, + {.FCMLT, {.V_4S, .V_4S, .NONE, .NONE}, {.VD, .VN, .NONE, .NONE}, 0x4EA0E800, 0xFFFFFC00, .NEON, {}}, + {.FCMLT, {.V_2D, .V_2D, .NONE, .NONE}, {.VD, .VN, .NONE, .NONE}, 0x4EE0E800, 0xFFFFFC00, .NEON, {}}, + {.FCMLT, {.V_4H_FP16, .V_4H_FP16, .NONE, .NONE}, {.VD, .VN, .NONE, .NONE}, 0x0EF8E800, 0xFFFFFC00, .FP16, {}}, + {.FCMLT, {.V_8H_FP16, .V_8H_FP16, .NONE, .NONE}, {.VD, .VN, .NONE, .NONE}, 0x4EF8E800, 0xFFFFFC00, .FP16, {}}, + }, + // 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, {}}, diff --git a/core/rexcode/arm64/tablegen/generated/decode_tables.odin b/core/rexcode/arm64/tablegen/generated/decode_tables.odin index 34942a449..945b1a565 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 := [1995]lib.Decode_Entry{ +DECODE_ENTRIES := [2073]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} }, @@ -60,12 +60,12 @@ DECODE_ENTRIES := [1995]lib.Decode_Entry{ { .SME_FMOPS, {.ZA_TILE_S,.P_REG_MERGE,.P_REG_MERGE,.Z_REG_S}, {.ZA_TILE_NUM_S,.PG,.PM3,.VN}, 0x80800010, 0xFFE08010, .SME, {} }, { .SME_BFMOPA, {.ZA_TILE_S,.P_REG_MERGE,.P_REG_MERGE,.Z_REG_H}, {.ZA_TILE_NUM_S,.PG,.PM3,.VN}, 0x81800000, 0xFFE08010, .SME, {} }, { .SME_BFMOPS, {.ZA_TILE_S,.P_REG_MERGE,.P_REG_MERGE,.Z_REG_H}, {.ZA_TILE_NUM_S,.PG,.PM3,.VN}, 0x81800010, 0xFFE08010, .SME, {} }, - { .SME_SMOPA, {.ZA_TILE_S,.P_REG_MERGE,.P_REG_MERGE,.Z_REG_B}, {.ZA_TILE_NUM_S,.PG,.PM3,.VN}, 0xA0800000, 0xFFE08010, .SME, {} }, { .SME_SMOPA, {.ZA_TILE_D,.P_REG_MERGE,.P_REG_MERGE,.Z_REG_H}, {.ZA_TILE_NUM_D,.PG,.PM3,.VN}, 0xA0C00000, 0xFFE08010, .SME, {is_64=true} }, + { .SME_SMOPA, {.ZA_TILE_S,.P_REG_MERGE,.P_REG_MERGE,.Z_REG_B}, {.ZA_TILE_NUM_S,.PG,.PM3,.VN}, 0xA0800000, 0xFFE08010, .SME, {} }, { .SME_SMOPS, {.ZA_TILE_D,.P_REG_MERGE,.P_REG_MERGE,.Z_REG_H}, {.ZA_TILE_NUM_D,.PG,.PM3,.VN}, 0xA0C00010, 0xFFE08010, .SME, {is_64=true} }, { .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_D,.P_REG_MERGE,.P_REG_MERGE,.Z_REG_H}, {.ZA_TILE_NUM_D,.PG,.PM3,.VN}, 0xA1E00000, 0xFFE08010, .SME, {is_64=true} }, { .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_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, {} }, @@ -93,12 +93,12 @@ DECODE_ENTRIES := [1995]lib.Decode_Entry{ { .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_B,.W_REG,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x05203800, 0xFFFFFC00, .SVE, {} }, + { .SVE_REV_Z, {.Z_REG_H,.Z_REG_H,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x05783800, 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_D,.Z_REG_D,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x05F83800, 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_B,.Z_REG_B,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x05383800, 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, {} }, @@ -116,92 +116,92 @@ DECODE_ENTRIES := [1995]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_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_H,.Z_REG_H,.Z_REG_H,.NONE}, {.VD,.VN,.VM,.NONE}, 0x04600000, 0xFFE0FC00, .SVE, {} }, { .SVE_ADD_Z, {.Z_REG_B,.Z_REG_B,.Z_REG_B,.NONE}, {.VD,.VN,.VM,.NONE}, 0x04200000, 0xFFE0FC00, .SVE, {} }, - { .SVE_SUB_Z, {.Z_REG_H,.Z_REG_H,.Z_REG_H,.NONE}, {.VD,.VN,.VM,.NONE}, 0x04600400, 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_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_D,.Z_REG_D,.Z_REG_D,.NONE}, {.VD,.VN,.VM,.NONE}, 0x04E00400, 0xFFE0FC00, .SVE, {is_64=true} }, { .SVE_SUB_Z, {.Z_REG_S,.Z_REG_S,.Z_REG_S,.NONE}, {.VD,.VN,.VM,.NONE}, 0x04A00400, 0xFFE0FC00, .SVE, {} }, - { .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_B,.Z_REG_B,.Z_REG_B,.NONE}, {.VD,.VN,.VM,.NONE}, 0x04201000, 0xFFE0FC00, .SVE, {} }, + { .SVE_SUB_Z, {.Z_REG_H,.Z_REG_H,.Z_REG_H,.NONE}, {.VD,.VN,.VM,.NONE}, 0x04600400, 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_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_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_UQADD_Z, {.Z_REG_D,.Z_REG_D,.Z_REG_D,.NONE}, {.VD,.VN,.VM,.NONE}, 0x04E01400, 0xFFE0FC00, .SVE, {is_64=true} }, - { .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_S,.Z_REG_S,.Z_REG_S,.NONE}, {.VD,.VN,.VM,.NONE}, 0x04A01400, 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_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_SQSUB_Z, {.Z_REG_S,.Z_REG_S,.Z_REG_S,.NONE}, {.VD,.VN,.VM,.NONE}, 0x04A01800, 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_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_S,.Z_REG_S,.Z_REG_S,.NONE}, {.VD,.VN,.VM,.NONE}, 0x04A01800, 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_D,.Z_REG_D,.Z_REG_D,.NONE}, {.VD,.VN,.VM,.NONE}, 0x04E01C00, 0xFFE0FC00, .SVE, {is_64=true} }, { .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_B,.Z_REG_B,.Z_REG_B,.NONE}, {.VD,.VN,.VM,.NONE}, 0x04201C00, 0xFFE0FC00, .SVE, {} }, { .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_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_D,.Z_REG_D,.Z_REG_D,.NONE}, {.VD,.VN,.VM,.NONE}, 0x65C00000, 0xFFE0FC00, .SVE, {is_64=true} }, { .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_FSUB_Z, {.Z_REG_S,.Z_REG_S,.Z_REG_S,.NONE}, {.VD,.VN,.VM,.NONE}, 0x65800400, 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_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_FMUL_Z, {.Z_REG_S,.Z_REG_S,.Z_REG_S,.NONE}, {.VD,.VN,.VM,.NONE}, 0x65800800, 0xFFE0FC00, .SVE, {} }, - { .SVE_FRECPS, {.Z_REG_H,.Z_REG_H,.Z_REG_H,.NONE}, {.VD,.VN,.VM,.NONE}, 0x65401800, 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_S,.Z_REG_S,.Z_REG_S,.NONE}, {.VD,.VN,.VM,.NONE}, 0x65801800, 0xFFE0FC00, .SVE, {} }, + { .SVE_FRECPS, {.Z_REG_H,.Z_REG_H,.Z_REG_H,.NONE}, {.VD,.VN,.VM,.NONE}, 0x65401800, 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_D,.Z_REG_D,.Z_REG_D,.NONE}, {.VD,.VN,.VM,.NONE}, 0x65C01C00, 0xFFE0FC00, .SVE, {is_64=true} }, { .SVE_FRSQRTS, {.Z_REG_H,.Z_REG_H,.Z_REG_H,.NONE}, {.VD,.VN,.VM,.NONE}, 0x65401C00, 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_FRSQRTS, {.Z_REG_S,.Z_REG_S,.Z_REG_S,.NONE}, {.VD,.VN,.VM,.NONE}, 0x65801C00, 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_FTSMUL, {.Z_REG_H,.Z_REG_H,.Z_REG_H,.NONE}, {.VD,.VN,.VM,.NONE}, 0x65400C00, 0xFFE0FC00, .SVE, {} }, - { .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_TBL, {.Z_REG_B,.Z_REG_B,.Z_REG_B,.NONE}, {.VD,.VN,.VM,.NONE}, 0x05203000, 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_H,.Z_REG_H,.Z_REG_H,.NONE}, {.VD,.VN,.VM,.NONE}, 0x05606000, 0xFFE0FC00, .SVE, {} }, + { .SVE_TBL, {.Z_REG_H,.Z_REG_H,.Z_REG_H,.NONE}, {.VD,.VN,.VM,.NONE}, 0x05603000, 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_H,.Z_REG_H,.Z_REG_H,.NONE}, {.VD,.VN,.VM,.NONE}, 0x05606000, 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_D,.Z_REG_D,.Z_REG_D,.NONE}, {.VD,.VN,.VM,.NONE}, 0x05E06400, 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_S,.Z_REG_S,.Z_REG_S,.NONE}, {.VD,.VN,.VM,.NONE}, 0x05A06400, 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_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_S,.Z_REG_S,.Z_REG_S,.NONE}, {.VD,.VN,.VM,.NONE}, 0x05A06800, 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_S,.Z_REG_S,.Z_REG_S,.NONE}, {.VD,.VN,.VM,.NONE}, 0x05A06C00, 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_TRN1_Z, {.Z_REG_B,.Z_REG_B,.Z_REG_B,.NONE}, {.VD,.VN,.VM,.NONE}, 0x05207000, 0xFFE0FC00, .SVE, {} }, { .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_H,.Z_REG_H,.Z_REG_H,.NONE}, {.VD,.VN,.VM,.NONE}, 0x05607000, 0xFFE0FC00, .SVE, {} }, - { .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_D,.Z_REG_D,.Z_REG_D,.NONE}, {.VD,.VN,.VM,.NONE}, 0x05E07000, 0xFFE0FC00, .SVE, {is_64=true} }, + { .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_TRN2_Z, {.Z_REG_S,.Z_REG_S,.Z_REG_S,.NONE}, {.VD,.VN,.VM,.NONE}, 0x05A07400, 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_B,.Z_REG_B,.Z_REG_B,.NONE}, {.VD,.VN,.VM,.NONE}, 0x05207400, 0xFFE0FC00, .SVE, {} }, { .SVE_SQRDMLAH, {.Z_REG_B,.Z_REG_B,.Z_REG_B,.NONE}, {.VD,.VN,.VM,.NONE}, 0x44007000, 0xFFE0FC00, .SVE2, {} }, + { .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_H,.Z_REG_H,.Z_REG_H,.NONE}, {.VD,.VN,.VM,.NONE}, 0x44407000, 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_D,.Z_REG_D,.Z_REG_D,.NONE}, {.VD,.VN,.VM,.NONE}, 0x44C07000, 0xFFE0FC00, .SVE2, {is_64=true} }, - { .SVE_SQRDMLSH, {.Z_REG_D,.Z_REG_D,.Z_REG_D,.NONE}, {.VD,.VN,.VM,.NONE}, 0x44C07400, 0xFFE0FC00, .SVE2, {is_64=true} }, { .SVE_SQRDMLSH, {.Z_REG_B,.Z_REG_B,.Z_REG_B,.NONE}, {.VD,.VN,.VM,.NONE}, 0x44007400, 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_SQRDMLSH, {.Z_REG_S,.Z_REG_S,.Z_REG_S,.NONE}, {.VD,.VN,.VM,.NONE}, 0x44807400, 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_ADCLB, {.Z_REG_S,.Z_REG_S,.Z_REG_S,.NONE}, {.VD,.VN,.VM,.NONE}, 0x4500D000, 0xFFE0FC00, .SVE2, {} }, - { .SVE_ADCLT, {.Z_REG_D,.Z_REG_D,.Z_REG_D,.NONE}, {.VD,.VN,.VM,.NONE}, 0x4540D400, 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_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_ADCLT, {.Z_REG_D,.Z_REG_D,.Z_REG_D,.NONE}, {.VD,.VN,.VM,.NONE}, 0x4540D400, 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, {} }, + { .SVE_SBCLB, {.Z_REG_D,.Z_REG_D,.Z_REG_D,.NONE}, {.VD,.VN,.VM,.NONE}, 0x45C0D000, 0xFFE0FC00, .SVE2, {is_64=true} }, { .SVE_SBCLT, {.Z_REG_D,.Z_REG_D,.Z_REG_D,.NONE}, {.VD,.VN,.VM,.NONE}, 0x45C0D400, 0xFFE0FC00, .SVE2, {is_64=true} }, + { .SVE_SBCLT, {.Z_REG_S,.Z_REG_S,.Z_REG_S,.NONE}, {.VD,.VN,.VM,.NONE}, 0x4580D400, 0xFFE0FC00, .SVE2, {} }, { .SVE_TBL2, {.Z_REG_B,.Z_REG_B,.Z_REG_B,.NONE}, {.VD,.VN,.VM,.NONE}, 0x05202800, 0xFFE0FC00, .SVE2, {} }, { .SVE_TBX, {.Z_REG_B,.Z_REG_B,.Z_REG_B,.NONE}, {.VD,.VN,.VM,.NONE}, 0x05202C00, 0xFFE0FC00, .SVE2, {} }, { .SVE_HISTSEG, {.Z_REG_B,.Z_REG_B,.Z_REG_B,.NONE}, {.VD,.VN,.VM,.NONE}, 0x4520A000, 0xFFE0FC00, .SVE2, {} }, @@ -246,165 +246,165 @@ DECODE_ENTRIES := [1995]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_D,.Z_REG_D}, {.PD,.PG,.VN,.VM}, 0x24C0A010, 0xFFE0E010, .SVE, {sets_flags=true, is_64=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_H,.Z_REG_H}, {.PD,.PG,.VN,.VM}, 0x2440A010, 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_B,.Z_REG_B}, {.PD,.PG,.VN,.VM}, 0x2400A010, 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_S,.Z_REG_S}, {.PD,.PG,.VN,.VM}, 0x24808000, 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_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_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_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_H,.Z_REG_H}, {.PD,.PG,.VN,.VM}, 0x24400010, 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_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_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_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_S,.Z_REG_S}, {.PD,.PG,.VN,.VM}, 0x24800000, 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_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_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_B,.Z_REG_B}, {.PD,.PG,.VN,.VM}, 0x45208000, 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_B,.Z_REG_B}, {.PD,.PG,.VN,.VM}, 0x45208010, 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_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_S,.P_REG_MERGE,.Z_REG_S,.Z_REG_S}, {.VD,.PG,.VD,.VM}, 0x04800000, 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_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_B,.P_REG_MERGE,.Z_REG_B,.Z_REG_B}, {.VD,.PG,.VD,.VM}, 0x04000000, 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_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_SUB_PRED, {.Z_REG_H,.P_REG_MERGE,.Z_REG_H,.Z_REG_H}, {.VD,.PG,.VD,.VM}, 0x04410000, 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_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_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_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_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_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_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_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_H,.P_REG_MERGE,.Z_REG_H,.Z_REG_H}, {.VD,.PG,.VD,.VM}, 0x04500000, 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_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_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_B,.P_REG_MERGE,.Z_REG_B,.Z_REG_B}, {.VD,.PG,.VD,.VM}, 0x04120000, 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_H,.P_REG_MERGE,.Z_REG_H,.Z_REG_H}, {.VD,.PG,.VD,.VM}, 0x04520000, 0xFFE0E000, .SVE, {} }, { .SVE_UMULH_PRED, {.Z_REG_B,.P_REG_MERGE,.Z_REG_B,.Z_REG_B}, {.VD,.PG,.VD,.VM}, 0x04130000, 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_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_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_S,.P_REG_MERGE,.Z_REG_S,.Z_REG_S}, {.VD,.PG,.VD,.VM}, 0x04880000, 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_B,.P_REG_MERGE,.Z_REG_B,.Z_REG_B}, {.VD,.PG,.VD,.VM}, 0x04080000, 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_UMAX_PRED, {.Z_REG_H,.P_REG_MERGE,.Z_REG_H,.Z_REG_H}, {.VD,.PG,.VD,.VM}, 0x04490000, 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_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_D,.P_REG_MERGE,.Z_REG_D,.Z_REG_D}, {.VD,.PG,.VD,.VM}, 0x04CA0000, 0xFFE0E000, .SVE, {is_64=true} }, { .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_H,.P_REG_MERGE,.Z_REG_H,.Z_REG_H}, {.VD,.PG,.VD,.VM}, 0x044A0000, 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_H,.P_REG_MERGE,.Z_REG_H,.Z_REG_H}, {.VD,.PG,.VD,.VM}, 0x044B0000, 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_S,.P_REG_MERGE,.Z_REG_S,.Z_REG_S}, {.VD,.PG,.VD,.VM}, 0x048B0000, 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_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_B,.P_REG_MERGE,.Z_REG_B,.Z_REG_B}, {.VD,.PG,.VD,.VM}, 0x040C0000, 0xFFE0E000, .SVE, {} }, - { .SVE_SABD_PRED, {.Z_REG_S,.P_REG_MERGE,.Z_REG_S,.Z_REG_S}, {.VD,.PG,.VD,.VM}, 0x048C0000, 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_UABD_PRED, {.Z_REG_H,.P_REG_MERGE,.Z_REG_H,.Z_REG_H}, {.VD,.PG,.VD,.VM}, 0x044D0000, 0xFFE0E000, .SVE, {} }, + { .SVE_SABD_PRED, {.Z_REG_S,.P_REG_MERGE,.Z_REG_S,.Z_REG_S}, {.VD,.PG,.VD,.VM}, 0x048C0000, 0xFFE0E000, .SVE, {} }, + { .SVE_SABD_PRED, {.Z_REG_B,.P_REG_MERGE,.Z_REG_B,.Z_REG_B}, {.VD,.PG,.VD,.VM}, 0x040C0000, 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_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_ASR_PRED, {.Z_REG_S,.P_REG_MERGE,.Z_REG_S,.Z_REG_S}, {.VD,.PG,.VD,.VM}, 0x04908000, 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_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_B,.P_REG_MERGE,.Z_REG_B,.Z_REG_B}, {.VD,.PG,.VD,.VM}, 0x04108000, 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_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_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_B,.P_REG_MERGE,.Z_REG_B,.Z_REG_B}, {.VD,.PG,.VD,.VM}, 0x04138000, 0xFFE0E000, .SVE, {} }, { .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_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_S,.P_REG_MERGE,.Z_REG_S,.Z_REG_S}, {.VD,.PG,.VD,.VM}, 0x04918000, 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_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_D,.P_REG_MERGE,.Z_REG_D,.NONE}, {.VD,.PG,.VN,.NONE}, 0x04D6A000, 0xFFE0E000, .SVE, {is_64=true} }, - { .SVE_ABS_PRED, {.Z_REG_B,.P_REG_MERGE,.Z_REG_B,.NONE}, {.VD,.PG,.VN,.NONE}, 0x0416A000, 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_ABS_PRED, {.Z_REG_S,.P_REG_MERGE,.Z_REG_S,.NONE}, {.VD,.PG,.VN,.NONE}, 0x0496A000, 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_ABS_PRED, {.Z_REG_B,.P_REG_MERGE,.Z_REG_B,.NONE}, {.VD,.PG,.VN,.NONE}, 0x0416A000, 0xFFE0E000, .SVE, {} }, + { .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_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_B,.P_REG_MERGE,.Z_REG_B,.NONE}, {.VD,.PG,.VN,.NONE}, 0x0417A000, 0xFFE0E000, .SVE, {} }, - { .SVE_CLS_PRED, {.Z_REG_H,.P_REG_MERGE,.Z_REG_H,.NONE}, {.VD,.PG,.VN,.NONE}, 0x0458A000, 0xFFE0E000, .SVE, {} }, + { .SVE_NEG_PRED, {.Z_REG_S,.P_REG_MERGE,.Z_REG_S,.NONE}, {.VD,.PG,.VN,.NONE}, 0x0497A000, 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_CLS_PRED, {.Z_REG_S,.P_REG_MERGE,.Z_REG_S,.NONE}, {.VD,.PG,.VN,.NONE}, 0x0498A000, 0xFFE0E000, .SVE, {} }, + { .SVE_CLS_PRED, {.Z_REG_H,.P_REG_MERGE,.Z_REG_H,.NONE}, {.VD,.PG,.VN,.NONE}, 0x0458A000, 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_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_S,.P_REG_MERGE,.Z_REG_S,.NONE}, {.VD,.PG,.VN,.NONE}, 0x0499A000, 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_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_CNT_PRED, {.Z_REG_B,.P_REG_MERGE,.Z_REG_B,.NONE}, {.VD,.PG,.VN,.NONE}, 0x041AA000, 0xFFE0E000, .SVE, {} }, { .SVE_CNT_PRED, {.Z_REG_H,.P_REG_MERGE,.Z_REG_H,.NONE}, {.VD,.PG,.VN,.NONE}, 0x045AA000, 0xFFE0E000, .SVE, {} }, + { .SVE_CNT_PRED, {.Z_REG_B,.P_REG_MERGE,.Z_REG_B,.NONE}, {.VD,.PG,.VN,.NONE}, 0x041AA000, 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_FADD_PRED, {.Z_REG_S,.P_REG_MERGE,.Z_REG_S,.Z_REG_S}, {.VD,.PG,.VD,.VM}, 0x65808000, 0xFFE0E000, .SVE, {} }, { .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_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_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_FMUL_PRED, {.Z_REG_S,.P_REG_MERGE,.Z_REG_S,.Z_REG_S}, {.VD,.PG,.VD,.VM}, 0x65828000, 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_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_H,.P_REG_MERGE,.Z_REG_H,.Z_REG_H}, {.VD,.PG,.VD,.VM}, 0x654D8000, 0xFFE0E000, .SVE, {} }, { .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_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_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_S,.P_REG_MERGE,.Z_REG_S,.Z_REG_S}, {.VD,.PG,.VD,.VM}, 0x65868000, 0xFFE0E000, .SVE, {} }, { .SVE_FMAX_PRED, {.Z_REG_H,.P_REG_MERGE,.Z_REG_H,.Z_REG_H}, {.VD,.PG,.VD,.VM}, 0x65468000, 0xFFE0E000, .SVE, {} }, - { .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_D,.P_REG_MERGE,.Z_REG_D,.Z_REG_D}, {.VD,.PG,.VD,.VM}, 0x65C78000, 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_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_S,.P_REG_MERGE,.Z_REG_S,.Z_REG_S}, {.VD,.PG,.VD,.VM}, 0x65848000, 0xFFE0E000, .SVE, {} }, + { .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_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_S,.P_REG_MERGE,.Z_REG_S,.Z_REG_S}, {.VD,.PG,.VD,.VM}, 0x65858000, 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_H,.P_REG_MERGE,.Z_REG_H,.NONE}, {.VD,.PG,.VN,.NONE}, 0x045CA000, 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_S,.P_REG_MERGE,.Z_REG_S,.NONE}, {.VD,.PG,.VN,.NONE}, 0x049CA000, 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_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_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_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_FSQRT_Z, {.Z_REG_D,.P_REG_MERGE,.Z_REG_D,.NONE}, {.VD,.PG,.VN,.NONE}, 0x65CDA000, 0xFFE0E000, .SVE, {is_64=true} }, + { .SVE_FSQRT_Z, {.Z_REG_H,.P_REG_MERGE,.Z_REG_H,.NONE}, {.VD,.PG,.VN,.NONE}, 0x654DA000, 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_H,.P_REG_MERGE,.Z_REG_H,.Z_REG_H}, {.VD,.PG,.VN,.VM}, 0x65600000, 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_FMLA, {.Z_REG_S,.P_REG_MERGE,.Z_REG_S,.Z_REG_S}, {.VD,.PG,.VN,.VM}, 0x65A00000, 0xFFE0E000, .SVE, {} }, { .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_S,.P_REG_MERGE,.Z_REG_S,.Z_REG_S}, {.VD,.PG,.VN,.VM}, 0x65A02000, 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_FNMLA, {.Z_REG_S,.P_REG_MERGE,.Z_REG_S,.Z_REG_S}, {.VD,.PG,.VN,.VM}, 0x65A04000, 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_FNMLS, {.Z_REG_S,.P_REG_MERGE,.Z_REG_S,.Z_REG_S}, {.VD,.PG,.VN,.VM}, 0x65A06000, 0xFFE0E000, .SVE, {} }, - { .SVE_FNMLS, {.Z_REG_H,.P_REG_MERGE,.Z_REG_H,.Z_REG_H}, {.VD,.PG,.VN,.VM}, 0x65606000, 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_FNMLS, {.Z_REG_D,.P_REG_MERGE,.Z_REG_D,.Z_REG_D}, {.VD,.PG,.VN,.VM}, 0x65E06000, 0xFFE0E000, .SVE, {is_64=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_H,.Z_REG_H}, {.PD,.PG,.VN,.VM}, 0x2440A000, 0xFFE0E000, .SVE, {sets_flags=true} }, + { .SVE_FNMLS, {.Z_REG_H,.P_REG_MERGE,.Z_REG_H,.Z_REG_H}, {.VD,.PG,.VN,.VM}, 0x65606000, 0xFFE0E000, .SVE, {} }, + { .SVE_FNMLS, {.Z_REG_S,.P_REG_MERGE,.Z_REG_S,.Z_REG_S}, {.VD,.PG,.VN,.VM}, 0x65A06000, 0xFFE0E000, .SVE, {} }, { .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_B,.Z_REG_B}, {.PD,.PG,.VN,.VM}, 0x2400A000, 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_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 := [1995]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_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_HISTCNT, {.Z_REG_D,.P_REG_ZERO,.Z_REG_D,.Z_REG_D}, {.VD,.PG,.VN,.VM}, 0x45E0C000, 0xFFE0E000, .SVE2, {is_64=true} }, { .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, {} }, @@ -541,20 +541,20 @@ DECODE_ENTRIES := [1995]lib.Decode_Entry{ { .STGP, {.X_REG,.X_REG,.MEM,.NONE}, {.RT,.RT2,.OFFSET_BASE_S9,.NONE}, 0x69000000, 0xFFC00000, .MTE, {is_64=true} }, { .MOV_REG, {.W_REG,.W_REG,.NONE,.NONE}, {.RD,.RM,.NONE,.NONE}, 0x2A0003E0, 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} }, + { .MVN, {.X_REG,.X_REG,.NONE,.NONE}, {.RD,.RM,.NONE,.NONE}, 0xAA2003E0, 0xFFE0FFE0, .BASE, {is_64=true} }, { .CMP_ER, {.WSP_REG,.W_EXTENDED,.NONE,.NONE}, {.RN,.RM,.NONE,.NONE}, 0x6B20001F, 0xFFE0001F, .BASE, {sets_flags=true} }, + { .CMP_ER, {.XSP_REG,.X_EXTENDED,.NONE,.NONE}, {.RN,.RM,.NONE,.NONE}, 0xEB20001F, 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} }, { .CMN_ER, {.XSP_REG,.X_EXTENDED,.NONE,.NONE}, {.RN,.RM,.NONE,.NONE}, 0xAB20001F, 0xFFE0001F, .BASE, {sets_flags=true, is_64=true} }, - { .NEG_SR, {.W_REG,.W_SHIFTED,.NONE,.NONE}, {.RD,.RM,.NONE,.NONE}, 0x4B0003E0, 0xFF2003E0, .BASE, {} }, { .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} }, + { .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} }, - { .CMP_SR, {.X_REG,.X_SHIFTED,.NONE,.NONE}, {.RN,.RM,.NONE,.NONE}, 0xEB00001F, 0xFF20001F, .BASE, {sets_flags=true, 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} }, - { .CMN_SR, {.X_REG,.X_SHIFTED,.NONE,.NONE}, {.RN,.RM,.NONE,.NONE}, 0xAB00001F, 0xFF20001F, .BASE, {sets_flags=true, is_64=true} }, + { .CMP_SR, {.X_REG,.X_SHIFTED,.NONE,.NONE}, {.RN,.RM,.NONE,.NONE}, 0xEB00001F, 0xFF20001F, .BASE, {sets_flags=true, is_64=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} }, @@ -619,233 +619,269 @@ DECODE_ENTRIES := [1995]lib.Decode_Entry{ { .ABS_V, {.V_8B,.V_8B,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0E20B800, 0xFFFFFC00, .NEON, {} }, { .ABS_V, {.V_4H,.V_4H,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0E60B800, 0xFFFFFC00, .NEON, {} }, { .ABS_V, {.V_2S,.V_2S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0EA0B800, 0xFFFFFC00, .NEON, {} }, - { .ADDV, {.B_REG,.V_16B,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4E31B800, 0xFFFFFC00, .NEON, {} }, - { .ADDV, {.H_REG,.V_8H,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4E71B800, 0xFFFFFC00, .NEON, {} }, { .ADDV, {.S_REG,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4EB1B800, 0xFFFFFC00, .NEON, {} }, { .ADDV, {.B_REG,.V_8B,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0E31B800, 0xFFFFFC00, .NEON, {} }, + { .ADDV, {.H_REG,.V_8H,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4E71B800, 0xFFFFFC00, .NEON, {} }, + { .ADDV, {.B_REG,.V_16B,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4E31B800, 0xFFFFFC00, .NEON, {} }, { .ADDV, {.H_REG,.V_4H,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0E71B800, 0xFFFFFC00, .NEON, {} }, - { .SADDLP, {.V_4S,.V_8H,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4E602800, 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_2S,.V_4H,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0E602800, 0xFFFFFC00, .NEON, {} }, { .SADDLP, {.V_4H,.V_8B,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0E202800, 0xFFFFFC00, .NEON, {} }, { .SADDLP, {.V_1D,.V_2S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0EA02800, 0xFFFFFC00, .NEON, {} }, - { .SADDLP, {.V_2S,.V_4H,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0E602800, 0xFFFFFC00, .NEON, {} }, + { .SADDLP, {.V_2D,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4EA02800, 0xFFFFFC00, .NEON, {} }, + { .SADDLP, {.V_4S,.V_8H,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4E602800, 0xFFFFFC00, .NEON, {} }, + { .UADDLP, {.V_1D,.V_2S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2EA02800, 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_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_1D,.V_2S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2EA02800, 0xFFFFFC00, .NEON, {} }, - { .UADDLP, {.V_8H,.V_16B,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6E202800, 0xFFFFFC00, .NEON, {} }, - { .UADDLP, {.V_2D,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6EA02800, 0xFFFFFC00, .NEON, {} }, { .UADDLP, {.V_2S,.V_4H,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2E602800, 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, {} }, + { .SADALP, {.V_4S,.V_8H,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4E606800, 0xFFFFFC00, .NEON, {} }, { .SADALP, {.V_2D,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4EA06800, 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_4H,.V_8B,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0E206800, 0xFFFFFC00, .NEON, {} }, + { .SADALP, {.V_1D,.V_2S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0EA06800, 0xFFFFFC00, .NEON, {} }, + { .UADALP, {.V_2D,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6EA06800, 0xFFFFFC00, .NEON, {} }, + { .UADALP, {.V_2S,.V_4H,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2E606800, 0xFFFFFC00, .NEON, {} }, + { .UADALP, {.V_4S,.V_8H,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6E606800, 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_4S,.V_8H,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6E606800, 0xFFFFFC00, .NEON, {} }, - { .UADALP, {.V_2D,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6EA06800, 0xFFFFFC00, .NEON, {} }, - { .UADALP, {.V_2S,.V_4H,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2E606800, 0xFFFFFC00, .NEON, {} }, { .SADDLV, {.H_REG,.V_8B,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0E303800, 0xFFFFFC00, .NEON, {} }, - { .SADDLV, {.S_REG,.V_4H,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0E703800, 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, {} }, + { .SADDLV, {.S_REG,.V_4H,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0E703800, 0xFFFFFC00, .NEON, {} }, { .SADDLV, {.S_REG,.V_8H,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4E703800, 0xFFFFFC00, .NEON, {} }, { .UADDLV, {.H_REG,.V_8B,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2E303800, 0xFFFFFC00, .NEON, {} }, { .UADDLV, {.D_REG,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6EB03800, 0xFFFFFC00, .NEON, {} }, - { .UADDLV, {.S_REG,.V_8H,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6E703800, 0xFFFFFC00, .NEON, {} }, { .UADDLV, {.H_REG,.V_16B,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6E303800, 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, {} }, - { .SMAXV, {.H_REG,.V_4H,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0E70A800, 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, {.H_REG,.V_8H,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4E70A800, 0xFFFFFC00, .NEON, {} }, + { .SMAXV, {.H_REG,.V_4H,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0E70A800, 0xFFFFFC00, .NEON, {} }, { .SMAXV, {.B_REG,.V_8B,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0E30A800, 0xFFFFFC00, .NEON, {} }, - { .UMAXV, {.S_REG,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6EB0A800, 0xFFFFFC00, .NEON, {} }, + { .SMAXV, {.H_REG,.V_8H,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4E70A800, 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, {.S_REG,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6EB0A800, 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, {.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, {.H_REG,.V_8H,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4E71A800, 0xFFFFFC00, .NEON, {} }, + { .UMAXV, {.H_REG,.V_4H,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2E70A800, 0xFFFFFC00, .NEON, {} }, { .SMINV, {.B_REG,.V_16B,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4E31A800, 0xFFFFFC00, .NEON, {} }, + { .SMINV, {.H_REG,.V_8H,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4E71A800, 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, {.S_REG,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4EB1A800, 0xFFFFFC00, .NEON, {} }, + { .UMINV, {.B_REG,.V_8B,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2E31A800, 0xFFFFFC00, .NEON, {} }, { .UMINV, {.B_REG,.V_16B,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6E31A800, 0xFFFFFC00, .NEON, {} }, { .UMINV, {.S_REG,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6EB1A800, 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, {} }, { .UMINV, {.H_REG,.V_8H,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6E71A800, 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, {} }, - { .XTN, {.V_4H,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0E612800, 0xFFFFFC00, .NEON, {} }, - { .XTN2, {.V_8H,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4E612800, 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_8B,.V_8H,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0E214800, 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_2S,.V_2D,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0EA14800, 0xFFFFFC00, .NEON, {} }, + { .SQXTN, {.V_8B,.V_8H,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0E214800, 0xFFFFFC00, .NEON, {} }, + { .SQXTN2, {.V_16B,.V_8H,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4E214800, 0xFFFFFC00, .NEON, {} }, { .SQXTN2, {.V_4S,.V_2D,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4EA14800, 0xFFFFFC00, .NEON, {} }, { .SQXTN2, {.V_8H,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4E614800, 0xFFFFFC00, .NEON, {} }, - { .SQXTN2, {.V_16B,.V_8H,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4E214800, 0xFFFFFC00, .NEON, {} }, { .UQXTN, {.V_8B,.V_8H,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2E214800, 0xFFFFFC00, .NEON, {} }, - { .UQXTN, {.V_2S,.V_2D,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2EA14800, 0xFFFFFC00, .NEON, {} }, { .UQXTN, {.V_4H,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2E614800, 0xFFFFFC00, .NEON, {} }, - { .UQXTN2, {.V_4S,.V_2D,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6EA14800, 0xFFFFFC00, .NEON, {} }, - { .UQXTN2, {.V_16B,.V_8H,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6E214800, 0xFFFFFC00, .NEON, {} }, + { .UQXTN, {.V_2S,.V_2D,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2EA14800, 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, {} }, + { .UQXTN2, {.V_4S,.V_2D,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6EA14800, 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_8H,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6E612800, 0xFFFFFC00, .NEON, {} }, { .SQXTUN2, {.V_16B,.V_8H,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6E212800, 0xFFFFFC00, .NEON, {} }, - { .SQXTUN2, {.V_4S,.V_2D,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6EA12800, 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_2S,.V_2S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2EA0F800, 0xFFFFFC00, .NEON, {} }, + { .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_4H_FP16,.V_4H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2EF8F800, 0xFFFFFC00, .FP16, {} }, - { .FABS_V, {.V_2S,.V_2S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0EA0F800, 0xFFFFFC00, .NEON, {} }, - { .FABS_V, {.V_4S,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4EA0F800, 0xFFFFFC00, .NEON, {} }, { .FABS_V, {.V_8H_FP16,.V_8H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4EF8F800, 0xFFFFFC00, .FP16, {} }, - { .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, {} }, - { .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_8H_FP16,.V_8H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6EF9F800, 0xFFFFFC00, .FP16, {} }, + { .FABS_V, {.V_4S,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4EA0F800, 0xFFFFFC00, .NEON, {} }, + { .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, {} }, { .FSQRT_V, {.V_2D,.V_2D,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6EE1F800, 0xFFFFFC00, .NEON, {} }, + { .FSQRT_V, {.V_4H_FP16,.V_4H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2EF9F800, 0xFFFFFC00, .FP16, {} }, + { .FSQRT_V, {.V_8H_FP16,.V_8H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6EF9F800, 0xFFFFFC00, .FP16, {} }, + { .FSQRT_V, {.V_4S,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6EA1F800, 0xFFFFFC00, .NEON, {} }, + { .FSQRT_V, {.V_2S,.V_2S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2EA1F800, 0xFFFFFC00, .NEON, {} }, + { .FMAXV_V, {.S_REG,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6E30F800, 0xFFFFFC00, .NEON, {} }, { .FMAXV_V, {.H_REG,.V_8H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4E30F800, 0xFFFFFC00, .FP16, {} }, { .FMAXV_V, {.H_REG,.V_4H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0E30F800, 0xFFFFFC00, .FP16, {} }, - { .FMAXV_V, {.S_REG,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6E30F800, 0xFFFFFC00, .NEON, {} }, - { .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, {} }, + { .FMINV_V, {.S_REG,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6EB0F800, 0xFFFFFC00, .NEON, {} }, { .FMINV_V, {.H_REG,.V_8H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4EB0F800, 0xFFFFFC00, .FP16, {} }, - { .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_2S,.V_2S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0EA1D800, 0xFFFFFC00, .NEON, {} }, - { .FRECPE, {.V_8H_FP16,.V_8H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4EF9D800, 0xFFFFFC00, .FP16, {} }, + { .FMINNMV, {.H_REG,.V_4H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0EB0C800, 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_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, {} }, - { .FRSQRTE, {.V_2S,.V_2S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2EA1D800, 0xFFFFFC00, .NEON, {} }, - { .FRSQRTE, {.V_4S,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6EA1D800, 0xFFFFFC00, .NEON, {} }, + { .FRECPE, {.V_8H_FP16,.V_8H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4EF9D800, 0xFFFFFC00, .FP16, {} }, + { .FRECPE, {.V_2S,.V_2S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0EA1D800, 0xFFFFFC00, .NEON, {} }, { .FRSQRTE, {.V_8H_FP16,.V_8H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6EF9D800, 0xFFFFFC00, .FP16, {} }, + { .FRSQRTE, {.V_4S,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6EA1D800, 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, {} }, + { .FRSQRTE, {.V_2S,.V_2S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2EA1D800, 0xFFFFFC00, .NEON, {} }, + { .FRINTA_V, {.V_8H_FP16,.V_8H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6E798800, 0xFFFFFC00, .FP16, {} }, + { .FRINTA_V, {.V_4H_FP16,.V_4H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2E798800, 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_4S,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6E218800, 0xFFFFFC00, .NEON, {} }, - { .FRINTA_V, {.V_8H_FP16,.V_8H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6E798800, 0xFFFFFC00, .FP16, {} }, - { .FRINTA_V, {.V_2S,.V_2S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2E218800, 0xFFFFFC00, .NEON, {} }, - { .FRINTA_V, {.V_4H_FP16,.V_4H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2E798800, 0xFFFFFC00, .FP16, {} }, - { .FRINTI_V, {.V_2D,.V_2D,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6EE19800, 0xFFFFFC00, .NEON, {} }, - { .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_2D,.V_2D,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6EE19800, 0xFFFFFC00, .NEON, {} }, + { .FRINTI_V, {.V_4H_FP16,.V_4H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2EF99800, 0xFFFFFC00, .FP16, {} }, { .FRINTI_V, {.V_4S,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6EA19800, 0xFFFFFC00, .NEON, {} }, - { .FRINTM_V, {.V_8H_FP16,.V_8H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4E799800, 0xFFFFFC00, .FP16, {} }, - { .FRINTM_V, {.V_4S,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4E219800, 0xFFFFFC00, .NEON, {} }, - { .FRINTM_V, {.V_2S,.V_2S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0E219800, 0xFFFFFC00, .NEON, {} }, - { .FRINTM_V, {.V_2D,.V_2D,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4E619800, 0xFFFFFC00, .NEON, {} }, { .FRINTM_V, {.V_4H_FP16,.V_4H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0E799800, 0xFFFFFC00, .FP16, {} }, - { .FRINTN_V, {.V_2D,.V_2D,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4E618800, 0xFFFFFC00, .NEON, {} }, - { .FRINTN_V, {.V_2S,.V_2S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0E218800, 0xFFFFFC00, .NEON, {} }, - { .FRINTN_V, {.V_4H_FP16,.V_4H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0E798800, 0xFFFFFC00, .FP16, {} }, + { .FRINTM_V, {.V_4S,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4E219800, 0xFFFFFC00, .NEON, {} }, + { .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, {} }, + { .FRINTM_V, {.V_2S,.V_2S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0E219800, 0xFFFFFC00, .NEON, {} }, { .FRINTN_V, {.V_8H_FP16,.V_8H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4E798800, 0xFFFFFC00, .FP16, {} }, + { .FRINTN_V, {.V_4H_FP16,.V_4H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0E798800, 0xFFFFFC00, .FP16, {} }, + { .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, {} }, - { .FRINTP_V, {.V_4S,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4EA18800, 0xFFFFFC00, .NEON, {} }, - { .FRINTP_V, {.V_2D,.V_2D,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4EE18800, 0xFFFFFC00, .NEON, {} }, + { .FRINTN_V, {.V_2S,.V_2S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0E218800, 0xFFFFFC00, .NEON, {} }, { .FRINTP_V, {.V_8H_FP16,.V_8H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4EF98800, 0xFFFFFC00, .FP16, {} }, - { .FRINTP_V, {.V_2S,.V_2S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0EA18800, 0xFFFFFC00, .NEON, {} }, + { .FRINTP_V, {.V_4S,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4EA18800, 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, {} }, + { .FRINTP_V, {.V_2D,.V_2D,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4EE18800, 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_2D,.V_2D,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6E619800, 0xFFFFFC00, .NEON, {} }, - { .FRINTX_V, {.V_2S,.V_2S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2E219800, 0xFFFFFC00, .NEON, {} }, { .FRINTX_V, {.V_4S,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6E219800, 0xFFFFFC00, .NEON, {} }, - { .FRINTZ_V, {.V_2D,.V_2D,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4EE19800, 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_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_8H_FP16,.V_8H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4EF99800, 0xFFFFFC00, .FP16, {} }, + { .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, {} }, - { .SCVTF_V, {.V_4H_FP16,.V_4H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0E79D800, 0xFFFFFC00, .FP16, {} }, { .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_4S,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4E21D800, 0xFFFFFC00, .NEON, {} }, { .SCVTF_V, {.V_2D,.V_2D,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4E61D800, 0xFFFFFC00, .NEON, {} }, { .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, {} }, { .UCVTF_V, {.V_8H_FP16,.V_8H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6E79D800, 0xFFFFFC00, .FP16, {} }, { .UCVTF_V, {.V_4S,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6E21D800, 0xFFFFFC00, .NEON, {} }, { .UCVTF_V, {.V_2D,.V_2D,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6E61D800, 0xFFFFFC00, .NEON, {} }, - { .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_4H_FP16,.V_4H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2E79D800, 0xFFFFFC00, .FP16, {} }, { .FCVTAS_V, {.V_2S,.V_2S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0E21C800, 0xFFFFFC00, .NEON, {} }, { .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_4H_FP16,.V_4H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0E79C800, 0xFFFFFC00, .FP16, {} }, { .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_2S,.V_2S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2E21C800, 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_4S,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6E21C800, 0xFFFFFC00, .NEON, {} }, { .FCVTAU_V, {.V_2D,.V_2D,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6E61C800, 0xFFFFFC00, .NEON, {} }, - { .FCVTMS_V, {.V_8H_FP16,.V_8H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4E79B800, 0xFFFFFC00, .FP16, {} }, - { .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, {} }, { .FCVTMS_V, {.V_4H_FP16,.V_4H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0E79B800, 0xFFFFFC00, .FP16, {} }, - { .FCVTMS_V, {.V_2S,.V_2S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0E21B800, 0xFFFFFC00, .NEON, {} }, + { .FCVTMS_V, {.V_2D,.V_2D,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4E61B800, 0xFFFFFC00, .NEON, {} }, + { .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, {} }, + { .FCVTMU_V, {.V_8H_FP16,.V_8H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6E79B800, 0xFFFFFC00, .FP16, {} }, { .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_2D,.V_2D,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6E61B800, 0xFFFFFC00, .NEON, {} }, - { .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_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_8H_FP16,.V_8H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4E79A800, 0xFFFFFC00, .FP16, {} }, - { .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_2D,.V_2D,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6E61A800, 0xFFFFFC00, .NEON, {} }, - { .FCVTNU_V, {.V_4S,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6E21A800, 0xFFFFFC00, .NEON, {} }, + { .FCVTNS_V, {.V_4H_FP16,.V_4H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0E79A800, 0xFFFFFC00, .FP16, {} }, + { .FCVTNS_V, {.V_4S,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4E21A800, 0xFFFFFC00, .NEON, {} }, { .FCVTNU_V, {.V_8H_FP16,.V_8H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6E79A800, 0xFFFFFC00, .FP16, {} }, - { .FCVTPS_V, {.V_8H_FP16,.V_8H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4EF9A800, 0xFFFFFC00, .FP16, {} }, + { .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, {} }, + { .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, {} }, { .FCVTPS_V, {.V_2D,.V_2D,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4EE1A800, 0xFFFFFC00, .NEON, {} }, - { .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_4S,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4EA1A800, 0xFFFFFC00, .NEON, {} }, + { .FCVTPS_V, {.V_8H_FP16,.V_8H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4EF9A800, 0xFFFFFC00, .FP16, {} }, { .FCVTPS_V, {.V_2S,.V_2S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0EA1A800, 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, {} }, + { .FCVTPU_V, {.V_8H_FP16,.V_8H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6EF9A800, 0xFFFFFC00, .FP16, {} }, + { .FCVTPU_V, {.V_2S,.V_2S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2EA1A800, 0xFFFFFC00, .NEON, {} }, + { .FCVTPU_V, {.V_4H_FP16,.V_4H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2EF9A800, 0xFFFFFC00, .FP16, {} }, { .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, {} }, { .FCVTZS_V, {.V_8H_FP16,.V_8H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4EF9B800, 0xFFFFFC00, .FP16, {} }, - { .FCVTZS_V, {.V_2S,.V_2S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0EA1B800, 0xFFFFFC00, .NEON, {} }, + { .FCVTZS_V, {.V_2D,.V_2D,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4EE1B800, 0xFFFFFC00, .NEON, {} }, { .FCVTZS_V, {.V_4H_FP16,.V_4H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0EF9B800, 0xFFFFFC00, .FP16, {} }, - { .FCVTZU_V, {.V_8H_FP16,.V_8H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6EF9B800, 0xFFFFFC00, .FP16, {} }, - { .FCVTZU_V, {.V_2D,.V_2D,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6EE1B800, 0xFFFFFC00, .NEON, {} }, + { .FCVTZS_V, {.V_2S,.V_2S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0EA1B800, 0xFFFFFC00, .NEON, {} }, { .FCVTZU_V, {.V_4S,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6EA1B800, 0xFFFFFC00, .NEON, {} }, { .FCVTZU_V, {.V_4H_FP16,.V_4H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2EF9B800, 0xFFFFFC00, .FP16, {} }, { .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, {} }, + { .FCVTZU_V, {.V_8H_FP16,.V_8H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6EF9B800, 0xFFFFFC00, .FP16, {} }, + { .FCVTZU_V, {.V_2D,.V_2D,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6EE1B800, 0xFFFFFC00, .NEON, {} }, { .FCVTL, {.V_4S,.V_4H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0E217800, 0xFFFFFC00, .FP16, {} }, + { .FCVTL, {.V_2D,.V_2S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0E617800, 0xFFFFFC00, .NEON, {} }, { .FCVTL2, {.V_4S,.V_8H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4E217800, 0xFFFFFC00, .FP16, {} }, { .FCVTL2, {.V_2D,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4E617800, 0xFFFFFC00, .NEON, {} }, { .FCVTN, {.V_2S,.V_2D,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0E616800, 0xFFFFFC00, .NEON, {} }, { .FCVTN, {.V_4H_FP16,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0E216800, 0xFFFFFC00, .FP16, {} }, - { .FCVTN2, {.V_8H_FP16,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4E216800, 0xFFFFFC00, .FP16, {} }, { .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, {} }, + { .FCMLE, {.V_2D,.V_2D,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6EE0D800, 0xFFFFFC00, .NEON, {} }, + { .FCMLE, {.V_4H_FP16,.V_4H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2EF8D800, 0xFFFFFC00, .FP16, {} }, + { .FCMLE, {.V_4S,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6EA0D800, 0xFFFFFC00, .NEON, {} }, + { .FCMLE, {.V_2S,.V_2S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2EA0D800, 0xFFFFFC00, .NEON, {} }, + { .FCMLE, {.V_8H_FP16,.V_8H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6EF8D800, 0xFFFFFC00, .FP16, {} }, + { .FCMLT, {.V_4H_FP16,.V_4H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0EF8E800, 0xFFFFFC00, .FP16, {} }, + { .FCMLT, {.V_2D,.V_2D,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4EE0E800, 0xFFFFFC00, .NEON, {} }, + { .FCMLT, {.V_8H_FP16,.V_8H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4EF8E800, 0xFFFFFC00, .FP16, {} }, + { .FCMLT, {.V_2S,.V_2S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0EA0E800, 0xFFFFFC00, .NEON, {} }, + { .FCMLT, {.V_4S,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4EA0E800, 0xFFFFFC00, .NEON, {} }, + { .CMLE, {.V_4S,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6EA09800, 0xFFFFFC00, .NEON, {} }, + { .CMLE, {.V_2S,.V_2S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2EA09800, 0xFFFFFC00, .NEON, {} }, + { .CMLE, {.V_4H,.V_4H,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2E609800, 0xFFFFFC00, .NEON, {} }, + { .CMLE, {.V_8H,.V_8H,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6E609800, 0xFFFFFC00, .NEON, {} }, + { .CMLE, {.V_2D,.V_2D,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6EE09800, 0xFFFFFC00, .NEON, {} }, + { .CMLE, {.V_8B,.V_8B,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2E209800, 0xFFFFFC00, .NEON, {} }, + { .CMLE, {.V_16B,.V_16B,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6E209800, 0xFFFFFC00, .NEON, {} }, + { .CMLT, {.V_8B,.V_8B,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0E20A800, 0xFFFFFC00, .NEON, {} }, + { .CMLT, {.V_4S,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4EA0A800, 0xFFFFFC00, .NEON, {} }, + { .CMLT, {.V_2D,.V_2D,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4EE0A800, 0xFFFFFC00, .NEON, {} }, + { .CMLT, {.V_8H,.V_8H,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4E60A800, 0xFFFFFC00, .NEON, {} }, + { .CMLT, {.V_16B,.V_16B,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4E20A800, 0xFFFFFC00, .NEON, {} }, + { .CMLT, {.V_4H,.V_4H,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0E60A800, 0xFFFFFC00, .NEON, {} }, + { .CMLT, {.V_2S,.V_2S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0EA0A800, 0xFFFFFC00, .NEON, {} }, + { .SXTL, {.V_8H,.V_8B,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0F08A400, 0xFFFFFC00, .NEON, {} }, + { .SXTL, {.V_4S,.V_4H,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0F10A400, 0xFFFFFC00, .NEON, {} }, + { .SXTL, {.V_2D,.V_2S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0F20A400, 0xFFFFFC00, .NEON, {} }, + { .SXTL2, {.V_8H,.V_16B,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4F08A400, 0xFFFFFC00, .NEON, {} }, + { .SXTL2, {.V_2D,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4F20A400, 0xFFFFFC00, .NEON, {} }, + { .SXTL2, {.V_4S,.V_8H,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4F10A400, 0xFFFFFC00, .NEON, {} }, + { .UXTL, {.V_8H,.V_8B,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2F08A400, 0xFFFFFC00, .NEON, {} }, + { .UXTL, {.V_4S,.V_4H,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2F10A400, 0xFFFFFC00, .NEON, {} }, + { .UXTL, {.V_2D,.V_2S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2F20A400, 0xFFFFFC00, .NEON, {} }, + { .UXTL2, {.V_2D,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6F20A400, 0xFFFFFC00, .NEON, {} }, + { .UXTL2, {.V_8H,.V_16B,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6F08A400, 0xFFFFFC00, .NEON, {} }, + { .UXTL2, {.V_4S,.V_8H,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6F10A400, 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_8B,.V_8B,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2E605800, 0xFFFFFC00, .NEON, {} }, { .RBIT_V, {.V_16B,.V_16B,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6E605800, 0xFFFFFC00, .NEON, {} }, { .REV16_V, {.V_16B,.V_16B,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4E201800, 0xFFFFFC00, .NEON, {} }, @@ -854,88 +890,88 @@ DECODE_ENTRIES := [1995]lib.Decode_Entry{ { .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, {} }, + { .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_4S,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4EA00800, 0xFFFFFC00, .NEON, {} }, { .REV64, {.V_4H,.V_4H,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0E600800, 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_8B,.V_8B,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0E200800, 0xFFFFFC00, .NEON, {} }, { .REV64, {.V_8H,.V_8H,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4E600800, 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, {} }, + { .REV64, {.V_2S,.V_2S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0EA00800, 0xFFFFFC00, .NEON, {} }, { .CLS_V, {.V_8B,.V_8B,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0E204800, 0xFFFFFC00, .NEON, {} }, - { .CLS_V, {.V_2S,.V_2S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0EA04800, 0xFFFFFC00, .NEON, {} }, - { .CLS_V, {.V_4S,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4EA04800, 0xFFFFFC00, .NEON, {} }, + { .CLS_V, {.V_16B,.V_16B,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4E204800, 0xFFFFFC00, .NEON, {} }, { .CLS_V, {.V_8H,.V_8H,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4E604800, 0xFFFFFC00, .NEON, {} }, - { .CLZ_V, {.V_16B,.V_16B,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6E204800, 0xFFFFFC00, .NEON, {} }, - { .CLZ_V, {.V_2S,.V_2S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2EA04800, 0xFFFFFC00, .NEON, {} }, - { .CLZ_V, {.V_4S,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6EA04800, 0xFFFFFC00, .NEON, {} }, - { .CLZ_V, {.V_4H,.V_4H,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2E604800, 0xFFFFFC00, .NEON, {} }, - { .CLZ_V, {.V_8B,.V_8B,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2E204800, 0xFFFFFC00, .NEON, {} }, + { .CLS_V, {.V_4S,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4EA04800, 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, {} }, { .CLZ_V, {.V_8H,.V_8H,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6E604800, 0xFFFFFC00, .NEON, {} }, + { .CLZ_V, {.V_8B,.V_8B,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2E204800, 0xFFFFFC00, .NEON, {} }, + { .CLZ_V, {.V_4H,.V_4H,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2E604800, 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_16B,.V_16B,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6E204800, 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, {} }, { .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, {} }, { .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_8B,.V_8B,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHL_IMM,.NONE}, 0x2F086400, 0xFFF8FC00, .NEON, {} }, + { .SQSHL_V, {.V_16B,.V_16B,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHL_IMM,.NONE}, 0x4F087400, 0xFFF8FC00, .NEON, {} }, { .SQSHLU, {.V_16B,.V_16B,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHL_IMM,.NONE}, 0x6F086400, 0xFFF8FC00, .NEON, {} }, - { .SSHR, {.V_8B,.V_8B,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x0F080400, 0xFFF8FC00, .NEON, {} }, + { .SQSHLU, {.V_8B,.V_8B,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHL_IMM,.NONE}, 0x2F086400, 0xFFF8FC00, .NEON, {} }, { .SSHR, {.V_16B,.V_16B,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x4F080400, 0xFFF8FC00, .NEON, {} }, + { .SSHR, {.V_8B,.V_8B,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x0F080400, 0xFFF8FC00, .NEON, {} }, { .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, {} }, { .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, {} }, - { .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, {} }, + { .USRA, {.V_16B,.V_16B,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x6F081400, 0xFFF8FC00, .NEON, {} }, { .SRSHR, {.V_16B,.V_16B,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x4F082400, 0xFFF8FC00, .NEON, {} }, { .SRSHR, {.V_8B,.V_8B,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x0F082400, 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, {} }, + { .URSHR, {.V_8B,.V_8B,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x2F082400, 0xFFF8FC00, .NEON, {} }, { .SRSRA, {.V_16B,.V_16B,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x4F083400, 0xFFF8FC00, .NEON, {} }, { .SRSRA, {.V_8B,.V_8B,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x0F083400, 0xFFF8FC00, .NEON, {} }, - { .URSRA, {.V_16B,.V_16B,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x6F083400, 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_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, {} }, - { .SRI, {.V_16B,.V_16B,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x6F084400, 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, {} }, { .SSHLL, {.V_8H,.V_8B,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHL_IMM,.NONE}, 0x0F08A400, 0xFFF8FC00, .NEON, {} }, { .SSHLL2, {.V_8H,.V_16B,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHL_IMM,.NONE}, 0x4F08A400, 0xFFF8FC00, .NEON, {} }, { .USHLL, {.V_8H,.V_8B,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHL_IMM,.NONE}, 0x2F08A400, 0xFFF8FC00, .NEON, {} }, { .USHLL2, {.V_8H,.V_16B,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHL_IMM,.NONE}, 0x6F08A400, 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, {} }, - { .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_4H,.V_4H,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHL_IMM,.NONE}, 0x0F107400, 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_8H,.V_8H,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x4F100400, 0xFFF0FC00, .NEON, {} }, { .SSHR, {.V_4H,.V_4H,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x0F100400, 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, {} }, + { .USHR, {.V_4H,.V_4H,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x2F100400, 0xFFF0FC00, .NEON, {} }, { .SSRA, {.V_8H,.V_8H,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x4F101400, 0xFFF0FC00, .NEON, {} }, + { .SSRA, {.V_4H,.V_4H,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x0F101400, 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, {} }, + { .SRSHR, {.V_4H,.V_4H,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x0F102400, 0xFFF0FC00, .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, {} }, { .SRSRA, {.V_8H,.V_8H,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x4F103400, 0xFFF0FC00, .NEON, {} }, { .SRSRA, {.V_4H,.V_4H,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x0F103400, 0xFFF0FC00, .NEON, {} }, - { .URSRA, {.V_8H,.V_8H,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x6F103400, 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_8H,.V_8H,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHL_IMM,.NONE}, 0x6F105400, 0xFFF0FC00, .NEON, {} }, { .SLI, {.V_4H,.V_4H,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHL_IMM,.NONE}, 0x2F105400, 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, {} }, + { .SRI, {.V_8H,.V_8H,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x6F104400, 0xFFF0FC00, .NEON, {} }, { .SSHLL, {.V_4S,.V_4H,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHL_IMM,.NONE}, 0x0F10A400, 0xFFF0FC00, .NEON, {} }, { .SSHLL2, {.V_4S,.V_8H,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHL_IMM,.NONE}, 0x4F10A400, 0xFFF0FC00, .NEON, {} }, { .USHLL, {.V_4S,.V_4H,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHL_IMM,.NONE}, 0x2F10A400, 0xFFF0FC00, .NEON, {} }, @@ -1348,44 +1384,44 @@ DECODE_ENTRIES := [1995]lib.Decode_Entry{ { .FCMGT, {.V_4S,.V_4S,.V_4S,.NONE}, {.VD,.VN,.VM,.NONE}, 0x6EA0E400, 0xFFE0FC00, .NEON, {} }, { .FCMGT, {.V_4H_FP16,.V_4H_FP16,.V_4H_FP16,.NONE}, {.VD,.VN,.VM,.NONE}, 0x2EC02400, 0xFFE0FC00, .FP16, {} }, { .FACGE, {.V_8H_FP16,.V_8H_FP16,.V_8H_FP16,.NONE}, {.VD,.VN,.VM,.NONE}, 0x6E402C00, 0xFFE0FC00, .FP16, {} }, - { .FACGE, {.V_4H_FP16,.V_4H_FP16,.V_4H_FP16,.NONE}, {.VD,.VN,.VM,.NONE}, 0x2E402C00, 0xFFE0FC00, .FP16, {} }, + { .FACGE, {.V_2D,.V_2D,.V_2D,.NONE}, {.VD,.VN,.VM,.NONE}, 0x6E60EC00, 0xFFE0FC00, .NEON, {} }, { .FACGE, {.V_2S,.V_2S,.V_2S,.NONE}, {.VD,.VN,.VM,.NONE}, 0x2E20EC00, 0xFFE0FC00, .NEON, {} }, { .FACGE, {.V_4S,.V_4S,.V_4S,.NONE}, {.VD,.VN,.VM,.NONE}, 0x6E20EC00, 0xFFE0FC00, .NEON, {} }, - { .FACGE, {.V_2D,.V_2D,.V_2D,.NONE}, {.VD,.VN,.VM,.NONE}, 0x6E60EC00, 0xFFE0FC00, .NEON, {} }, + { .FACGE, {.V_4H_FP16,.V_4H_FP16,.V_4H_FP16,.NONE}, {.VD,.VN,.VM,.NONE}, 0x2E402C00, 0xFFE0FC00, .FP16, {} }, { .FACGT, {.V_8H_FP16,.V_8H_FP16,.V_8H_FP16,.NONE}, {.VD,.VN,.VM,.NONE}, 0x6EC02C00, 0xFFE0FC00, .FP16, {} }, - { .FACGT, {.V_4S,.V_4S,.V_4S,.NONE}, {.VD,.VN,.VM,.NONE}, 0x6EA0EC00, 0xFFE0FC00, .NEON, {} }, { .FACGT, {.V_2S,.V_2S,.V_2S,.NONE}, {.VD,.VN,.VM,.NONE}, 0x2EA0EC00, 0xFFE0FC00, .NEON, {} }, + { .FACGT, {.V_4S,.V_4S,.V_4S,.NONE}, {.VD,.VN,.VM,.NONE}, 0x6EA0EC00, 0xFFE0FC00, .NEON, {} }, { .FACGT, {.V_2D,.V_2D,.V_2D,.NONE}, {.VD,.VN,.VM,.NONE}, 0x6EE0EC00, 0xFFE0FC00, .NEON, {} }, { .FACGT, {.V_4H_FP16,.V_4H_FP16,.V_4H_FP16,.NONE}, {.VD,.VN,.VM,.NONE}, 0x2EC02C00, 0xFFE0FC00, .FP16, {} }, { .CMEQ, {.V_4S,.V_4S,.V_4S,.NONE}, {.VD,.VN,.VM,.NONE}, 0x6EA08C00, 0xFFE0FC00, .NEON, {} }, { .CMEQ, {.V_16B,.V_16B,.V_16B,.NONE}, {.VD,.VN,.VM,.NONE}, 0x6E208C00, 0xFFE0FC00, .NEON, {} }, { .CMEQ, {.V_8H,.V_8H,.V_8H,.NONE}, {.VD,.VN,.VM,.NONE}, 0x6E608C00, 0xFFE0FC00, .NEON, {} }, { .CMEQ, {.V_2D,.V_2D,.V_2D,.NONE}, {.VD,.VN,.VM,.NONE}, 0x6EE08C00, 0xFFE0FC00, .NEON, {} }, - { .CMGE, {.V_2D,.V_2D,.V_2D,.NONE}, {.VD,.VN,.VM,.NONE}, 0x4EE03C00, 0xFFE0FC00, .NEON, {} }, { .CMGE, {.V_4S,.V_4S,.V_4S,.NONE}, {.VD,.VN,.VM,.NONE}, 0x4EA03C00, 0xFFE0FC00, .NEON, {} }, + { .CMGE, {.V_2S,.V_2S,.V_2S,.NONE}, {.VD,.VN,.VM,.NONE}, 0x0EA03C00, 0xFFE0FC00, .NEON, {} }, + { .CMGE, {.V_2D,.V_2D,.V_2D,.NONE}, {.VD,.VN,.VM,.NONE}, 0x4EE03C00, 0xFFE0FC00, .NEON, {} }, { .CMGE, {.V_16B,.V_16B,.V_16B,.NONE}, {.VD,.VN,.VM,.NONE}, 0x4E203C00, 0xFFE0FC00, .NEON, {} }, { .CMGE, {.V_8B,.V_8B,.V_8B,.NONE}, {.VD,.VN,.VM,.NONE}, 0x0E203C00, 0xFFE0FC00, .NEON, {} }, { .CMGE, {.V_4H,.V_4H,.V_4H,.NONE}, {.VD,.VN,.VM,.NONE}, 0x0E603C00, 0xFFE0FC00, .NEON, {} }, { .CMGE, {.V_8H,.V_8H,.V_8H,.NONE}, {.VD,.VN,.VM,.NONE}, 0x4E603C00, 0xFFE0FC00, .NEON, {} }, - { .CMGE, {.V_2S,.V_2S,.V_2S,.NONE}, {.VD,.VN,.VM,.NONE}, 0x0EA03C00, 0xFFE0FC00, .NEON, {} }, - { .CMGT, {.V_2D,.V_2D,.V_2D,.NONE}, {.VD,.VN,.VM,.NONE}, 0x4EE03400, 0xFFE0FC00, .NEON, {} }, { .CMGT, {.V_16B,.V_16B,.V_16B,.NONE}, {.VD,.VN,.VM,.NONE}, 0x4E203400, 0xFFE0FC00, .NEON, {} }, - { .CMHI, {.V_2D,.V_2D,.V_2D,.NONE}, {.VD,.VN,.VM,.NONE}, 0x6EE03400, 0xFFE0FC00, .NEON, {} }, + { .CMGT, {.V_2D,.V_2D,.V_2D,.NONE}, {.VD,.VN,.VM,.NONE}, 0x4EE03400, 0xFFE0FC00, .NEON, {} }, { .CMHI, {.V_16B,.V_16B,.V_16B,.NONE}, {.VD,.VN,.VM,.NONE}, 0x6E203400, 0xFFE0FC00, .NEON, {} }, + { .CMHI, {.V_2D,.V_2D,.V_2D,.NONE}, {.VD,.VN,.VM,.NONE}, 0x6EE03400, 0xFFE0FC00, .NEON, {} }, { .CMHS, {.V_2D,.V_2D,.V_2D,.NONE}, {.VD,.VN,.VM,.NONE}, 0x6EE03C00, 0xFFE0FC00, .NEON, {} }, - { .CMHS, {.V_2S,.V_2S,.V_2S,.NONE}, {.VD,.VN,.VM,.NONE}, 0x2EA03C00, 0xFFE0FC00, .NEON, {} }, - { .CMHS, {.V_8H,.V_8H,.V_8H,.NONE}, {.VD,.VN,.VM,.NONE}, 0x6E603C00, 0xFFE0FC00, .NEON, {} }, { .CMHS, {.V_4S,.V_4S,.V_4S,.NONE}, {.VD,.VN,.VM,.NONE}, 0x6EA03C00, 0xFFE0FC00, .NEON, {} }, - { .CMHS, {.V_8B,.V_8B,.V_8B,.NONE}, {.VD,.VN,.VM,.NONE}, 0x2E203C00, 0xFFE0FC00, .NEON, {} }, + { .CMHS, {.V_8H,.V_8H,.V_8H,.NONE}, {.VD,.VN,.VM,.NONE}, 0x6E603C00, 0xFFE0FC00, .NEON, {} }, { .CMHS, {.V_16B,.V_16B,.V_16B,.NONE}, {.VD,.VN,.VM,.NONE}, 0x6E203C00, 0xFFE0FC00, .NEON, {} }, + { .CMHS, {.V_8B,.V_8B,.V_8B,.NONE}, {.VD,.VN,.VM,.NONE}, 0x2E203C00, 0xFFE0FC00, .NEON, {} }, { .CMHS, {.V_4H,.V_4H,.V_4H,.NONE}, {.VD,.VN,.VM,.NONE}, 0x2E603C00, 0xFFE0FC00, .NEON, {} }, - { .CMTST, {.V_2D,.V_2D,.V_2D,.NONE}, {.VD,.VN,.VM,.NONE}, 0x4EE08C00, 0xFFE0FC00, .NEON, {} }, - { .CMTST, {.V_2S,.V_2S,.V_2S,.NONE}, {.VD,.VN,.VM,.NONE}, 0x0EA08C00, 0xFFE0FC00, .NEON, {} }, - { .CMTST, {.V_8H,.V_8H,.V_8H,.NONE}, {.VD,.VN,.VM,.NONE}, 0x4E608C00, 0xFFE0FC00, .NEON, {} }, - { .CMTST, {.V_4S,.V_4S,.V_4S,.NONE}, {.VD,.VN,.VM,.NONE}, 0x4EA08C00, 0xFFE0FC00, .NEON, {} }, + { .CMHS, {.V_2S,.V_2S,.V_2S,.NONE}, {.VD,.VN,.VM,.NONE}, 0x2EA03C00, 0xFFE0FC00, .NEON, {} }, { .CMTST, {.V_8B,.V_8B,.V_8B,.NONE}, {.VD,.VN,.VM,.NONE}, 0x0E208C00, 0xFFE0FC00, .NEON, {} }, { .CMTST, {.V_16B,.V_16B,.V_16B,.NONE}, {.VD,.VN,.VM,.NONE}, 0x4E208C00, 0xFFE0FC00, .NEON, {} }, { .CMTST, {.V_4H,.V_4H,.V_4H,.NONE}, {.VD,.VN,.VM,.NONE}, 0x0E608C00, 0xFFE0FC00, .NEON, {} }, + { .CMTST, {.V_8H,.V_8H,.V_8H,.NONE}, {.VD,.VN,.VM,.NONE}, 0x4E608C00, 0xFFE0FC00, .NEON, {} }, + { .CMTST, {.V_2S,.V_2S,.V_2S,.NONE}, {.VD,.VN,.VM,.NONE}, 0x0EA08C00, 0xFFE0FC00, .NEON, {} }, + { .CMTST, {.V_4S,.V_4S,.V_4S,.NONE}, {.VD,.VN,.VM,.NONE}, 0x4EA08C00, 0xFFE0FC00, .NEON, {} }, + { .CMTST, {.V_2D,.V_2D,.V_2D,.NONE}, {.VD,.VN,.VM,.NONE}, 0x4EE08C00, 0xFFE0FC00, .NEON, {} }, { .AND_V, {.V_16B,.V_16B,.V_16B,.NONE}, {.VD,.VN,.VM,.NONE}, 0x4E201C00, 0xFFE0FC00, .NEON, {} }, { .ORR_V, {.V_16B,.V_16B,.V_16B,.NONE}, {.VD,.VN,.VM,.NONE}, 0x4EA01C00, 0xFFE0FC00, .NEON, {} }, { .EOR_V, {.V_16B,.V_16B,.V_16B,.NONE}, {.VD,.VN,.VM,.NONE}, 0x6E201C00, 0xFFE0FC00, .NEON, {} }, @@ -1394,64 +1430,106 @@ DECODE_ENTRIES := [1995]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, {} }, + { .SHL_V, {.V_2S,.V_2S,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHL_IMM,.NONE}, 0x0F205400, 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, {} }, + { .SQSHLU, {.V_2S,.V_2S,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHL_IMM,.NONE}, 0x2F206400, 0xFFE0FC00, .NEON, {} }, { .SRSHL, {.V_2D,.V_2D,.V_2D,.NONE}, {.VD,.VN,.VM,.NONE}, 0x4EE05400, 0xFFE0FC00, .NEON, {} }, - { .SRSHL, {.V_4S,.V_4S,.V_4S,.NONE}, {.VD,.VN,.VM,.NONE}, 0x4EA05400, 0xFFE0FC00, .NEON, {} }, - { .SRSHL, {.V_4H,.V_4H,.V_4H,.NONE}, {.VD,.VN,.VM,.NONE}, 0x0E605400, 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_4H,.V_4H,.V_4H,.NONE}, {.VD,.VN,.VM,.NONE}, 0x0E605400, 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, {} }, + { .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_4S,.V_4S,.V_4S,.NONE}, {.VD,.VN,.VM,.NONE}, 0x4EA05400, 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_8B,.V_8B,.V_8B,.NONE}, {.VD,.VN,.VM,.NONE}, 0x2E205400, 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, {} }, - { .SSHR, {.V_2S,.V_2S,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x0F200400, 0xFFE0FC00, .NEON, {} }, + { .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, {} }, { .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, {} }, + { .SSHR, {.V_2S,.V_2S,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x0F200400, 0xFFE0FC00, .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, {} }, { .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, {} }, + { .SRSHR, {.V_4S,.V_4S,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x4F202400, 0xFFE0FC00, .NEON, {} }, { .URSHR, {.V_4S,.V_4S,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x6F202400, 0xFFE0FC00, .NEON, {} }, + { .URSHR, {.V_2S,.V_2S,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x2F202400, 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, {} }, + { .URSRA, {.V_4S,.V_4S,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x6F203400, 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, {} }, { .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, {} }, - { .USHL, {.V_2D,.V_2D,.V_2D,.NONE}, {.VD,.VN,.VM,.NONE}, 0x6EE04400, 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, {} }, + { .SSHL, {.V_4H,.V_4H,.V_4H,.NONE}, {.VD,.VN,.VM,.NONE}, 0x0E604400, 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_2D,.V_2D,.V_2D,.NONE}, {.VD,.VN,.VM,.NONE}, 0x6EE04400, 0xFFE0FC00, .NEON, {} }, { .USHL, {.V_8B,.V_8B,.V_8B,.NONE}, {.VD,.VN,.VM,.NONE}, 0x2E204400, 0xFFE0FC00, .NEON, {} }, - { .SLI, {.V_4S,.V_4S,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHL_IMM,.NONE}, 0x6F205400, 0xFFE0FC00, .NEON, {} }, + { .USHL, {.V_16B,.V_16B,.V_16B,.NONE}, {.VD,.VN,.VM,.NONE}, 0x6E204400, 0xFFE0FC00, .NEON, {} }, + { .USHL, {.V_4H,.V_4H,.V_4H,.NONE}, {.VD,.VN,.VM,.NONE}, 0x2E604400, 0xFFE0FC00, .NEON, {} }, + { .USHL, {.V_8H,.V_8H,.V_8H,.NONE}, {.VD,.VN,.VM,.NONE}, 0x6E604400, 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, {} }, + { .SLI, {.V_4S,.V_4S,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHL_IMM,.NONE}, 0x6F205400, 0xFFE0FC00, .NEON, {} }, { .SRI, {.V_4S,.V_4S,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x6F204400, 0xFFE0FC00, .NEON, {} }, + { .SRI, {.V_2S,.V_2S,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHR_IMM,.NONE}, 0x2F204400, 0xFFE0FC00, .NEON, {} }, { .SSHLL, {.V_2D,.V_2S,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHL_IMM,.NONE}, 0x0F20A400, 0xFFE0FC00, .NEON, {} }, { .SSHLL2, {.V_2D,.V_4S,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHL_IMM,.NONE}, 0x4F20A400, 0xFFE0FC00, .NEON, {} }, { .USHLL, {.V_2D,.V_2S,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHL_IMM,.NONE}, 0x2F20A400, 0xFFE0FC00, .NEON, {} }, { .USHLL2, {.V_2D,.V_4S,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHL_IMM,.NONE}, 0x6F20A400, 0xFFE0FC00, .NEON, {} }, + { .ZIP1, {.V_2D,.V_2D,.V_2D,.NONE}, {.VD,.VN,.VM,.NONE}, 0x4EC03800, 0xFFE0FC00, .NEON, {} }, + { .ZIP1, {.V_4S,.V_4S,.V_4S,.NONE}, {.VD,.VN,.VM,.NONE}, 0x4E803800, 0xFFE0FC00, .NEON, {} }, + { .ZIP1, {.V_8H,.V_8H,.V_8H,.NONE}, {.VD,.VN,.VM,.NONE}, 0x4E403800, 0xFFE0FC00, .NEON, {} }, + { .ZIP1, {.V_16B,.V_16B,.V_16B,.NONE}, {.VD,.VN,.VM,.NONE}, 0x4E003800, 0xFFE0FC00, .NEON, {} }, + { .ZIP1, {.V_8B,.V_8B,.V_8B,.NONE}, {.VD,.VN,.VM,.NONE}, 0x0E003800, 0xFFE0FC00, .NEON, {} }, + { .ZIP1, {.V_4H,.V_4H,.V_4H,.NONE}, {.VD,.VN,.VM,.NONE}, 0x0E403800, 0xFFE0FC00, .NEON, {} }, + { .ZIP1, {.V_2S,.V_2S,.V_2S,.NONE}, {.VD,.VN,.VM,.NONE}, 0x0E803800, 0xFFE0FC00, .NEON, {} }, + { .ZIP2, {.V_4S,.V_4S,.V_4S,.NONE}, {.VD,.VN,.VM,.NONE}, 0x4E807800, 0xFFE0FC00, .NEON, {} }, + { .ZIP2, {.V_8H,.V_8H,.V_8H,.NONE}, {.VD,.VN,.VM,.NONE}, 0x4E407800, 0xFFE0FC00, .NEON, {} }, + { .ZIP2, {.V_4H,.V_4H,.V_4H,.NONE}, {.VD,.VN,.VM,.NONE}, 0x0E407800, 0xFFE0FC00, .NEON, {} }, + { .ZIP2, {.V_2S,.V_2S,.V_2S,.NONE}, {.VD,.VN,.VM,.NONE}, 0x0E807800, 0xFFE0FC00, .NEON, {} }, + { .ZIP2, {.V_2D,.V_2D,.V_2D,.NONE}, {.VD,.VN,.VM,.NONE}, 0x4EC07800, 0xFFE0FC00, .NEON, {} }, + { .ZIP2, {.V_8B,.V_8B,.V_8B,.NONE}, {.VD,.VN,.VM,.NONE}, 0x0E007800, 0xFFE0FC00, .NEON, {} }, + { .ZIP2, {.V_16B,.V_16B,.V_16B,.NONE}, {.VD,.VN,.VM,.NONE}, 0x4E007800, 0xFFE0FC00, .NEON, {} }, + { .UZP1, {.V_2D,.V_2D,.V_2D,.NONE}, {.VD,.VN,.VM,.NONE}, 0x4EC01800, 0xFFE0FC00, .NEON, {} }, + { .UZP1, {.V_2S,.V_2S,.V_2S,.NONE}, {.VD,.VN,.VM,.NONE}, 0x0E801800, 0xFFE0FC00, .NEON, {} }, + { .UZP1, {.V_4H,.V_4H,.V_4H,.NONE}, {.VD,.VN,.VM,.NONE}, 0x0E401800, 0xFFE0FC00, .NEON, {} }, + { .UZP1, {.V_16B,.V_16B,.V_16B,.NONE}, {.VD,.VN,.VM,.NONE}, 0x4E001800, 0xFFE0FC00, .NEON, {} }, + { .UZP1, {.V_8H,.V_8H,.V_8H,.NONE}, {.VD,.VN,.VM,.NONE}, 0x4E401800, 0xFFE0FC00, .NEON, {} }, + { .UZP1, {.V_4S,.V_4S,.V_4S,.NONE}, {.VD,.VN,.VM,.NONE}, 0x4E801800, 0xFFE0FC00, .NEON, {} }, + { .UZP1, {.V_8B,.V_8B,.V_8B,.NONE}, {.VD,.VN,.VM,.NONE}, 0x0E001800, 0xFFE0FC00, .NEON, {} }, + { .UZP2, {.V_8B,.V_8B,.V_8B,.NONE}, {.VD,.VN,.VM,.NONE}, 0x0E005800, 0xFFE0FC00, .NEON, {} }, + { .UZP2, {.V_16B,.V_16B,.V_16B,.NONE}, {.VD,.VN,.VM,.NONE}, 0x4E005800, 0xFFE0FC00, .NEON, {} }, + { .UZP2, {.V_4H,.V_4H,.V_4H,.NONE}, {.VD,.VN,.VM,.NONE}, 0x0E405800, 0xFFE0FC00, .NEON, {} }, + { .UZP2, {.V_8H,.V_8H,.V_8H,.NONE}, {.VD,.VN,.VM,.NONE}, 0x4E405800, 0xFFE0FC00, .NEON, {} }, + { .UZP2, {.V_2D,.V_2D,.V_2D,.NONE}, {.VD,.VN,.VM,.NONE}, 0x4EC05800, 0xFFE0FC00, .NEON, {} }, + { .UZP2, {.V_2S,.V_2S,.V_2S,.NONE}, {.VD,.VN,.VM,.NONE}, 0x0E805800, 0xFFE0FC00, .NEON, {} }, + { .UZP2, {.V_4S,.V_4S,.V_4S,.NONE}, {.VD,.VN,.VM,.NONE}, 0x4E805800, 0xFFE0FC00, .NEON, {} }, + { .TRN1, {.V_4S,.V_4S,.V_4S,.NONE}, {.VD,.VN,.VM,.NONE}, 0x4E802800, 0xFFE0FC00, .NEON, {} }, + { .TRN1, {.V_2S,.V_2S,.V_2S,.NONE}, {.VD,.VN,.VM,.NONE}, 0x0E802800, 0xFFE0FC00, .NEON, {} }, + { .TRN1, {.V_2D,.V_2D,.V_2D,.NONE}, {.VD,.VN,.VM,.NONE}, 0x4EC02800, 0xFFE0FC00, .NEON, {} }, + { .TRN1, {.V_4H,.V_4H,.V_4H,.NONE}, {.VD,.VN,.VM,.NONE}, 0x0E402800, 0xFFE0FC00, .NEON, {} }, + { .TRN1, {.V_8B,.V_8B,.V_8B,.NONE}, {.VD,.VN,.VM,.NONE}, 0x0E002800, 0xFFE0FC00, .NEON, {} }, + { .TRN1, {.V_16B,.V_16B,.V_16B,.NONE}, {.VD,.VN,.VM,.NONE}, 0x4E002800, 0xFFE0FC00, .NEON, {} }, + { .TRN1, {.V_8H,.V_8H,.V_8H,.NONE}, {.VD,.VN,.VM,.NONE}, 0x4E402800, 0xFFE0FC00, .NEON, {} }, + { .TRN2, {.V_2S,.V_2S,.V_2S,.NONE}, {.VD,.VN,.VM,.NONE}, 0x0E806800, 0xFFE0FC00, .NEON, {} }, + { .TRN2, {.V_4H,.V_4H,.V_4H,.NONE}, {.VD,.VN,.VM,.NONE}, 0x0E406800, 0xFFE0FC00, .NEON, {} }, + { .TRN2, {.V_16B,.V_16B,.V_16B,.NONE}, {.VD,.VN,.VM,.NONE}, 0x4E006800, 0xFFE0FC00, .NEON, {} }, + { .TRN2, {.V_8H,.V_8H,.V_8H,.NONE}, {.VD,.VN,.VM,.NONE}, 0x4E406800, 0xFFE0FC00, .NEON, {} }, + { .TRN2, {.V_4S,.V_4S,.V_4S,.NONE}, {.VD,.VN,.VM,.NONE}, 0x4E806800, 0xFFE0FC00, .NEON, {} }, + { .TRN2, {.V_8B,.V_8B,.V_8B,.NONE}, {.VD,.VN,.VM,.NONE}, 0x0E006800, 0xFFE0FC00, .NEON, {} }, + { .TRN2, {.V_2D,.V_2D,.V_2D,.NONE}, {.VD,.VN,.VM,.NONE}, 0x4EC06800, 0xFFE0FC00, .NEON, {} }, { .MOV_V_ALIAS, {.V_16B,.V_16B,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4EA01C00, 0xFFE0FC00, .NEON, {} }, { .MOV_V_ALIAS, {.V_8B,.V_8B,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0EA01C00, 0xFFE0FC00, .NEON, {} }, { .SHL_V, {.V_2D,.V_2D,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHL_IMM,.NONE}, 0x4F405400, 0xFFC0FC00, .NEON, {} }, @@ -1483,8 +1561,8 @@ DECODE_ENTRIES := [1995]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} }, + { .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} }, @@ -1505,8 +1583,8 @@ DECODE_ENTRIES := [1995]lib.Decode_Entry{ { .SXTB, {.W_REG,.W_REG,.NONE,.NONE}, {.RD,.RN,.NONE,.NONE}, 0x13001C00, 0xFFFFFC00, .BASE, {} }, { .SXTH, {.W_REG,.W_REG,.NONE,.NONE}, {.RD,.RN,.NONE,.NONE}, 0x13003C00, 0xFFFFFC00, .BASE, {} }, { .SXTW, {.X_REG,.W_REG,.NONE,.NONE}, {.RD,.RN,.NONE,.NONE}, 0x93407C00, 0xFFFFFC00, .BASE, {is_64=true} }, - { .LSR_IMM, {.X_REG,.X_REG,.IMM_6,.NONE}, {.RD,.RN,.IMM12,.NONE}, 0xD340FC00, 0xFFC0FC00, .BASE, {is_64=true} }, { .LSR_IMM, {.W_REG,.W_REG,.IMM_5,.NONE}, {.RD,.RN,.IMM12,.NONE}, 0x53007C00, 0xFFC0FC00, .BASE, {} }, + { .LSR_IMM, {.X_REG,.X_REG,.IMM_6,.NONE}, {.RD,.RN,.IMM12,.NONE}, 0xD340FC00, 0xFFC0FC00, .BASE, {is_64=true} }, { .ASR_IMM, {.W_REG,.W_REG,.IMM_5,.NONE}, {.RD,.RN,.IMM12,.NONE}, 0x13007C00, 0xFFC0FC00, .BASE, {} }, { .ASR_IMM, {.X_REG,.X_REG,.IMM_6,.NONE}, {.RD,.RN,.IMM12,.NONE}, 0x9340FC00, 0xFFC0FC00, .BASE, {is_64=true} }, { .TST_IMM, {.W_REG,.BITMASK_IMM,.NONE,.NONE}, {.RN,.BITMASK_FIELD,.NONE,.NONE}, 0x7200001F, 0xFFC0001F, .BASE, {sets_flags=true} }, @@ -1769,14 +1847,14 @@ DECODE_ENTRIES := [1995]lib.Decode_Entry{ { .STZGM, {.X_REG,.MEM,.NONE,.NONE}, {.RT,.OFFSET_BASE_A,.NONE,.NONE}, 0xD9200000, 0xFFE00C00, .MTE, {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, {.W_REG,.MEM,.NONE,.NONE}, {.RT,.OFFSET_BASE_S9,.NONE,.NONE}, 0x99000000, 0xFFE00C00, .BASE, {} }, { .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, {.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} }, + { .LDAPURSB, {.W_REG,.MEM,.NONE,.NONE}, {.RT,.OFFSET_BASE_S9,.NONE,.NONE}, 0x19C00000, 0xFFE00C00, .BASE, {} }, { .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} }, @@ -1831,10 +1909,10 @@ DECODE_ENTRIES := [1995]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} }, @@ -1868,8 +1946,8 @@ DECODE_ENTRIES := [1995]lib.Decode_Entry{ { .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} }, { .SBCS, {.W_REG,.W_REG,.W_REG,.NONE}, {.RD,.RN,.RM,.NONE}, 0x7A000000, 0xFFE0FC00, .BASE, {sets_flags=true} }, + { .SBCS, {.X_REG,.X_REG,.X_REG,.NONE}, {.RD,.RN,.RM,.NONE}, 0xFA000000, 0xFFE0FC00, .BASE, {sets_flags=true, is_64=true} }, { .CCMP_REG, {.X_REG,.X_REG,.NZCV_IMM,.COND}, {.RN,.RM,.NZCV_FIELD,.COND_HI}, 0xFA400000, 0xFFE00C10, .BASE, {sets_flags=true, is_64=true} }, { .CCMP_REG, {.W_REG,.W_REG,.NZCV_IMM,.COND}, {.RN,.RM,.NZCV_FIELD,.COND_HI}, 0x7A400000, 0xFFE00C10, .BASE, {sets_flags=true} }, { .CCMN_REG, {.X_REG,.X_REG,.NZCV_IMM,.COND}, {.RN,.RM,.NZCV_FIELD,.COND_HI}, 0xBA400000, 0xFFE00C10, .BASE, {sets_flags=true, is_64=true} }, @@ -1894,15 +1972,15 @@ DECODE_ENTRIES := [1995]lib.Decode_Entry{ { .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, {.D_REG,.MEM,.NONE,.NONE}, {.RT,.OFFSET_BASE_U12,.NONE,.NONE}, 0xFD000000, 0xFFC00000, .FP, {} }, - { .STR_V, {.S_REG,.MEM,.NONE,.NONE}, {.RT,.OFFSET_BASE_U12,.NONE,.NONE}, 0xBD000000, 0xFFC00000, .FP, {} }, - { .STR_V, {.Q_REG,.MEM,.NONE,.NONE}, {.RT,.OFFSET_BASE_U12,.NONE,.NONE}, 0x3D800000, 0xFFC00000, .FP, {} }, - { .STR_V, {.H_REG,.MEM,.NONE,.NONE}, {.RT,.OFFSET_BASE_U12,.NONE,.NONE}, 0x7D000000, 0xFFC00000, .FP, {} }, + { .LDR_V, {.D_REG,.MEM,.NONE,.NONE}, {.RT,.OFFSET_BASE_U12,.NONE,.NONE}, 0xFD400000, 0xFFC00000, .FP, {} }, { .STR_V, {.B_REG,.MEM,.NONE,.NONE}, {.RT,.OFFSET_BASE_U12,.NONE,.NONE}, 0x3D000000, 0xFFC00000, .FP, {} }, + { .STR_V, {.H_REG,.MEM,.NONE,.NONE}, {.RT,.OFFSET_BASE_U12,.NONE,.NONE}, 0x7D000000, 0xFFC00000, .FP, {} }, + { .STR_V, {.S_REG,.MEM,.NONE,.NONE}, {.RT,.OFFSET_BASE_U12,.NONE,.NONE}, 0xBD000000, 0xFFC00000, .FP, {} }, + { .STR_V, {.D_REG,.MEM,.NONE,.NONE}, {.RT,.OFFSET_BASE_U12,.NONE,.NONE}, 0xFD000000, 0xFFC00000, .FP, {} }, + { .STR_V, {.Q_REG,.MEM,.NONE,.NONE}, {.RT,.OFFSET_BASE_U12,.NONE,.NONE}, 0x3D800000, 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} }, @@ -2013,14 +2091,14 @@ DECODE_INDEX_OP0 := [16]lib.Decode_Index{ 0x04 = { 454, 76}, 0x05 = { 530, 50}, 0x06 = { 580, 8}, - 0x07 = { 588, 886}, - 0x08 = {1474, 16}, - 0x09 = {1490, 34}, - 0x0A = {1524, 98}, - 0x0B = {1622, 21}, - 0x0C = {1643, 150}, - 0x0D = {1793, 88}, - 0x0E = {1881, 13}, - 0x0F = {1894, 101}, + 0x07 = { 588, 964}, + 0x08 = {1552, 16}, + 0x09 = {1568, 34}, + 0x0A = {1602, 98}, + 0x0B = {1700, 21}, + 0x0C = {1721, 150}, + 0x0D = {1871, 88}, + 0x0E = {1959, 13}, + 0x0F = {1972, 101}, } diff --git a/core/rexcode/arm64/tablegen/generated/encode_tables.odin b/core/rexcode/arm64/tablegen/generated/encode_tables.odin index 8d74171ed..fb0ca3f1d 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 := [1993]lib.Encoding{ +ENCODE_FORMS := [2071]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} }, @@ -1667,6 +1667,18 @@ ENCODE_FORMS := [1993]lib.Encoding{ { .FCMGT, {.V_2D,.V_2D,.V_2D,.NONE}, {.VD,.VN,.VM,.NONE}, 0x6EE0E400, 0xFFE0FC00, .NEON, {} }, { .FCMGT, {.V_4H_FP16,.V_4H_FP16,.V_4H_FP16,.NONE}, {.VD,.VN,.VM,.NONE}, 0x2EC02400, 0xFFE0FC00, .FP16, {} }, { .FCMGT, {.V_8H_FP16,.V_8H_FP16,.V_8H_FP16,.NONE}, {.VD,.VN,.VM,.NONE}, 0x6EC02400, 0xFFE0FC00, .FP16, {} }, + // .FCMLE + { .FCMLE, {.V_2S,.V_2S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2EA0D800, 0xFFFFFC00, .NEON, {} }, + { .FCMLE, {.V_4S,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6EA0D800, 0xFFFFFC00, .NEON, {} }, + { .FCMLE, {.V_2D,.V_2D,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6EE0D800, 0xFFFFFC00, .NEON, {} }, + { .FCMLE, {.V_4H_FP16,.V_4H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2EF8D800, 0xFFFFFC00, .FP16, {} }, + { .FCMLE, {.V_8H_FP16,.V_8H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6EF8D800, 0xFFFFFC00, .FP16, {} }, + // .FCMLT + { .FCMLT, {.V_2S,.V_2S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0EA0E800, 0xFFFFFC00, .NEON, {} }, + { .FCMLT, {.V_4S,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4EA0E800, 0xFFFFFC00, .NEON, {} }, + { .FCMLT, {.V_2D,.V_2D,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4EE0E800, 0xFFFFFC00, .NEON, {} }, + { .FCMLT, {.V_4H_FP16,.V_4H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0EF8E800, 0xFFFFFC00, .FP16, {} }, + { .FCMLT, {.V_8H_FP16,.V_8H_FP16,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4EF8E800, 0xFFFFFC00, .FP16, {} }, // .FACGE { .FACGE, {.V_2S,.V_2S,.V_2S,.NONE}, {.VD,.VN,.VM,.NONE}, 0x2E20EC00, 0xFFE0FC00, .NEON, {} }, { .FACGE, {.V_4S,.V_4S,.V_4S,.NONE}, {.VD,.VN,.VM,.NONE}, 0x6E20EC00, 0xFFE0FC00, .NEON, {} }, @@ -1706,6 +1718,22 @@ ENCODE_FORMS := [1993]lib.Encoding{ { .CMHS, {.V_2S,.V_2S,.V_2S,.NONE}, {.VD,.VN,.VM,.NONE}, 0x2EA03C00, 0xFFE0FC00, .NEON, {} }, { .CMHS, {.V_4S,.V_4S,.V_4S,.NONE}, {.VD,.VN,.VM,.NONE}, 0x6EA03C00, 0xFFE0FC00, .NEON, {} }, { .CMHS, {.V_2D,.V_2D,.V_2D,.NONE}, {.VD,.VN,.VM,.NONE}, 0x6EE03C00, 0xFFE0FC00, .NEON, {} }, + // .CMLE + { .CMLE, {.V_8B,.V_8B,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2E209800, 0xFFFFFC00, .NEON, {} }, + { .CMLE, {.V_16B,.V_16B,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6E209800, 0xFFFFFC00, .NEON, {} }, + { .CMLE, {.V_4H,.V_4H,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2E609800, 0xFFFFFC00, .NEON, {} }, + { .CMLE, {.V_8H,.V_8H,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6E609800, 0xFFFFFC00, .NEON, {} }, + { .CMLE, {.V_2S,.V_2S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2EA09800, 0xFFFFFC00, .NEON, {} }, + { .CMLE, {.V_4S,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6EA09800, 0xFFFFFC00, .NEON, {} }, + { .CMLE, {.V_2D,.V_2D,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6EE09800, 0xFFFFFC00, .NEON, {} }, + // .CMLT + { .CMLT, {.V_8B,.V_8B,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0E20A800, 0xFFFFFC00, .NEON, {} }, + { .CMLT, {.V_16B,.V_16B,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4E20A800, 0xFFFFFC00, .NEON, {} }, + { .CMLT, {.V_4H,.V_4H,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0E60A800, 0xFFFFFC00, .NEON, {} }, + { .CMLT, {.V_8H,.V_8H,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4E60A800, 0xFFFFFC00, .NEON, {} }, + { .CMLT, {.V_2S,.V_2S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0EA0A800, 0xFFFFFC00, .NEON, {} }, + { .CMLT, {.V_4S,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4EA0A800, 0xFFFFFC00, .NEON, {} }, + { .CMLT, {.V_2D,.V_2D,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4EE0A800, 0xFFFFFC00, .NEON, {} }, // .CMTST { .CMTST, {.V_8B,.V_8B,.V_8B,.NONE}, {.VD,.VN,.VM,.NONE}, 0x0E208C00, 0xFFE0FC00, .NEON, {} }, { .CMTST, {.V_16B,.V_16B,.V_16B,.NONE}, {.VD,.VN,.VM,.NONE}, 0x4E208C00, 0xFFE0FC00, .NEON, {} }, @@ -1882,6 +1910,70 @@ ENCODE_FORMS := [1993]lib.Encoding{ { .USHLL2, {.V_8H,.V_16B,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHL_IMM,.NONE}, 0x6F08A400, 0xFFF8FC00, .NEON, {} }, { .USHLL2, {.V_4S,.V_8H,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHL_IMM,.NONE}, 0x6F10A400, 0xFFF0FC00, .NEON, {} }, { .USHLL2, {.V_2D,.V_4S,.VEC_SHIFT,.NONE}, {.VD,.VN,.NEON_SHL_IMM,.NONE}, 0x6F20A400, 0xFFE0FC00, .NEON, {} }, + // .SXTL + { .SXTL, {.V_8H,.V_8B,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0F08A400, 0xFFFFFC00, .NEON, {} }, + { .SXTL, {.V_4S,.V_4H,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0F10A400, 0xFFFFFC00, .NEON, {} }, + { .SXTL, {.V_2D,.V_2S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x0F20A400, 0xFFFFFC00, .NEON, {} }, + // .SXTL2 + { .SXTL2, {.V_8H,.V_16B,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4F08A400, 0xFFFFFC00, .NEON, {} }, + { .SXTL2, {.V_4S,.V_8H,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4F10A400, 0xFFFFFC00, .NEON, {} }, + { .SXTL2, {.V_2D,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x4F20A400, 0xFFFFFC00, .NEON, {} }, + // .UXTL + { .UXTL, {.V_8H,.V_8B,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2F08A400, 0xFFFFFC00, .NEON, {} }, + { .UXTL, {.V_4S,.V_4H,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2F10A400, 0xFFFFFC00, .NEON, {} }, + { .UXTL, {.V_2D,.V_2S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x2F20A400, 0xFFFFFC00, .NEON, {} }, + // .UXTL2 + { .UXTL2, {.V_8H,.V_16B,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6F08A400, 0xFFFFFC00, .NEON, {} }, + { .UXTL2, {.V_4S,.V_8H,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6F10A400, 0xFFFFFC00, .NEON, {} }, + { .UXTL2, {.V_2D,.V_4S,.NONE,.NONE}, {.VD,.VN,.NONE,.NONE}, 0x6F20A400, 0xFFFFFC00, .NEON, {} }, + // .ZIP1 + { .ZIP1, {.V_8B,.V_8B,.V_8B,.NONE}, {.VD,.VN,.VM,.NONE}, 0x0E003800, 0xFFE0FC00, .NEON, {} }, + { .ZIP1, {.V_16B,.V_16B,.V_16B,.NONE}, {.VD,.VN,.VM,.NONE}, 0x4E003800, 0xFFE0FC00, .NEON, {} }, + { .ZIP1, {.V_4H,.V_4H,.V_4H,.NONE}, {.VD,.VN,.VM,.NONE}, 0x0E403800, 0xFFE0FC00, .NEON, {} }, + { .ZIP1, {.V_8H,.V_8H,.V_8H,.NONE}, {.VD,.VN,.VM,.NONE}, 0x4E403800, 0xFFE0FC00, .NEON, {} }, + { .ZIP1, {.V_2S,.V_2S,.V_2S,.NONE}, {.VD,.VN,.VM,.NONE}, 0x0E803800, 0xFFE0FC00, .NEON, {} }, + { .ZIP1, {.V_4S,.V_4S,.V_4S,.NONE}, {.VD,.VN,.VM,.NONE}, 0x4E803800, 0xFFE0FC00, .NEON, {} }, + { .ZIP1, {.V_2D,.V_2D,.V_2D,.NONE}, {.VD,.VN,.VM,.NONE}, 0x4EC03800, 0xFFE0FC00, .NEON, {} }, + // .ZIP2 + { .ZIP2, {.V_8B,.V_8B,.V_8B,.NONE}, {.VD,.VN,.VM,.NONE}, 0x0E007800, 0xFFE0FC00, .NEON, {} }, + { .ZIP2, {.V_16B,.V_16B,.V_16B,.NONE}, {.VD,.VN,.VM,.NONE}, 0x4E007800, 0xFFE0FC00, .NEON, {} }, + { .ZIP2, {.V_4H,.V_4H,.V_4H,.NONE}, {.VD,.VN,.VM,.NONE}, 0x0E407800, 0xFFE0FC00, .NEON, {} }, + { .ZIP2, {.V_8H,.V_8H,.V_8H,.NONE}, {.VD,.VN,.VM,.NONE}, 0x4E407800, 0xFFE0FC00, .NEON, {} }, + { .ZIP2, {.V_2S,.V_2S,.V_2S,.NONE}, {.VD,.VN,.VM,.NONE}, 0x0E807800, 0xFFE0FC00, .NEON, {} }, + { .ZIP2, {.V_4S,.V_4S,.V_4S,.NONE}, {.VD,.VN,.VM,.NONE}, 0x4E807800, 0xFFE0FC00, .NEON, {} }, + { .ZIP2, {.V_2D,.V_2D,.V_2D,.NONE}, {.VD,.VN,.VM,.NONE}, 0x4EC07800, 0xFFE0FC00, .NEON, {} }, + // .UZP1 + { .UZP1, {.V_8B,.V_8B,.V_8B,.NONE}, {.VD,.VN,.VM,.NONE}, 0x0E001800, 0xFFE0FC00, .NEON, {} }, + { .UZP1, {.V_16B,.V_16B,.V_16B,.NONE}, {.VD,.VN,.VM,.NONE}, 0x4E001800, 0xFFE0FC00, .NEON, {} }, + { .UZP1, {.V_4H,.V_4H,.V_4H,.NONE}, {.VD,.VN,.VM,.NONE}, 0x0E401800, 0xFFE0FC00, .NEON, {} }, + { .UZP1, {.V_8H,.V_8H,.V_8H,.NONE}, {.VD,.VN,.VM,.NONE}, 0x4E401800, 0xFFE0FC00, .NEON, {} }, + { .UZP1, {.V_2S,.V_2S,.V_2S,.NONE}, {.VD,.VN,.VM,.NONE}, 0x0E801800, 0xFFE0FC00, .NEON, {} }, + { .UZP1, {.V_4S,.V_4S,.V_4S,.NONE}, {.VD,.VN,.VM,.NONE}, 0x4E801800, 0xFFE0FC00, .NEON, {} }, + { .UZP1, {.V_2D,.V_2D,.V_2D,.NONE}, {.VD,.VN,.VM,.NONE}, 0x4EC01800, 0xFFE0FC00, .NEON, {} }, + // .UZP2 + { .UZP2, {.V_8B,.V_8B,.V_8B,.NONE}, {.VD,.VN,.VM,.NONE}, 0x0E005800, 0xFFE0FC00, .NEON, {} }, + { .UZP2, {.V_16B,.V_16B,.V_16B,.NONE}, {.VD,.VN,.VM,.NONE}, 0x4E005800, 0xFFE0FC00, .NEON, {} }, + { .UZP2, {.V_4H,.V_4H,.V_4H,.NONE}, {.VD,.VN,.VM,.NONE}, 0x0E405800, 0xFFE0FC00, .NEON, {} }, + { .UZP2, {.V_8H,.V_8H,.V_8H,.NONE}, {.VD,.VN,.VM,.NONE}, 0x4E405800, 0xFFE0FC00, .NEON, {} }, + { .UZP2, {.V_2S,.V_2S,.V_2S,.NONE}, {.VD,.VN,.VM,.NONE}, 0x0E805800, 0xFFE0FC00, .NEON, {} }, + { .UZP2, {.V_4S,.V_4S,.V_4S,.NONE}, {.VD,.VN,.VM,.NONE}, 0x4E805800, 0xFFE0FC00, .NEON, {} }, + { .UZP2, {.V_2D,.V_2D,.V_2D,.NONE}, {.VD,.VN,.VM,.NONE}, 0x4EC05800, 0xFFE0FC00, .NEON, {} }, + // .TRN1 + { .TRN1, {.V_8B,.V_8B,.V_8B,.NONE}, {.VD,.VN,.VM,.NONE}, 0x0E002800, 0xFFE0FC00, .NEON, {} }, + { .TRN1, {.V_16B,.V_16B,.V_16B,.NONE}, {.VD,.VN,.VM,.NONE}, 0x4E002800, 0xFFE0FC00, .NEON, {} }, + { .TRN1, {.V_4H,.V_4H,.V_4H,.NONE}, {.VD,.VN,.VM,.NONE}, 0x0E402800, 0xFFE0FC00, .NEON, {} }, + { .TRN1, {.V_8H,.V_8H,.V_8H,.NONE}, {.VD,.VN,.VM,.NONE}, 0x4E402800, 0xFFE0FC00, .NEON, {} }, + { .TRN1, {.V_2S,.V_2S,.V_2S,.NONE}, {.VD,.VN,.VM,.NONE}, 0x0E802800, 0xFFE0FC00, .NEON, {} }, + { .TRN1, {.V_4S,.V_4S,.V_4S,.NONE}, {.VD,.VN,.VM,.NONE}, 0x4E802800, 0xFFE0FC00, .NEON, {} }, + { .TRN1, {.V_2D,.V_2D,.V_2D,.NONE}, {.VD,.VN,.VM,.NONE}, 0x4EC02800, 0xFFE0FC00, .NEON, {} }, + // .TRN2 + { .TRN2, {.V_8B,.V_8B,.V_8B,.NONE}, {.VD,.VN,.VM,.NONE}, 0x0E006800, 0xFFE0FC00, .NEON, {} }, + { .TRN2, {.V_16B,.V_16B,.V_16B,.NONE}, {.VD,.VN,.VM,.NONE}, 0x4E006800, 0xFFE0FC00, .NEON, {} }, + { .TRN2, {.V_4H,.V_4H,.V_4H,.NONE}, {.VD,.VN,.VM,.NONE}, 0x0E406800, 0xFFE0FC00, .NEON, {} }, + { .TRN2, {.V_8H,.V_8H,.V_8H,.NONE}, {.VD,.VN,.VM,.NONE}, 0x4E406800, 0xFFE0FC00, .NEON, {} }, + { .TRN2, {.V_2S,.V_2S,.V_2S,.NONE}, {.VD,.VN,.VM,.NONE}, 0x0E806800, 0xFFE0FC00, .NEON, {} }, + { .TRN2, {.V_4S,.V_4S,.V_4S,.NONE}, {.VD,.VN,.VM,.NONE}, 0x4E806800, 0xFFE0FC00, .NEON, {} }, + { .TRN2, {.V_2D,.V_2D,.V_2D,.NONE}, {.VD,.VN,.VM,.NONE}, 0x4EC06800, 0xFFE0FC00, .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, {} }, @@ -3507,577 +3599,577 @@ ENCODE_RUNS := [lib.Mnemonic]lib.Encode_Run{ .FCMEQ = { 1138, 5}, .FCMGE = { 1143, 5}, .FCMGT = { 1148, 5}, - .FCMLE = { 1153, 0}, - .FCMLT = { 1153, 0}, - .FACGE = { 1153, 5}, - .FACGT = { 1158, 5}, - .CMEQ = { 1163, 4}, - .CMGE = { 1167, 7}, - .CMGT = { 1174, 2}, - .CMHI = { 1176, 2}, - .CMHS = { 1178, 7}, - .CMLE = { 1185, 0}, - .CMLT = { 1185, 0}, - .CMTST = { 1185, 7}, - .AND_V = { 1192, 1}, - .ORR_V = { 1193, 1}, - .EOR_V = { 1194, 1}, - .BIC_V = { 1195, 1}, - .ORN_V = { 1196, 1}, - .MVN_V = { 1197, 0}, - .BIT = { 1197, 1}, - .BIF = { 1198, 1}, - .BSL = { 1199, 1}, - .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, 3}, - .SSHLL2 = { 1322, 3}, - .USHLL = { 1325, 3}, - .USHLL2 = { 1328, 3}, - .SXTL = { 1331, 0}, - .SXTL2 = { 1331, 0}, - .UXTL = { 1331, 0}, - .UXTL2 = { 1331, 0}, - .SHRN = { 1331, 0}, - .SHRN2 = { 1331, 0}, - .RSHRN = { 1331, 0}, - .RSHRN2 = { 1331, 0}, - .SQSHRN = { 1331, 0}, - .SQSHRN2 = { 1331, 0}, - .UQSHRN = { 1331, 0}, - .UQSHRN2 = { 1331, 0}, - .SQRSHRN = { 1331, 0}, - .SQRSHRN2 = { 1331, 0}, - .UQRSHRN = { 1331, 0}, - .UQRSHRN2 = { 1331, 0}, - .SQSHRUN = { 1331, 0}, - .SQSHRUN2 = { 1331, 0}, - .SQRSHRUN = { 1331, 0}, - .SQRSHRUN2 = { 1331, 0}, - .DUP_V = { 1331, 0}, - .INS = { 1331, 0}, - .MOV_V = { 1331, 0}, - .EXT_V = { 1331, 0}, - .TBL = { 1331, 0}, - .TBX = { 1331, 0}, - .ZIP1 = { 1331, 0}, - .ZIP2 = { 1331, 0}, - .UZP1 = { 1331, 0}, - .UZP2 = { 1331, 0}, - .TRN1 = { 1331, 0}, - .TRN2 = { 1331, 0}, - .NOT_V = { 1331, 2}, - .RBIT_V = { 1333, 2}, - .REV16_V = { 1335, 2}, - .REV32_V = { 1337, 4}, - .REV64 = { 1341, 6}, - .CLS_V = { 1347, 6}, - .CLZ_V = { 1353, 6}, - .CNT = { 1359, 2}, - .URECPE_V = { 1361, 2}, - .URSQRTE_V = { 1363, 2}, - .MOVI = { 1365, 0}, - .MVNI = { 1365, 0}, - .FMOV_V_IMM = { 1365, 0}, - .LD1 = { 1365, 4}, - .LD2 = { 1369, 0}, - .LD3 = { 1369, 0}, - .LD4 = { 1369, 0}, - .ST1 = { 1369, 4}, - .ST2 = { 1373, 0}, - .ST3 = { 1373, 0}, - .ST4 = { 1373, 0}, - .LD1R = { 1373, 0}, - .LD2R = { 1373, 0}, - .LD3R = { 1373, 0}, - .LD4R = { 1373, 0}, - .LD1_LANE = { 1373, 0}, - .LD2_LANE = { 1373, 0}, - .LD3_LANE = { 1373, 0}, - .LD4_LANE = { 1373, 0}, - .ST1_LANE = { 1373, 0}, - .ST2_LANE = { 1373, 0}, - .ST3_LANE = { 1373, 0}, - .ST4_LANE = { 1373, 0}, - .LDR_V = { 1373, 5}, - .STR_V = { 1378, 5}, - .LDP_V = { 1383, 0}, - .STP_V = { 1383, 0}, - .LDUR_V = { 1383, 0}, - .STUR_V = { 1383, 0}, - .SVE_ADD_Z = { 1383, 4}, - .SVE_SUB_Z = { 1387, 4}, - .SVE_SQADD_Z = { 1391, 4}, - .SVE_UQADD_Z = { 1395, 4}, - .SVE_SQSUB_Z = { 1399, 4}, - .SVE_UQSUB_Z = { 1403, 4}, - .SVE_ADD_PRED = { 1407, 4}, - .SVE_SUB_PRED = { 1411, 4}, - .SVE_SUBR_PRED = { 1415, 4}, - .SVE_MUL_PRED = { 1419, 4}, - .SVE_SMULH_PRED = { 1423, 4}, - .SVE_UMULH_PRED = { 1427, 4}, - .SVE_SDIV_PRED = { 1431, 2}, - .SVE_UDIV_PRED = { 1433, 2}, - .SVE_SMAX_PRED = { 1435, 4}, - .SVE_UMAX_PRED = { 1439, 4}, - .SVE_SMIN_PRED = { 1443, 4}, - .SVE_UMIN_PRED = { 1447, 4}, - .SVE_SABD_PRED = { 1451, 4}, - .SVE_UABD_PRED = { 1455, 4}, - .SVE_AND_PRED = { 1459, 1}, - .SVE_ORR_PRED = { 1460, 1}, - .SVE_EOR_PRED = { 1461, 1}, - .SVE_BIC_PRED = { 1462, 1}, - .SVE_ASR_PRED = { 1463, 4}, - .SVE_LSL_PRED = { 1467, 4}, - .SVE_LSR_PRED = { 1471, 4}, - .SVE_ASRR_PRED = { 1475, 0}, - .SVE_LSLR_PRED = { 1475, 0}, - .SVE_LSRR_PRED = { 1475, 0}, - .SVE_ABS_PRED = { 1475, 4}, - .SVE_NEG_PRED = { 1479, 4}, - .SVE_CLS_PRED = { 1483, 4}, - .SVE_CLZ_PRED = { 1487, 4}, - .SVE_CNT_PRED = { 1491, 4}, - .SVE_MOV_PRED = { 1495, 0}, - .SVE_FADD_Z = { 1495, 3}, - .SVE_FSUB_Z = { 1498, 3}, - .SVE_FMUL_Z = { 1501, 3}, - .SVE_FRECPS = { 1504, 3}, - .SVE_FRSQRTS = { 1507, 3}, - .SVE_FTSMUL = { 1510, 3}, - .SVE_FADD_PRED = { 1513, 3}, - .SVE_FSUB_PRED = { 1516, 3}, - .SVE_FSUBR_PRED = { 1519, 0}, - .SVE_FMUL_PRED = { 1519, 3}, - .SVE_FDIV_PRED = { 1522, 3}, - .SVE_FDIVR_PRED = { 1525, 0}, - .SVE_FMAX_PRED = { 1525, 3}, - .SVE_FMIN_PRED = { 1528, 3}, - .SVE_FMAXNM_PRED = { 1531, 3}, - .SVE_FMINNM_PRED = { 1534, 3}, - .SVE_FABS_Z = { 1537, 3}, - .SVE_FNEG_Z = { 1540, 3}, - .SVE_FSQRT_Z = { 1543, 3}, - .SVE_FRECPX_Z = { 1546, 0}, - .SVE_FRINTN = { 1546, 0}, - .SVE_FRINTP = { 1546, 0}, - .SVE_FRINTM = { 1546, 0}, - .SVE_FRINTZ = { 1546, 0}, - .SVE_FRINTA = { 1546, 0}, - .SVE_FRINTX = { 1546, 0}, - .SVE_FRINTI = { 1546, 0}, - .SVE_FMLA = { 1546, 3}, - .SVE_FMLS = { 1549, 3}, - .SVE_FNMLA = { 1552, 3}, - .SVE_FNMLS = { 1555, 3}, - .SVE_AND_P = { 1558, 1}, - .SVE_BIC_P = { 1559, 1}, - .SVE_ORR_P = { 1560, 1}, - .SVE_EOR_P = { 1561, 1}, - .SVE_NAND_P = { 1562, 1}, - .SVE_NOR_P = { 1563, 1}, - .SVE_ORN_P = { 1564, 1}, - .SVE_SEL_P = { 1565, 1}, - .SVE_ANDS_P = { 1566, 1}, - .SVE_BICS_P = { 1567, 1}, - .SVE_ORRS_P = { 1568, 1}, - .SVE_EORS_P = { 1569, 1}, - .SVE_NANDS_P = { 1570, 0}, - .SVE_NORS_P = { 1570, 0}, - .SVE_ORNS_P = { 1570, 0}, - .SVE_NOT_P = { 1570, 0}, - .SVE_MOV_P = { 1570, 0}, - .SVE_MOVS_P = { 1570, 0}, - .SVE_PTRUE = { 1570, 1}, - .SVE_PTRUES = { 1571, 1}, - .SVE_PFALSE = { 1572, 1}, - .SVE_PFIRST = { 1573, 1}, - .SVE_PNEXT = { 1574, 1}, - .SVE_BRKA = { 1575, 0}, - .SVE_BRKB = { 1575, 0}, - .SVE_BRKAS = { 1575, 0}, - .SVE_BRKBS = { 1575, 0}, - .SVE_BRKPA = { 1575, 0}, - .SVE_BRKPB = { 1575, 0}, - .SVE_BRKN = { 1575, 0}, - .SVE_RDFFR = { 1575, 0}, - .SVE_WRFFR = { 1575, 0}, - .SVE_SETFFR = { 1575, 0}, - .SVE_CMPEQ = { 1575, 4}, - .SVE_CMPNE = { 1579, 4}, - .SVE_CMPGE = { 1583, 4}, - .SVE_CMPGT = { 1587, 4}, - .SVE_CMPLE = { 1591, 0}, - .SVE_CMPLT = { 1591, 0}, - .SVE_CMPHI = { 1591, 4}, - .SVE_CMPHS = { 1595, 4}, - .SVE_CMPLO = { 1599, 0}, - .SVE_CMPLS = { 1599, 0}, - .SVE_FCMEQ = { 1599, 0}, - .SVE_FCMNE = { 1599, 0}, - .SVE_FCMGE = { 1599, 0}, - .SVE_FCMGT = { 1599, 0}, - .SVE_FCMLE = { 1599, 0}, - .SVE_FCMLT = { 1599, 0}, - .SVE_FCMUO = { 1599, 0}, - .SVE_DUP_Z = { 1599, 4}, - .SVE_INSR = { 1603, 0}, - .SVE_REV_Z = { 1603, 4}, - .SVE_REV_P = { 1607, 1}, - .SVE_TBL = { 1608, 4}, - .SVE_ZIP1_Z = { 1612, 4}, - .SVE_ZIP2_Z = { 1616, 4}, - .SVE_UZP1_Z = { 1620, 4}, - .SVE_UZP2_Z = { 1624, 4}, - .SVE_TRN1_Z = { 1628, 4}, - .SVE_TRN2_Z = { 1632, 4}, - .SVE_ZIP1_P = { 1636, 1}, - .SVE_ZIP2_P = { 1637, 1}, - .SVE_UZP1_P = { 1638, 1}, - .SVE_UZP2_P = { 1639, 1}, - .SVE_TRN1_P = { 1640, 1}, - .SVE_TRN2_P = { 1641, 1}, - .SVE_CPY_Z = { 1642, 0}, - .SVE_COMPACT = { 1642, 0}, - .SVE_EXT_Z = { 1642, 0}, - .SVE_LD1B = { 1642, 1}, - .SVE_LD1H = { 1643, 1}, - .SVE_LD1W = { 1644, 1}, - .SVE_LD1D = { 1645, 1}, - .SVE_LD1SB = { 1646, 1}, - .SVE_LD1SH = { 1647, 1}, - .SVE_LD1SW = { 1648, 1}, - .SVE_ST1B = { 1649, 1}, - .SVE_ST1H = { 1650, 1}, - .SVE_ST1W = { 1651, 1}, - .SVE_ST1D = { 1652, 1}, - .SVE_LDR_Z = { 1653, 1}, - .SVE_STR_Z = { 1654, 1}, - .SVE_LDR_P = { 1655, 1}, - .SVE_STR_P = { 1656, 1}, - .SVE_LDFF1B = { 1657, 1}, - .SVE_LDFF1H = { 1658, 1}, - .SVE_LDFF1W = { 1659, 1}, - .SVE_LDFF1D = { 1660, 1}, - .SVE_WHILEGE = { 1661, 1}, - .SVE_WHILEGT = { 1662, 1}, - .SVE_WHILELE = { 1663, 1}, - .SVE_WHILELT = { 1664, 1}, - .SVE_WHILEHI = { 1665, 1}, - .SVE_WHILEHS = { 1666, 1}, - .SVE_WHILELO = { 1667, 1}, - .SVE_WHILELS = { 1668, 1}, - .SVE_SQRDMLAH = { 1669, 4}, - .SVE_SQRDMLSH = { 1673, 4}, - .SVE_ADCLB = { 1677, 2}, - .SVE_ADCLT = { 1679, 2}, - .SVE_SBCLB = { 1681, 2}, - .SVE_SBCLT = { 1683, 2}, - .SVE_TBL2 = { 1685, 1}, - .SVE_TBX = { 1686, 1}, - .SVE_AESE = { 1687, 1}, - .SVE_AESD = { 1688, 1}, - .SVE_AESMC = { 1689, 1}, - .SVE_AESIMC = { 1690, 1}, - .SVE_BCAX_Z = { 1691, 0}, - .SVE_XAR_Z = { 1691, 0}, - .SVE_EOR3_Z = { 1691, 0}, - .SVE_MATCH = { 1691, 2}, - .SVE_NMATCH = { 1693, 2}, - .SVE_HISTCNT = { 1695, 2}, - .SVE_HISTSEG = { 1697, 1}, - .SME_SMSTART = { 1698, 1}, - .SME_SMSTOP = { 1699, 1}, - .SME_RDSVL = { 1700, 1}, - .SME_ADDHA = { 1701, 0}, - .SME_ADDVA = { 1701, 0}, - .SME_ZERO = { 1701, 1}, - .SME_FMOPA = { 1702, 1}, - .SME_FMOPS = { 1703, 1}, - .SME_BFMOPA = { 1704, 1}, - .SME_BFMOPS = { 1705, 1}, - .SME_SMOPA = { 1706, 2}, - .SME_SMOPS = { 1708, 2}, - .SME_UMOPA = { 1710, 2}, - .SME_UMOPS = { 1712, 2}, - .SME_USMOPA = { 1714, 1}, - .SME_SUMOPA = { 1715, 1}, - .SME_MOVA_TO_Z = { 1716, 0}, - .SME_MOVA_TO_ZA = { 1716, 0}, - .SME_LD1B_ZA = { 1716, 0}, - .SME_LD1H_ZA = { 1716, 0}, - .SME_LD1W_ZA = { 1716, 0}, - .SME_LD1D_ZA = { 1716, 0}, - .SME_LD1Q_ZA = { 1716, 0}, - .SME_ST1B_ZA = { 1716, 0}, - .SME_ST1H_ZA = { 1716, 0}, - .SME_ST1W_ZA = { 1716, 0}, - .SME_ST1D_ZA = { 1716, 0}, - .SME_ST1Q_ZA = { 1716, 0}, - .SME_LDR_ZA = { 1716, 1}, - .SME_STR_ZA = { 1717, 1}, - .SVE_FMLA_IDX_H = { 1718, 1}, - .SVE_FMLA_IDX_S = { 1719, 1}, - .SVE_FMLA_IDX_D = { 1720, 1}, - .SVE_FMLS_IDX_H = { 1721, 1}, - .SVE_FMLS_IDX_S = { 1722, 1}, - .SVE_FMLS_IDX_D = { 1723, 1}, - .SVE_LD1B_GATHER_S = { 1724, 1}, - .SVE_LD1B_GATHER_D = { 1725, 1}, - .SVE_LD1H_GATHER_S = { 1726, 1}, - .SVE_LD1H_GATHER_D = { 1727, 1}, - .SVE_LD1W_GATHER_S = { 1728, 1}, - .SVE_LD1W_GATHER_D = { 1729, 1}, - .SVE_LD1D_GATHER_D = { 1730, 1}, - .SVE_LD1SB_GATHER_S = { 1731, 1}, - .SVE_LD1SB_GATHER_D = { 1732, 1}, - .SVE_LD1SH_GATHER_S = { 1733, 1}, - .SVE_LD1SH_GATHER_D = { 1734, 1}, - .SVE_LD1SW_GATHER_D = { 1735, 1}, - .SVE_ST1B_SCATTER_S = { 1736, 1}, - .SVE_ST1B_SCATTER_D = { 1737, 1}, - .SVE_ST1H_SCATTER_S = { 1738, 1}, - .SVE_ST1H_SCATTER_D = { 1739, 1}, - .SVE_ST1W_SCATTER_S = { 1740, 1}, - .SVE_ST1W_SCATTER_D = { 1741, 1}, - .SVE_ST1D_SCATTER_D = { 1742, 1}, - .SME_LD1B_TILE = { 1743, 1}, - .SME_LD1H_TILE = { 1744, 1}, - .SME_LD1W_TILE = { 1745, 1}, - .SME_LD1D_TILE = { 1746, 1}, - .SME_LD1Q_TILE = { 1747, 1}, - .SME_ST1B_TILE = { 1748, 1}, - .SME_ST1H_TILE = { 1749, 1}, - .SME_ST1W_TILE = { 1750, 1}, - .SME_ST1D_TILE = { 1751, 1}, - .SME_ST1Q_TILE = { 1752, 1}, - .SME_MOVA_Z_FROM_TILE = { 1753, 1}, - .SME_MOVA_TILE_FROM_Z = { 1754, 1}, - .FCMLA_4H = { 1755, 1}, - .FCMLA_8H = { 1756, 1}, - .FCMLA_4S = { 1757, 1}, - .FCMLA_2D = { 1758, 1}, - .FCADD_4H = { 1759, 1}, - .FCADD_8H = { 1760, 1}, - .FCADD_4S = { 1761, 1}, - .FCADD_2D = { 1762, 1}, - .SVE_PRFB = { 1763, 1}, - .SVE_PRFH = { 1764, 1}, - .SVE_PRFW = { 1765, 1}, - .SVE_PRFD = { 1766, 1}, - .SVE_LDNT1B = { 1767, 1}, - .SVE_LDNT1H = { 1768, 1}, - .SVE_LDNT1W = { 1769, 1}, - .SVE_LDNT1D = { 1770, 1}, - .SVE_STNT1B = { 1771, 1}, - .SVE_STNT1H = { 1772, 1}, - .SVE_STNT1W = { 1773, 1}, - .SVE_STNT1D = { 1774, 1}, - .SVE_EXT = { 1775, 1}, - .SVE_SPLICE = { 1776, 1}, - .SVE_INDEX_II = { 1777, 1}, - .SVE_INDEX_IR = { 1778, 1}, - .SVE_INDEX_RI = { 1779, 1}, - .SVE_INDEX_RR = { 1780, 1}, - .SVE_BSL = { 1781, 1}, - .SVE_BSL1N = { 1782, 1}, - .SVE_BSL2N = { 1783, 1}, - .SVE_NBSL = { 1784, 1}, - .SVE_PMUL_VEC = { 1785, 1}, - .SVE_PMULLB = { 1786, 1}, - .SVE_PMULLT = { 1787, 1}, - .SVE_BFCVT = { 1788, 1}, - .SVE_BFCVTNT = { 1789, 1}, - .LDRAA = { 1790, 1}, - .LDRAB = { 1791, 1}, - .LDRAA_PRE = { 1792, 1}, - .LDRAB_PRE = { 1793, 1}, - .TSTART = { 1794, 1}, - .TCOMMIT = { 1795, 1}, - .TCANCEL = { 1796, 1}, - .TTEST = { 1797, 1}, - .WFET = { 1798, 1}, - .WFIT = { 1799, 1}, - .BC_COND = { 1800, 1}, - .UXTB = { 1801, 1}, - .UXTH = { 1802, 1}, - .UXTW = { 1803, 1}, - .SXTB = { 1804, 1}, - .SXTH = { 1805, 1}, - .SXTW = { 1806, 1}, - .ADC = { 1807, 2}, - .ADCS = { 1809, 2}, - .SBC = { 1811, 2}, - .SBCS = { 1813, 2}, - .NGC = { 1815, 2}, - .NGCS = { 1817, 2}, - .LDAPUR = { 1819, 2}, - .STLUR = { 1821, 2}, - .LDAPURB = { 1823, 1}, - .STLURB = { 1824, 1}, - .LDAPURH = { 1825, 1}, - .STLURH = { 1826, 1}, - .LDAPURSB = { 1827, 2}, - .LDAPURSH = { 1829, 2}, - .LDAPURSW = { 1831, 1}, - .SVE_BFADD = { 1832, 1}, - .SVE_BFSUB = { 1833, 1}, - .SVE_BFMUL = { 1834, 1}, - .SVE_BFMLA = { 1835, 1}, - .SVE_BFMLS = { 1836, 1}, - .SB = { 1837, 1}, - .CSDB = { 1838, 1}, - .DGH = { 1839, 1}, - .PSB_CSYNC = { 1840, 1}, - .TSB_CSYNC = { 1841, 1}, - .BTI_J = { 1842, 1}, - .BTI_C = { 1843, 1}, - .BTI_JC = { 1844, 1}, - .MOV_V_ALIAS = { 1845, 2}, - .NOT_V_ALIAS = { 1847, 2}, - .LSL_IMM = { 1849, 2}, - .LSR_IMM = { 1851, 2}, - .ASR_IMM = { 1853, 2}, - .ROR_IMM = { 1855, 2}, - .SVE_BFADD_UNPRED = { 1857, 1}, - .SVE_BFSUB_UNPRED = { 1858, 1}, - .SVE_BFMUL_UNPRED = { 1859, 1}, - .SVE_BFCLAMP = { 1860, 1}, - .SVE_BFMAXNM = { 1861, 1}, - .SVE_BFMINNM = { 1862, 1}, - .SME2_LUTI2_B = { 1863, 1}, - .SME2_LUTI4_B = { 1864, 1}, - .SME2_LD1B_X2 = { 1865, 1}, - .SME2_LD1H_X2 = { 1866, 1}, - .SME2_LD1W_X2 = { 1867, 1}, - .SME2_LD1D_X2 = { 1868, 1}, - .SME2_LD1B_X4 = { 1869, 1}, - .SME2_LD1H_X4 = { 1870, 1}, - .SME2_LD1W_X4 = { 1871, 1}, - .SME2_LD1D_X4 = { 1872, 1}, - .SME2_ST1B_X2 = { 1873, 1}, - .SME2_ST1H_X2 = { 1874, 1}, - .SME2_ST1W_X2 = { 1875, 1}, - .SME2_ST1D_X2 = { 1876, 1}, - .SME2_ST1B_X4 = { 1877, 1}, - .SME2_ST1H_X4 = { 1878, 1}, - .SME2_ST1W_X4 = { 1879, 1}, - .SME2_ST1D_X4 = { 1880, 1}, - .SME2_ZIP_3 = { 1881, 1}, - .SME2_ZIP_4 = { 1882, 1}, - .SME2_UZP_3 = { 1883, 1}, - .SME2_UZP_4 = { 1884, 1}, - .TLBI_RPALOS = { 1885, 1}, - .TLBI_RPAOS = { 1886, 1}, - .AT_S1E1A = { 1887, 1}, - .DC_CIPAPA = { 1888, 1}, - .DC_CIGDPAPA = { 1889, 1}, - .TLBI_PAALL = { 1890, 1}, - .TLBI_PAALLOS = { 1891, 1}, - .AMX_LDX = { 1892, 1}, - .AMX_LDY = { 1893, 1}, - .AMX_STX = { 1894, 1}, - .AMX_STY = { 1895, 1}, - .AMX_LDZ = { 1896, 1}, - .AMX_STZ = { 1897, 1}, - .AMX_LDZI = { 1898, 1}, - .AMX_STZI = { 1899, 1}, - .AMX_EXTRX = { 1900, 1}, - .AMX_EXTRY = { 1901, 1}, - .AMX_FMA64 = { 1902, 1}, - .AMX_FMS64 = { 1903, 1}, - .AMX_FMA32 = { 1904, 1}, - .AMX_FMS32 = { 1905, 1}, - .AMX_MAC16 = { 1906, 1}, - .AMX_FMA16 = { 1907, 1}, - .AMX_FMS16 = { 1908, 1}, - .AMX_SET = { 1909, 1}, - .AMX_CLR = { 1910, 1}, - .AMX_VECINT = { 1911, 1}, - .AMX_VECFP = { 1912, 1}, - .AMX_MATINT = { 1913, 1}, - .AMX_MATFP = { 1914, 1}, - .AMX_GENLUT = { 1915, 1}, - .CPYP = { 1916, 1}, - .CPYM = { 1917, 1}, - .CPYE = { 1918, 1}, - .CPYFP = { 1919, 1}, - .CPYFM = { 1920, 1}, - .CPYFE = { 1921, 1}, - .SETP = { 1922, 1}, - .SETM = { 1923, 1}, - .SETE = { 1924, 1}, - .DC_IVAC = { 1925, 1}, - .DC_ISW = { 1926, 1}, - .DC_CSW = { 1927, 1}, - .DC_CISW = { 1928, 1}, - .DC_ZVA = { 1929, 1}, - .DC_CVAC = { 1930, 1}, - .DC_CVAU = { 1931, 1}, - .DC_CIVAC = { 1932, 1}, - .IC_IALLUIS = { 1933, 1}, - .IC_IALLU = { 1934, 1}, - .IC_IVAU = { 1935, 1}, - .AT_S1E1R = { 1936, 1}, - .AT_S1E1W = { 1937, 1}, - .AT_S1E0R = { 1938, 1}, - .AT_S1E0W = { 1939, 1}, - .AT_S1E2R = { 1940, 1}, - .AT_S1E2W = { 1941, 1}, - .AT_S1E3R = { 1942, 1}, - .AT_S1E3W = { 1943, 1}, - .AT_S12E1R = { 1944, 1}, - .AT_S12E1W = { 1945, 1}, - .AT_S12E0R = { 1946, 1}, - .AT_S12E0W = { 1947, 1}, - .TLBI_VMALLE1 = { 1948, 1}, - .TLBI_VMALLE1IS = { 1949, 1}, - .TLBI_VAE1 = { 1950, 1}, - .TLBI_VAE1IS = { 1951, 1}, - .TLBI_ASIDE1 = { 1952, 1}, - .TLBI_ASIDE1IS = { 1953, 1}, - .TLBI_VAAE1 = { 1954, 1}, - .TLBI_VAAE1IS = { 1955, 1}, - .TLBI_VALE1 = { 1956, 1}, - .TLBI_VALE1IS = { 1957, 1}, - .TLBI_VAALE1 = { 1958, 1}, - .TLBI_VAALE1IS = { 1959, 1}, - .TLBI_ALLE1 = { 1960, 1}, - .TLBI_ALLE1IS = { 1961, 1}, - .TLBI_ALLE2 = { 1962, 1}, - .TLBI_ALLE2IS = { 1963, 1}, - .TLBI_ALLE3 = { 1964, 1}, - .TLBI_ALLE3IS = { 1965, 1}, - .PRFM = { 1966, 1}, - .PRFUM = { 1967, 1}, - .PRFM_LIT = { 1968, 1}, - .MOV_REG = { 1969, 2}, - .MOV_BITMASK = { 1971, 2}, - .MVN = { 1973, 2}, - .NEG_SR = { 1975, 2}, - .NEGS = { 1977, 2}, - .CMP_SR = { 1979, 2}, - .CMP_ER = { 1981, 2}, - .CMP_IMM = { 1983, 2}, - .CMN_SR = { 1985, 2}, - .CMN_ER = { 1987, 2}, - .CMN_IMM = { 1989, 2}, - .TST_SR = { 1991, 2}, + .FCMLE = { 1153, 5}, + .FCMLT = { 1158, 5}, + .FACGE = { 1163, 5}, + .FACGT = { 1168, 5}, + .CMEQ = { 1173, 4}, + .CMGE = { 1177, 7}, + .CMGT = { 1184, 2}, + .CMHI = { 1186, 2}, + .CMHS = { 1188, 7}, + .CMLE = { 1195, 7}, + .CMLT = { 1202, 7}, + .CMTST = { 1209, 7}, + .AND_V = { 1216, 1}, + .ORR_V = { 1217, 1}, + .EOR_V = { 1218, 1}, + .BIC_V = { 1219, 1}, + .ORN_V = { 1220, 1}, + .MVN_V = { 1221, 0}, + .BIT = { 1221, 1}, + .BIF = { 1222, 1}, + .BSL = { 1223, 1}, + .SHL_V = { 1224, 7}, + .SQSHL_V = { 1231, 7}, + .SQSHLU = { 1238, 7}, + .SRSHL = { 1245, 7}, + .URSHL = { 1252, 7}, + .SSHR = { 1259, 7}, + .USHR = { 1266, 7}, + .SSRA = { 1273, 7}, + .USRA = { 1280, 7}, + .SRSHR = { 1287, 7}, + .URSHR = { 1294, 7}, + .SRSRA = { 1301, 7}, + .URSRA = { 1308, 7}, + .SSHL = { 1315, 7}, + .USHL = { 1322, 7}, + .SLI = { 1329, 7}, + .SRI = { 1336, 7}, + .SSHLL = { 1343, 3}, + .SSHLL2 = { 1346, 3}, + .USHLL = { 1349, 3}, + .USHLL2 = { 1352, 3}, + .SXTL = { 1355, 3}, + .SXTL2 = { 1358, 3}, + .UXTL = { 1361, 3}, + .UXTL2 = { 1364, 3}, + .SHRN = { 1367, 0}, + .SHRN2 = { 1367, 0}, + .RSHRN = { 1367, 0}, + .RSHRN2 = { 1367, 0}, + .SQSHRN = { 1367, 0}, + .SQSHRN2 = { 1367, 0}, + .UQSHRN = { 1367, 0}, + .UQSHRN2 = { 1367, 0}, + .SQRSHRN = { 1367, 0}, + .SQRSHRN2 = { 1367, 0}, + .UQRSHRN = { 1367, 0}, + .UQRSHRN2 = { 1367, 0}, + .SQSHRUN = { 1367, 0}, + .SQSHRUN2 = { 1367, 0}, + .SQRSHRUN = { 1367, 0}, + .SQRSHRUN2 = { 1367, 0}, + .DUP_V = { 1367, 0}, + .INS = { 1367, 0}, + .MOV_V = { 1367, 0}, + .EXT_V = { 1367, 0}, + .TBL = { 1367, 0}, + .TBX = { 1367, 0}, + .ZIP1 = { 1367, 7}, + .ZIP2 = { 1374, 7}, + .UZP1 = { 1381, 7}, + .UZP2 = { 1388, 7}, + .TRN1 = { 1395, 7}, + .TRN2 = { 1402, 7}, + .NOT_V = { 1409, 2}, + .RBIT_V = { 1411, 2}, + .REV16_V = { 1413, 2}, + .REV32_V = { 1415, 4}, + .REV64 = { 1419, 6}, + .CLS_V = { 1425, 6}, + .CLZ_V = { 1431, 6}, + .CNT = { 1437, 2}, + .URECPE_V = { 1439, 2}, + .URSQRTE_V = { 1441, 2}, + .MOVI = { 1443, 0}, + .MVNI = { 1443, 0}, + .FMOV_V_IMM = { 1443, 0}, + .LD1 = { 1443, 4}, + .LD2 = { 1447, 0}, + .LD3 = { 1447, 0}, + .LD4 = { 1447, 0}, + .ST1 = { 1447, 4}, + .ST2 = { 1451, 0}, + .ST3 = { 1451, 0}, + .ST4 = { 1451, 0}, + .LD1R = { 1451, 0}, + .LD2R = { 1451, 0}, + .LD3R = { 1451, 0}, + .LD4R = { 1451, 0}, + .LD1_LANE = { 1451, 0}, + .LD2_LANE = { 1451, 0}, + .LD3_LANE = { 1451, 0}, + .LD4_LANE = { 1451, 0}, + .ST1_LANE = { 1451, 0}, + .ST2_LANE = { 1451, 0}, + .ST3_LANE = { 1451, 0}, + .ST4_LANE = { 1451, 0}, + .LDR_V = { 1451, 5}, + .STR_V = { 1456, 5}, + .LDP_V = { 1461, 0}, + .STP_V = { 1461, 0}, + .LDUR_V = { 1461, 0}, + .STUR_V = { 1461, 0}, + .SVE_ADD_Z = { 1461, 4}, + .SVE_SUB_Z = { 1465, 4}, + .SVE_SQADD_Z = { 1469, 4}, + .SVE_UQADD_Z = { 1473, 4}, + .SVE_SQSUB_Z = { 1477, 4}, + .SVE_UQSUB_Z = { 1481, 4}, + .SVE_ADD_PRED = { 1485, 4}, + .SVE_SUB_PRED = { 1489, 4}, + .SVE_SUBR_PRED = { 1493, 4}, + .SVE_MUL_PRED = { 1497, 4}, + .SVE_SMULH_PRED = { 1501, 4}, + .SVE_UMULH_PRED = { 1505, 4}, + .SVE_SDIV_PRED = { 1509, 2}, + .SVE_UDIV_PRED = { 1511, 2}, + .SVE_SMAX_PRED = { 1513, 4}, + .SVE_UMAX_PRED = { 1517, 4}, + .SVE_SMIN_PRED = { 1521, 4}, + .SVE_UMIN_PRED = { 1525, 4}, + .SVE_SABD_PRED = { 1529, 4}, + .SVE_UABD_PRED = { 1533, 4}, + .SVE_AND_PRED = { 1537, 1}, + .SVE_ORR_PRED = { 1538, 1}, + .SVE_EOR_PRED = { 1539, 1}, + .SVE_BIC_PRED = { 1540, 1}, + .SVE_ASR_PRED = { 1541, 4}, + .SVE_LSL_PRED = { 1545, 4}, + .SVE_LSR_PRED = { 1549, 4}, + .SVE_ASRR_PRED = { 1553, 0}, + .SVE_LSLR_PRED = { 1553, 0}, + .SVE_LSRR_PRED = { 1553, 0}, + .SVE_ABS_PRED = { 1553, 4}, + .SVE_NEG_PRED = { 1557, 4}, + .SVE_CLS_PRED = { 1561, 4}, + .SVE_CLZ_PRED = { 1565, 4}, + .SVE_CNT_PRED = { 1569, 4}, + .SVE_MOV_PRED = { 1573, 0}, + .SVE_FADD_Z = { 1573, 3}, + .SVE_FSUB_Z = { 1576, 3}, + .SVE_FMUL_Z = { 1579, 3}, + .SVE_FRECPS = { 1582, 3}, + .SVE_FRSQRTS = { 1585, 3}, + .SVE_FTSMUL = { 1588, 3}, + .SVE_FADD_PRED = { 1591, 3}, + .SVE_FSUB_PRED = { 1594, 3}, + .SVE_FSUBR_PRED = { 1597, 0}, + .SVE_FMUL_PRED = { 1597, 3}, + .SVE_FDIV_PRED = { 1600, 3}, + .SVE_FDIVR_PRED = { 1603, 0}, + .SVE_FMAX_PRED = { 1603, 3}, + .SVE_FMIN_PRED = { 1606, 3}, + .SVE_FMAXNM_PRED = { 1609, 3}, + .SVE_FMINNM_PRED = { 1612, 3}, + .SVE_FABS_Z = { 1615, 3}, + .SVE_FNEG_Z = { 1618, 3}, + .SVE_FSQRT_Z = { 1621, 3}, + .SVE_FRECPX_Z = { 1624, 0}, + .SVE_FRINTN = { 1624, 0}, + .SVE_FRINTP = { 1624, 0}, + .SVE_FRINTM = { 1624, 0}, + .SVE_FRINTZ = { 1624, 0}, + .SVE_FRINTA = { 1624, 0}, + .SVE_FRINTX = { 1624, 0}, + .SVE_FRINTI = { 1624, 0}, + .SVE_FMLA = { 1624, 3}, + .SVE_FMLS = { 1627, 3}, + .SVE_FNMLA = { 1630, 3}, + .SVE_FNMLS = { 1633, 3}, + .SVE_AND_P = { 1636, 1}, + .SVE_BIC_P = { 1637, 1}, + .SVE_ORR_P = { 1638, 1}, + .SVE_EOR_P = { 1639, 1}, + .SVE_NAND_P = { 1640, 1}, + .SVE_NOR_P = { 1641, 1}, + .SVE_ORN_P = { 1642, 1}, + .SVE_SEL_P = { 1643, 1}, + .SVE_ANDS_P = { 1644, 1}, + .SVE_BICS_P = { 1645, 1}, + .SVE_ORRS_P = { 1646, 1}, + .SVE_EORS_P = { 1647, 1}, + .SVE_NANDS_P = { 1648, 0}, + .SVE_NORS_P = { 1648, 0}, + .SVE_ORNS_P = { 1648, 0}, + .SVE_NOT_P = { 1648, 0}, + .SVE_MOV_P = { 1648, 0}, + .SVE_MOVS_P = { 1648, 0}, + .SVE_PTRUE = { 1648, 1}, + .SVE_PTRUES = { 1649, 1}, + .SVE_PFALSE = { 1650, 1}, + .SVE_PFIRST = { 1651, 1}, + .SVE_PNEXT = { 1652, 1}, + .SVE_BRKA = { 1653, 0}, + .SVE_BRKB = { 1653, 0}, + .SVE_BRKAS = { 1653, 0}, + .SVE_BRKBS = { 1653, 0}, + .SVE_BRKPA = { 1653, 0}, + .SVE_BRKPB = { 1653, 0}, + .SVE_BRKN = { 1653, 0}, + .SVE_RDFFR = { 1653, 0}, + .SVE_WRFFR = { 1653, 0}, + .SVE_SETFFR = { 1653, 0}, + .SVE_CMPEQ = { 1653, 4}, + .SVE_CMPNE = { 1657, 4}, + .SVE_CMPGE = { 1661, 4}, + .SVE_CMPGT = { 1665, 4}, + .SVE_CMPLE = { 1669, 0}, + .SVE_CMPLT = { 1669, 0}, + .SVE_CMPHI = { 1669, 4}, + .SVE_CMPHS = { 1673, 4}, + .SVE_CMPLO = { 1677, 0}, + .SVE_CMPLS = { 1677, 0}, + .SVE_FCMEQ = { 1677, 0}, + .SVE_FCMNE = { 1677, 0}, + .SVE_FCMGE = { 1677, 0}, + .SVE_FCMGT = { 1677, 0}, + .SVE_FCMLE = { 1677, 0}, + .SVE_FCMLT = { 1677, 0}, + .SVE_FCMUO = { 1677, 0}, + .SVE_DUP_Z = { 1677, 4}, + .SVE_INSR = { 1681, 0}, + .SVE_REV_Z = { 1681, 4}, + .SVE_REV_P = { 1685, 1}, + .SVE_TBL = { 1686, 4}, + .SVE_ZIP1_Z = { 1690, 4}, + .SVE_ZIP2_Z = { 1694, 4}, + .SVE_UZP1_Z = { 1698, 4}, + .SVE_UZP2_Z = { 1702, 4}, + .SVE_TRN1_Z = { 1706, 4}, + .SVE_TRN2_Z = { 1710, 4}, + .SVE_ZIP1_P = { 1714, 1}, + .SVE_ZIP2_P = { 1715, 1}, + .SVE_UZP1_P = { 1716, 1}, + .SVE_UZP2_P = { 1717, 1}, + .SVE_TRN1_P = { 1718, 1}, + .SVE_TRN2_P = { 1719, 1}, + .SVE_CPY_Z = { 1720, 0}, + .SVE_COMPACT = { 1720, 0}, + .SVE_EXT_Z = { 1720, 0}, + .SVE_LD1B = { 1720, 1}, + .SVE_LD1H = { 1721, 1}, + .SVE_LD1W = { 1722, 1}, + .SVE_LD1D = { 1723, 1}, + .SVE_LD1SB = { 1724, 1}, + .SVE_LD1SH = { 1725, 1}, + .SVE_LD1SW = { 1726, 1}, + .SVE_ST1B = { 1727, 1}, + .SVE_ST1H = { 1728, 1}, + .SVE_ST1W = { 1729, 1}, + .SVE_ST1D = { 1730, 1}, + .SVE_LDR_Z = { 1731, 1}, + .SVE_STR_Z = { 1732, 1}, + .SVE_LDR_P = { 1733, 1}, + .SVE_STR_P = { 1734, 1}, + .SVE_LDFF1B = { 1735, 1}, + .SVE_LDFF1H = { 1736, 1}, + .SVE_LDFF1W = { 1737, 1}, + .SVE_LDFF1D = { 1738, 1}, + .SVE_WHILEGE = { 1739, 1}, + .SVE_WHILEGT = { 1740, 1}, + .SVE_WHILELE = { 1741, 1}, + .SVE_WHILELT = { 1742, 1}, + .SVE_WHILEHI = { 1743, 1}, + .SVE_WHILEHS = { 1744, 1}, + .SVE_WHILELO = { 1745, 1}, + .SVE_WHILELS = { 1746, 1}, + .SVE_SQRDMLAH = { 1747, 4}, + .SVE_SQRDMLSH = { 1751, 4}, + .SVE_ADCLB = { 1755, 2}, + .SVE_ADCLT = { 1757, 2}, + .SVE_SBCLB = { 1759, 2}, + .SVE_SBCLT = { 1761, 2}, + .SVE_TBL2 = { 1763, 1}, + .SVE_TBX = { 1764, 1}, + .SVE_AESE = { 1765, 1}, + .SVE_AESD = { 1766, 1}, + .SVE_AESMC = { 1767, 1}, + .SVE_AESIMC = { 1768, 1}, + .SVE_BCAX_Z = { 1769, 0}, + .SVE_XAR_Z = { 1769, 0}, + .SVE_EOR3_Z = { 1769, 0}, + .SVE_MATCH = { 1769, 2}, + .SVE_NMATCH = { 1771, 2}, + .SVE_HISTCNT = { 1773, 2}, + .SVE_HISTSEG = { 1775, 1}, + .SME_SMSTART = { 1776, 1}, + .SME_SMSTOP = { 1777, 1}, + .SME_RDSVL = { 1778, 1}, + .SME_ADDHA = { 1779, 0}, + .SME_ADDVA = { 1779, 0}, + .SME_ZERO = { 1779, 1}, + .SME_FMOPA = { 1780, 1}, + .SME_FMOPS = { 1781, 1}, + .SME_BFMOPA = { 1782, 1}, + .SME_BFMOPS = { 1783, 1}, + .SME_SMOPA = { 1784, 2}, + .SME_SMOPS = { 1786, 2}, + .SME_UMOPA = { 1788, 2}, + .SME_UMOPS = { 1790, 2}, + .SME_USMOPA = { 1792, 1}, + .SME_SUMOPA = { 1793, 1}, + .SME_MOVA_TO_Z = { 1794, 0}, + .SME_MOVA_TO_ZA = { 1794, 0}, + .SME_LD1B_ZA = { 1794, 0}, + .SME_LD1H_ZA = { 1794, 0}, + .SME_LD1W_ZA = { 1794, 0}, + .SME_LD1D_ZA = { 1794, 0}, + .SME_LD1Q_ZA = { 1794, 0}, + .SME_ST1B_ZA = { 1794, 0}, + .SME_ST1H_ZA = { 1794, 0}, + .SME_ST1W_ZA = { 1794, 0}, + .SME_ST1D_ZA = { 1794, 0}, + .SME_ST1Q_ZA = { 1794, 0}, + .SME_LDR_ZA = { 1794, 1}, + .SME_STR_ZA = { 1795, 1}, + .SVE_FMLA_IDX_H = { 1796, 1}, + .SVE_FMLA_IDX_S = { 1797, 1}, + .SVE_FMLA_IDX_D = { 1798, 1}, + .SVE_FMLS_IDX_H = { 1799, 1}, + .SVE_FMLS_IDX_S = { 1800, 1}, + .SVE_FMLS_IDX_D = { 1801, 1}, + .SVE_LD1B_GATHER_S = { 1802, 1}, + .SVE_LD1B_GATHER_D = { 1803, 1}, + .SVE_LD1H_GATHER_S = { 1804, 1}, + .SVE_LD1H_GATHER_D = { 1805, 1}, + .SVE_LD1W_GATHER_S = { 1806, 1}, + .SVE_LD1W_GATHER_D = { 1807, 1}, + .SVE_LD1D_GATHER_D = { 1808, 1}, + .SVE_LD1SB_GATHER_S = { 1809, 1}, + .SVE_LD1SB_GATHER_D = { 1810, 1}, + .SVE_LD1SH_GATHER_S = { 1811, 1}, + .SVE_LD1SH_GATHER_D = { 1812, 1}, + .SVE_LD1SW_GATHER_D = { 1813, 1}, + .SVE_ST1B_SCATTER_S = { 1814, 1}, + .SVE_ST1B_SCATTER_D = { 1815, 1}, + .SVE_ST1H_SCATTER_S = { 1816, 1}, + .SVE_ST1H_SCATTER_D = { 1817, 1}, + .SVE_ST1W_SCATTER_S = { 1818, 1}, + .SVE_ST1W_SCATTER_D = { 1819, 1}, + .SVE_ST1D_SCATTER_D = { 1820, 1}, + .SME_LD1B_TILE = { 1821, 1}, + .SME_LD1H_TILE = { 1822, 1}, + .SME_LD1W_TILE = { 1823, 1}, + .SME_LD1D_TILE = { 1824, 1}, + .SME_LD1Q_TILE = { 1825, 1}, + .SME_ST1B_TILE = { 1826, 1}, + .SME_ST1H_TILE = { 1827, 1}, + .SME_ST1W_TILE = { 1828, 1}, + .SME_ST1D_TILE = { 1829, 1}, + .SME_ST1Q_TILE = { 1830, 1}, + .SME_MOVA_Z_FROM_TILE = { 1831, 1}, + .SME_MOVA_TILE_FROM_Z = { 1832, 1}, + .FCMLA_4H = { 1833, 1}, + .FCMLA_8H = { 1834, 1}, + .FCMLA_4S = { 1835, 1}, + .FCMLA_2D = { 1836, 1}, + .FCADD_4H = { 1837, 1}, + .FCADD_8H = { 1838, 1}, + .FCADD_4S = { 1839, 1}, + .FCADD_2D = { 1840, 1}, + .SVE_PRFB = { 1841, 1}, + .SVE_PRFH = { 1842, 1}, + .SVE_PRFW = { 1843, 1}, + .SVE_PRFD = { 1844, 1}, + .SVE_LDNT1B = { 1845, 1}, + .SVE_LDNT1H = { 1846, 1}, + .SVE_LDNT1W = { 1847, 1}, + .SVE_LDNT1D = { 1848, 1}, + .SVE_STNT1B = { 1849, 1}, + .SVE_STNT1H = { 1850, 1}, + .SVE_STNT1W = { 1851, 1}, + .SVE_STNT1D = { 1852, 1}, + .SVE_EXT = { 1853, 1}, + .SVE_SPLICE = { 1854, 1}, + .SVE_INDEX_II = { 1855, 1}, + .SVE_INDEX_IR = { 1856, 1}, + .SVE_INDEX_RI = { 1857, 1}, + .SVE_INDEX_RR = { 1858, 1}, + .SVE_BSL = { 1859, 1}, + .SVE_BSL1N = { 1860, 1}, + .SVE_BSL2N = { 1861, 1}, + .SVE_NBSL = { 1862, 1}, + .SVE_PMUL_VEC = { 1863, 1}, + .SVE_PMULLB = { 1864, 1}, + .SVE_PMULLT = { 1865, 1}, + .SVE_BFCVT = { 1866, 1}, + .SVE_BFCVTNT = { 1867, 1}, + .LDRAA = { 1868, 1}, + .LDRAB = { 1869, 1}, + .LDRAA_PRE = { 1870, 1}, + .LDRAB_PRE = { 1871, 1}, + .TSTART = { 1872, 1}, + .TCOMMIT = { 1873, 1}, + .TCANCEL = { 1874, 1}, + .TTEST = { 1875, 1}, + .WFET = { 1876, 1}, + .WFIT = { 1877, 1}, + .BC_COND = { 1878, 1}, + .UXTB = { 1879, 1}, + .UXTH = { 1880, 1}, + .UXTW = { 1881, 1}, + .SXTB = { 1882, 1}, + .SXTH = { 1883, 1}, + .SXTW = { 1884, 1}, + .ADC = { 1885, 2}, + .ADCS = { 1887, 2}, + .SBC = { 1889, 2}, + .SBCS = { 1891, 2}, + .NGC = { 1893, 2}, + .NGCS = { 1895, 2}, + .LDAPUR = { 1897, 2}, + .STLUR = { 1899, 2}, + .LDAPURB = { 1901, 1}, + .STLURB = { 1902, 1}, + .LDAPURH = { 1903, 1}, + .STLURH = { 1904, 1}, + .LDAPURSB = { 1905, 2}, + .LDAPURSH = { 1907, 2}, + .LDAPURSW = { 1909, 1}, + .SVE_BFADD = { 1910, 1}, + .SVE_BFSUB = { 1911, 1}, + .SVE_BFMUL = { 1912, 1}, + .SVE_BFMLA = { 1913, 1}, + .SVE_BFMLS = { 1914, 1}, + .SB = { 1915, 1}, + .CSDB = { 1916, 1}, + .DGH = { 1917, 1}, + .PSB_CSYNC = { 1918, 1}, + .TSB_CSYNC = { 1919, 1}, + .BTI_J = { 1920, 1}, + .BTI_C = { 1921, 1}, + .BTI_JC = { 1922, 1}, + .MOV_V_ALIAS = { 1923, 2}, + .NOT_V_ALIAS = { 1925, 2}, + .LSL_IMM = { 1927, 2}, + .LSR_IMM = { 1929, 2}, + .ASR_IMM = { 1931, 2}, + .ROR_IMM = { 1933, 2}, + .SVE_BFADD_UNPRED = { 1935, 1}, + .SVE_BFSUB_UNPRED = { 1936, 1}, + .SVE_BFMUL_UNPRED = { 1937, 1}, + .SVE_BFCLAMP = { 1938, 1}, + .SVE_BFMAXNM = { 1939, 1}, + .SVE_BFMINNM = { 1940, 1}, + .SME2_LUTI2_B = { 1941, 1}, + .SME2_LUTI4_B = { 1942, 1}, + .SME2_LD1B_X2 = { 1943, 1}, + .SME2_LD1H_X2 = { 1944, 1}, + .SME2_LD1W_X2 = { 1945, 1}, + .SME2_LD1D_X2 = { 1946, 1}, + .SME2_LD1B_X4 = { 1947, 1}, + .SME2_LD1H_X4 = { 1948, 1}, + .SME2_LD1W_X4 = { 1949, 1}, + .SME2_LD1D_X4 = { 1950, 1}, + .SME2_ST1B_X2 = { 1951, 1}, + .SME2_ST1H_X2 = { 1952, 1}, + .SME2_ST1W_X2 = { 1953, 1}, + .SME2_ST1D_X2 = { 1954, 1}, + .SME2_ST1B_X4 = { 1955, 1}, + .SME2_ST1H_X4 = { 1956, 1}, + .SME2_ST1W_X4 = { 1957, 1}, + .SME2_ST1D_X4 = { 1958, 1}, + .SME2_ZIP_3 = { 1959, 1}, + .SME2_ZIP_4 = { 1960, 1}, + .SME2_UZP_3 = { 1961, 1}, + .SME2_UZP_4 = { 1962, 1}, + .TLBI_RPALOS = { 1963, 1}, + .TLBI_RPAOS = { 1964, 1}, + .AT_S1E1A = { 1965, 1}, + .DC_CIPAPA = { 1966, 1}, + .DC_CIGDPAPA = { 1967, 1}, + .TLBI_PAALL = { 1968, 1}, + .TLBI_PAALLOS = { 1969, 1}, + .AMX_LDX = { 1970, 1}, + .AMX_LDY = { 1971, 1}, + .AMX_STX = { 1972, 1}, + .AMX_STY = { 1973, 1}, + .AMX_LDZ = { 1974, 1}, + .AMX_STZ = { 1975, 1}, + .AMX_LDZI = { 1976, 1}, + .AMX_STZI = { 1977, 1}, + .AMX_EXTRX = { 1978, 1}, + .AMX_EXTRY = { 1979, 1}, + .AMX_FMA64 = { 1980, 1}, + .AMX_FMS64 = { 1981, 1}, + .AMX_FMA32 = { 1982, 1}, + .AMX_FMS32 = { 1983, 1}, + .AMX_MAC16 = { 1984, 1}, + .AMX_FMA16 = { 1985, 1}, + .AMX_FMS16 = { 1986, 1}, + .AMX_SET = { 1987, 1}, + .AMX_CLR = { 1988, 1}, + .AMX_VECINT = { 1989, 1}, + .AMX_VECFP = { 1990, 1}, + .AMX_MATINT = { 1991, 1}, + .AMX_MATFP = { 1992, 1}, + .AMX_GENLUT = { 1993, 1}, + .CPYP = { 1994, 1}, + .CPYM = { 1995, 1}, + .CPYE = { 1996, 1}, + .CPYFP = { 1997, 1}, + .CPYFM = { 1998, 1}, + .CPYFE = { 1999, 1}, + .SETP = { 2000, 1}, + .SETM = { 2001, 1}, + .SETE = { 2002, 1}, + .DC_IVAC = { 2003, 1}, + .DC_ISW = { 2004, 1}, + .DC_CSW = { 2005, 1}, + .DC_CISW = { 2006, 1}, + .DC_ZVA = { 2007, 1}, + .DC_CVAC = { 2008, 1}, + .DC_CVAU = { 2009, 1}, + .DC_CIVAC = { 2010, 1}, + .IC_IALLUIS = { 2011, 1}, + .IC_IALLU = { 2012, 1}, + .IC_IVAU = { 2013, 1}, + .AT_S1E1R = { 2014, 1}, + .AT_S1E1W = { 2015, 1}, + .AT_S1E0R = { 2016, 1}, + .AT_S1E0W = { 2017, 1}, + .AT_S1E2R = { 2018, 1}, + .AT_S1E2W = { 2019, 1}, + .AT_S1E3R = { 2020, 1}, + .AT_S1E3W = { 2021, 1}, + .AT_S12E1R = { 2022, 1}, + .AT_S12E1W = { 2023, 1}, + .AT_S12E0R = { 2024, 1}, + .AT_S12E0W = { 2025, 1}, + .TLBI_VMALLE1 = { 2026, 1}, + .TLBI_VMALLE1IS = { 2027, 1}, + .TLBI_VAE1 = { 2028, 1}, + .TLBI_VAE1IS = { 2029, 1}, + .TLBI_ASIDE1 = { 2030, 1}, + .TLBI_ASIDE1IS = { 2031, 1}, + .TLBI_VAAE1 = { 2032, 1}, + .TLBI_VAAE1IS = { 2033, 1}, + .TLBI_VALE1 = { 2034, 1}, + .TLBI_VALE1IS = { 2035, 1}, + .TLBI_VAALE1 = { 2036, 1}, + .TLBI_VAALE1IS = { 2037, 1}, + .TLBI_ALLE1 = { 2038, 1}, + .TLBI_ALLE1IS = { 2039, 1}, + .TLBI_ALLE2 = { 2040, 1}, + .TLBI_ALLE2IS = { 2041, 1}, + .TLBI_ALLE3 = { 2042, 1}, + .TLBI_ALLE3IS = { 2043, 1}, + .PRFM = { 2044, 1}, + .PRFUM = { 2045, 1}, + .PRFM_LIT = { 2046, 1}, + .MOV_REG = { 2047, 2}, + .MOV_BITMASK = { 2049, 2}, + .MVN = { 2051, 2}, + .NEG_SR = { 2053, 2}, + .NEGS = { 2055, 2}, + .CMP_SR = { 2057, 2}, + .CMP_ER = { 2059, 2}, + .CMP_IMM = { 2061, 2}, + .CMN_SR = { 2063, 2}, + .CMN_ER = { 2065, 2}, + .CMN_IMM = { 2067, 2}, + .TST_SR = { 2069, 2}, } diff --git a/core/rexcode/arm64/tablegen/specgen.lua b/core/rexcode/arm64/tablegen/specgen.lua index 3b3f0aa67..227b5d37c 100644 --- a/core/rexcode/arm64/tablegen/specgen.lua +++ b/core/rexcode/arm64/tablegen/specgen.lua @@ -84,6 +84,31 @@ local function emit(mnem, llvm, enc_str, feature, variants) return string.format("\t.%s = {\n%s\n\t},", mnem, table.concat(rows, "\n")) end +-- Compare-against-zero: a 2-register shape whose asm carries a literal #0 +-- (integer) or #0.0 (FP) third operand that emits no bits. Modeled with two +-- register operands (VD, VN); mask derived by varying the registers only. +local function emit_cmp0(mnem, llvm, fp, arr) + local rows = {} + local suf = fp and ", #0.0" or ", #0" + for _, a in ipairs(arr) do + local function mk(r) return string.format("%s v%d.%s, v%d.%s%s", llvm, r, ARR[a].asm, r, ARR[a].asm, suf) end + local w0, w31 = word(mk(0)), word(mk(31)) + if w0 and w31 then + local mask = bit.band(bit.bnot(bit.bxor(w0, w31)), 0xFFFFFFFF) + local f = ARR[a].feat or "NEON" + rows[#rows+1] = string.format( + "\t\t{.%s, {.%s, .%s, .NONE, .NONE}, {.VD, .VN, .NONE, .NONE}, 0x%s, 0x%s, .%s, {}},", + mnem, ARR[a].vt, ARR[a].vt, bit.tohex(w0):upper(), bit.tohex(mask):upper(), f) + 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 + -- ---- Uniform shapes (all operands share one arrangement) ------------------- local VD_VN_VM = padded({".VD",".VN",".VM"}, 3) local VD_VN = padded({".VD",".VN"}, 2) @@ -101,6 +126,9 @@ local UNIFORM = { {"ADDP_V","addp"},{"SMAXP","smaxp"},{"SMINP","sminp"},{"UMAXP","umaxp"},{"UMINP","uminp"}, {"SSHL","sshl"},{"USHL","ushl"},{"SRSHL","srshl"},{"URSHL","urshl"}, }}, + { title="permute (ZIP/UZP/TRN)", enc=VD_VN_VM, nreg=3, items={ + {"ZIP1","zip1"},{"ZIP2","zip2"},{"UZP1","uzp1"},{"UZP2","uzp2"},{"TRN1","trn1"},{"TRN2","trn2"}, + }}, { title="two-register misc", enc=VD_VN, nreg=2, items={ {"ABS_V","abs"},{"NEG_V","neg"}, {"NOT_V","not"},{"RBIT_V","rbit"}, @@ -168,6 +196,10 @@ local FCVTN_LO = {{"4HF","4S"},{"2S","2D"}} local FCVTN_HI = {{"8HF","4S"},{"4S","2D"}} local FCVTXN_LO = {{"2S","2D"}} local FCVTXN_HI = {{"4S","2D"}} +-- SXTL/UXTL widen (= SSHLL/USHLL #0): Vd., Vn.; shift is implicit +-- in the static bits, so this is a plain 2-register form (no shift operand). +local SXTL_LO = {{"8H","8B"},{"4S","4H"},{"2D","2S"}} +local SXTL_HI = {{"8H","16B"},{"4S","8H"},{"2D","4S"}} local DIFF = { { title="three-different (long)", enc=VD_VN_VM, items={ @@ -203,6 +235,10 @@ local DIFF = { {"UQXTN","uqxtn",XTN_LO},{"UQXTN2","uqxtn2",XTN_HI}, {"SQXTUN","sqxtun",XTN_LO},{"SQXTUN2","sqxtun2",XTN_HI}, }}, + { title="two-register widen (SXTL/UXTL = SSHLL/USHLL #0)", enc=VD_VN, items={ + {"SXTL","sxtl",SXTL_LO},{"SXTL2","sxtl2",SXTL_HI}, + {"UXTL","uxtl",SXTL_LO},{"UXTL2","uxtl2",SXTL_HI}, + }}, { title="two-register pairwise long", enc=VD_VN, items={ {"SADDLP","saddlp",PLONG},{"UADDLP","uaddlp",PLONG}, {"SADALP","sadalp",PLONG},{"UADALP","uadalp",PLONG}, @@ -231,6 +267,17 @@ for _, fam in ipairs(DIFF) do sections[#sections+1] = "\t// Advanced SIMD "..fam.title..".\n" .. table.concat(blk, "\n") end +-- ---- Compare against zero (integer + floating-point) ----------------------- +do + local FP_ARR = {"2S","4S","2D","4HF","8HF"} + local blk = {} + for _, b in ipairs({ + emit_cmp0("CMLE","cmle",false,ALL_ARR), emit_cmp0("CMLT","cmlt",false,ALL_ARR), + emit_cmp0("FCMLE","fcmle",true,FP_ARR), emit_cmp0("FCMLT","fcmlt",true,FP_ARR), + }) do blk[#blk+1] = b end + sections[#sections+1] = "\t// Advanced SIMD compare against zero.\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 = diff --git a/core/rexcode/arm64/tables/arm64.encode_forms.bin b/core/rexcode/arm64/tables/arm64.encode_forms.bin index 0f2b1775442c03abfcb67d9d8a0da5ee5fe5ff1c..481e6c91c684baaa0b0378606fcb6ed667c65fc2 100644 GIT binary patch delta 1586 zcmdn8o$1VBrVS!d^~y}b!VC<`Dhvz^Hx}qI{Q3W%i9wl3M1%n*mIo6P6N8C8fQyNX z!^D2*fz+`xC^Jb&FhKSG0IOqXP(j%7VgVmW9TS5J#11!*#V;24!35!!ym$Z?gIn_A z2Us)6K)59@et^_%7L00Us@GxS=ZD%oLqQK>qz;pS00YE5GZet?VPeo>5)_1qCFsG_ z2?;Sk)g{2y!NX<-ENpZj?glw~#sauHu(RvIg0R5RML1@K0@&S547v!%tWW^C`#(qw z?wAz`aCLCUtVn>XgF9vgED&`Oj#;t5PaNVCT_&(=K#o}f4#dq9W3svHeVK${fwP2z zAEMNkNdy)UO9bFzVz30UL;))1$0P&`#3da55WRj(BCr5kA^;Z?gC(3L3Q#eBh`r#z zS;C_GFrjy#dG;!^My+hKi*#@$>UDD66P4Fjz3~)ieBg@Slkx zok>7I04C@M6B85^go-)v!Ni1wgkWNDb;82JP_YKMIuQ{Om>680n3xz;>;P0OqaNX! z3I?d=41{AU7+?yS;Et()IVOV%?wAS(xH`CFDqxPuV1hfQq5-ZB;+T3>28IflYcdgz zk$^cS6X6&Mm}4>#j*);lCKKTp37BItnc$9*fH@`;;TVYqKZbg6@MkhXT%*dsAOUks z7Q!(RFvnye91{U^Ocug15irMOAsiC{b4(V(F%dAwWHHslgC+tNG+7A8M8F)Ajc|+x z%rV&r$7sMDlZ|kU2Fx+p2*+r^9Fq-mOg#gG2Fx|th@jDcIVKz77!8&*ICI{h|j01j~zoqXp1^~NK BhMxcc delta 24 gcmX?em}$#)rVS!do9{$5Fl{c0%i!KDlDESc0FHPHpa1{> diff --git a/core/rexcode/arm64/tables/arm64.encode_runs.bin b/core/rexcode/arm64/tables/arm64.encode_runs.bin index ae8cc8eb5f38210327138cbf3f07939eb04b99d5..711fb1dcb3d46de32fe75ab4d165d6bf9fd59f50 100644 GIT binary patch literal 8960 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 literal 8960 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 diff --git a/core/rexcode/arm64/tables/arm64.entries.bin b/core/rexcode/arm64/tables/arm64.entries.bin index eaa6d036798ee6ab3eccb49493ac06ed3587a814..e8bf52e241f61ed1ec150fdf276d5208b80a1a57 100644 GIT binary patch delta 6621 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 diff --git a/core/rexcode/arm64/tables/arm64.idx_op0.bin b/core/rexcode/arm64/tables/arm64.idx_op0.bin index 7c84ff8a08b83a2c883d1376e789c54b5b4ecdfb..78756985500577dd1b519bcef9c8077293232ae0 100644 GIT binary patch delta 39 vcmZ>8m>{Qggjs-1fI)#xiNT32iD3zwD8o*+X$=1C5e&=Oc^S5_r!oKlnuiC? delta 39 ucmZ>8m>{QA#(aoXfZ-CW62lkPB!)0HQHE@`X$*|)5e$*+ybNjVsSE(O`UngF