// SPDX-FileCopyrightText: 2021 Rot127 <unisono@quyllur.org>
// SPDX-License-Identifier: LGPL-3.0-only

// LLVM commit: 96e220e6886868d6663d966ecc396befffc355e7
// LLVM commit date: 2022-01-05 11:01:52 +0000 (ISO 8601 format)
// Date of code generation: 2022-04-22 13:29:27+02:00
//========================================
// The following code is generated.
// Do not edit. Repository of code generator:
// https://github.com/rizinorg/rz-hexagon

#include <stdio.h>
#include <stdbool.h>
#include <rz_types.h>
#include <rz_util.h>
#include <rz_util/rz_hex.h>
#include <rz_analysis.h>
#include "hexagon.h"
#include "hexagon_insn.h"
#include "hexagon_arch.h"

#if ASAN && !defined(__clang__)
#define NO_OPT_IF_ASAN __attribute__((optimize(0)))
#else
#define NO_OPT_IF_ASAN
#endif

#define HEX_OP_MASKS_MAX 4

typedef enum {
	HEX_OP_TEMPLATE_TYPE_NONE = 0,
	HEX_OP_TEMPLATE_TYPE_IMM = 1,
	HEX_OP_TEMPLATE_TYPE_IMM_CONST = 2,
	HEX_OP_TEMPLATE_TYPE_REG = 3,
	HEX_OP_TEMPLATE_TYPE_MASK = 3
} HexOpTemplateType;

typedef enum {
	// 1 << 0 and 1 << 1 reserved by HexOpTemplateType
	// for HEX_OP_TEMPLATE_TYPE_REG:
	HEX_OP_TEMPLATE_FLAG_REG_OUT = 1 << 2,
	HEX_OP_TEMPLATE_FLAG_REG_PAIR = 1 << 3,
	HEX_OP_TEMPLATE_FLAG_REG_QUADRUPLE = 1 << 4,
	HEX_OP_TEMPLATE_FLAG_REG_N_REG = 1 << 5,
	// for HEX_OP_TEMPLATE_TYPE_IMM:
	HEX_OP_TEMPLATE_FLAG_IMM_SIGNED = 1 << 2,
	HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE = 1 << 3,
	HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE = 1 << 4,
	HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH = 1 << 5
} HexOpTemplateFlag;

// Note:
// The structs below are using ut8 instead of direct enum types
// where possible to optimize for size. Members are also ordered
// deliberately to make them well packed.
// Keep this in mind when changing anything here!

typedef struct {
	ut8 bits; // number of bits this part has
	ut8 shift; // index of the first bit in the instruction where this part starts
} HexOpMask;

typedef struct {
	ut8 info; // HexOpTemplateType | HexOpTemplateFlag
	ut8 syntax; // offset into HexInsnTemplate.syntax where to insert this op
	HexOpMask masks[HEX_OP_MASKS_MAX];
	union {
		ut8 imm_scale;
		ut8 reg_cls; // HexRegClass
	};
} HexOpTemplate;

typedef enum {
	HEX_INSN_TEMPLATE_FLAG_CALL = 1 << 0,
	HEX_INSN_TEMPLATE_FLAG_PREDICATED = 1 << 1,
	HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT = 1 << 2,
	HEX_INSN_TEMPLATE_FLAG_LOOP_BEGIN = 1 << 3,
	HEX_INSN_TEMPLATE_FLAG_LOOP_0 = 1 << 4,
	HEX_INSN_TEMPLATE_FLAG_LOOP_1 = 1 << 5
} HexInsnTemplateFlag;

typedef struct {
	struct {
		ut32 mask;
		ut32 op;
	} encoding;
	enum HEX_INS id;
	HexOpTemplate ops[HEX_MAX_OPERANDS];
	ut8 pred; // HexPred
	ut8 cond; // RzTypeCond
	ut8 flags; // HexInsnTemplateFlag
	const char *syntax;
	_RzAnalysisOpType type;
} HexInsnTemplate;

static const HexInsnTemplate templates_duplex_0x0[] = {
	{
		// 0000IIIISSSSDDDDEE00iiiissssdddd | RD = memw(RS+II) ; Rd = memw(Rs+Ii)
		.encoding = { .mask = 0xf000f000, .op = 0x0 },
		.id = HEX_INS_X2_AUTOJOIN_SL1_LOADRI_IO_SL1_LOADRI_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 24 } }, .imm_scale = 2, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 21 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 8 } }, .imm_scale = 2, .syntax = 22 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memw(+) ;  = memw(+)",
	},
	{
		// 0000IIIISSSSDDDDEE01iiiissssdddd | RD = memw(RS+II) ; Rd = memub(Rs+Ii)
		.encoding = { .mask = 0xf000f000, .op = 0x1000 },
		.id = HEX_INS_X2_AUTOJOIN_SL1_LOADRI_IO_SL1_LOADRUB_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 24 } }, .imm_scale = 2, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 22 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 8 } }, .syntax = 23 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memw(+) ;  = memub(+)",
	},
	{
		// 0001IIIISSSSDDDDEE01iiiissssdddd | RD = memub(RS+II) ; Rd = memub(Rs+Ii)
		.encoding = { .mask = 0xf000f000, .op = 0x10001000 },
		.id = HEX_INS_X2_AUTOJOIN_SL1_LOADRUB_IO_SL1_LOADRUB_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 24 } }, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 23 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 8 } }, .syntax = 24 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memub(+) ;  = memub(+)",
	},
	{ { 0 } },
};

static const HexInsnTemplate templates_duplex_0x1[] = {
	{
		// 0000iiiissssddddEE11111100000000 | Rd = memw(Rs+Ii) ; deallocframe
		.encoding = { .mask = 0xf000ffff, .op = 0x3f00 },
		.id = HEX_INS_X2_AUTOJOIN_SL1_LOADRI_IO_SL2_DEALLOCFRAME,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 24 } }, .imm_scale = 2, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memw(+) ; deallocframe",
	},
	{
		// 0001iiiissssddddEE11111100000000 | Rd = memub(Rs+Ii) ; deallocframe
		.encoding = { .mask = 0xf000ffff, .op = 0x10003f00 },
		.id = HEX_INS_X2_AUTOJOIN_SL1_LOADRUB_IO_SL2_DEALLOCFRAME,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 24 } }, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memub(+) ; deallocframe",
	},
	{
		// 0000iiiissssddddEE11111111000000 | Rd = memw(Rs+Ii) ; jumpr r31
		.encoding = { .mask = 0xf000ffff, .op = 0x3fc0 },
		.id = HEX_INS_X2_AUTOJOIN_SL1_LOADRI_IO_SL2_JUMPR31,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 24 } }, .imm_scale = 2, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_RET,
		.syntax = " = memw(+) ; jumpr R31",
	},
	{
		// 0001iiiissssddddEE11111111000000 | Rd = memub(Rs+Ii) ; jumpr r31
		.encoding = { .mask = 0xf000ffff, .op = 0x10003fc0 },
		.id = HEX_INS_X2_AUTOJOIN_SL1_LOADRUB_IO_SL2_JUMPR31,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 24 } }, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_RET,
		.syntax = " = memub(+) ; jumpr R31",
	},
	{
		// 0000iiiissssddddEE11111111000101 | Rd = memw(Rs+Ii) ; if (!p0) jumpr r31
		.encoding = { .mask = 0xf000ffff, .op = 0x3fc5 },
		.id = HEX_INS_X2_AUTOJOIN_SL1_LOADRI_IO_SL2_JUMPR31_F,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 24 } }, .imm_scale = 2, .syntax = 9 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = memw(+) ; if (!P0) jumpr R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 0001iiiissssddddEE11111111000101 | Rd = memub(Rs+Ii) ; if (!p0) jumpr r31
		.encoding = { .mask = 0xf000ffff, .op = 0x10003fc5 },
		.id = HEX_INS_X2_AUTOJOIN_SL1_LOADRUB_IO_SL2_JUMPR31_F,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 24 } }, .syntax = 10 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = memub(+) ; if (!P0) jumpr R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 0000iiiissssddddEE11111111000111 | Rd = memw(Rs+Ii) ; if (!p0.new) jumpr:nt r31
		.encoding = { .mask = 0xf000ffff, .op = 0x3fc7 },
		.id = HEX_INS_X2_AUTOJOIN_SL1_LOADRI_IO_SL2_JUMPR31_FNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 24 } }, .imm_scale = 2, .syntax = 9 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = memw(+) ; if (!P0.new) jumpr:nt R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 0001iiiissssddddEE11111111000111 | Rd = memub(Rs+Ii) ; if (!p0.new) jumpr:nt r31
		.encoding = { .mask = 0xf000ffff, .op = 0x10003fc7 },
		.id = HEX_INS_X2_AUTOJOIN_SL1_LOADRUB_IO_SL2_JUMPR31_FNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 24 } }, .syntax = 10 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = memub(+) ; if (!P0.new) jumpr:nt R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 0000iiiissssddddEE11111111000100 | Rd = memw(Rs+Ii) ; if (p0) jumpr r31
		.encoding = { .mask = 0xf000ffff, .op = 0x3fc4 },
		.id = HEX_INS_X2_AUTOJOIN_SL1_LOADRI_IO_SL2_JUMPR31_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 24 } }, .imm_scale = 2, .syntax = 9 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = memw(+) ; if (P0) jumpr R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 0001iiiissssddddEE11111111000100 | Rd = memub(Rs+Ii) ; if (p0) jumpr r31
		.encoding = { .mask = 0xf000ffff, .op = 0x10003fc4 },
		.id = HEX_INS_X2_AUTOJOIN_SL1_LOADRUB_IO_SL2_JUMPR31_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 24 } }, .syntax = 10 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = memub(+) ; if (P0) jumpr R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 0000iiiissssddddEE11111111000110 | Rd = memw(Rs+Ii) ; if (p0.new) jumpr:nt r31
		.encoding = { .mask = 0xf000ffff, .op = 0x3fc6 },
		.id = HEX_INS_X2_AUTOJOIN_SL1_LOADRI_IO_SL2_JUMPR31_TNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 24 } }, .imm_scale = 2, .syntax = 9 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = memw(+) ; if (P0.new) jumpr:nt R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 0001iiiissssddddEE11111111000110 | Rd = memub(Rs+Ii) ; if (p0.new) jumpr:nt r31
		.encoding = { .mask = 0xf000ffff, .op = 0x10003fc6 },
		.id = HEX_INS_X2_AUTOJOIN_SL1_LOADRUB_IO_SL2_JUMPR31_TNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 24 } }, .syntax = 10 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = memub(+) ; if (P0.new) jumpr:nt R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 0000IIIISSSSDDDDEE110iiissssdddd | RD = memw(RS+II) ; Rd = memb(Rs+Ii)
		.encoding = { .mask = 0xf000f800, .op = 0x3000 },
		.id = HEX_INS_X2_AUTOJOIN_SL1_LOADRI_IO_SL2_LOADRB_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 24 } }, .imm_scale = 2, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 21 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 8 } }, .syntax = 22 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memw(+) ;  = memb(+)",
	},
	{
		// 0001IIIISSSSDDDDEE110iiissssdddd | RD = memub(RS+II) ; Rd = memb(Rs+Ii)
		.encoding = { .mask = 0xf000f800, .op = 0x10003000 },
		.id = HEX_INS_X2_AUTOJOIN_SL1_LOADRUB_IO_SL2_LOADRB_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 24 } }, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 22 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 8 } }, .syntax = 23 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memub(+) ;  = memb(+)",
	},
	{
		// 0000IIIIssssDDDDEE111110iiiiiddd | RD = memw(Rs+II) ; Rdd = memd(r29+Ii)
		.encoding = { .mask = 0xf000ff00, .op = 0x3e00 },
		.id = HEX_INS_X2_AUTOJOIN_SL1_LOADRI_IO_SL2_LOADRD_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 24 } }, .imm_scale = 2, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 3 } }, .imm_scale = 3, .syntax = 25 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memw(+) ;  = memd(R29+)",
	},
	{
		// 0001IIIIssssDDDDEE111110iiiiiddd | RD = memub(Rs+II) ; Rdd = memd(r29+Ii)
		.encoding = { .mask = 0xf000ff00, .op = 0x10003e00 },
		.id = HEX_INS_X2_AUTOJOIN_SL1_LOADRUB_IO_SL2_LOADRD_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 24 } }, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 3 } }, .imm_scale = 3, .syntax = 26 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memub(+) ;  = memd(R29+)",
	},
	{
		// 0000IIIISSSSDDDDEE100iiissssdddd | RD = memw(RS+II) ; Rd = memh(Rs+Ii)
		.encoding = { .mask = 0xf000f800, .op = 0x2000 },
		.id = HEX_INS_X2_AUTOJOIN_SL1_LOADRI_IO_SL2_LOADRH_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 24 } }, .imm_scale = 2, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 21 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 8 } }, .imm_scale = 1, .syntax = 22 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memw(+) ;  = memh(+)",
	},
	{
		// 0001IIIISSSSDDDDEE100iiissssdddd | RD = memub(RS+II) ; Rd = memh(Rs+Ii)
		.encoding = { .mask = 0xf000f800, .op = 0x10002000 },
		.id = HEX_INS_X2_AUTOJOIN_SL1_LOADRUB_IO_SL2_LOADRH_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 24 } }, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 22 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 8 } }, .imm_scale = 1, .syntax = 23 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memub(+) ;  = memh(+)",
	},
	{
		// 0000IIIIssssDDDDEE11110iiiiidddd | RD = memw(Rs+II) ; Rd = memw(r29+Ii)
		.encoding = { .mask = 0xf000fe00, .op = 0x3c00 },
		.id = HEX_INS_X2_AUTOJOIN_SL1_LOADRI_IO_SL2_LOADRI_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 24 } }, .imm_scale = 2, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 4 } }, .imm_scale = 2, .syntax = 25 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memw(+) ;  = memw(R29+)",
	},
	{
		// 0001IIIIssssDDDDEE11110iiiiidddd | RD = memub(Rs+II) ; Rd = memw(r29+Ii)
		.encoding = { .mask = 0xf000fe00, .op = 0x10003c00 },
		.id = HEX_INS_X2_AUTOJOIN_SL1_LOADRUB_IO_SL2_LOADRI_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 24 } }, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 4 } }, .imm_scale = 2, .syntax = 26 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memub(+) ;  = memw(R29+)",
	},
	{
		// 0000IIIISSSSDDDDEE101iiissssdddd | RD = memw(RS+II) ; Rd = memuh(Rs+Ii)
		.encoding = { .mask = 0xf000f800, .op = 0x2800 },
		.id = HEX_INS_X2_AUTOJOIN_SL1_LOADRI_IO_SL2_LOADRUH_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 24 } }, .imm_scale = 2, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 22 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 8 } }, .imm_scale = 1, .syntax = 23 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memw(+) ;  = memuh(+)",
	},
	{
		// 0001IIIISSSSDDDDEE101iiissssdddd | RD = memub(RS+II) ; Rd = memuh(Rs+Ii)
		.encoding = { .mask = 0xf000f800, .op = 0x10002800 },
		.id = HEX_INS_X2_AUTOJOIN_SL1_LOADRUB_IO_SL2_LOADRUH_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 24 } }, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 23 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 8 } }, .imm_scale = 1, .syntax = 24 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memub(+) ;  = memuh(+)",
	},
	{
		// 0000iiiissssddddEE11111101000000 | Rd = memw(Rs+Ii) ; dealloc_return
		.encoding = { .mask = 0xf000ffff, .op = 0x3f40 },
		.id = HEX_INS_X2_AUTOJOIN_SL1_LOADRI_IO_SL2_RETURN,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 24 } }, .imm_scale = 2, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_RET,
		.syntax = " = memw(+) ; dealloc_return",
	},
	{
		// 0001iiiissssddddEE11111101000000 | Rd = memub(Rs+Ii) ; dealloc_return
		.encoding = { .mask = 0xf000ffff, .op = 0x10003f40 },
		.id = HEX_INS_X2_AUTOJOIN_SL1_LOADRUB_IO_SL2_RETURN,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 24 } }, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_RET,
		.syntax = " = memub(+) ; dealloc_return",
	},
	{
		// 0000iiiissssddddEE11111101000101 | Rd = memw(Rs+Ii) ; if (!p0) dealloc_return
		.encoding = { .mask = 0xf000ffff, .op = 0x3f45 },
		.id = HEX_INS_X2_AUTOJOIN_SL1_LOADRI_IO_SL2_RETURN_F,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 24 } }, .imm_scale = 2, .syntax = 9 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = memw(+) ; if (!P0) dealloc_return",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 0001iiiissssddddEE11111101000101 | Rd = memub(Rs+Ii) ; if (!p0) dealloc_return
		.encoding = { .mask = 0xf000ffff, .op = 0x10003f45 },
		.id = HEX_INS_X2_AUTOJOIN_SL1_LOADRUB_IO_SL2_RETURN_F,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 24 } }, .syntax = 10 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = memub(+) ; if (!P0) dealloc_return",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 0000iiiissssddddEE11111101000111 | Rd = memw(Rs+Ii) ; if (!p0.new) dealloc_return:nt
		.encoding = { .mask = 0xf000ffff, .op = 0x3f47 },
		.id = HEX_INS_X2_AUTOJOIN_SL1_LOADRI_IO_SL2_RETURN_FNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 24 } }, .imm_scale = 2, .syntax = 9 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = memw(+) ; if (!P0.new) dealloc_return:nt",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 0001iiiissssddddEE11111101000111 | Rd = memub(Rs+Ii) ; if (!p0.new) dealloc_return:nt
		.encoding = { .mask = 0xf000ffff, .op = 0x10003f47 },
		.id = HEX_INS_X2_AUTOJOIN_SL1_LOADRUB_IO_SL2_RETURN_FNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 24 } }, .syntax = 10 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = memub(+) ; if (!P0.new) dealloc_return:nt",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 0000iiiissssddddEE11111101000100 | Rd = memw(Rs+Ii) ; if (p0) dealloc_return
		.encoding = { .mask = 0xf000ffff, .op = 0x3f44 },
		.id = HEX_INS_X2_AUTOJOIN_SL1_LOADRI_IO_SL2_RETURN_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 24 } }, .imm_scale = 2, .syntax = 9 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = memw(+) ; if (P0) dealloc_return",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 0001iiiissssddddEE11111101000100 | Rd = memub(Rs+Ii) ; if (p0) dealloc_return
		.encoding = { .mask = 0xf000ffff, .op = 0x10003f44 },
		.id = HEX_INS_X2_AUTOJOIN_SL1_LOADRUB_IO_SL2_RETURN_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 24 } }, .syntax = 10 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = memub(+) ; if (P0) dealloc_return",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 0000iiiissssddddEE11111101000110 | Rd = memw(Rs+Ii) ; if (p0.new) dealloc_return:nt
		.encoding = { .mask = 0xf000ffff, .op = 0x3f46 },
		.id = HEX_INS_X2_AUTOJOIN_SL1_LOADRI_IO_SL2_RETURN_TNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 24 } }, .imm_scale = 2, .syntax = 9 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = memw(+) ; if (P0.new) dealloc_return:nt",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 0001iiiissssddddEE11111101000110 | Rd = memub(Rs+Ii) ; if (p0.new) dealloc_return:nt
		.encoding = { .mask = 0xf000ffff, .op = 0x10003f46 },
		.id = HEX_INS_X2_AUTOJOIN_SL1_LOADRUB_IO_SL2_RETURN_TNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 24 } }, .syntax = 10 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = memub(+) ; if (P0.new) dealloc_return:nt",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{ { 0 } },
};

static const HexInsnTemplate templates_duplex_0x2[] = {
	{
		// 0011111100000000EE01111100000000 | deallocframe ; deallocframe
		.encoding = { .mask = 0xffffffff, .op = 0x3f001f00 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_DEALLOCFRAME_SL2_DEALLOCFRAME,
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "deallocframe ; deallocframe",
	},
	{
		// 00110iiissssddddEE01111100000000 | Rd = memb(Rs+Ii) ; deallocframe
		.encoding = { .mask = 0xf800ffff, .op = 0x30001f00 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_LOADRB_IO_SL2_DEALLOCFRAME,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 24 } }, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memb(+) ; deallocframe",
	},
	{
		// 00111110iiiiidddEE01111100000000 | Rdd = memd(r29+Ii) ; deallocframe
		.encoding = { .mask = 0xff00ffff, .op = 0x3e001f00 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_LOADRD_SP_SL2_DEALLOCFRAME,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 19 } }, .imm_scale = 3, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memd(R29+) ; deallocframe",
	},
	{
		// 00100iiissssddddEE01111100000000 | Rd = memh(Rs+Ii) ; deallocframe
		.encoding = { .mask = 0xf800ffff, .op = 0x20001f00 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_LOADRH_IO_SL2_DEALLOCFRAME,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 24 } }, .imm_scale = 1, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memh(+) ; deallocframe",
	},
	{
		// 0011110iiiiiddddEE01111100000000 | Rd = memw(r29+Ii) ; deallocframe
		.encoding = { .mask = 0xfe00ffff, .op = 0x3c001f00 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_LOADRI_SP_SL2_DEALLOCFRAME,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 20 } }, .imm_scale = 2, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memw(R29+) ; deallocframe",
	},
	{
		// 00101iiissssddddEE01111100000000 | Rd = memuh(Rs+Ii) ; deallocframe
		.encoding = { .mask = 0xf800ffff, .op = 0x28001f00 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_LOADRUH_IO_SL2_DEALLOCFRAME,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 24 } }, .imm_scale = 1, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memuh(+) ; deallocframe",
	},
	{
		// 0011111100000000EE01111111000000 | deallocframe ; jumpr r31
		.encoding = { .mask = 0xffffffff, .op = 0x3f001fc0 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_DEALLOCFRAME_SL2_JUMPR31,
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_RET,
		.syntax = "deallocframe ; jumpr R31",
	},
	{
		// 00110iiissssddddEE01111111000000 | Rd = memb(Rs+Ii) ; jumpr r31
		.encoding = { .mask = 0xf800ffff, .op = 0x30001fc0 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_LOADRB_IO_SL2_JUMPR31,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 24 } }, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_RET,
		.syntax = " = memb(+) ; jumpr R31",
	},
	{
		// 00111110iiiiidddEE01111111000000 | Rdd = memd(r29+Ii) ; jumpr r31
		.encoding = { .mask = 0xff00ffff, .op = 0x3e001fc0 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_LOADRD_SP_SL2_JUMPR31,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 19 } }, .imm_scale = 3, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_RET,
		.syntax = " = memd(R29+) ; jumpr R31",
	},
	{
		// 00100iiissssddddEE01111111000000 | Rd = memh(Rs+Ii) ; jumpr r31
		.encoding = { .mask = 0xf800ffff, .op = 0x20001fc0 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_LOADRH_IO_SL2_JUMPR31,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 24 } }, .imm_scale = 1, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_RET,
		.syntax = " = memh(+) ; jumpr R31",
	},
	{
		// 0011110iiiiiddddEE01111111000000 | Rd = memw(r29+Ii) ; jumpr r31
		.encoding = { .mask = 0xfe00ffff, .op = 0x3c001fc0 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_LOADRI_SP_SL2_JUMPR31,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 20 } }, .imm_scale = 2, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_RET,
		.syntax = " = memw(R29+) ; jumpr R31",
	},
	{
		// 00101iiissssddddEE01111111000000 | Rd = memuh(Rs+Ii) ; jumpr r31
		.encoding = { .mask = 0xf800ffff, .op = 0x28001fc0 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_LOADRUH_IO_SL2_JUMPR31,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 24 } }, .imm_scale = 1, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_RET,
		.syntax = " = memuh(+) ; jumpr R31",
	},
	{
		// 0011111101000000EE01111111000000 | dealloc_return ; jumpr r31
		.encoding = { .mask = 0xffffffff, .op = 0x3f401fc0 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_RETURN_SL2_JUMPR31,
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_RET,
		.syntax = "dealloc_return ; jumpr R31",
	},
	{
		// 0011111101000101EE01111111000000 | if (!p0) dealloc_return ; jumpr r31
		.encoding = { .mask = 0xffffffff, .op = 0x3f451fc0 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_RETURN_F_SL2_JUMPR31,
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "if (!P0) dealloc_return ; jumpr R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 0011111101000111EE01111111000000 | if (!p0.new) dealloc_return:nt ; jumpr r31
		.encoding = { .mask = 0xffffffff, .op = 0x3f471fc0 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_RETURN_FNEW_SL2_JUMPR31,
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "if (!P0.new) dealloc_return:nt ; jumpr R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 0011111101000100EE01111111000000 | if (p0) dealloc_return ; jumpr r31
		.encoding = { .mask = 0xffffffff, .op = 0x3f441fc0 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_RETURN_T_SL2_JUMPR31,
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "if (P0) dealloc_return ; jumpr R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 0011111101000110EE01111111000000 | if (p0.new) dealloc_return:nt ; jumpr r31
		.encoding = { .mask = 0xffffffff, .op = 0x3f461fc0 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_RETURN_TNEW_SL2_JUMPR31,
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "if (P0.new) dealloc_return:nt ; jumpr R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 0011111100000000EE01111111000101 | deallocframe ; if (!p0) jumpr r31
		.encoding = { .mask = 0xffffffff, .op = 0x3f001fc5 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_DEALLOCFRAME_SL2_JUMPR31_F,
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "deallocframe ; if (!P0) jumpr R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00110iiissssddddEE01111111000101 | Rd = memb(Rs+Ii) ; if (!p0) jumpr r31
		.encoding = { .mask = 0xf800ffff, .op = 0x30001fc5 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_LOADRB_IO_SL2_JUMPR31_F,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 24 } }, .syntax = 9 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = memb(+) ; if (!P0) jumpr R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00111110iiiiidddEE01111111000101 | Rdd = memd(r29+Ii) ; if (!p0) jumpr r31
		.encoding = { .mask = 0xff00ffff, .op = 0x3e001fc5 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_LOADRD_SP_SL2_JUMPR31_F,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 19 } }, .imm_scale = 3, .syntax = 12 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = memd(R29+) ; if (!P0) jumpr R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00100iiissssddddEE01111111000101 | Rd = memh(Rs+Ii) ; if (!p0) jumpr r31
		.encoding = { .mask = 0xf800ffff, .op = 0x20001fc5 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_LOADRH_IO_SL2_JUMPR31_F,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 24 } }, .imm_scale = 1, .syntax = 9 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = memh(+) ; if (!P0) jumpr R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 0011110iiiiiddddEE01111111000101 | Rd = memw(r29+Ii) ; if (!p0) jumpr r31
		.encoding = { .mask = 0xfe00ffff, .op = 0x3c001fc5 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_LOADRI_SP_SL2_JUMPR31_F,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 20 } }, .imm_scale = 2, .syntax = 12 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = memw(R29+) ; if (!P0) jumpr R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00101iiissssddddEE01111111000101 | Rd = memuh(Rs+Ii) ; if (!p0) jumpr r31
		.encoding = { .mask = 0xf800ffff, .op = 0x28001fc5 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_LOADRUH_IO_SL2_JUMPR31_F,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 24 } }, .imm_scale = 1, .syntax = 10 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = memuh(+) ; if (!P0) jumpr R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 0011111101000000EE01111111000101 | dealloc_return ; if (!p0) jumpr r31
		.encoding = { .mask = 0xffffffff, .op = 0x3f401fc5 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_RETURN_SL2_JUMPR31_F,
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "dealloc_return ; if (!P0) jumpr R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 0011111101000101EE01111111000101 | if (!p0) dealloc_return ; if (!p0) jumpr r31
		.encoding = { .mask = 0xffffffff, .op = 0x3f451fc5 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_RETURN_F_SL2_JUMPR31_F,
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "if (!P0) dealloc_return ; if (!P0) jumpr R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 0011111101000111EE01111111000101 | if (!p0.new) dealloc_return:nt ; if (!p0) jumpr r31
		.encoding = { .mask = 0xffffffff, .op = 0x3f471fc5 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_RETURN_FNEW_SL2_JUMPR31_F,
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "if (!P0.new) dealloc_return:nt ; if (!P0) jumpr R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 0011111101000100EE01111111000101 | if (p0) dealloc_return ; if (!p0) jumpr r31
		.encoding = { .mask = 0xffffffff, .op = 0x3f441fc5 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_RETURN_T_SL2_JUMPR31_F,
		.pred = HEX_PRED_FALSE | HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "if (P0) dealloc_return ; if (!P0) jumpr R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 0011111101000110EE01111111000101 | if (p0.new) dealloc_return:nt ; if (!p0) jumpr r31
		.encoding = { .mask = 0xffffffff, .op = 0x3f461fc5 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_RETURN_TNEW_SL2_JUMPR31_F,
		.pred = HEX_PRED_FALSE | HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "if (P0.new) dealloc_return:nt ; if (!P0) jumpr R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 0011111100000000EE01111111000111 | deallocframe ; if (!p0.new) jumpr:nt r31
		.encoding = { .mask = 0xffffffff, .op = 0x3f001fc7 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_DEALLOCFRAME_SL2_JUMPR31_FNEW,
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "deallocframe ; if (!P0.new) jumpr:nt R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00110iiissssddddEE01111111000111 | Rd = memb(Rs+Ii) ; if (!p0.new) jumpr:nt r31
		.encoding = { .mask = 0xf800ffff, .op = 0x30001fc7 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_LOADRB_IO_SL2_JUMPR31_FNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 24 } }, .syntax = 9 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = memb(+) ; if (!P0.new) jumpr:nt R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00111110iiiiidddEE01111111000111 | Rdd = memd(r29+Ii) ; if (!p0.new) jumpr:nt r31
		.encoding = { .mask = 0xff00ffff, .op = 0x3e001fc7 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_LOADRD_SP_SL2_JUMPR31_FNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 19 } }, .imm_scale = 3, .syntax = 12 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = memd(R29+) ; if (!P0.new) jumpr:nt R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00100iiissssddddEE01111111000111 | Rd = memh(Rs+Ii) ; if (!p0.new) jumpr:nt r31
		.encoding = { .mask = 0xf800ffff, .op = 0x20001fc7 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_LOADRH_IO_SL2_JUMPR31_FNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 24 } }, .imm_scale = 1, .syntax = 9 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = memh(+) ; if (!P0.new) jumpr:nt R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 0011110iiiiiddddEE01111111000111 | Rd = memw(r29+Ii) ; if (!p0.new) jumpr:nt r31
		.encoding = { .mask = 0xfe00ffff, .op = 0x3c001fc7 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_LOADRI_SP_SL2_JUMPR31_FNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 20 } }, .imm_scale = 2, .syntax = 12 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = memw(R29+) ; if (!P0.new) jumpr:nt R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00101iiissssddddEE01111111000111 | Rd = memuh(Rs+Ii) ; if (!p0.new) jumpr:nt r31
		.encoding = { .mask = 0xf800ffff, .op = 0x28001fc7 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_LOADRUH_IO_SL2_JUMPR31_FNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 24 } }, .imm_scale = 1, .syntax = 10 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = memuh(+) ; if (!P0.new) jumpr:nt R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 0011111101000000EE01111111000111 | dealloc_return ; if (!p0.new) jumpr:nt r31
		.encoding = { .mask = 0xffffffff, .op = 0x3f401fc7 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_RETURN_SL2_JUMPR31_FNEW,
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "dealloc_return ; if (!P0.new) jumpr:nt R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 0011111101000101EE01111111000111 | if (!p0) dealloc_return ; if (!p0.new) jumpr:nt r31
		.encoding = { .mask = 0xffffffff, .op = 0x3f451fc7 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_RETURN_F_SL2_JUMPR31_FNEW,
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "if (!P0) dealloc_return ; if (!P0.new) jumpr:nt R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 0011111101000111EE01111111000111 | if (!p0.new) dealloc_return:nt ; if (!p0.new) jumpr:nt r31
		.encoding = { .mask = 0xffffffff, .op = 0x3f471fc7 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_RETURN_FNEW_SL2_JUMPR31_FNEW,
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "if (!P0.new) dealloc_return:nt ; if (!P0.new) jumpr:nt R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 0011111101000100EE01111111000111 | if (p0) dealloc_return ; if (!p0.new) jumpr:nt r31
		.encoding = { .mask = 0xffffffff, .op = 0x3f441fc7 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_RETURN_T_SL2_JUMPR31_FNEW,
		.pred = HEX_PRED_FALSE | HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "if (P0) dealloc_return ; if (!P0.new) jumpr:nt R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 0011111101000110EE01111111000111 | if (p0.new) dealloc_return:nt ; if (!p0.new) jumpr:nt r31
		.encoding = { .mask = 0xffffffff, .op = 0x3f461fc7 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_RETURN_TNEW_SL2_JUMPR31_FNEW,
		.pred = HEX_PRED_FALSE | HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "if (P0.new) dealloc_return:nt ; if (!P0.new) jumpr:nt R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 0011111100000000EE01111111000100 | deallocframe ; if (p0) jumpr r31
		.encoding = { .mask = 0xffffffff, .op = 0x3f001fc4 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_DEALLOCFRAME_SL2_JUMPR31_T,
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "deallocframe ; if (P0) jumpr R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00110iiissssddddEE01111111000100 | Rd = memb(Rs+Ii) ; if (p0) jumpr r31
		.encoding = { .mask = 0xf800ffff, .op = 0x30001fc4 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_LOADRB_IO_SL2_JUMPR31_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 24 } }, .syntax = 9 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = memb(+) ; if (P0) jumpr R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00111110iiiiidddEE01111111000100 | Rdd = memd(r29+Ii) ; if (p0) jumpr r31
		.encoding = { .mask = 0xff00ffff, .op = 0x3e001fc4 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_LOADRD_SP_SL2_JUMPR31_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 19 } }, .imm_scale = 3, .syntax = 12 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = memd(R29+) ; if (P0) jumpr R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00100iiissssddddEE01111111000100 | Rd = memh(Rs+Ii) ; if (p0) jumpr r31
		.encoding = { .mask = 0xf800ffff, .op = 0x20001fc4 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_LOADRH_IO_SL2_JUMPR31_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 24 } }, .imm_scale = 1, .syntax = 9 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = memh(+) ; if (P0) jumpr R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 0011110iiiiiddddEE01111111000100 | Rd = memw(r29+Ii) ; if (p0) jumpr r31
		.encoding = { .mask = 0xfe00ffff, .op = 0x3c001fc4 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_LOADRI_SP_SL2_JUMPR31_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 20 } }, .imm_scale = 2, .syntax = 12 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = memw(R29+) ; if (P0) jumpr R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00101iiissssddddEE01111111000100 | Rd = memuh(Rs+Ii) ; if (p0) jumpr r31
		.encoding = { .mask = 0xf800ffff, .op = 0x28001fc4 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_LOADRUH_IO_SL2_JUMPR31_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 24 } }, .imm_scale = 1, .syntax = 10 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = memuh(+) ; if (P0) jumpr R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 0011111101000000EE01111111000100 | dealloc_return ; if (p0) jumpr r31
		.encoding = { .mask = 0xffffffff, .op = 0x3f401fc4 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_RETURN_SL2_JUMPR31_T,
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "dealloc_return ; if (P0) jumpr R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 0011111101000101EE01111111000100 | if (!p0) dealloc_return ; if (p0) jumpr r31
		.encoding = { .mask = 0xffffffff, .op = 0x3f451fc4 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_RETURN_F_SL2_JUMPR31_T,
		.pred = HEX_PRED_FALSE | HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "if (!P0) dealloc_return ; if (P0) jumpr R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 0011111101000111EE01111111000100 | if (!p0.new) dealloc_return:nt ; if (p0) jumpr r31
		.encoding = { .mask = 0xffffffff, .op = 0x3f471fc4 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_RETURN_FNEW_SL2_JUMPR31_T,
		.pred = HEX_PRED_FALSE | HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "if (!P0.new) dealloc_return:nt ; if (P0) jumpr R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 0011111101000100EE01111111000100 | if (p0) dealloc_return ; if (p0) jumpr r31
		.encoding = { .mask = 0xffffffff, .op = 0x3f441fc4 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_RETURN_T_SL2_JUMPR31_T,
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "if (P0) dealloc_return ; if (P0) jumpr R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 0011111101000110EE01111111000100 | if (p0.new) dealloc_return:nt ; if (p0) jumpr r31
		.encoding = { .mask = 0xffffffff, .op = 0x3f461fc4 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_RETURN_TNEW_SL2_JUMPR31_T,
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "if (P0.new) dealloc_return:nt ; if (P0) jumpr R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 0011111100000000EE01111111000110 | deallocframe ; if (p0.new) jumpr:nt r31
		.encoding = { .mask = 0xffffffff, .op = 0x3f001fc6 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_DEALLOCFRAME_SL2_JUMPR31_TNEW,
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "deallocframe ; if (P0.new) jumpr:nt R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00110iiissssddddEE01111111000110 | Rd = memb(Rs+Ii) ; if (p0.new) jumpr:nt r31
		.encoding = { .mask = 0xf800ffff, .op = 0x30001fc6 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_LOADRB_IO_SL2_JUMPR31_TNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 24 } }, .syntax = 9 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = memb(+) ; if (P0.new) jumpr:nt R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00111110iiiiidddEE01111111000110 | Rdd = memd(r29+Ii) ; if (p0.new) jumpr:nt r31
		.encoding = { .mask = 0xff00ffff, .op = 0x3e001fc6 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_LOADRD_SP_SL2_JUMPR31_TNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 19 } }, .imm_scale = 3, .syntax = 12 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = memd(R29+) ; if (P0.new) jumpr:nt R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00100iiissssddddEE01111111000110 | Rd = memh(Rs+Ii) ; if (p0.new) jumpr:nt r31
		.encoding = { .mask = 0xf800ffff, .op = 0x20001fc6 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_LOADRH_IO_SL2_JUMPR31_TNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 24 } }, .imm_scale = 1, .syntax = 9 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = memh(+) ; if (P0.new) jumpr:nt R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 0011110iiiiiddddEE01111111000110 | Rd = memw(r29+Ii) ; if (p0.new) jumpr:nt r31
		.encoding = { .mask = 0xfe00ffff, .op = 0x3c001fc6 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_LOADRI_SP_SL2_JUMPR31_TNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 20 } }, .imm_scale = 2, .syntax = 12 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = memw(R29+) ; if (P0.new) jumpr:nt R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00101iiissssddddEE01111111000110 | Rd = memuh(Rs+Ii) ; if (p0.new) jumpr:nt r31
		.encoding = { .mask = 0xf800ffff, .op = 0x28001fc6 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_LOADRUH_IO_SL2_JUMPR31_TNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 24 } }, .imm_scale = 1, .syntax = 10 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = memuh(+) ; if (P0.new) jumpr:nt R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 0011111101000000EE01111111000110 | dealloc_return ; if (p0.new) jumpr:nt r31
		.encoding = { .mask = 0xffffffff, .op = 0x3f401fc6 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_RETURN_SL2_JUMPR31_TNEW,
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "dealloc_return ; if (P0.new) jumpr:nt R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 0011111101000101EE01111111000110 | if (!p0) dealloc_return ; if (p0.new) jumpr:nt r31
		.encoding = { .mask = 0xffffffff, .op = 0x3f451fc6 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_RETURN_F_SL2_JUMPR31_TNEW,
		.pred = HEX_PRED_FALSE | HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "if (!P0) dealloc_return ; if (P0.new) jumpr:nt R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 0011111101000111EE01111111000110 | if (!p0.new) dealloc_return:nt ; if (p0.new) jumpr:nt r31
		.encoding = { .mask = 0xffffffff, .op = 0x3f471fc6 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_RETURN_FNEW_SL2_JUMPR31_TNEW,
		.pred = HEX_PRED_FALSE | HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "if (!P0.new) dealloc_return:nt ; if (P0.new) jumpr:nt R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 0011111101000100EE01111111000110 | if (p0) dealloc_return ; if (p0.new) jumpr:nt r31
		.encoding = { .mask = 0xffffffff, .op = 0x3f441fc6 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_RETURN_T_SL2_JUMPR31_TNEW,
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "if (P0) dealloc_return ; if (P0.new) jumpr:nt R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 0011111101000110EE01111111000110 | if (p0.new) dealloc_return:nt ; if (p0.new) jumpr:nt r31
		.encoding = { .mask = 0xffffffff, .op = 0x3f461fc6 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_RETURN_TNEW_SL2_JUMPR31_TNEW,
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "if (P0.new) dealloc_return:nt ; if (P0.new) jumpr:nt R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00110IIISSSSDDDDEE010iiissssdddd | RD = memb(RS+II) ; Rd = memb(Rs+Ii)
		.encoding = { .mask = 0xf800f800, .op = 0x30001000 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_LOADRB_IO_SL2_LOADRB_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 24 } }, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 21 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 8 } }, .syntax = 22 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memb(+) ;  = memb(+)",
	},
	{
		// 00100IIISSSSDDDDEE010iiissssdddd | RD = memh(RS+II) ; Rd = memb(Rs+Ii)
		.encoding = { .mask = 0xf800f800, .op = 0x20001000 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_LOADRH_IO_SL2_LOADRB_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 24 } }, .imm_scale = 1, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 21 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 8 } }, .syntax = 22 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memh(+) ;  = memb(+)",
	},
	{
		// 00101IIISSSSDDDDEE010iiissssdddd | RD = memuh(RS+II) ; Rd = memb(Rs+Ii)
		.encoding = { .mask = 0xf800f800, .op = 0x28001000 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_LOADRUH_IO_SL2_LOADRB_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 24 } }, .imm_scale = 1, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 22 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 8 } }, .syntax = 23 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memuh(+) ;  = memb(+)",
	},
	{
		// 00110IIIssssDDDDEE011110iiiiiddd | RD = memb(Rs+II) ; Rdd = memd(r29+Ii)
		.encoding = { .mask = 0xf800ff00, .op = 0x30001e00 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_LOADRB_IO_SL2_LOADRD_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 24 } }, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 3 } }, .imm_scale = 3, .syntax = 25 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memb(+) ;  = memd(R29+)",
	},
	{
		// 00111110IIIIIDDDEE011110iiiiiddd | RDD = memd(r29+II) ; Rdd = memd(r29+Ii)
		.encoding = { .mask = 0xff00ff00, .op = 0x3e001e00 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_LOADRD_SP_SL2_LOADRD_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 19 } }, .imm_scale = 3, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 3 } }, .imm_scale = 3, .syntax = 28 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memd(R29+) ;  = memd(R29+)",
	},
	{
		// 00100IIIssssDDDDEE011110iiiiiddd | RD = memh(Rs+II) ; Rdd = memd(r29+Ii)
		.encoding = { .mask = 0xf800ff00, .op = 0x20001e00 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_LOADRH_IO_SL2_LOADRD_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 24 } }, .imm_scale = 1, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 3 } }, .imm_scale = 3, .syntax = 25 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memh(+) ;  = memd(R29+)",
	},
	{
		// 0011110IIIIIDDDDEE011110iiiiiddd | RD = memw(r29+II) ; Rdd = memd(r29+Ii)
		.encoding = { .mask = 0xfe00ff00, .op = 0x3c001e00 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_LOADRI_SP_SL2_LOADRD_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 20 } }, .imm_scale = 2, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 3 } }, .imm_scale = 3, .syntax = 28 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memw(R29+) ;  = memd(R29+)",
	},
	{
		// 00101IIIssssDDDDEE011110iiiiiddd | RD = memuh(Rs+II) ; Rdd = memd(r29+Ii)
		.encoding = { .mask = 0xf800ff00, .op = 0x28001e00 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_LOADRUH_IO_SL2_LOADRD_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 24 } }, .imm_scale = 1, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 3 } }, .imm_scale = 3, .syntax = 26 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memuh(+) ;  = memd(R29+)",
	},
	{
		// 00100IIISSSSDDDDEE000iiissssdddd | RD = memh(RS+II) ; Rd = memh(Rs+Ii)
		.encoding = { .mask = 0xf800f800, .op = 0x20000000 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_LOADRH_IO_SL2_LOADRH_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 24 } }, .imm_scale = 1, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 21 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 8 } }, .imm_scale = 1, .syntax = 22 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memh(+) ;  = memh(+)",
	},
	{
		// 00110IIIssssDDDDEE01110iiiiidddd | RD = memb(Rs+II) ; Rd = memw(r29+Ii)
		.encoding = { .mask = 0xf800fe00, .op = 0x30001c00 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_LOADRB_IO_SL2_LOADRI_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 24 } }, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 4 } }, .imm_scale = 2, .syntax = 25 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memb(+) ;  = memw(R29+)",
	},
	{
		// 00100IIIssssDDDDEE01110iiiiidddd | RD = memh(Rs+II) ; Rd = memw(r29+Ii)
		.encoding = { .mask = 0xf800fe00, .op = 0x20001c00 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_LOADRH_IO_SL2_LOADRI_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 24 } }, .imm_scale = 1, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 4 } }, .imm_scale = 2, .syntax = 25 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memh(+) ;  = memw(R29+)",
	},
	{
		// 0011110IIIIIDDDDEE01110iiiiidddd | RD = memw(r29+II) ; Rd = memw(r29+Ii)
		.encoding = { .mask = 0xfe00fe00, .op = 0x3c001c00 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_LOADRI_SP_SL2_LOADRI_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 20 } }, .imm_scale = 2, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 4 } }, .imm_scale = 2, .syntax = 28 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memw(R29+) ;  = memw(R29+)",
	},
	{
		// 00101IIIssssDDDDEE01110iiiiidddd | RD = memuh(Rs+II) ; Rd = memw(r29+Ii)
		.encoding = { .mask = 0xf800fe00, .op = 0x28001c00 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_LOADRUH_IO_SL2_LOADRI_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 24 } }, .imm_scale = 1, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 4 } }, .imm_scale = 2, .syntax = 26 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memuh(+) ;  = memw(R29+)",
	},
	{
		// 00100IIISSSSDDDDEE001iiissssdddd | RD = memh(RS+II) ; Rd = memuh(Rs+Ii)
		.encoding = { .mask = 0xf800f800, .op = 0x20000800 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_LOADRH_IO_SL2_LOADRUH_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 24 } }, .imm_scale = 1, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 22 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 8 } }, .imm_scale = 1, .syntax = 23 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memh(+) ;  = memuh(+)",
	},
	{
		// 00101IIISSSSDDDDEE001iiissssdddd | RD = memuh(RS+II) ; Rd = memuh(Rs+Ii)
		.encoding = { .mask = 0xf800f800, .op = 0x28000800 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_LOADRUH_IO_SL2_LOADRUH_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 24 } }, .imm_scale = 1, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 23 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 8 } }, .imm_scale = 1, .syntax = 24 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memuh(+) ;  = memuh(+)",
	},
	{
		// 0011111100000000EE01111101000000 | deallocframe ; dealloc_return
		.encoding = { .mask = 0xffffffff, .op = 0x3f001f40 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_DEALLOCFRAME_SL2_RETURN,
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_RET,
		.syntax = "deallocframe ; dealloc_return",
	},
	{
		// 00110iiissssddddEE01111101000000 | Rd = memb(Rs+Ii) ; dealloc_return
		.encoding = { .mask = 0xf800ffff, .op = 0x30001f40 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_LOADRB_IO_SL2_RETURN,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 24 } }, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_RET,
		.syntax = " = memb(+) ; dealloc_return",
	},
	{
		// 00111110iiiiidddEE01111101000000 | Rdd = memd(r29+Ii) ; dealloc_return
		.encoding = { .mask = 0xff00ffff, .op = 0x3e001f40 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_LOADRD_SP_SL2_RETURN,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 19 } }, .imm_scale = 3, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_RET,
		.syntax = " = memd(R29+) ; dealloc_return",
	},
	{
		// 00100iiissssddddEE01111101000000 | Rd = memh(Rs+Ii) ; dealloc_return
		.encoding = { .mask = 0xf800ffff, .op = 0x20001f40 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_LOADRH_IO_SL2_RETURN,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 24 } }, .imm_scale = 1, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_RET,
		.syntax = " = memh(+) ; dealloc_return",
	},
	{
		// 0011110iiiiiddddEE01111101000000 | Rd = memw(r29+Ii) ; dealloc_return
		.encoding = { .mask = 0xfe00ffff, .op = 0x3c001f40 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_LOADRI_SP_SL2_RETURN,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 20 } }, .imm_scale = 2, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_RET,
		.syntax = " = memw(R29+) ; dealloc_return",
	},
	{
		// 00101iiissssddddEE01111101000000 | Rd = memuh(Rs+Ii) ; dealloc_return
		.encoding = { .mask = 0xf800ffff, .op = 0x28001f40 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_LOADRUH_IO_SL2_RETURN,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 24 } }, .imm_scale = 1, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_RET,
		.syntax = " = memuh(+) ; dealloc_return",
	},
	{
		// 0011111101000000EE01111101000000 | dealloc_return ; dealloc_return
		.encoding = { .mask = 0xffffffff, .op = 0x3f401f40 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_RETURN_SL2_RETURN,
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_RET,
		.syntax = "dealloc_return ; dealloc_return",
	},
	{
		// 0011111100000000EE01111101000101 | deallocframe ; if (!p0) dealloc_return
		.encoding = { .mask = 0xffffffff, .op = 0x3f001f45 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_DEALLOCFRAME_SL2_RETURN_F,
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "deallocframe ; if (!P0) dealloc_return",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00110iiissssddddEE01111101000101 | Rd = memb(Rs+Ii) ; if (!p0) dealloc_return
		.encoding = { .mask = 0xf800ffff, .op = 0x30001f45 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_LOADRB_IO_SL2_RETURN_F,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 24 } }, .syntax = 9 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = memb(+) ; if (!P0) dealloc_return",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00111110iiiiidddEE01111101000101 | Rdd = memd(r29+Ii) ; if (!p0) dealloc_return
		.encoding = { .mask = 0xff00ffff, .op = 0x3e001f45 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_LOADRD_SP_SL2_RETURN_F,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 19 } }, .imm_scale = 3, .syntax = 12 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = memd(R29+) ; if (!P0) dealloc_return",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00100iiissssddddEE01111101000101 | Rd = memh(Rs+Ii) ; if (!p0) dealloc_return
		.encoding = { .mask = 0xf800ffff, .op = 0x20001f45 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_LOADRH_IO_SL2_RETURN_F,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 24 } }, .imm_scale = 1, .syntax = 9 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = memh(+) ; if (!P0) dealloc_return",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 0011110iiiiiddddEE01111101000101 | Rd = memw(r29+Ii) ; if (!p0) dealloc_return
		.encoding = { .mask = 0xfe00ffff, .op = 0x3c001f45 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_LOADRI_SP_SL2_RETURN_F,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 20 } }, .imm_scale = 2, .syntax = 12 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = memw(R29+) ; if (!P0) dealloc_return",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00101iiissssddddEE01111101000101 | Rd = memuh(Rs+Ii) ; if (!p0) dealloc_return
		.encoding = { .mask = 0xf800ffff, .op = 0x28001f45 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_LOADRUH_IO_SL2_RETURN_F,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 24 } }, .imm_scale = 1, .syntax = 10 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = memuh(+) ; if (!P0) dealloc_return",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 0011111101000000EE01111101000101 | dealloc_return ; if (!p0) dealloc_return
		.encoding = { .mask = 0xffffffff, .op = 0x3f401f45 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_RETURN_SL2_RETURN_F,
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "dealloc_return ; if (!P0) dealloc_return",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 0011111101000101EE01111101000101 | if (!p0) dealloc_return ; if (!p0) dealloc_return
		.encoding = { .mask = 0xffffffff, .op = 0x3f451f45 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_RETURN_F_SL2_RETURN_F,
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "if (!P0) dealloc_return ; if (!P0) dealloc_return",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 0011111101000100EE01111101000101 | if (p0) dealloc_return ; if (!p0) dealloc_return
		.encoding = { .mask = 0xffffffff, .op = 0x3f441f45 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_RETURN_T_SL2_RETURN_F,
		.pred = HEX_PRED_FALSE | HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "if (P0) dealloc_return ; if (!P0) dealloc_return",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 0011111100000000EE01111101000111 | deallocframe ; if (!p0.new) dealloc_return:nt
		.encoding = { .mask = 0xffffffff, .op = 0x3f001f47 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_DEALLOCFRAME_SL2_RETURN_FNEW,
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "deallocframe ; if (!P0.new) dealloc_return:nt",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00110iiissssddddEE01111101000111 | Rd = memb(Rs+Ii) ; if (!p0.new) dealloc_return:nt
		.encoding = { .mask = 0xf800ffff, .op = 0x30001f47 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_LOADRB_IO_SL2_RETURN_FNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 24 } }, .syntax = 9 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = memb(+) ; if (!P0.new) dealloc_return:nt",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00111110iiiiidddEE01111101000111 | Rdd = memd(r29+Ii) ; if (!p0.new) dealloc_return:nt
		.encoding = { .mask = 0xff00ffff, .op = 0x3e001f47 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_LOADRD_SP_SL2_RETURN_FNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 19 } }, .imm_scale = 3, .syntax = 12 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = memd(R29+) ; if (!P0.new) dealloc_return:nt",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00100iiissssddddEE01111101000111 | Rd = memh(Rs+Ii) ; if (!p0.new) dealloc_return:nt
		.encoding = { .mask = 0xf800ffff, .op = 0x20001f47 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_LOADRH_IO_SL2_RETURN_FNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 24 } }, .imm_scale = 1, .syntax = 9 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = memh(+) ; if (!P0.new) dealloc_return:nt",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 0011110iiiiiddddEE01111101000111 | Rd = memw(r29+Ii) ; if (!p0.new) dealloc_return:nt
		.encoding = { .mask = 0xfe00ffff, .op = 0x3c001f47 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_LOADRI_SP_SL2_RETURN_FNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 20 } }, .imm_scale = 2, .syntax = 12 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = memw(R29+) ; if (!P0.new) dealloc_return:nt",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00101iiissssddddEE01111101000111 | Rd = memuh(Rs+Ii) ; if (!p0.new) dealloc_return:nt
		.encoding = { .mask = 0xf800ffff, .op = 0x28001f47 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_LOADRUH_IO_SL2_RETURN_FNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 24 } }, .imm_scale = 1, .syntax = 10 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = memuh(+) ; if (!P0.new) dealloc_return:nt",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 0011111101000000EE01111101000111 | dealloc_return ; if (!p0.new) dealloc_return:nt
		.encoding = { .mask = 0xffffffff, .op = 0x3f401f47 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_RETURN_SL2_RETURN_FNEW,
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "dealloc_return ; if (!P0.new) dealloc_return:nt",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 0011111101000101EE01111101000111 | if (!p0) dealloc_return ; if (!p0.new) dealloc_return:nt
		.encoding = { .mask = 0xffffffff, .op = 0x3f451f47 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_RETURN_F_SL2_RETURN_FNEW,
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "if (!P0) dealloc_return ; if (!P0.new) dealloc_return:nt",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 0011111101000111EE01111101000111 | if (!p0.new) dealloc_return:nt ; if (!p0.new) dealloc_return:nt
		.encoding = { .mask = 0xffffffff, .op = 0x3f471f47 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_RETURN_FNEW_SL2_RETURN_FNEW,
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "if (!P0.new) dealloc_return:nt ; if (!P0.new) dealloc_return:nt",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 0011111101000100EE01111101000111 | if (p0) dealloc_return ; if (!p0.new) dealloc_return:nt
		.encoding = { .mask = 0xffffffff, .op = 0x3f441f47 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_RETURN_T_SL2_RETURN_FNEW,
		.pred = HEX_PRED_FALSE | HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "if (P0) dealloc_return ; if (!P0.new) dealloc_return:nt",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 0011111101000110EE01111101000111 | if (p0.new) dealloc_return:nt ; if (!p0.new) dealloc_return:nt
		.encoding = { .mask = 0xffffffff, .op = 0x3f461f47 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_RETURN_TNEW_SL2_RETURN_FNEW,
		.pred = HEX_PRED_FALSE | HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "if (P0.new) dealloc_return:nt ; if (!P0.new) dealloc_return:nt",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 0011111100000000EE01111101000100 | deallocframe ; if (p0) dealloc_return
		.encoding = { .mask = 0xffffffff, .op = 0x3f001f44 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_DEALLOCFRAME_SL2_RETURN_T,
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "deallocframe ; if (P0) dealloc_return",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00110iiissssddddEE01111101000100 | Rd = memb(Rs+Ii) ; if (p0) dealloc_return
		.encoding = { .mask = 0xf800ffff, .op = 0x30001f44 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_LOADRB_IO_SL2_RETURN_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 24 } }, .syntax = 9 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = memb(+) ; if (P0) dealloc_return",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00111110iiiiidddEE01111101000100 | Rdd = memd(r29+Ii) ; if (p0) dealloc_return
		.encoding = { .mask = 0xff00ffff, .op = 0x3e001f44 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_LOADRD_SP_SL2_RETURN_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 19 } }, .imm_scale = 3, .syntax = 12 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = memd(R29+) ; if (P0) dealloc_return",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00100iiissssddddEE01111101000100 | Rd = memh(Rs+Ii) ; if (p0) dealloc_return
		.encoding = { .mask = 0xf800ffff, .op = 0x20001f44 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_LOADRH_IO_SL2_RETURN_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 24 } }, .imm_scale = 1, .syntax = 9 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = memh(+) ; if (P0) dealloc_return",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 0011110iiiiiddddEE01111101000100 | Rd = memw(r29+Ii) ; if (p0) dealloc_return
		.encoding = { .mask = 0xfe00ffff, .op = 0x3c001f44 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_LOADRI_SP_SL2_RETURN_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 20 } }, .imm_scale = 2, .syntax = 12 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = memw(R29+) ; if (P0) dealloc_return",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00101iiissssddddEE01111101000100 | Rd = memuh(Rs+Ii) ; if (p0) dealloc_return
		.encoding = { .mask = 0xf800ffff, .op = 0x28001f44 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_LOADRUH_IO_SL2_RETURN_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 24 } }, .imm_scale = 1, .syntax = 10 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = memuh(+) ; if (P0) dealloc_return",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 0011111101000000EE01111101000100 | dealloc_return ; if (p0) dealloc_return
		.encoding = { .mask = 0xffffffff, .op = 0x3f401f44 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_RETURN_SL2_RETURN_T,
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "dealloc_return ; if (P0) dealloc_return",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 0011111101000100EE01111101000100 | if (p0) dealloc_return ; if (p0) dealloc_return
		.encoding = { .mask = 0xffffffff, .op = 0x3f441f44 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_RETURN_T_SL2_RETURN_T,
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "if (P0) dealloc_return ; if (P0) dealloc_return",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 0011111100000000EE01111101000110 | deallocframe ; if (p0.new) dealloc_return:nt
		.encoding = { .mask = 0xffffffff, .op = 0x3f001f46 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_DEALLOCFRAME_SL2_RETURN_TNEW,
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "deallocframe ; if (P0.new) dealloc_return:nt",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00110iiissssddddEE01111101000110 | Rd = memb(Rs+Ii) ; if (p0.new) dealloc_return:nt
		.encoding = { .mask = 0xf800ffff, .op = 0x30001f46 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_LOADRB_IO_SL2_RETURN_TNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 24 } }, .syntax = 9 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = memb(+) ; if (P0.new) dealloc_return:nt",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00111110iiiiidddEE01111101000110 | Rdd = memd(r29+Ii) ; if (p0.new) dealloc_return:nt
		.encoding = { .mask = 0xff00ffff, .op = 0x3e001f46 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_LOADRD_SP_SL2_RETURN_TNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 19 } }, .imm_scale = 3, .syntax = 12 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = memd(R29+) ; if (P0.new) dealloc_return:nt",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00100iiissssddddEE01111101000110 | Rd = memh(Rs+Ii) ; if (p0.new) dealloc_return:nt
		.encoding = { .mask = 0xf800ffff, .op = 0x20001f46 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_LOADRH_IO_SL2_RETURN_TNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 24 } }, .imm_scale = 1, .syntax = 9 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = memh(+) ; if (P0.new) dealloc_return:nt",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 0011110iiiiiddddEE01111101000110 | Rd = memw(r29+Ii) ; if (p0.new) dealloc_return:nt
		.encoding = { .mask = 0xfe00ffff, .op = 0x3c001f46 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_LOADRI_SP_SL2_RETURN_TNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 20 } }, .imm_scale = 2, .syntax = 12 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = memw(R29+) ; if (P0.new) dealloc_return:nt",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00101iiissssddddEE01111101000110 | Rd = memuh(Rs+Ii) ; if (p0.new) dealloc_return:nt
		.encoding = { .mask = 0xf800ffff, .op = 0x28001f46 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_LOADRUH_IO_SL2_RETURN_TNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 24 } }, .imm_scale = 1, .syntax = 10 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = memuh(+) ; if (P0.new) dealloc_return:nt",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 0011111101000000EE01111101000110 | dealloc_return ; if (p0.new) dealloc_return:nt
		.encoding = { .mask = 0xffffffff, .op = 0x3f401f46 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_RETURN_SL2_RETURN_TNEW,
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "dealloc_return ; if (P0.new) dealloc_return:nt",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 0011111101000101EE01111101000110 | if (!p0) dealloc_return ; if (p0.new) dealloc_return:nt
		.encoding = { .mask = 0xffffffff, .op = 0x3f451f46 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_RETURN_F_SL2_RETURN_TNEW,
		.pred = HEX_PRED_FALSE | HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "if (!P0) dealloc_return ; if (P0.new) dealloc_return:nt",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 0011111101000100EE01111101000110 | if (p0) dealloc_return ; if (p0.new) dealloc_return:nt
		.encoding = { .mask = 0xffffffff, .op = 0x3f441f46 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_RETURN_T_SL2_RETURN_TNEW,
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "if (P0) dealloc_return ; if (P0.new) dealloc_return:nt",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 0011111101000110EE01111101000110 | if (p0.new) dealloc_return:nt ; if (p0.new) dealloc_return:nt
		.encoding = { .mask = 0xffffffff, .op = 0x3f461f46 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_RETURN_TNEW_SL2_RETURN_TNEW,
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "if (P0.new) dealloc_return:nt ; if (P0.new) dealloc_return:nt",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{ { 0 } },
};

static const HexInsnTemplate templates_duplex_0x3[] = {
	{
		// 00100iiiiiiiXXXXEE111000ssssxxxx | RX = add(RXin,Ii) ; Rx = add(Rxin,Rs)
		.encoding = { .mask = 0xf800ff00, .op = 0x20003800 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDI_SA1_ADDRX,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 20 } }, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 19 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 20 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,) ;  = add(,)",
	},
	{
		// 00111000SSSSXXXXEE111000ssssxxxx | RX = add(RXin,RS) ; Rx = add(Rxin,Rs)
		.encoding = { .mask = 0xff00ff00, .op = 0x38003800 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDRX_SA1_ADDRX,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 19 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 20 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,) ;  = add(,)",
	},
	{
		// 001011iiiiiiddddEE111000ssssxxxx | Rd = add(r29,Ii) ; Rx = add(Rxin,Rs)
		.encoding = { .mask = 0xfc00ff00, .op = 0x2c003800 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDSP_SA1_ADDRX,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x6, 20 } }, .imm_scale = 2, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 22 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 23 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(R29,) ;  = add(,)",
	},
	{
		// 00110010SSSSddddEE111000ssssxxxx | Rd = and(RS,#1) ; Rx = add(Rxin,Rs)
		.encoding = { .mask = 0xff00ff00, .op = 0x32003800 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_AND1_SA1_ADDRX,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 21 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 22 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = and(,#1) ;  = add(,)",
	},
	{
		// 00110011SSSSddddEE111000ssssxxxx | Rd = add(RS,n1) ; Rx = add(Rxin,Rs)
		.encoding = { .mask = 0xff00ff00, .op = 0x33003800 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_DEC_SA1_ADDRX,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 19 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 20 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,) ;  = add(,)",
	},
	{
		// 00110001SSSSddddEE111000ssssxxxx | Rd = add(RS,#1) ; Rx = add(Rxin,Rs)
		.encoding = { .mask = 0xff00ff00, .op = 0x31003800 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_INC_SA1_ADDRX,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 21 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 22 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,#1) ;  = add(,)",
	},
	{
		// 001010iiiiiiddddEE111000ssssxxxx | Rd = Ii ; Rx = add(Rxin,Rs)
		.encoding = { .mask = 0xfc00ff00, .op = 0x28003800 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SETI_SA1_ADDRX,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x6, 20 } }, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ;  = add(,)",
	},
	{
		// 00110101SSSSddddEE111000ssssxxxx | Rd = sxtb(RS) ; Rx = add(Rxin,Rs)
		.encoding = { .mask = 0xff00ff00, .op = 0x35003800 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SXTB_SA1_ADDRX,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 19 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 20 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = sxtb() ;  = add(,)",
	},
	{
		// 00110100SSSSddddEE111000ssssxxxx | Rd = sxth(RS) ; Rx = add(Rxin,Rs)
		.encoding = { .mask = 0xff00ff00, .op = 0x34003800 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SXTH_SA1_ADDRX,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 19 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 20 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = sxth() ;  = add(,)",
	},
	{
		// 00110000SSSSddddEE111000ssssxxxx | Rd = RS ; Rx = add(Rxin,Rs)
		.encoding = { .mask = 0xff00ff00, .op = 0x30003800 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_TFR_SA1_ADDRX,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ;  = add(,)",
	},
	{
		// 00110111SSSSddddEE111000ssssxxxx | Rd = and(RS,#255) ; Rx = add(Rxin,Rs)
		.encoding = { .mask = 0xff00ff00, .op = 0x37003800 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ZXTB_SA1_ADDRX,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 23 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 24 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = and(,#255) ;  = add(,)",
	},
	{
		// 00110110SSSSddddEE111000ssssxxxx | Rd = zxth(RS) ; Rx = add(Rxin,Rs)
		.encoding = { .mask = 0xff00ff00, .op = 0x36003800 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ZXTH_SA1_ADDRX,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 19 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 20 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = zxth() ;  = add(,)",
	},
	{
		// 001010iiiiiiddddEE111000ssssxxxx | Rd = Ii ; Rx = add(Rxin,Rs)
		.encoding = { .mask = 0xfc00ff00, .op = 0x28003800 },
		.id = HEX_INS_X2_AUTOJOIN_UNDOCUMENTED_SA2_TFRSI_SA1_ADDRX,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x6, 20 } }, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ;  = add(,)",
	},
	{
		// 00100IIIIIIIxxxxEE1011iiiiiidddd | Rx = add(Rxin,II) ; Rd = add(r29,Ii)
		.encoding = { .mask = 0xf800fc00, .op = 0x20002c00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDI_SA1_ADDSP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 20 } }, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x6, 4 } }, .imm_scale = 2, .syntax = 23 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,) ;  = add(R29,)",
	},
	{
		// 001011IIIIIIDDDDEE1011iiiiiidddd | RD = add(r29,II) ; Rd = add(r29,Ii)
		.encoding = { .mask = 0xfc00fc00, .op = 0x2c002c00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDSP_SA1_ADDSP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x6, 20 } }, .imm_scale = 2, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x6, 4 } }, .imm_scale = 2, .syntax = 26 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(R29,) ;  = add(R29,)",
	},
	{
		// 001010IIIIIIDDDDEE1011iiiiiidddd | RD = II ; Rd = add(r29,Ii)
		.encoding = { .mask = 0xfc00fc00, .op = 0x28002c00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SETI_SA1_ADDSP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x6, 20 } }, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x6, 4 } }, .imm_scale = 2, .syntax = 17 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ;  = add(R29,)",
	},
	{
		// 001010IIIIIIDDDDEE1011iiiiiidddd | RD = II ; Rd = add(r29,Ii)
		.encoding = { .mask = 0xfc00fc00, .op = 0x28002c00 },
		.id = HEX_INS_X2_AUTOJOIN_UNDOCUMENTED_SA2_TFRSI_SA1_ADDSP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x6, 20 } }, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x6, 4 } }, .imm_scale = 2, .syntax = 17 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ;  = add(R29,)",
	},
	{
		// 00100iiiiiiixxxxEE110010ssssdddd | Rx = add(Rxin,Ii) ; Rd = and(Rs,#1)
		.encoding = { .mask = 0xf800ff00, .op = 0x20003200 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDI_SA1_AND1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 20 } }, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 19 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,) ;  = and(,#1)",
	},
	{
		// 001011iiiiiiDDDDEE110010ssssdddd | RD = add(r29,Ii) ; Rd = and(Rs,#1)
		.encoding = { .mask = 0xfc00ff00, .op = 0x2c003200 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDSP_SA1_AND1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x6, 20 } }, .imm_scale = 2, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 22 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(R29,) ;  = and(,#1)",
	},
	{
		// 00110010SSSSDDDDEE110010ssssdddd | RD = and(RS,#1) ; Rd = and(Rs,#1)
		.encoding = { .mask = 0xff00ff00, .op = 0x32003200 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_AND1_SA1_AND1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 21 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = and(,#1) ;  = and(,#1)",
	},
	{
		// 00110001SSSSDDDDEE110010ssssdddd | RD = add(RS,#1) ; Rd = and(Rs,#1)
		.encoding = { .mask = 0xff00ff00, .op = 0x31003200 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_INC_SA1_AND1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 21 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,#1) ;  = and(,#1)",
	},
	{
		// 001010iiiiiiDDDDEE110010ssssdddd | RD = Ii ; Rd = and(Rs,#1)
		.encoding = { .mask = 0xfc00ff00, .op = 0x28003200 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SETI_SA1_AND1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x6, 20 } }, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ;  = and(,#1)",
	},
	{
		// 00110000SSSSDDDDEE110010ssssdddd | RD = RS ; Rd = and(Rs,#1)
		.encoding = { .mask = 0xff00ff00, .op = 0x30003200 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_TFR_SA1_AND1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ;  = and(,#1)",
	},
	{
		// 001010iiiiiiDDDDEE110010ssssdddd | RD = Ii ; Rd = and(Rs,#1)
		.encoding = { .mask = 0xfc00ff00, .op = 0x28003200 },
		.id = HEX_INS_X2_AUTOJOIN_UNDOCUMENTED_SA2_TFRSI_SA1_AND1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x6, 20 } }, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ;  = and(,#1)",
	},
	{
		// 00100iiiiiiixxxxEE1110100111dddd | Rx = add(Rxin,Ii) ; if (!p0) Rd = #0
		.encoding = { .mask = 0xf800fff0, .op = 0x20003a70 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDI_SA1_CLRF,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 20 } }, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 21 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = " = add(,) ; if (!P0)  = #0",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00111000ssssxxxxEE1110100111dddd | Rx = add(Rxin,Rs) ; if (!p0) Rd = #0
		.encoding = { .mask = 0xff00fff0, .op = 0x38003a70 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDRX_SA1_CLRF,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 21 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = " = add(,) ; if (!P0)  = #0",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 001011iiiiiiDDDDEE1110100111dddd | RD = add(r29,Ii) ; if (!p0) Rd = #0
		.encoding = { .mask = 0xfc00fff0, .op = 0x2c003a70 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDSP_SA1_CLRF,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x6, 20 } }, .imm_scale = 2, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 24 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = " = add(R29,) ; if (!P0)  = #0",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00110010ssssDDDDEE1110100111dddd | RD = and(Rs,#1) ; if (!p0) Rd = #0
		.encoding = { .mask = 0xff00fff0, .op = 0x32003a70 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_AND1_SA1_CLRF,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 23 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = " = and(,#1) ; if (!P0)  = #0",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 001110100111DDDDEE1110100111dddd | if (!p0) RD = #0 ; if (!p0) Rd = #0
		.encoding = { .mask = 0xfff0fff0, .op = 0x3a703a70 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRF_SA1_CLRF,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 26 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!P0)  = #0 ; if (!P0)  = #0",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 001110100101DDDDEE1110100111dddd | if (!p0.new) RD = #0 ; if (!p0) Rd = #0
		.encoding = { .mask = 0xfff0fff0, .op = 0x3a503a70 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRFNEW_SA1_CLRF,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 30 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!P0.new)  = #0 ; if (!P0)  = #0",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 001110100110DDDDEE1110100111dddd | if (p0) RD = #0 ; if (!p0) Rd = #0
		.encoding = { .mask = 0xfff0fff0, .op = 0x3a603a70 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRT_SA1_CLRF,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 25 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (P0)  = #0 ; if (!P0)  = #0",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 001110100100DDDDEE1110100111dddd | if (p0.new) RD = #0 ; if (!p0) Rd = #0
		.encoding = { .mask = 0xfff0fff0, .op = 0x3a403a70 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRTNEW_SA1_CLRF,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 29 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (P0.new)  = #0 ; if (!P0)  = #0",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00111001ssss00iiEE1110100111dddd | p0 = cmp.eq(Rs,Ii) ; if (!p0) Rd = #0
		.encoding = { .mask = 0xff0cfff0, .op = 0x39003a70 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CMPEQI_SA1_CLRF,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 16 } }, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 26 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "P0 = cmp.eq(,) ; if (!P0)  = #0",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00110011ssssDDDDEE1110100111dddd | RD = add(Rs,n1) ; if (!p0) Rd = #0
		.encoding = { .mask = 0xff00fff0, .op = 0x33003a70 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_DEC_SA1_CLRF,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 21 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = " = add(,) ; if (!P0)  = #0",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00110001ssssDDDDEE1110100111dddd | RD = add(Rs,#1) ; if (!p0) Rd = #0
		.encoding = { .mask = 0xff00fff0, .op = 0x31003a70 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_INC_SA1_CLRF,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 23 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = " = add(,#1) ; if (!P0)  = #0",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 001010iiiiiiDDDDEE1110100111dddd | RD = Ii ; if (!p0) Rd = #0
		.encoding = { .mask = 0xfc00fff0, .op = 0x28003a70 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SETI_SA1_CLRF,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x6, 20 } }, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 15 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = " =  ; if (!P0)  = #0",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 001110100000DDDDEE1110100111dddd | RD = n1 ; if (!p0) Rd = #0
		.encoding = { .mask = 0xfff0fff0, .op = 0x3a003a70 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SETIN1_SA1_CLRF,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 15 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = " =  ; if (!P0)  = #0",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00110101ssssDDDDEE1110100111dddd | RD = sxtb(Rs) ; if (!p0) Rd = #0
		.encoding = { .mask = 0xff00fff0, .op = 0x35003a70 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SXTB_SA1_CLRF,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 21 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = " = sxtb() ; if (!P0)  = #0",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00110100ssssDDDDEE1110100111dddd | RD = sxth(Rs) ; if (!p0) Rd = #0
		.encoding = { .mask = 0xff00fff0, .op = 0x34003a70 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SXTH_SA1_CLRF,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 21 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = " = sxth() ; if (!P0)  = #0",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00110000ssssDDDDEE1110100111dddd | RD = Rs ; if (!p0) Rd = #0
		.encoding = { .mask = 0xff00fff0, .op = 0x30003a70 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_TFR_SA1_CLRF,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 15 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = " =  ; if (!P0)  = #0",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00110111ssssDDDDEE1110100111dddd | RD = and(Rs,#255) ; if (!p0) Rd = #0
		.encoding = { .mask = 0xff00fff0, .op = 0x37003a70 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ZXTB_SA1_CLRF,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 25 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = " = and(,#255) ; if (!P0)  = #0",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00110110ssssDDDDEE1110100111dddd | RD = zxth(Rs) ; if (!p0) Rd = #0
		.encoding = { .mask = 0xff00fff0, .op = 0x36003a70 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ZXTH_SA1_CLRF,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 21 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = " = zxth() ; if (!P0)  = #0",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 001010iiiiiiDDDDEE1110100111dddd | RD = Ii ; if (!p0) Rd = #0
		.encoding = { .mask = 0xfc00fff0, .op = 0x28003a70 },
		.id = HEX_INS_X2_AUTOJOIN_UNDOCUMENTED_SA2_TFRSI_SA1_CLRF,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x6, 20 } }, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 15 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = " =  ; if (!P0)  = #0",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00100iiiiiiixxxxEE1110100101dddd | Rx = add(Rxin,Ii) ; if (!p0.new) Rd = #0
		.encoding = { .mask = 0xf800fff0, .op = 0x20003a50 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDI_SA1_CLRFNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 20 } }, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 25 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = " = add(,) ; if (!P0.new)  = #0",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00111000ssssxxxxEE1110100101dddd | Rx = add(Rxin,Rs) ; if (!p0.new) Rd = #0
		.encoding = { .mask = 0xff00fff0, .op = 0x38003a50 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDRX_SA1_CLRFNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 25 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = " = add(,) ; if (!P0.new)  = #0",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 001011iiiiiiDDDDEE1110100101dddd | RD = add(r29,Ii) ; if (!p0.new) Rd = #0
		.encoding = { .mask = 0xfc00fff0, .op = 0x2c003a50 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDSP_SA1_CLRFNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x6, 20 } }, .imm_scale = 2, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 28 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = " = add(R29,) ; if (!P0.new)  = #0",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00110010ssssDDDDEE1110100101dddd | RD = and(Rs,#1) ; if (!p0.new) Rd = #0
		.encoding = { .mask = 0xff00fff0, .op = 0x32003a50 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_AND1_SA1_CLRFNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 27 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = " = and(,#1) ; if (!P0.new)  = #0",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 001110100101DDDDEE1110100101dddd | if (!p0.new) RD = #0 ; if (!p0.new) Rd = #0
		.encoding = { .mask = 0xfff0fff0, .op = 0x3a503a50 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRFNEW_SA1_CLRFNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 34 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!P0.new)  = #0 ; if (!P0.new)  = #0",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 001110100100DDDDEE1110100101dddd | if (p0.new) RD = #0 ; if (!p0.new) Rd = #0
		.encoding = { .mask = 0xfff0fff0, .op = 0x3a403a50 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRTNEW_SA1_CLRFNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 33 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (P0.new)  = #0 ; if (!P0.new)  = #0",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00111001ssss00iiEE1110100101dddd | p0 = cmp.eq(Rs,Ii) ; if (!p0.new) Rd = #0
		.encoding = { .mask = 0xff0cfff0, .op = 0x39003a50 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CMPEQI_SA1_CLRFNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 16 } }, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 30 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "P0 = cmp.eq(,) ; if (!P0.new)  = #0",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00110011ssssDDDDEE1110100101dddd | RD = add(Rs,n1) ; if (!p0.new) Rd = #0
		.encoding = { .mask = 0xff00fff0, .op = 0x33003a50 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_DEC_SA1_CLRFNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 25 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = " = add(,) ; if (!P0.new)  = #0",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00110001ssssDDDDEE1110100101dddd | RD = add(Rs,#1) ; if (!p0.new) Rd = #0
		.encoding = { .mask = 0xff00fff0, .op = 0x31003a50 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_INC_SA1_CLRFNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 27 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = " = add(,#1) ; if (!P0.new)  = #0",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 001010iiiiiiDDDDEE1110100101dddd | RD = Ii ; if (!p0.new) Rd = #0
		.encoding = { .mask = 0xfc00fff0, .op = 0x28003a50 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SETI_SA1_CLRFNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x6, 20 } }, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 19 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = " =  ; if (!P0.new)  = #0",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 001110100000DDDDEE1110100101dddd | RD = n1 ; if (!p0.new) Rd = #0
		.encoding = { .mask = 0xfff0fff0, .op = 0x3a003a50 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SETIN1_SA1_CLRFNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 19 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = " =  ; if (!P0.new)  = #0",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00110101ssssDDDDEE1110100101dddd | RD = sxtb(Rs) ; if (!p0.new) Rd = #0
		.encoding = { .mask = 0xff00fff0, .op = 0x35003a50 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SXTB_SA1_CLRFNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 25 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = " = sxtb() ; if (!P0.new)  = #0",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00110100ssssDDDDEE1110100101dddd | RD = sxth(Rs) ; if (!p0.new) Rd = #0
		.encoding = { .mask = 0xff00fff0, .op = 0x34003a50 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SXTH_SA1_CLRFNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 25 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = " = sxth() ; if (!P0.new)  = #0",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00110000ssssDDDDEE1110100101dddd | RD = Rs ; if (!p0.new) Rd = #0
		.encoding = { .mask = 0xff00fff0, .op = 0x30003a50 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_TFR_SA1_CLRFNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 19 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = " =  ; if (!P0.new)  = #0",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00110111ssssDDDDEE1110100101dddd | RD = and(Rs,#255) ; if (!p0.new) Rd = #0
		.encoding = { .mask = 0xff00fff0, .op = 0x37003a50 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ZXTB_SA1_CLRFNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 29 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = " = and(,#255) ; if (!P0.new)  = #0",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00110110ssssDDDDEE1110100101dddd | RD = zxth(Rs) ; if (!p0.new) Rd = #0
		.encoding = { .mask = 0xff00fff0, .op = 0x36003a50 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ZXTH_SA1_CLRFNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 25 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = " = zxth() ; if (!P0.new)  = #0",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 001010iiiiiiDDDDEE1110100101dddd | RD = Ii ; if (!p0.new) Rd = #0
		.encoding = { .mask = 0xfc00fff0, .op = 0x28003a50 },
		.id = HEX_INS_X2_AUTOJOIN_UNDOCUMENTED_SA2_TFRSI_SA1_CLRFNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x6, 20 } }, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 19 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = " =  ; if (!P0.new)  = #0",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00100iiiiiiixxxxEE1110100110dddd | Rx = add(Rxin,Ii) ; if (p0) Rd = #0
		.encoding = { .mask = 0xf800fff0, .op = 0x20003a60 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDI_SA1_CLRT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 20 } }, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 20 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = " = add(,) ; if (P0)  = #0",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00111000ssssxxxxEE1110100110dddd | Rx = add(Rxin,Rs) ; if (p0) Rd = #0
		.encoding = { .mask = 0xff00fff0, .op = 0x38003a60 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDRX_SA1_CLRT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 20 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = " = add(,) ; if (P0)  = #0",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 001011iiiiiiDDDDEE1110100110dddd | RD = add(r29,Ii) ; if (p0) Rd = #0
		.encoding = { .mask = 0xfc00fff0, .op = 0x2c003a60 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDSP_SA1_CLRT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x6, 20 } }, .imm_scale = 2, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 23 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = " = add(R29,) ; if (P0)  = #0",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00110010ssssDDDDEE1110100110dddd | RD = and(Rs,#1) ; if (p0) Rd = #0
		.encoding = { .mask = 0xff00fff0, .op = 0x32003a60 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_AND1_SA1_CLRT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 22 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = " = and(,#1) ; if (P0)  = #0",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 001110100101DDDDEE1110100110dddd | if (!p0.new) RD = #0 ; if (p0) Rd = #0
		.encoding = { .mask = 0xfff0fff0, .op = 0x3a503a60 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRFNEW_SA1_CLRT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 29 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!P0.new)  = #0 ; if (P0)  = #0",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 001110100110DDDDEE1110100110dddd | if (p0) RD = #0 ; if (p0) Rd = #0
		.encoding = { .mask = 0xfff0fff0, .op = 0x3a603a60 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRT_SA1_CLRT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 24 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (P0)  = #0 ; if (P0)  = #0",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 001110100100DDDDEE1110100110dddd | if (p0.new) RD = #0 ; if (p0) Rd = #0
		.encoding = { .mask = 0xfff0fff0, .op = 0x3a403a60 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRTNEW_SA1_CLRT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 28 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (P0.new)  = #0 ; if (P0)  = #0",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00111001ssss00iiEE1110100110dddd | p0 = cmp.eq(Rs,Ii) ; if (p0) Rd = #0
		.encoding = { .mask = 0xff0cfff0, .op = 0x39003a60 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CMPEQI_SA1_CLRT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 16 } }, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 25 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "P0 = cmp.eq(,) ; if (P0)  = #0",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00110011ssssDDDDEE1110100110dddd | RD = add(Rs,n1) ; if (p0) Rd = #0
		.encoding = { .mask = 0xff00fff0, .op = 0x33003a60 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_DEC_SA1_CLRT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 20 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = " = add(,) ; if (P0)  = #0",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00110001ssssDDDDEE1110100110dddd | RD = add(Rs,#1) ; if (p0) Rd = #0
		.encoding = { .mask = 0xff00fff0, .op = 0x31003a60 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_INC_SA1_CLRT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 22 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = " = add(,#1) ; if (P0)  = #0",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 001010iiiiiiDDDDEE1110100110dddd | RD = Ii ; if (p0) Rd = #0
		.encoding = { .mask = 0xfc00fff0, .op = 0x28003a60 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SETI_SA1_CLRT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x6, 20 } }, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 14 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = " =  ; if (P0)  = #0",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 001110100000DDDDEE1110100110dddd | RD = n1 ; if (p0) Rd = #0
		.encoding = { .mask = 0xfff0fff0, .op = 0x3a003a60 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SETIN1_SA1_CLRT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 14 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = " =  ; if (P0)  = #0",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00110101ssssDDDDEE1110100110dddd | RD = sxtb(Rs) ; if (p0) Rd = #0
		.encoding = { .mask = 0xff00fff0, .op = 0x35003a60 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SXTB_SA1_CLRT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 20 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = " = sxtb() ; if (P0)  = #0",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00110100ssssDDDDEE1110100110dddd | RD = sxth(Rs) ; if (p0) Rd = #0
		.encoding = { .mask = 0xff00fff0, .op = 0x34003a60 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SXTH_SA1_CLRT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 20 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = " = sxth() ; if (P0)  = #0",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00110000ssssDDDDEE1110100110dddd | RD = Rs ; if (p0) Rd = #0
		.encoding = { .mask = 0xff00fff0, .op = 0x30003a60 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_TFR_SA1_CLRT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 14 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = " =  ; if (P0)  = #0",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00110111ssssDDDDEE1110100110dddd | RD = and(Rs,#255) ; if (p0) Rd = #0
		.encoding = { .mask = 0xff00fff0, .op = 0x37003a60 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ZXTB_SA1_CLRT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 24 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = " = and(,#255) ; if (P0)  = #0",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00110110ssssDDDDEE1110100110dddd | RD = zxth(Rs) ; if (p0) Rd = #0
		.encoding = { .mask = 0xff00fff0, .op = 0x36003a60 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ZXTH_SA1_CLRT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 20 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = " = zxth() ; if (P0)  = #0",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 001010iiiiiiDDDDEE1110100110dddd | RD = Ii ; if (p0) Rd = #0
		.encoding = { .mask = 0xfc00fff0, .op = 0x28003a60 },
		.id = HEX_INS_X2_AUTOJOIN_UNDOCUMENTED_SA2_TFRSI_SA1_CLRT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x6, 20 } }, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 14 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = " =  ; if (P0)  = #0",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00100iiiiiiixxxxEE1110100100dddd | Rx = add(Rxin,Ii) ; if (p0.new) Rd = #0
		.encoding = { .mask = 0xf800fff0, .op = 0x20003a40 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDI_SA1_CLRTNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 20 } }, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 24 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = " = add(,) ; if (P0.new)  = #0",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00111000ssssxxxxEE1110100100dddd | Rx = add(Rxin,Rs) ; if (p0.new) Rd = #0
		.encoding = { .mask = 0xff00fff0, .op = 0x38003a40 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDRX_SA1_CLRTNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 24 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = " = add(,) ; if (P0.new)  = #0",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 001011iiiiiiDDDDEE1110100100dddd | RD = add(r29,Ii) ; if (p0.new) Rd = #0
		.encoding = { .mask = 0xfc00fff0, .op = 0x2c003a40 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDSP_SA1_CLRTNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x6, 20 } }, .imm_scale = 2, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 27 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = " = add(R29,) ; if (P0.new)  = #0",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00110010ssssDDDDEE1110100100dddd | RD = and(Rs,#1) ; if (p0.new) Rd = #0
		.encoding = { .mask = 0xff00fff0, .op = 0x32003a40 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_AND1_SA1_CLRTNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 26 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = " = and(,#1) ; if (P0.new)  = #0",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 001110100100DDDDEE1110100100dddd | if (p0.new) RD = #0 ; if (p0.new) Rd = #0
		.encoding = { .mask = 0xfff0fff0, .op = 0x3a403a40 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRTNEW_SA1_CLRTNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 32 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (P0.new)  = #0 ; if (P0.new)  = #0",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00111001ssss00iiEE1110100100dddd | p0 = cmp.eq(Rs,Ii) ; if (p0.new) Rd = #0
		.encoding = { .mask = 0xff0cfff0, .op = 0x39003a40 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CMPEQI_SA1_CLRTNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 16 } }, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 29 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "P0 = cmp.eq(,) ; if (P0.new)  = #0",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00110011ssssDDDDEE1110100100dddd | RD = add(Rs,n1) ; if (p0.new) Rd = #0
		.encoding = { .mask = 0xff00fff0, .op = 0x33003a40 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_DEC_SA1_CLRTNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 24 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = " = add(,) ; if (P0.new)  = #0",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00110001ssssDDDDEE1110100100dddd | RD = add(Rs,#1) ; if (p0.new) Rd = #0
		.encoding = { .mask = 0xff00fff0, .op = 0x31003a40 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_INC_SA1_CLRTNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 26 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = " = add(,#1) ; if (P0.new)  = #0",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 001010iiiiiiDDDDEE1110100100dddd | RD = Ii ; if (p0.new) Rd = #0
		.encoding = { .mask = 0xfc00fff0, .op = 0x28003a40 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SETI_SA1_CLRTNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x6, 20 } }, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 18 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = " =  ; if (P0.new)  = #0",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 001110100000DDDDEE1110100100dddd | RD = n1 ; if (p0.new) Rd = #0
		.encoding = { .mask = 0xfff0fff0, .op = 0x3a003a40 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SETIN1_SA1_CLRTNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 18 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = " =  ; if (P0.new)  = #0",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00110101ssssDDDDEE1110100100dddd | RD = sxtb(Rs) ; if (p0.new) Rd = #0
		.encoding = { .mask = 0xff00fff0, .op = 0x35003a40 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SXTB_SA1_CLRTNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 24 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = " = sxtb() ; if (P0.new)  = #0",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00110100ssssDDDDEE1110100100dddd | RD = sxth(Rs) ; if (p0.new) Rd = #0
		.encoding = { .mask = 0xff00fff0, .op = 0x34003a40 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SXTH_SA1_CLRTNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 24 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = " = sxth() ; if (P0.new)  = #0",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00110000ssssDDDDEE1110100100dddd | RD = Rs ; if (p0.new) Rd = #0
		.encoding = { .mask = 0xff00fff0, .op = 0x30003a40 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_TFR_SA1_CLRTNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 18 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = " =  ; if (P0.new)  = #0",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00110111ssssDDDDEE1110100100dddd | RD = and(Rs,#255) ; if (p0.new) Rd = #0
		.encoding = { .mask = 0xff00fff0, .op = 0x37003a40 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ZXTB_SA1_CLRTNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 28 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = " = and(,#255) ; if (P0.new)  = #0",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00110110ssssDDDDEE1110100100dddd | RD = zxth(Rs) ; if (p0.new) Rd = #0
		.encoding = { .mask = 0xff00fff0, .op = 0x36003a40 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ZXTH_SA1_CLRTNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 24 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = " = zxth() ; if (P0.new)  = #0",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 001010iiiiiiDDDDEE1110100100dddd | RD = Ii ; if (p0.new) Rd = #0
		.encoding = { .mask = 0xfc00fff0, .op = 0x28003a40 },
		.id = HEX_INS_X2_AUTOJOIN_UNDOCUMENTED_SA2_TFRSI_SA1_CLRTNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x6, 20 } }, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 18 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = " =  ; if (P0.new)  = #0",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00100IIIIIIIxxxxEE111001ssss00ii | Rx = add(Rxin,II) ; p0 = cmp.eq(Rs,Ii)
		.encoding = { .mask = 0xf800ff0c, .op = 0x20003900 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDI_SA1_CMPEQI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 20 } }, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 24 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 0 } }, .syntax = 25 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,) ; P0 = cmp.eq(,)",
	},
	{
		// 00111000SSSSxxxxEE111001ssss00ii | Rx = add(Rxin,RS) ; p0 = cmp.eq(Rs,Ii)
		.encoding = { .mask = 0xff00ff0c, .op = 0x38003900 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDRX_SA1_CMPEQI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 24 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 0 } }, .syntax = 25 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,) ; P0 = cmp.eq(,)",
	},
	{
		// 001011IIIIIIddddEE111001ssss00ii | Rd = add(r29,II) ; p0 = cmp.eq(Rs,Ii)
		.encoding = { .mask = 0xfc00ff0c, .op = 0x2c003900 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDSP_SA1_CMPEQI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x6, 20 } }, .imm_scale = 2, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 27 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 0 } }, .syntax = 28 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(R29,) ; P0 = cmp.eq(,)",
	},
	{
		// 00110010SSSSddddEE111001ssss00ii | Rd = and(RS,#1) ; p0 = cmp.eq(Rs,Ii)
		.encoding = { .mask = 0xff00ff0c, .op = 0x32003900 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_AND1_SA1_CMPEQI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 26 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 0 } }, .syntax = 27 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = and(,#1) ; P0 = cmp.eq(,)",
	},
	{
		// 00111001SSSS00IIEE111001ssss00ii | p0 = cmp.eq(RS,II) ; p0 = cmp.eq(Rs,Ii)
		.encoding = { .mask = 0xff0cff0c, .op = 0x39003900 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CMPEQI_SA1_CMPEQI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 16 } }, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 29 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 0 } }, .syntax = 30 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "P0 = cmp.eq(,) ; P0 = cmp.eq(,)",
	},
	{
		// 00110011SSSSddddEE111001ssss00ii | Rd = add(RS,n1) ; p0 = cmp.eq(Rs,Ii)
		.encoding = { .mask = 0xff00ff0c, .op = 0x33003900 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_DEC_SA1_CMPEQI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 24 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 0 } }, .syntax = 25 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,) ; P0 = cmp.eq(,)",
	},
	{
		// 00110001SSSSddddEE111001ssss00ii | Rd = add(RS,#1) ; p0 = cmp.eq(Rs,Ii)
		.encoding = { .mask = 0xff00ff0c, .op = 0x31003900 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_INC_SA1_CMPEQI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 26 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 0 } }, .syntax = 27 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,#1) ; P0 = cmp.eq(,)",
	},
	{
		// 001010IIIIIIddddEE111001ssss00ii | Rd = II ; p0 = cmp.eq(Rs,Ii)
		.encoding = { .mask = 0xfc00ff0c, .op = 0x28003900 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SETI_SA1_CMPEQI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x6, 20 } }, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 0 } }, .syntax = 19 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ; P0 = cmp.eq(,)",
	},
	{
		// 00110101SSSSddddEE111001ssss00ii | Rd = sxtb(RS) ; p0 = cmp.eq(Rs,Ii)
		.encoding = { .mask = 0xff00ff0c, .op = 0x35003900 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SXTB_SA1_CMPEQI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 24 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 0 } }, .syntax = 25 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = sxtb() ; P0 = cmp.eq(,)",
	},
	{
		// 00110100SSSSddddEE111001ssss00ii | Rd = sxth(RS) ; p0 = cmp.eq(Rs,Ii)
		.encoding = { .mask = 0xff00ff0c, .op = 0x34003900 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SXTH_SA1_CMPEQI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 24 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 0 } }, .syntax = 25 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = sxth() ; P0 = cmp.eq(,)",
	},
	{
		// 00110000SSSSddddEE111001ssss00ii | Rd = RS ; p0 = cmp.eq(Rs,Ii)
		.encoding = { .mask = 0xff00ff0c, .op = 0x30003900 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_TFR_SA1_CMPEQI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 0 } }, .syntax = 19 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ; P0 = cmp.eq(,)",
	},
	{
		// 00110111SSSSddddEE111001ssss00ii | Rd = and(RS,#255) ; p0 = cmp.eq(Rs,Ii)
		.encoding = { .mask = 0xff00ff0c, .op = 0x37003900 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ZXTB_SA1_CMPEQI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 28 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 0 } }, .syntax = 29 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = and(,#255) ; P0 = cmp.eq(,)",
	},
	{
		// 00110110SSSSddddEE111001ssss00ii | Rd = zxth(RS) ; p0 = cmp.eq(Rs,Ii)
		.encoding = { .mask = 0xff00ff0c, .op = 0x36003900 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ZXTH_SA1_CMPEQI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 24 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 0 } }, .syntax = 25 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = zxth() ; P0 = cmp.eq(,)",
	},
	{
		// 001010IIIIIIddddEE111001ssss00ii | Rd = II ; p0 = cmp.eq(Rs,Ii)
		.encoding = { .mask = 0xfc00ff0c, .op = 0x28003900 },
		.id = HEX_INS_X2_AUTOJOIN_UNDOCUMENTED_SA2_TFRSI_SA1_CMPEQI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x6, 20 } }, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 0 } }, .syntax = 19 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ; P0 = cmp.eq(,)",
	},
	{
		// 00100IIIIIIIxxxxEE1111000ii00ddd | Rx = add(Rxin,II) ; Rdd = combine(#0,Ii)
		.encoding = { .mask = 0xf800ff98, .op = 0x20003c00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDI_SA1_COMBINE0I,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 20 } }, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 5 } }, .syntax = 26 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,) ;  = combine(#0,)",
	},
	{
		// 00111000ssssxxxxEE1111000ii00ddd | Rx = add(Rxin,Rs) ; Rdd = combine(#0,Ii)
		.encoding = { .mask = 0xff00ff98, .op = 0x38003c00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDRX_SA1_COMBINE0I,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 5 } }, .syntax = 26 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,) ;  = combine(#0,)",
	},
	{
		// 001011IIIIIIDDDDEE1111000ii00ddd | RD = add(r29,II) ; Rdd = combine(#0,Ii)
		.encoding = { .mask = 0xfc00ff98, .op = 0x2c003c00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDSP_SA1_COMBINE0I,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x6, 20 } }, .imm_scale = 2, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 5 } }, .syntax = 29 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(R29,) ;  = combine(#0,)",
	},
	{
		// 00110010ssssDDDDEE1111000ii00ddd | RD = and(Rs,#1) ; Rdd = combine(#0,Ii)
		.encoding = { .mask = 0xff00ff98, .op = 0x32003c00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_AND1_SA1_COMBINE0I,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 5 } }, .syntax = 28 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = and(,#1) ;  = combine(#0,)",
	},
	{
		// 001110100111DDDDEE1111000ii00ddd | if (!p0) RD = #0 ; Rdd = combine(#0,Ii)
		.encoding = { .mask = 0xfff0ff98, .op = 0x3a703c00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRF_SA1_COMBINE0I,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 5 } }, .syntax = 31 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!P0)  = #0 ;  = combine(#0,)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 001110100101DDDDEE1111000ii00ddd | if (!p0.new) RD = #0 ; Rdd = combine(#0,Ii)
		.encoding = { .mask = 0xfff0ff98, .op = 0x3a503c00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRFNEW_SA1_COMBINE0I,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 21 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 5 } }, .syntax = 35 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!P0.new)  = #0 ;  = combine(#0,)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 001110100110DDDDEE1111000ii00ddd | if (p0) RD = #0 ; Rdd = combine(#0,Ii)
		.encoding = { .mask = 0xfff0ff98, .op = 0x3a603c00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRT_SA1_COMBINE0I,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 5 } }, .syntax = 30 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (P0)  = #0 ;  = combine(#0,)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 001110100100DDDDEE1111000ii00ddd | if (p0.new) RD = #0 ; Rdd = combine(#0,Ii)
		.encoding = { .mask = 0xfff0ff98, .op = 0x3a403c00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRTNEW_SA1_COMBINE0I,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 20 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 5 } }, .syntax = 34 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (P0.new)  = #0 ;  = combine(#0,)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00111001ssss00IIEE1111000ii00ddd | p0 = cmp.eq(Rs,II) ; Rdd = combine(#0,Ii)
		.encoding = { .mask = 0xff0cff98, .op = 0x39003c00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CMPEQI_SA1_COMBINE0I,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 16 } }, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 5 } }, .syntax = 31 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "P0 = cmp.eq(,) ;  = combine(#0,)",
	},
	{
		// 001111000II00DDDEE1111000ii00ddd | RDD = combine(#0,II) ; Rdd = combine(#0,Ii)
		.encoding = { .mask = 0xff98ff98, .op = 0x3c003c00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE0I_SA1_COMBINE0I,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 21 } }, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 5 } }, .syntax = 32 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(#0,) ;  = combine(#0,)",
	},
	{
		// 00110011ssssDDDDEE1111000ii00ddd | RD = add(Rs,n1) ; Rdd = combine(#0,Ii)
		.encoding = { .mask = 0xff00ff98, .op = 0x33003c00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_DEC_SA1_COMBINE0I,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 5 } }, .syntax = 26 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,) ;  = combine(#0,)",
	},
	{
		// 00110001ssssDDDDEE1111000ii00ddd | RD = add(Rs,#1) ; Rdd = combine(#0,Ii)
		.encoding = { .mask = 0xff00ff98, .op = 0x31003c00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_INC_SA1_COMBINE0I,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 5 } }, .syntax = 28 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,#1) ;  = combine(#0,)",
	},
	{
		// 001010IIIIIIDDDDEE1111000ii00ddd | RD = II ; Rdd = combine(#0,Ii)
		.encoding = { .mask = 0xfc00ff98, .op = 0x28003c00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SETI_SA1_COMBINE0I,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x6, 20 } }, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 5 } }, .syntax = 20 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ;  = combine(#0,)",
	},
	{
		// 001110100000DDDDEE1111000ii00ddd | RD = n1 ; Rdd = combine(#0,Ii)
		.encoding = { .mask = 0xfff0ff98, .op = 0x3a003c00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SETIN1_SA1_COMBINE0I,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 5 } }, .syntax = 20 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ;  = combine(#0,)",
	},
	{
		// 00110101ssssDDDDEE1111000ii00ddd | RD = sxtb(Rs) ; Rdd = combine(#0,Ii)
		.encoding = { .mask = 0xff00ff98, .op = 0x35003c00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SXTB_SA1_COMBINE0I,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 5 } }, .syntax = 26 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = sxtb() ;  = combine(#0,)",
	},
	{
		// 00110100ssssDDDDEE1111000ii00ddd | RD = sxth(Rs) ; Rdd = combine(#0,Ii)
		.encoding = { .mask = 0xff00ff98, .op = 0x34003c00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SXTH_SA1_COMBINE0I,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 5 } }, .syntax = 26 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = sxth() ;  = combine(#0,)",
	},
	{
		// 00110000ssssDDDDEE1111000ii00ddd | RD = Rs ; Rdd = combine(#0,Ii)
		.encoding = { .mask = 0xff00ff98, .op = 0x30003c00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_TFR_SA1_COMBINE0I,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 5 } }, .syntax = 20 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ;  = combine(#0,)",
	},
	{
		// 00110111ssssDDDDEE1111000ii00ddd | RD = and(Rs,#255) ; Rdd = combine(#0,Ii)
		.encoding = { .mask = 0xff00ff98, .op = 0x37003c00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ZXTB_SA1_COMBINE0I,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 5 } }, .syntax = 30 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = and(,#255) ;  = combine(#0,)",
	},
	{
		// 00110110ssssDDDDEE1111000ii00ddd | RD = zxth(Rs) ; Rdd = combine(#0,Ii)
		.encoding = { .mask = 0xff00ff98, .op = 0x36003c00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ZXTH_SA1_COMBINE0I,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 5 } }, .syntax = 26 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = zxth() ;  = combine(#0,)",
	},
	{
		// 001010IIIIIIDDDDEE1111000ii00ddd | RD = II ; Rdd = combine(#0,Ii)
		.encoding = { .mask = 0xfc00ff98, .op = 0x28003c00 },
		.id = HEX_INS_X2_AUTOJOIN_UNDOCUMENTED_SA2_TFRSI_SA1_COMBINE0I,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x6, 20 } }, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 5 } }, .syntax = 20 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ;  = combine(#0,)",
	},
	{
		// 00100IIIIIIIxxxxEE1111000ii01ddd | Rx = add(Rxin,II) ; Rdd = combine(#1,Ii)
		.encoding = { .mask = 0xf800ff98, .op = 0x20003c08 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDI_SA1_COMBINE1I,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 20 } }, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 5 } }, .syntax = 26 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,) ;  = combine(#1,)",
	},
	{
		// 00111000ssssxxxxEE1111000ii01ddd | Rx = add(Rxin,Rs) ; Rdd = combine(#1,Ii)
		.encoding = { .mask = 0xff00ff98, .op = 0x38003c08 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDRX_SA1_COMBINE1I,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 5 } }, .syntax = 26 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,) ;  = combine(#1,)",
	},
	{
		// 001011IIIIIIDDDDEE1111000ii01ddd | RD = add(r29,II) ; Rdd = combine(#1,Ii)
		.encoding = { .mask = 0xfc00ff98, .op = 0x2c003c08 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDSP_SA1_COMBINE1I,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x6, 20 } }, .imm_scale = 2, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 5 } }, .syntax = 29 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(R29,) ;  = combine(#1,)",
	},
	{
		// 00110010ssssDDDDEE1111000ii01ddd | RD = and(Rs,#1) ; Rdd = combine(#1,Ii)
		.encoding = { .mask = 0xff00ff98, .op = 0x32003c08 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_AND1_SA1_COMBINE1I,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 5 } }, .syntax = 28 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = and(,#1) ;  = combine(#1,)",
	},
	{
		// 001110100111DDDDEE1111000ii01ddd | if (!p0) RD = #0 ; Rdd = combine(#1,Ii)
		.encoding = { .mask = 0xfff0ff98, .op = 0x3a703c08 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRF_SA1_COMBINE1I,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 5 } }, .syntax = 31 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!P0)  = #0 ;  = combine(#1,)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 001110100101DDDDEE1111000ii01ddd | if (!p0.new) RD = #0 ; Rdd = combine(#1,Ii)
		.encoding = { .mask = 0xfff0ff98, .op = 0x3a503c08 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRFNEW_SA1_COMBINE1I,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 21 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 5 } }, .syntax = 35 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!P0.new)  = #0 ;  = combine(#1,)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 001110100110DDDDEE1111000ii01ddd | if (p0) RD = #0 ; Rdd = combine(#1,Ii)
		.encoding = { .mask = 0xfff0ff98, .op = 0x3a603c08 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRT_SA1_COMBINE1I,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 5 } }, .syntax = 30 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (P0)  = #0 ;  = combine(#1,)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 001110100100DDDDEE1111000ii01ddd | if (p0.new) RD = #0 ; Rdd = combine(#1,Ii)
		.encoding = { .mask = 0xfff0ff98, .op = 0x3a403c08 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRTNEW_SA1_COMBINE1I,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 20 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 5 } }, .syntax = 34 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (P0.new)  = #0 ;  = combine(#1,)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00111001ssss00IIEE1111000ii01ddd | p0 = cmp.eq(Rs,II) ; Rdd = combine(#1,Ii)
		.encoding = { .mask = 0xff0cff98, .op = 0x39003c08 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CMPEQI_SA1_COMBINE1I,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 16 } }, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 5 } }, .syntax = 31 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "P0 = cmp.eq(,) ;  = combine(#1,)",
	},
	{
		// 001111000II00DDDEE1111000ii01ddd | RDD = combine(#0,II) ; Rdd = combine(#1,Ii)
		.encoding = { .mask = 0xff98ff98, .op = 0x3c003c08 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE0I_SA1_COMBINE1I,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 21 } }, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 5 } }, .syntax = 32 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(#0,) ;  = combine(#1,)",
	},
	{
		// 001111000II01DDDEE1111000ii01ddd | RDD = combine(#1,II) ; Rdd = combine(#1,Ii)
		.encoding = { .mask = 0xff98ff98, .op = 0x3c083c08 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE1I_SA1_COMBINE1I,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 21 } }, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 5 } }, .syntax = 32 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(#1,) ;  = combine(#1,)",
	},
	{
		// 00110011ssssDDDDEE1111000ii01ddd | RD = add(Rs,n1) ; Rdd = combine(#1,Ii)
		.encoding = { .mask = 0xff00ff98, .op = 0x33003c08 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_DEC_SA1_COMBINE1I,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 5 } }, .syntax = 26 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,) ;  = combine(#1,)",
	},
	{
		// 00110001ssssDDDDEE1111000ii01ddd | RD = add(Rs,#1) ; Rdd = combine(#1,Ii)
		.encoding = { .mask = 0xff00ff98, .op = 0x31003c08 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_INC_SA1_COMBINE1I,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 5 } }, .syntax = 28 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,#1) ;  = combine(#1,)",
	},
	{
		// 001010IIIIIIDDDDEE1111000ii01ddd | RD = II ; Rdd = combine(#1,Ii)
		.encoding = { .mask = 0xfc00ff98, .op = 0x28003c08 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SETI_SA1_COMBINE1I,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x6, 20 } }, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 5 } }, .syntax = 20 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ;  = combine(#1,)",
	},
	{
		// 001110100000DDDDEE1111000ii01ddd | RD = n1 ; Rdd = combine(#1,Ii)
		.encoding = { .mask = 0xfff0ff98, .op = 0x3a003c08 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SETIN1_SA1_COMBINE1I,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 5 } }, .syntax = 20 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ;  = combine(#1,)",
	},
	{
		// 00110101ssssDDDDEE1111000ii01ddd | RD = sxtb(Rs) ; Rdd = combine(#1,Ii)
		.encoding = { .mask = 0xff00ff98, .op = 0x35003c08 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SXTB_SA1_COMBINE1I,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 5 } }, .syntax = 26 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = sxtb() ;  = combine(#1,)",
	},
	{
		// 00110100ssssDDDDEE1111000ii01ddd | RD = sxth(Rs) ; Rdd = combine(#1,Ii)
		.encoding = { .mask = 0xff00ff98, .op = 0x34003c08 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SXTH_SA1_COMBINE1I,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 5 } }, .syntax = 26 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = sxth() ;  = combine(#1,)",
	},
	{
		// 00110000ssssDDDDEE1111000ii01ddd | RD = Rs ; Rdd = combine(#1,Ii)
		.encoding = { .mask = 0xff00ff98, .op = 0x30003c08 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_TFR_SA1_COMBINE1I,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 5 } }, .syntax = 20 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ;  = combine(#1,)",
	},
	{
		// 00110111ssssDDDDEE1111000ii01ddd | RD = and(Rs,#255) ; Rdd = combine(#1,Ii)
		.encoding = { .mask = 0xff00ff98, .op = 0x37003c08 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ZXTB_SA1_COMBINE1I,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 5 } }, .syntax = 30 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = and(,#255) ;  = combine(#1,)",
	},
	{
		// 00110110ssssDDDDEE1111000ii01ddd | RD = zxth(Rs) ; Rdd = combine(#1,Ii)
		.encoding = { .mask = 0xff00ff98, .op = 0x36003c08 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ZXTH_SA1_COMBINE1I,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 5 } }, .syntax = 26 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = zxth() ;  = combine(#1,)",
	},
	{
		// 001010IIIIIIDDDDEE1111000ii01ddd | RD = II ; Rdd = combine(#1,Ii)
		.encoding = { .mask = 0xfc00ff98, .op = 0x28003c08 },
		.id = HEX_INS_X2_AUTOJOIN_UNDOCUMENTED_SA2_TFRSI_SA1_COMBINE1I,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x6, 20 } }, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 5 } }, .syntax = 20 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ;  = combine(#1,)",
	},
	{
		// 00100IIIIIIIxxxxEE1111000ii10ddd | Rx = add(Rxin,II) ; Rdd = combine(#2,Ii)
		.encoding = { .mask = 0xf800ff98, .op = 0x20003c10 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDI_SA1_COMBINE2I,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 20 } }, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 5 } }, .syntax = 26 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,) ;  = combine(#2,)",
	},
	{
		// 00111000ssssxxxxEE1111000ii10ddd | Rx = add(Rxin,Rs) ; Rdd = combine(#2,Ii)
		.encoding = { .mask = 0xff00ff98, .op = 0x38003c10 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDRX_SA1_COMBINE2I,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 5 } }, .syntax = 26 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,) ;  = combine(#2,)",
	},
	{
		// 001011IIIIIIDDDDEE1111000ii10ddd | RD = add(r29,II) ; Rdd = combine(#2,Ii)
		.encoding = { .mask = 0xfc00ff98, .op = 0x2c003c10 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDSP_SA1_COMBINE2I,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x6, 20 } }, .imm_scale = 2, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 5 } }, .syntax = 29 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(R29,) ;  = combine(#2,)",
	},
	{
		// 00110010ssssDDDDEE1111000ii10ddd | RD = and(Rs,#1) ; Rdd = combine(#2,Ii)
		.encoding = { .mask = 0xff00ff98, .op = 0x32003c10 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_AND1_SA1_COMBINE2I,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 5 } }, .syntax = 28 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = and(,#1) ;  = combine(#2,)",
	},
	{
		// 001110100111DDDDEE1111000ii10ddd | if (!p0) RD = #0 ; Rdd = combine(#2,Ii)
		.encoding = { .mask = 0xfff0ff98, .op = 0x3a703c10 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRF_SA1_COMBINE2I,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 5 } }, .syntax = 31 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!P0)  = #0 ;  = combine(#2,)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 001110100101DDDDEE1111000ii10ddd | if (!p0.new) RD = #0 ; Rdd = combine(#2,Ii)
		.encoding = { .mask = 0xfff0ff98, .op = 0x3a503c10 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRFNEW_SA1_COMBINE2I,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 21 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 5 } }, .syntax = 35 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!P0.new)  = #0 ;  = combine(#2,)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 001110100110DDDDEE1111000ii10ddd | if (p0) RD = #0 ; Rdd = combine(#2,Ii)
		.encoding = { .mask = 0xfff0ff98, .op = 0x3a603c10 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRT_SA1_COMBINE2I,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 5 } }, .syntax = 30 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (P0)  = #0 ;  = combine(#2,)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 001110100100DDDDEE1111000ii10ddd | if (p0.new) RD = #0 ; Rdd = combine(#2,Ii)
		.encoding = { .mask = 0xfff0ff98, .op = 0x3a403c10 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRTNEW_SA1_COMBINE2I,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 20 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 5 } }, .syntax = 34 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (P0.new)  = #0 ;  = combine(#2,)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00111001ssss00IIEE1111000ii10ddd | p0 = cmp.eq(Rs,II) ; Rdd = combine(#2,Ii)
		.encoding = { .mask = 0xff0cff98, .op = 0x39003c10 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CMPEQI_SA1_COMBINE2I,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 16 } }, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 5 } }, .syntax = 31 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "P0 = cmp.eq(,) ;  = combine(#2,)",
	},
	{
		// 001111000II00DDDEE1111000ii10ddd | RDD = combine(#0,II) ; Rdd = combine(#2,Ii)
		.encoding = { .mask = 0xff98ff98, .op = 0x3c003c10 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE0I_SA1_COMBINE2I,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 21 } }, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 5 } }, .syntax = 32 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(#0,) ;  = combine(#2,)",
	},
	{
		// 001111000II01DDDEE1111000ii10ddd | RDD = combine(#1,II) ; Rdd = combine(#2,Ii)
		.encoding = { .mask = 0xff98ff98, .op = 0x3c083c10 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE1I_SA1_COMBINE2I,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 21 } }, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 5 } }, .syntax = 32 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(#1,) ;  = combine(#2,)",
	},
	{
		// 001111000II10DDDEE1111000ii10ddd | RDD = combine(#2,II) ; Rdd = combine(#2,Ii)
		.encoding = { .mask = 0xff98ff98, .op = 0x3c103c10 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE2I_SA1_COMBINE2I,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 21 } }, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 5 } }, .syntax = 32 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(#2,) ;  = combine(#2,)",
	},
	{
		// 00110011ssssDDDDEE1111000ii10ddd | RD = add(Rs,n1) ; Rdd = combine(#2,Ii)
		.encoding = { .mask = 0xff00ff98, .op = 0x33003c10 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_DEC_SA1_COMBINE2I,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 5 } }, .syntax = 26 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,) ;  = combine(#2,)",
	},
	{
		// 00110001ssssDDDDEE1111000ii10ddd | RD = add(Rs,#1) ; Rdd = combine(#2,Ii)
		.encoding = { .mask = 0xff00ff98, .op = 0x31003c10 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_INC_SA1_COMBINE2I,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 5 } }, .syntax = 28 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,#1) ;  = combine(#2,)",
	},
	{
		// 001010IIIIIIDDDDEE1111000ii10ddd | RD = II ; Rdd = combine(#2,Ii)
		.encoding = { .mask = 0xfc00ff98, .op = 0x28003c10 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SETI_SA1_COMBINE2I,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x6, 20 } }, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 5 } }, .syntax = 20 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ;  = combine(#2,)",
	},
	{
		// 001110100000DDDDEE1111000ii10ddd | RD = n1 ; Rdd = combine(#2,Ii)
		.encoding = { .mask = 0xfff0ff98, .op = 0x3a003c10 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SETIN1_SA1_COMBINE2I,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 5 } }, .syntax = 20 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ;  = combine(#2,)",
	},
	{
		// 00110101ssssDDDDEE1111000ii10ddd | RD = sxtb(Rs) ; Rdd = combine(#2,Ii)
		.encoding = { .mask = 0xff00ff98, .op = 0x35003c10 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SXTB_SA1_COMBINE2I,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 5 } }, .syntax = 26 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = sxtb() ;  = combine(#2,)",
	},
	{
		// 00110100ssssDDDDEE1111000ii10ddd | RD = sxth(Rs) ; Rdd = combine(#2,Ii)
		.encoding = { .mask = 0xff00ff98, .op = 0x34003c10 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SXTH_SA1_COMBINE2I,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 5 } }, .syntax = 26 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = sxth() ;  = combine(#2,)",
	},
	{
		// 00110000ssssDDDDEE1111000ii10ddd | RD = Rs ; Rdd = combine(#2,Ii)
		.encoding = { .mask = 0xff00ff98, .op = 0x30003c10 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_TFR_SA1_COMBINE2I,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 5 } }, .syntax = 20 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ;  = combine(#2,)",
	},
	{
		// 00110111ssssDDDDEE1111000ii10ddd | RD = and(Rs,#255) ; Rdd = combine(#2,Ii)
		.encoding = { .mask = 0xff00ff98, .op = 0x37003c10 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ZXTB_SA1_COMBINE2I,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 5 } }, .syntax = 30 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = and(,#255) ;  = combine(#2,)",
	},
	{
		// 00110110ssssDDDDEE1111000ii10ddd | RD = zxth(Rs) ; Rdd = combine(#2,Ii)
		.encoding = { .mask = 0xff00ff98, .op = 0x36003c10 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ZXTH_SA1_COMBINE2I,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 5 } }, .syntax = 26 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = zxth() ;  = combine(#2,)",
	},
	{
		// 001010IIIIIIDDDDEE1111000ii10ddd | RD = II ; Rdd = combine(#2,Ii)
		.encoding = { .mask = 0xfc00ff98, .op = 0x28003c10 },
		.id = HEX_INS_X2_AUTOJOIN_UNDOCUMENTED_SA2_TFRSI_SA1_COMBINE2I,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x6, 20 } }, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 5 } }, .syntax = 20 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ;  = combine(#2,)",
	},
	{
		// 00100IIIIIIIxxxxEE1111000ii11ddd | Rx = add(Rxin,II) ; Rdd = combine(#3,Ii)
		.encoding = { .mask = 0xf800ff98, .op = 0x20003c18 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDI_SA1_COMBINE3I,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 20 } }, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 5 } }, .syntax = 26 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,) ;  = combine(#3,)",
	},
	{
		// 00111000ssssxxxxEE1111000ii11ddd | Rx = add(Rxin,Rs) ; Rdd = combine(#3,Ii)
		.encoding = { .mask = 0xff00ff98, .op = 0x38003c18 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDRX_SA1_COMBINE3I,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 5 } }, .syntax = 26 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,) ;  = combine(#3,)",
	},
	{
		// 001011IIIIIIDDDDEE1111000ii11ddd | RD = add(r29,II) ; Rdd = combine(#3,Ii)
		.encoding = { .mask = 0xfc00ff98, .op = 0x2c003c18 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDSP_SA1_COMBINE3I,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x6, 20 } }, .imm_scale = 2, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 5 } }, .syntax = 29 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(R29,) ;  = combine(#3,)",
	},
	{
		// 00110010ssssDDDDEE1111000ii11ddd | RD = and(Rs,#1) ; Rdd = combine(#3,Ii)
		.encoding = { .mask = 0xff00ff98, .op = 0x32003c18 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_AND1_SA1_COMBINE3I,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 5 } }, .syntax = 28 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = and(,#1) ;  = combine(#3,)",
	},
	{
		// 001110100111DDDDEE1111000ii11ddd | if (!p0) RD = #0 ; Rdd = combine(#3,Ii)
		.encoding = { .mask = 0xfff0ff98, .op = 0x3a703c18 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRF_SA1_COMBINE3I,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 5 } }, .syntax = 31 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!P0)  = #0 ;  = combine(#3,)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 001110100101DDDDEE1111000ii11ddd | if (!p0.new) RD = #0 ; Rdd = combine(#3,Ii)
		.encoding = { .mask = 0xfff0ff98, .op = 0x3a503c18 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRFNEW_SA1_COMBINE3I,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 21 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 5 } }, .syntax = 35 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!P0.new)  = #0 ;  = combine(#3,)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 001110100110DDDDEE1111000ii11ddd | if (p0) RD = #0 ; Rdd = combine(#3,Ii)
		.encoding = { .mask = 0xfff0ff98, .op = 0x3a603c18 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRT_SA1_COMBINE3I,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 5 } }, .syntax = 30 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (P0)  = #0 ;  = combine(#3,)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 001110100100DDDDEE1111000ii11ddd | if (p0.new) RD = #0 ; Rdd = combine(#3,Ii)
		.encoding = { .mask = 0xfff0ff98, .op = 0x3a403c18 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRTNEW_SA1_COMBINE3I,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 20 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 5 } }, .syntax = 34 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (P0.new)  = #0 ;  = combine(#3,)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00111001ssss00IIEE1111000ii11ddd | p0 = cmp.eq(Rs,II) ; Rdd = combine(#3,Ii)
		.encoding = { .mask = 0xff0cff98, .op = 0x39003c18 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CMPEQI_SA1_COMBINE3I,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 16 } }, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 5 } }, .syntax = 31 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "P0 = cmp.eq(,) ;  = combine(#3,)",
	},
	{
		// 001111000II00DDDEE1111000ii11ddd | RDD = combine(#0,II) ; Rdd = combine(#3,Ii)
		.encoding = { .mask = 0xff98ff98, .op = 0x3c003c18 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE0I_SA1_COMBINE3I,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 21 } }, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 5 } }, .syntax = 32 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(#0,) ;  = combine(#3,)",
	},
	{
		// 001111000II01DDDEE1111000ii11ddd | RDD = combine(#1,II) ; Rdd = combine(#3,Ii)
		.encoding = { .mask = 0xff98ff98, .op = 0x3c083c18 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE1I_SA1_COMBINE3I,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 21 } }, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 5 } }, .syntax = 32 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(#1,) ;  = combine(#3,)",
	},
	{
		// 001111000II10DDDEE1111000ii11ddd | RDD = combine(#2,II) ; Rdd = combine(#3,Ii)
		.encoding = { .mask = 0xff98ff98, .op = 0x3c103c18 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE2I_SA1_COMBINE3I,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 21 } }, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 5 } }, .syntax = 32 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(#2,) ;  = combine(#3,)",
	},
	{
		// 001111000II11DDDEE1111000ii11ddd | RDD = combine(#3,II) ; Rdd = combine(#3,Ii)
		.encoding = { .mask = 0xff98ff98, .op = 0x3c183c18 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE3I_SA1_COMBINE3I,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 21 } }, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 5 } }, .syntax = 32 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(#3,) ;  = combine(#3,)",
	},
	{
		// 00110011ssssDDDDEE1111000ii11ddd | RD = add(Rs,n1) ; Rdd = combine(#3,Ii)
		.encoding = { .mask = 0xff00ff98, .op = 0x33003c18 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_DEC_SA1_COMBINE3I,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 5 } }, .syntax = 26 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,) ;  = combine(#3,)",
	},
	{
		// 00110001ssssDDDDEE1111000ii11ddd | RD = add(Rs,#1) ; Rdd = combine(#3,Ii)
		.encoding = { .mask = 0xff00ff98, .op = 0x31003c18 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_INC_SA1_COMBINE3I,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 5 } }, .syntax = 28 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,#1) ;  = combine(#3,)",
	},
	{
		// 001010IIIIIIDDDDEE1111000ii11ddd | RD = II ; Rdd = combine(#3,Ii)
		.encoding = { .mask = 0xfc00ff98, .op = 0x28003c18 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SETI_SA1_COMBINE3I,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x6, 20 } }, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 5 } }, .syntax = 20 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ;  = combine(#3,)",
	},
	{
		// 001110100000DDDDEE1111000ii11ddd | RD = n1 ; Rdd = combine(#3,Ii)
		.encoding = { .mask = 0xfff0ff98, .op = 0x3a003c18 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SETIN1_SA1_COMBINE3I,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 5 } }, .syntax = 20 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ;  = combine(#3,)",
	},
	{
		// 00110101ssssDDDDEE1111000ii11ddd | RD = sxtb(Rs) ; Rdd = combine(#3,Ii)
		.encoding = { .mask = 0xff00ff98, .op = 0x35003c18 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SXTB_SA1_COMBINE3I,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 5 } }, .syntax = 26 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = sxtb() ;  = combine(#3,)",
	},
	{
		// 00110100ssssDDDDEE1111000ii11ddd | RD = sxth(Rs) ; Rdd = combine(#3,Ii)
		.encoding = { .mask = 0xff00ff98, .op = 0x34003c18 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SXTH_SA1_COMBINE3I,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 5 } }, .syntax = 26 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = sxth() ;  = combine(#3,)",
	},
	{
		// 00110000ssssDDDDEE1111000ii11ddd | RD = Rs ; Rdd = combine(#3,Ii)
		.encoding = { .mask = 0xff00ff98, .op = 0x30003c18 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_TFR_SA1_COMBINE3I,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 5 } }, .syntax = 20 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ;  = combine(#3,)",
	},
	{
		// 00110111ssssDDDDEE1111000ii11ddd | RD = and(Rs,#255) ; Rdd = combine(#3,Ii)
		.encoding = { .mask = 0xff00ff98, .op = 0x37003c18 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ZXTB_SA1_COMBINE3I,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 5 } }, .syntax = 30 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = and(,#255) ;  = combine(#3,)",
	},
	{
		// 00110110ssssDDDDEE1111000ii11ddd | RD = zxth(Rs) ; Rdd = combine(#3,Ii)
		.encoding = { .mask = 0xff00ff98, .op = 0x36003c18 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ZXTH_SA1_COMBINE3I,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 5 } }, .syntax = 26 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = zxth() ;  = combine(#3,)",
	},
	{
		// 001010IIIIIIDDDDEE1111000ii11ddd | RD = II ; Rdd = combine(#3,Ii)
		.encoding = { .mask = 0xfc00ff98, .op = 0x28003c18 },
		.id = HEX_INS_X2_AUTOJOIN_UNDOCUMENTED_SA2_TFRSI_SA1_COMBINE3I,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x6, 20 } }, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 5 } }, .syntax = 20 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ;  = combine(#3,)",
	},
	{
		// 00100iiiiiiixxxxEE111101ssss1ddd | Rx = add(Rxin,Ii) ; Rdd = combine(Rs,#0)
		.encoding = { .mask = 0xf800ff08, .op = 0x20003d08 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDI_SA1_COMBINERZ,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 20 } }, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 23 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,) ;  = combine(,#0)",
	},
	{
		// 00111000SSSSxxxxEE111101ssss1ddd | Rx = add(Rxin,RS) ; Rdd = combine(Rs,#0)
		.encoding = { .mask = 0xff00ff08, .op = 0x38003d08 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDRX_SA1_COMBINERZ,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 23 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,) ;  = combine(,#0)",
	},
	{
		// 001011iiiiiiDDDDEE111101ssss1ddd | RD = add(r29,Ii) ; Rdd = combine(Rs,#0)
		.encoding = { .mask = 0xfc00ff08, .op = 0x2c003d08 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDSP_SA1_COMBINERZ,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x6, 20 } }, .imm_scale = 2, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 26 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(R29,) ;  = combine(,#0)",
	},
	{
		// 00110010SSSSDDDDEE111101ssss1ddd | RD = and(RS,#1) ; Rdd = combine(Rs,#0)
		.encoding = { .mask = 0xff00ff08, .op = 0x32003d08 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_AND1_SA1_COMBINERZ,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 25 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = and(,#1) ;  = combine(,#0)",
	},
	{
		// 001110100111DDDDEE111101ssss1ddd | if (!p0) RD = #0 ; Rdd = combine(Rs,#0)
		.encoding = { .mask = 0xfff0ff08, .op = 0x3a703d08 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRF_SA1_COMBINERZ,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 28 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!P0)  = #0 ;  = combine(,#0)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 001110100101DDDDEE111101ssss1ddd | if (!p0.new) RD = #0 ; Rdd = combine(Rs,#0)
		.encoding = { .mask = 0xfff0ff08, .op = 0x3a503d08 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRFNEW_SA1_COMBINERZ,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 21 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 32 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!P0.new)  = #0 ;  = combine(,#0)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 001110100110DDDDEE111101ssss1ddd | if (p0) RD = #0 ; Rdd = combine(Rs,#0)
		.encoding = { .mask = 0xfff0ff08, .op = 0x3a603d08 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRT_SA1_COMBINERZ,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 27 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (P0)  = #0 ;  = combine(,#0)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 001110100100DDDDEE111101ssss1ddd | if (p0.new) RD = #0 ; Rdd = combine(Rs,#0)
		.encoding = { .mask = 0xfff0ff08, .op = 0x3a403d08 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRTNEW_SA1_COMBINERZ,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 20 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 31 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (P0.new)  = #0 ;  = combine(,#0)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00111001SSSS00iiEE111101ssss1ddd | p0 = cmp.eq(RS,Ii) ; Rdd = combine(Rs,#0)
		.encoding = { .mask = 0xff0cff08, .op = 0x39003d08 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CMPEQI_SA1_COMBINERZ,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 16 } }, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 28 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "P0 = cmp.eq(,) ;  = combine(,#0)",
	},
	{
		// 001111000ii00DDDEE111101ssss1ddd | RDD = combine(#0,Ii) ; Rdd = combine(Rs,#0)
		.encoding = { .mask = 0xff98ff08, .op = 0x3c003d08 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE0I_SA1_COMBINERZ,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 21 } }, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 29 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(#0,) ;  = combine(,#0)",
	},
	{
		// 001111000ii01DDDEE111101ssss1ddd | RDD = combine(#1,Ii) ; Rdd = combine(Rs,#0)
		.encoding = { .mask = 0xff98ff08, .op = 0x3c083d08 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE1I_SA1_COMBINERZ,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 21 } }, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 29 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(#1,) ;  = combine(,#0)",
	},
	{
		// 001111000ii10DDDEE111101ssss1ddd | RDD = combine(#2,Ii) ; Rdd = combine(Rs,#0)
		.encoding = { .mask = 0xff98ff08, .op = 0x3c103d08 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE2I_SA1_COMBINERZ,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 21 } }, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 29 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(#2,) ;  = combine(,#0)",
	},
	{
		// 001111000ii11DDDEE111101ssss1ddd | RDD = combine(#3,Ii) ; Rdd = combine(Rs,#0)
		.encoding = { .mask = 0xff98ff08, .op = 0x3c183d08 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE3I_SA1_COMBINERZ,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 21 } }, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 29 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(#3,) ;  = combine(,#0)",
	},
	{
		// 00111101SSSS1DDDEE111101ssss1ddd | RDD = combine(RS,#0) ; Rdd = combine(Rs,#0)
		.encoding = { .mask = 0xff08ff08, .op = 0x3d083d08 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINERZ_SA1_COMBINERZ,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 29 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(,#0) ;  = combine(,#0)",
	},
	{
		// 00111101SSSS0DDDEE111101ssss1ddd | RDD = combine(#0,RS) ; Rdd = combine(Rs,#0)
		.encoding = { .mask = 0xff08ff08, .op = 0x3d003d08 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINEZR_SA1_COMBINERZ,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 29 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(#0,) ;  = combine(,#0)",
	},
	{
		// 00110011SSSSDDDDEE111101ssss1ddd | RD = add(RS,n1) ; Rdd = combine(Rs,#0)
		.encoding = { .mask = 0xff00ff08, .op = 0x33003d08 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_DEC_SA1_COMBINERZ,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 23 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,) ;  = combine(,#0)",
	},
	{
		// 00110001SSSSDDDDEE111101ssss1ddd | RD = add(RS,#1) ; Rdd = combine(Rs,#0)
		.encoding = { .mask = 0xff00ff08, .op = 0x31003d08 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_INC_SA1_COMBINERZ,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 25 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,#1) ;  = combine(,#0)",
	},
	{
		// 001010iiiiiiDDDDEE111101ssss1ddd | RD = Ii ; Rdd = combine(Rs,#0)
		.encoding = { .mask = 0xfc00ff08, .op = 0x28003d08 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SETI_SA1_COMBINERZ,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x6, 20 } }, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 17 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ;  = combine(,#0)",
	},
	{
		// 001110100000DDDDEE111101ssss1ddd | RD = n1 ; Rdd = combine(Rs,#0)
		.encoding = { .mask = 0xfff0ff08, .op = 0x3a003d08 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SETIN1_SA1_COMBINERZ,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 17 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ;  = combine(,#0)",
	},
	{
		// 00110101SSSSDDDDEE111101ssss1ddd | RD = sxtb(RS) ; Rdd = combine(Rs,#0)
		.encoding = { .mask = 0xff00ff08, .op = 0x35003d08 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SXTB_SA1_COMBINERZ,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 23 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = sxtb() ;  = combine(,#0)",
	},
	{
		// 00110100SSSSDDDDEE111101ssss1ddd | RD = sxth(RS) ; Rdd = combine(Rs,#0)
		.encoding = { .mask = 0xff00ff08, .op = 0x34003d08 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SXTH_SA1_COMBINERZ,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 23 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = sxth() ;  = combine(,#0)",
	},
	{
		// 00110000SSSSDDDDEE111101ssss1ddd | RD = RS ; Rdd = combine(Rs,#0)
		.encoding = { .mask = 0xff00ff08, .op = 0x30003d08 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_TFR_SA1_COMBINERZ,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 17 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ;  = combine(,#0)",
	},
	{
		// 00110111SSSSDDDDEE111101ssss1ddd | RD = and(RS,#255) ; Rdd = combine(Rs,#0)
		.encoding = { .mask = 0xff00ff08, .op = 0x37003d08 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ZXTB_SA1_COMBINERZ,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 27 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = and(,#255) ;  = combine(,#0)",
	},
	{
		// 00110110SSSSDDDDEE111101ssss1ddd | RD = zxth(RS) ; Rdd = combine(Rs,#0)
		.encoding = { .mask = 0xff00ff08, .op = 0x36003d08 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ZXTH_SA1_COMBINERZ,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 23 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = zxth() ;  = combine(,#0)",
	},
	{
		// 001010iiiiiiDDDDEE111101ssss1ddd | RD = Ii ; Rdd = combine(Rs,#0)
		.encoding = { .mask = 0xfc00ff08, .op = 0x28003d08 },
		.id = HEX_INS_X2_AUTOJOIN_UNDOCUMENTED_SA2_TFRSI_SA1_COMBINERZ,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x6, 20 } }, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 17 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ;  = combine(,#0)",
	},
	{
		// 00100iiiiiiixxxxEE111101ssss0ddd | Rx = add(Rxin,Ii) ; Rdd = combine(#0,Rs)
		.encoding = { .mask = 0xf800ff08, .op = 0x20003d00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDI_SA1_COMBINEZR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 20 } }, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 26 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,) ;  = combine(#0,)",
	},
	{
		// 00111000SSSSxxxxEE111101ssss0ddd | Rx = add(Rxin,RS) ; Rdd = combine(#0,Rs)
		.encoding = { .mask = 0xff00ff08, .op = 0x38003d00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDRX_SA1_COMBINEZR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 26 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,) ;  = combine(#0,)",
	},
	{
		// 001011iiiiiiDDDDEE111101ssss0ddd | RD = add(r29,Ii) ; Rdd = combine(#0,Rs)
		.encoding = { .mask = 0xfc00ff08, .op = 0x2c003d00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDSP_SA1_COMBINEZR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x6, 20 } }, .imm_scale = 2, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 29 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(R29,) ;  = combine(#0,)",
	},
	{
		// 00110010SSSSDDDDEE111101ssss0ddd | RD = and(RS,#1) ; Rdd = combine(#0,Rs)
		.encoding = { .mask = 0xff00ff08, .op = 0x32003d00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_AND1_SA1_COMBINEZR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 28 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = and(,#1) ;  = combine(#0,)",
	},
	{
		// 001110100111DDDDEE111101ssss0ddd | if (!p0) RD = #0 ; Rdd = combine(#0,Rs)
		.encoding = { .mask = 0xfff0ff08, .op = 0x3a703d00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRF_SA1_COMBINEZR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 31 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!P0)  = #0 ;  = combine(#0,)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 001110100101DDDDEE111101ssss0ddd | if (!p0.new) RD = #0 ; Rdd = combine(#0,Rs)
		.encoding = { .mask = 0xfff0ff08, .op = 0x3a503d00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRFNEW_SA1_COMBINEZR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 21 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 35 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!P0.new)  = #0 ;  = combine(#0,)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 001110100110DDDDEE111101ssss0ddd | if (p0) RD = #0 ; Rdd = combine(#0,Rs)
		.encoding = { .mask = 0xfff0ff08, .op = 0x3a603d00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRT_SA1_COMBINEZR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 30 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (P0)  = #0 ;  = combine(#0,)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 001110100100DDDDEE111101ssss0ddd | if (p0.new) RD = #0 ; Rdd = combine(#0,Rs)
		.encoding = { .mask = 0xfff0ff08, .op = 0x3a403d00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRTNEW_SA1_COMBINEZR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 20 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 34 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (P0.new)  = #0 ;  = combine(#0,)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00111001SSSS00iiEE111101ssss0ddd | p0 = cmp.eq(RS,Ii) ; Rdd = combine(#0,Rs)
		.encoding = { .mask = 0xff0cff08, .op = 0x39003d00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CMPEQI_SA1_COMBINEZR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 16 } }, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 31 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "P0 = cmp.eq(,) ;  = combine(#0,)",
	},
	{
		// 001111000ii00DDDEE111101ssss0ddd | RDD = combine(#0,Ii) ; Rdd = combine(#0,Rs)
		.encoding = { .mask = 0xff98ff08, .op = 0x3c003d00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE0I_SA1_COMBINEZR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 21 } }, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 32 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(#0,) ;  = combine(#0,)",
	},
	{
		// 001111000ii01DDDEE111101ssss0ddd | RDD = combine(#1,Ii) ; Rdd = combine(#0,Rs)
		.encoding = { .mask = 0xff98ff08, .op = 0x3c083d00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE1I_SA1_COMBINEZR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 21 } }, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 32 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(#1,) ;  = combine(#0,)",
	},
	{
		// 001111000ii10DDDEE111101ssss0ddd | RDD = combine(#2,Ii) ; Rdd = combine(#0,Rs)
		.encoding = { .mask = 0xff98ff08, .op = 0x3c103d00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE2I_SA1_COMBINEZR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 21 } }, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 32 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(#2,) ;  = combine(#0,)",
	},
	{
		// 001111000ii11DDDEE111101ssss0ddd | RDD = combine(#3,Ii) ; Rdd = combine(#0,Rs)
		.encoding = { .mask = 0xff98ff08, .op = 0x3c183d00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE3I_SA1_COMBINEZR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 21 } }, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 32 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(#3,) ;  = combine(#0,)",
	},
	{
		// 00111101SSSS0DDDEE111101ssss0ddd | RDD = combine(#0,RS) ; Rdd = combine(#0,Rs)
		.encoding = { .mask = 0xff08ff08, .op = 0x3d003d00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINEZR_SA1_COMBINEZR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 32 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(#0,) ;  = combine(#0,)",
	},
	{
		// 00110011SSSSDDDDEE111101ssss0ddd | RD = add(RS,n1) ; Rdd = combine(#0,Rs)
		.encoding = { .mask = 0xff00ff08, .op = 0x33003d00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_DEC_SA1_COMBINEZR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 26 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,) ;  = combine(#0,)",
	},
	{
		// 00110001SSSSDDDDEE111101ssss0ddd | RD = add(RS,#1) ; Rdd = combine(#0,Rs)
		.encoding = { .mask = 0xff00ff08, .op = 0x31003d00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_INC_SA1_COMBINEZR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 28 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,#1) ;  = combine(#0,)",
	},
	{
		// 001010iiiiiiDDDDEE111101ssss0ddd | RD = Ii ; Rdd = combine(#0,Rs)
		.encoding = { .mask = 0xfc00ff08, .op = 0x28003d00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SETI_SA1_COMBINEZR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x6, 20 } }, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 20 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ;  = combine(#0,)",
	},
	{
		// 001110100000DDDDEE111101ssss0ddd | RD = n1 ; Rdd = combine(#0,Rs)
		.encoding = { .mask = 0xfff0ff08, .op = 0x3a003d00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SETIN1_SA1_COMBINEZR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 20 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ;  = combine(#0,)",
	},
	{
		// 00110101SSSSDDDDEE111101ssss0ddd | RD = sxtb(RS) ; Rdd = combine(#0,Rs)
		.encoding = { .mask = 0xff00ff08, .op = 0x35003d00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SXTB_SA1_COMBINEZR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 26 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = sxtb() ;  = combine(#0,)",
	},
	{
		// 00110100SSSSDDDDEE111101ssss0ddd | RD = sxth(RS) ; Rdd = combine(#0,Rs)
		.encoding = { .mask = 0xff00ff08, .op = 0x34003d00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SXTH_SA1_COMBINEZR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 26 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = sxth() ;  = combine(#0,)",
	},
	{
		// 00110000SSSSDDDDEE111101ssss0ddd | RD = RS ; Rdd = combine(#0,Rs)
		.encoding = { .mask = 0xff00ff08, .op = 0x30003d00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_TFR_SA1_COMBINEZR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 20 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ;  = combine(#0,)",
	},
	{
		// 00110111SSSSDDDDEE111101ssss0ddd | RD = and(RS,#255) ; Rdd = combine(#0,Rs)
		.encoding = { .mask = 0xff00ff08, .op = 0x37003d00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ZXTB_SA1_COMBINEZR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 30 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = and(,#255) ;  = combine(#0,)",
	},
	{
		// 00110110SSSSDDDDEE111101ssss0ddd | RD = zxth(RS) ; Rdd = combine(#0,Rs)
		.encoding = { .mask = 0xff00ff08, .op = 0x36003d00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ZXTH_SA1_COMBINEZR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 26 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = zxth() ;  = combine(#0,)",
	},
	{
		// 001010iiiiiiDDDDEE111101ssss0ddd | RD = Ii ; Rdd = combine(#0,Rs)
		.encoding = { .mask = 0xfc00ff08, .op = 0x28003d00 },
		.id = HEX_INS_X2_AUTOJOIN_UNDOCUMENTED_SA2_TFRSI_SA1_COMBINEZR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x6, 20 } }, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 20 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ;  = combine(#0,)",
	},
	{
		// 00100iiiiiiixxxxEE110011ssssdddd | Rx = add(Rxin,Ii) ; Rd = add(Rs,n1)
		.encoding = { .mask = 0xf800ff00, .op = 0x20003300 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDI_SA1_DEC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 20 } }, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 19 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 20 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,) ;  = add(,)",
	},
	{
		// 001011iiiiiiDDDDEE110011ssssdddd | RD = add(r29,Ii) ; Rd = add(Rs,n1)
		.encoding = { .mask = 0xfc00ff00, .op = 0x2c003300 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDSP_SA1_DEC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x6, 20 } }, .imm_scale = 2, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 22 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 23 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(R29,) ;  = add(,)",
	},
	{
		// 00110010SSSSDDDDEE110011ssssdddd | RD = and(RS,#1) ; Rd = add(Rs,n1)
		.encoding = { .mask = 0xff00ff00, .op = 0x32003300 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_AND1_SA1_DEC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 21 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 22 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = and(,#1) ;  = add(,)",
	},
	{
		// 00110011SSSSDDDDEE110011ssssdddd | RD = add(RS,N1) ; Rd = add(Rs,n1)
		.encoding = { .mask = 0xff00ff00, .op = 0x33003300 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_DEC_SA1_DEC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 19 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 20 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,) ;  = add(,)",
	},
	{
		// 00110001SSSSDDDDEE110011ssssdddd | RD = add(RS,#1) ; Rd = add(Rs,n1)
		.encoding = { .mask = 0xff00ff00, .op = 0x31003300 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_INC_SA1_DEC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 21 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 22 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,#1) ;  = add(,)",
	},
	{
		// 001010iiiiiiDDDDEE110011ssssdddd | RD = Ii ; Rd = add(Rs,n1)
		.encoding = { .mask = 0xfc00ff00, .op = 0x28003300 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SETI_SA1_DEC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x6, 20 } }, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ;  = add(,)",
	},
	{
		// 00110000SSSSDDDDEE110011ssssdddd | RD = RS ; Rd = add(Rs,n1)
		.encoding = { .mask = 0xff00ff00, .op = 0x30003300 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_TFR_SA1_DEC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ;  = add(,)",
	},
	{
		// 001010iiiiiiDDDDEE110011ssssdddd | RD = Ii ; Rd = add(Rs,n1)
		.encoding = { .mask = 0xfc00ff00, .op = 0x28003300 },
		.id = HEX_INS_X2_AUTOJOIN_UNDOCUMENTED_SA2_TFRSI_SA1_DEC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x6, 20 } }, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ;  = add(,)",
	},
	{
		// 00100iiiiiiixxxxEE110001ssssdddd | Rx = add(Rxin,Ii) ; Rd = add(Rs,#1)
		.encoding = { .mask = 0xf800ff00, .op = 0x20003100 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDI_SA1_INC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 20 } }, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 19 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,) ;  = add(,#1)",
	},
	{
		// 001011iiiiiiDDDDEE110001ssssdddd | RD = add(r29,Ii) ; Rd = add(Rs,#1)
		.encoding = { .mask = 0xfc00ff00, .op = 0x2c003100 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDSP_SA1_INC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x6, 20 } }, .imm_scale = 2, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 22 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(R29,) ;  = add(,#1)",
	},
	{
		// 00110001SSSSDDDDEE110001ssssdddd | RD = add(RS,#1) ; Rd = add(Rs,#1)
		.encoding = { .mask = 0xff00ff00, .op = 0x31003100 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_INC_SA1_INC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 21 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,#1) ;  = add(,#1)",
	},
	{
		// 001010iiiiiiDDDDEE110001ssssdddd | RD = Ii ; Rd = add(Rs,#1)
		.encoding = { .mask = 0xfc00ff00, .op = 0x28003100 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SETI_SA1_INC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x6, 20 } }, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ;  = add(,#1)",
	},
	{
		// 00110000SSSSDDDDEE110001ssssdddd | RD = RS ; Rd = add(Rs,#1)
		.encoding = { .mask = 0xff00ff00, .op = 0x30003100 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_TFR_SA1_INC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ;  = add(,#1)",
	},
	{
		// 001010iiiiiiDDDDEE110001ssssdddd | RD = Ii ; Rd = add(Rs,#1)
		.encoding = { .mask = 0xfc00ff00, .op = 0x28003100 },
		.id = HEX_INS_X2_AUTOJOIN_UNDOCUMENTED_SA2_TFRSI_SA1_INC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x6, 20 } }, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ;  = add(,#1)",
	},
	{
		// 00100iiiiiiixxxxEE1110100000dddd | Rx = add(Rxin,Ii) ; Rd = n1
		.encoding = { .mask = 0xf800fff0, .op = 0x20003a00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDI_SA1_SETIN1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 20 } }, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,) ;  = ",
	},
	{
		// 00111000ssssxxxxEE1110100000dddd | Rx = add(Rxin,Rs) ; Rd = n1
		.encoding = { .mask = 0xff00fff0, .op = 0x38003a00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDRX_SA1_SETIN1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,) ;  = ",
	},
	{
		// 001011iiiiiiDDDDEE1110100000dddd | RD = add(r29,Ii) ; Rd = n1
		.encoding = { .mask = 0xfc00fff0, .op = 0x2c003a00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDSP_SA1_SETIN1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x6, 20 } }, .imm_scale = 2, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 18 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(R29,) ;  = ",
	},
	{
		// 00110010ssssDDDDEE1110100000dddd | RD = and(Rs,#1) ; Rd = n1
		.encoding = { .mask = 0xff00fff0, .op = 0x32003a00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_AND1_SA1_SETIN1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 17 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = and(,#1) ;  = ",
	},
	{
		// 00111001ssss00iiEE1110100000dddd | p0 = cmp.eq(Rs,Ii) ; Rd = n1
		.encoding = { .mask = 0xff0cfff0, .op = 0x39003a00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CMPEQI_SA1_SETIN1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 16 } }, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 20 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "P0 = cmp.eq(,) ;  = ",
	},
	{
		// 00110011ssssDDDDEE1110100000dddd | RD = add(Rs,N1) ; Rd = n1
		.encoding = { .mask = 0xff00fff0, .op = 0x33003a00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_DEC_SA1_SETIN1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,) ;  = ",
	},
	{
		// 00110001ssssDDDDEE1110100000dddd | RD = add(Rs,#1) ; Rd = n1
		.encoding = { .mask = 0xff00fff0, .op = 0x31003a00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_INC_SA1_SETIN1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 17 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,#1) ;  = ",
	},
	{
		// 001010iiiiiiDDDDEE1110100000dddd | RD = Ii ; Rd = n1
		.encoding = { .mask = 0xfc00fff0, .op = 0x28003a00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SETI_SA1_SETIN1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x6, 20 } }, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ;  = ",
	},
	{
		// 001110100000DDDDEE1110100000dddd | RD = N1 ; Rd = n1
		.encoding = { .mask = 0xfff0fff0, .op = 0x3a003a00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SETIN1_SA1_SETIN1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ;  = ",
	},
	{
		// 00110101ssssDDDDEE1110100000dddd | RD = sxtb(Rs) ; Rd = n1
		.encoding = { .mask = 0xff00fff0, .op = 0x35003a00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SXTB_SA1_SETIN1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = sxtb() ;  = ",
	},
	{
		// 00110100ssssDDDDEE1110100000dddd | RD = sxth(Rs) ; Rd = n1
		.encoding = { .mask = 0xff00fff0, .op = 0x34003a00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SXTH_SA1_SETIN1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = sxth() ;  = ",
	},
	{
		// 00110000ssssDDDDEE1110100000dddd | RD = Rs ; Rd = n1
		.encoding = { .mask = 0xff00fff0, .op = 0x30003a00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_TFR_SA1_SETIN1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ;  = ",
	},
	{
		// 00110111ssssDDDDEE1110100000dddd | RD = and(Rs,#255) ; Rd = n1
		.encoding = { .mask = 0xff00fff0, .op = 0x37003a00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ZXTB_SA1_SETIN1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 19 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = and(,#255) ;  = ",
	},
	{
		// 00110110ssssDDDDEE1110100000dddd | RD = zxth(Rs) ; Rd = n1
		.encoding = { .mask = 0xff00fff0, .op = 0x36003a00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ZXTH_SA1_SETIN1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = zxth() ;  = ",
	},
	{
		// 001010iiiiiiDDDDEE1110100000dddd | RD = Ii ; Rd = n1
		.encoding = { .mask = 0xfc00fff0, .op = 0x28003a00 },
		.id = HEX_INS_X2_AUTOJOIN_UNDOCUMENTED_SA2_TFRSI_SA1_SETIN1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x6, 20 } }, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ;  = ",
	},
	{
		// 00100iiiiiiixxxxEE110101ssssdddd | Rx = add(Rxin,Ii) ; Rd = sxtb(Rs)
		.encoding = { .mask = 0xf800ff00, .op = 0x20003500 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDI_SA1_SXTB,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 20 } }, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 20 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,) ;  = sxtb()",
	},
	{
		// 001011iiiiiiDDDDEE110101ssssdddd | RD = add(r29,Ii) ; Rd = sxtb(Rs)
		.encoding = { .mask = 0xfc00ff00, .op = 0x2c003500 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDSP_SA1_SXTB,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x6, 20 } }, .imm_scale = 2, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 23 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(R29,) ;  = sxtb()",
	},
	{
		// 00110010SSSSDDDDEE110101ssssdddd | RD = and(RS,#1) ; Rd = sxtb(Rs)
		.encoding = { .mask = 0xff00ff00, .op = 0x32003500 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_AND1_SA1_SXTB,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 22 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = and(,#1) ;  = sxtb()",
	},
	{
		// 00110011SSSSDDDDEE110101ssssdddd | RD = add(RS,n1) ; Rd = sxtb(Rs)
		.encoding = { .mask = 0xff00ff00, .op = 0x33003500 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_DEC_SA1_SXTB,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 20 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,) ;  = sxtb()",
	},
	{
		// 00110001SSSSDDDDEE110101ssssdddd | RD = add(RS,#1) ; Rd = sxtb(Rs)
		.encoding = { .mask = 0xff00ff00, .op = 0x31003500 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_INC_SA1_SXTB,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 22 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,#1) ;  = sxtb()",
	},
	{
		// 001010iiiiiiDDDDEE110101ssssdddd | RD = Ii ; Rd = sxtb(Rs)
		.encoding = { .mask = 0xfc00ff00, .op = 0x28003500 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SETI_SA1_SXTB,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x6, 20 } }, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ;  = sxtb()",
	},
	{
		// 00110101SSSSDDDDEE110101ssssdddd | RD = sxtb(RS) ; Rd = sxtb(Rs)
		.encoding = { .mask = 0xff00ff00, .op = 0x35003500 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SXTB_SA1_SXTB,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 20 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = sxtb() ;  = sxtb()",
	},
	{
		// 00110100SSSSDDDDEE110101ssssdddd | RD = sxth(RS) ; Rd = sxtb(Rs)
		.encoding = { .mask = 0xff00ff00, .op = 0x34003500 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SXTH_SA1_SXTB,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 20 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = sxth() ;  = sxtb()",
	},
	{
		// 00110000SSSSDDDDEE110101ssssdddd | RD = RS ; Rd = sxtb(Rs)
		.encoding = { .mask = 0xff00ff00, .op = 0x30003500 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_TFR_SA1_SXTB,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ;  = sxtb()",
	},
	{
		// 001010iiiiiiDDDDEE110101ssssdddd | RD = Ii ; Rd = sxtb(Rs)
		.encoding = { .mask = 0xfc00ff00, .op = 0x28003500 },
		.id = HEX_INS_X2_AUTOJOIN_UNDOCUMENTED_SA2_TFRSI_SA1_SXTB,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x6, 20 } }, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ;  = sxtb()",
	},
	{
		// 00100iiiiiiixxxxEE110100ssssdddd | Rx = add(Rxin,Ii) ; Rd = sxth(Rs)
		.encoding = { .mask = 0xf800ff00, .op = 0x20003400 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDI_SA1_SXTH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 20 } }, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 20 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,) ;  = sxth()",
	},
	{
		// 001011iiiiiiDDDDEE110100ssssdddd | RD = add(r29,Ii) ; Rd = sxth(Rs)
		.encoding = { .mask = 0xfc00ff00, .op = 0x2c003400 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDSP_SA1_SXTH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x6, 20 } }, .imm_scale = 2, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 23 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(R29,) ;  = sxth()",
	},
	{
		// 00110010SSSSDDDDEE110100ssssdddd | RD = and(RS,#1) ; Rd = sxth(Rs)
		.encoding = { .mask = 0xff00ff00, .op = 0x32003400 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_AND1_SA1_SXTH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 22 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = and(,#1) ;  = sxth()",
	},
	{
		// 00110011SSSSDDDDEE110100ssssdddd | RD = add(RS,n1) ; Rd = sxth(Rs)
		.encoding = { .mask = 0xff00ff00, .op = 0x33003400 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_DEC_SA1_SXTH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 20 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,) ;  = sxth()",
	},
	{
		// 00110001SSSSDDDDEE110100ssssdddd | RD = add(RS,#1) ; Rd = sxth(Rs)
		.encoding = { .mask = 0xff00ff00, .op = 0x31003400 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_INC_SA1_SXTH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 22 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,#1) ;  = sxth()",
	},
	{
		// 001010iiiiiiDDDDEE110100ssssdddd | RD = Ii ; Rd = sxth(Rs)
		.encoding = { .mask = 0xfc00ff00, .op = 0x28003400 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SETI_SA1_SXTH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x6, 20 } }, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ;  = sxth()",
	},
	{
		// 00110100SSSSDDDDEE110100ssssdddd | RD = sxth(RS) ; Rd = sxth(Rs)
		.encoding = { .mask = 0xff00ff00, .op = 0x34003400 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SXTH_SA1_SXTH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 20 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = sxth() ;  = sxth()",
	},
	{
		// 00110000SSSSDDDDEE110100ssssdddd | RD = RS ; Rd = sxth(Rs)
		.encoding = { .mask = 0xff00ff00, .op = 0x30003400 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_TFR_SA1_SXTH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ;  = sxth()",
	},
	{
		// 001010iiiiiiDDDDEE110100ssssdddd | RD = Ii ; Rd = sxth(Rs)
		.encoding = { .mask = 0xfc00ff00, .op = 0x28003400 },
		.id = HEX_INS_X2_AUTOJOIN_UNDOCUMENTED_SA2_TFRSI_SA1_SXTH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x6, 20 } }, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ;  = sxth()",
	},
	{
		// 00100iiiiiiixxxxEE110000ssssdddd | Rx = add(Rxin,Ii) ; Rd = Rs
		.encoding = { .mask = 0xf800ff00, .op = 0x20003000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDI_SA1_TFR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 20 } }, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,) ;  = ",
	},
	{
		// 001011iiiiiiDDDDEE110000ssssdddd | RD = add(r29,Ii) ; Rd = Rs
		.encoding = { .mask = 0xfc00ff00, .op = 0x2c003000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDSP_SA1_TFR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x6, 20 } }, .imm_scale = 2, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 18 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(R29,) ;  = ",
	},
	{
		// 001010iiiiiiDDDDEE110000ssssdddd | RD = Ii ; Rd = Rs
		.encoding = { .mask = 0xfc00ff00, .op = 0x28003000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SETI_SA1_TFR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x6, 20 } }, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ;  = ",
	},
	{
		// 00110000SSSSDDDDEE110000ssssdddd | RD = RS ; Rd = Rs
		.encoding = { .mask = 0xff00ff00, .op = 0x30003000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_TFR_SA1_TFR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ;  = ",
	},
	{
		// 001010iiiiiiDDDDEE110000ssssdddd | RD = Ii ; Rd = Rs
		.encoding = { .mask = 0xfc00ff00, .op = 0x28003000 },
		.id = HEX_INS_X2_AUTOJOIN_UNDOCUMENTED_SA2_TFRSI_SA1_TFR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x6, 20 } }, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ;  = ",
	},
	{
		// 00100iiiiiiixxxxEE110111ssssdddd | Rx = add(Rxin,Ii) ; Rd = and(Rs,#255)
		.encoding = { .mask = 0xf800ff00, .op = 0x20003700 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDI_SA1_ZXTB,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 20 } }, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 19 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,) ;  = and(,#255)",
	},
	{
		// 001011iiiiiiDDDDEE110111ssssdddd | RD = add(r29,Ii) ; Rd = and(Rs,#255)
		.encoding = { .mask = 0xfc00ff00, .op = 0x2c003700 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDSP_SA1_ZXTB,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x6, 20 } }, .imm_scale = 2, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 22 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(R29,) ;  = and(,#255)",
	},
	{
		// 00110010SSSSDDDDEE110111ssssdddd | RD = and(RS,#1) ; Rd = and(Rs,#255)
		.encoding = { .mask = 0xff00ff00, .op = 0x32003700 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_AND1_SA1_ZXTB,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 21 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = and(,#1) ;  = and(,#255)",
	},
	{
		// 00110011SSSSDDDDEE110111ssssdddd | RD = add(RS,n1) ; Rd = and(Rs,#255)
		.encoding = { .mask = 0xff00ff00, .op = 0x33003700 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_DEC_SA1_ZXTB,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 19 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,) ;  = and(,#255)",
	},
	{
		// 00110001SSSSDDDDEE110111ssssdddd | RD = add(RS,#1) ; Rd = and(Rs,#255)
		.encoding = { .mask = 0xff00ff00, .op = 0x31003700 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_INC_SA1_ZXTB,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 21 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,#1) ;  = and(,#255)",
	},
	{
		// 001010iiiiiiDDDDEE110111ssssdddd | RD = Ii ; Rd = and(Rs,#255)
		.encoding = { .mask = 0xfc00ff00, .op = 0x28003700 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SETI_SA1_ZXTB,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x6, 20 } }, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ;  = and(,#255)",
	},
	{
		// 00110101SSSSDDDDEE110111ssssdddd | RD = sxtb(RS) ; Rd = and(Rs,#255)
		.encoding = { .mask = 0xff00ff00, .op = 0x35003700 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SXTB_SA1_ZXTB,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 19 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = sxtb() ;  = and(,#255)",
	},
	{
		// 00110100SSSSDDDDEE110111ssssdddd | RD = sxth(RS) ; Rd = and(Rs,#255)
		.encoding = { .mask = 0xff00ff00, .op = 0x34003700 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SXTH_SA1_ZXTB,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 19 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = sxth() ;  = and(,#255)",
	},
	{
		// 00110000SSSSDDDDEE110111ssssdddd | RD = RS ; Rd = and(Rs,#255)
		.encoding = { .mask = 0xff00ff00, .op = 0x30003700 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_TFR_SA1_ZXTB,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ;  = and(,#255)",
	},
	{
		// 00110111SSSSDDDDEE110111ssssdddd | RD = and(RS,#255) ; Rd = and(Rs,#255)
		.encoding = { .mask = 0xff00ff00, .op = 0x37003700 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ZXTB_SA1_ZXTB,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 23 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = and(,#255) ;  = and(,#255)",
	},
	{
		// 00110110SSSSDDDDEE110111ssssdddd | RD = zxth(RS) ; Rd = and(Rs,#255)
		.encoding = { .mask = 0xff00ff00, .op = 0x36003700 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ZXTH_SA1_ZXTB,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 19 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = zxth() ;  = and(,#255)",
	},
	{
		// 001010iiiiiiDDDDEE110111ssssdddd | RD = Ii ; Rd = and(Rs,#255)
		.encoding = { .mask = 0xfc00ff00, .op = 0x28003700 },
		.id = HEX_INS_X2_AUTOJOIN_UNDOCUMENTED_SA2_TFRSI_SA1_ZXTB,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x6, 20 } }, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ;  = and(,#255)",
	},
	{
		// 00100iiiiiiixxxxEE110110ssssdddd | Rx = add(Rxin,Ii) ; Rd = zxth(Rs)
		.encoding = { .mask = 0xf800ff00, .op = 0x20003600 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDI_SA1_ZXTH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 20 } }, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 20 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,) ;  = zxth()",
	},
	{
		// 001011iiiiiiDDDDEE110110ssssdddd | RD = add(r29,Ii) ; Rd = zxth(Rs)
		.encoding = { .mask = 0xfc00ff00, .op = 0x2c003600 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDSP_SA1_ZXTH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x6, 20 } }, .imm_scale = 2, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 23 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(R29,) ;  = zxth()",
	},
	{
		// 00110010SSSSDDDDEE110110ssssdddd | RD = and(RS,#1) ; Rd = zxth(Rs)
		.encoding = { .mask = 0xff00ff00, .op = 0x32003600 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_AND1_SA1_ZXTH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 22 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = and(,#1) ;  = zxth()",
	},
	{
		// 00110011SSSSDDDDEE110110ssssdddd | RD = add(RS,n1) ; Rd = zxth(Rs)
		.encoding = { .mask = 0xff00ff00, .op = 0x33003600 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_DEC_SA1_ZXTH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 20 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,) ;  = zxth()",
	},
	{
		// 00110001SSSSDDDDEE110110ssssdddd | RD = add(RS,#1) ; Rd = zxth(Rs)
		.encoding = { .mask = 0xff00ff00, .op = 0x31003600 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_INC_SA1_ZXTH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 22 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,#1) ;  = zxth()",
	},
	{
		// 001010iiiiiiDDDDEE110110ssssdddd | RD = Ii ; Rd = zxth(Rs)
		.encoding = { .mask = 0xfc00ff00, .op = 0x28003600 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SETI_SA1_ZXTH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x6, 20 } }, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ;  = zxth()",
	},
	{
		// 00110101SSSSDDDDEE110110ssssdddd | RD = sxtb(RS) ; Rd = zxth(Rs)
		.encoding = { .mask = 0xff00ff00, .op = 0x35003600 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SXTB_SA1_ZXTH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 20 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = sxtb() ;  = zxth()",
	},
	{
		// 00110100SSSSDDDDEE110110ssssdddd | RD = sxth(RS) ; Rd = zxth(Rs)
		.encoding = { .mask = 0xff00ff00, .op = 0x34003600 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SXTH_SA1_ZXTH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 20 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = sxth() ;  = zxth()",
	},
	{
		// 00110000SSSSDDDDEE110110ssssdddd | RD = RS ; Rd = zxth(Rs)
		.encoding = { .mask = 0xff00ff00, .op = 0x30003600 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_TFR_SA1_ZXTH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ;  = zxth()",
	},
	{
		// 00110110SSSSDDDDEE110110ssssdddd | RD = zxth(RS) ; Rd = zxth(Rs)
		.encoding = { .mask = 0xff00ff00, .op = 0x36003600 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ZXTH_SA1_ZXTH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 20 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = zxth() ;  = zxth()",
	},
	{
		// 001010iiiiiiDDDDEE110110ssssdddd | RD = Ii ; Rd = zxth(Rs)
		.encoding = { .mask = 0xfc00ff00, .op = 0x28003600 },
		.id = HEX_INS_X2_AUTOJOIN_UNDOCUMENTED_SA2_TFRSI_SA1_ZXTH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x6, 20 } }, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ;  = zxth()",
	},
	{
		// 00100IIIIIIIxxxxEE1010iiiiiidddd | Rx = add(Rxin,II) ; Rd = Ii
		.encoding = { .mask = 0xf800fc00, .op = 0x20002800 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDI_UNDOCUMENTED_SA2_TFRSI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 20 } }, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x6, 4 } }, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,) ;  = ",
	},
	{
		// 001010IIIIIIDDDDEE1010iiiiiidddd | RD = II ; Rd = Ii
		.encoding = { .mask = 0xfc00fc00, .op = 0x28002800 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SETI_UNDOCUMENTED_SA2_TFRSI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x6, 20 } }, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x6, 4 } }, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ;  = ",
	},
	{
		// 001010IIIIIIDDDDEE1010iiiiiidddd | RD = II ; Rd = Ii
		.encoding = { .mask = 0xfc00fc00, .op = 0x28002800 },
		.id = HEX_INS_X2_AUTOJOIN_UNDOCUMENTED_SA2_TFRSI_UNDOCUMENTED_SA2_TFRSI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x6, 20 } }, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x6, 4 } }, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ;  = ",
	},
	{ { 0 } },
};

static const HexInsnTemplate templates_duplex_0x4[] = {
	{
		// 01000IIIIIIIxxxxEE00iiiissssdddd | Rx = add(Rxin,II) ; Rd = memw(Rs+Ii)
		.encoding = { .mask = 0xf800f000, .op = 0x40000000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDI_SL1_LOADRI_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 20 } }, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 20 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 8 } }, .imm_scale = 2, .syntax = 21 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,) ;  = memw(+)",
	},
	{
		// 01011000SSSSxxxxEE00iiiissssdddd | Rx = add(Rxin,RS) ; Rd = memw(Rs+Ii)
		.encoding = { .mask = 0xff00f000, .op = 0x58000000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDRX_SL1_LOADRI_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 20 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 8 } }, .imm_scale = 2, .syntax = 21 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,) ;  = memw(+)",
	},
	{
		// 010011IIIIIIDDDDEE00iiiissssdddd | RD = add(r29,II) ; Rd = memw(Rs+Ii)
		.encoding = { .mask = 0xfc00f000, .op = 0x4c000000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDSP_SL1_LOADRI_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x6, 20 } }, .imm_scale = 2, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 23 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 8 } }, .imm_scale = 2, .syntax = 24 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(R29,) ;  = memw(+)",
	},
	{
		// 01010010SSSSDDDDEE00iiiissssdddd | RD = and(RS,#1) ; Rd = memw(Rs+Ii)
		.encoding = { .mask = 0xff00f000, .op = 0x52000000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_AND1_SL1_LOADRI_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 22 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 8 } }, .imm_scale = 2, .syntax = 23 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = and(,#1) ;  = memw(+)",
	},
	{
		// 010110100111DDDDEE00iiiissssdddd | if (!p0) RD = #0 ; Rd = memw(Rs+Ii)
		.encoding = { .mask = 0xfff0f000, .op = 0x5a700000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRF_SL1_LOADRI_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 25 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 8 } }, .imm_scale = 2, .syntax = 26 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!P0)  = #0 ;  = memw(+)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010110100101DDDDEE00iiiissssdddd | if (!p0.new) RD = #0 ; Rd = memw(Rs+Ii)
		.encoding = { .mask = 0xfff0f000, .op = 0x5a500000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRFNEW_SL1_LOADRI_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 21 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 29 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 8 } }, .imm_scale = 2, .syntax = 30 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!P0.new)  = #0 ;  = memw(+)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010110100110DDDDEE00iiiissssdddd | if (p0) RD = #0 ; Rd = memw(Rs+Ii)
		.encoding = { .mask = 0xfff0f000, .op = 0x5a600000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRT_SL1_LOADRI_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 24 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 8 } }, .imm_scale = 2, .syntax = 25 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (P0)  = #0 ;  = memw(+)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010110100100DDDDEE00iiiissssdddd | if (p0.new) RD = #0 ; Rd = memw(Rs+Ii)
		.encoding = { .mask = 0xfff0f000, .op = 0x5a400000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRTNEW_SL1_LOADRI_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 20 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 28 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 8 } }, .imm_scale = 2, .syntax = 29 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (P0.new)  = #0 ;  = memw(+)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01011001SSSS00IIEE00iiiissssdddd | p0 = cmp.eq(RS,II) ; Rd = memw(Rs+Ii)
		.encoding = { .mask = 0xff0cf000, .op = 0x59000000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CMPEQI_SL1_LOADRI_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 16 } }, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 25 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 8 } }, .imm_scale = 2, .syntax = 26 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "P0 = cmp.eq(,) ;  = memw(+)",
	},
	{
		// 010111000II00DDDEE00iiiissssdddd | RDD = combine(#0,II) ; Rd = memw(Rs+Ii)
		.encoding = { .mask = 0xff98f000, .op = 0x5c000000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE0I_SL1_LOADRI_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 21 } }, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 26 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 8 } }, .imm_scale = 2, .syntax = 27 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(#0,) ;  = memw(+)",
	},
	{
		// 010111000II01DDDEE00iiiissssdddd | RDD = combine(#1,II) ; Rd = memw(Rs+Ii)
		.encoding = { .mask = 0xff98f000, .op = 0x5c080000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE1I_SL1_LOADRI_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 21 } }, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 26 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 8 } }, .imm_scale = 2, .syntax = 27 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(#1,) ;  = memw(+)",
	},
	{
		// 010111000II10DDDEE00iiiissssdddd | RDD = combine(#2,II) ; Rd = memw(Rs+Ii)
		.encoding = { .mask = 0xff98f000, .op = 0x5c100000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE2I_SL1_LOADRI_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 21 } }, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 26 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 8 } }, .imm_scale = 2, .syntax = 27 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(#2,) ;  = memw(+)",
	},
	{
		// 010111000II11DDDEE00iiiissssdddd | RDD = combine(#3,II) ; Rd = memw(Rs+Ii)
		.encoding = { .mask = 0xff98f000, .op = 0x5c180000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE3I_SL1_LOADRI_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 21 } }, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 26 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 8 } }, .imm_scale = 2, .syntax = 27 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(#3,) ;  = memw(+)",
	},
	{
		// 01011101SSSS1DDDEE00iiiissssdddd | RDD = combine(RS,#0) ; Rd = memw(Rs+Ii)
		.encoding = { .mask = 0xff08f000, .op = 0x5d080000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINERZ_SL1_LOADRI_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 26 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 8 } }, .imm_scale = 2, .syntax = 27 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(,#0) ;  = memw(+)",
	},
	{
		// 01011101SSSS0DDDEE00iiiissssdddd | RDD = combine(#0,RS) ; Rd = memw(Rs+Ii)
		.encoding = { .mask = 0xff08f000, .op = 0x5d000000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINEZR_SL1_LOADRI_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 26 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 8 } }, .imm_scale = 2, .syntax = 27 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(#0,) ;  = memw(+)",
	},
	{
		// 01010011SSSSDDDDEE00iiiissssdddd | RD = add(RS,n1) ; Rd = memw(Rs+Ii)
		.encoding = { .mask = 0xff00f000, .op = 0x53000000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_DEC_SL1_LOADRI_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 20 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 8 } }, .imm_scale = 2, .syntax = 21 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,) ;  = memw(+)",
	},
	{
		// 01010001SSSSDDDDEE00iiiissssdddd | RD = add(RS,#1) ; Rd = memw(Rs+Ii)
		.encoding = { .mask = 0xff00f000, .op = 0x51000000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_INC_SL1_LOADRI_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 22 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 8 } }, .imm_scale = 2, .syntax = 23 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,#1) ;  = memw(+)",
	},
	{
		// 010010IIIIIIDDDDEE00iiiissssdddd | RD = II ; Rd = memw(Rs+Ii)
		.encoding = { .mask = 0xfc00f000, .op = 0x48000000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SETI_SL1_LOADRI_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x6, 20 } }, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 8 } }, .imm_scale = 2, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ;  = memw(+)",
	},
	{
		// 010110100000DDDDEE00iiiissssdddd | RD = n1 ; Rd = memw(Rs+Ii)
		.encoding = { .mask = 0xfff0f000, .op = 0x5a000000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SETIN1_SL1_LOADRI_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 8 } }, .imm_scale = 2, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ;  = memw(+)",
	},
	{
		// 01010101SSSSDDDDEE00iiiissssdddd | RD = sxtb(RS) ; Rd = memw(Rs+Ii)
		.encoding = { .mask = 0xff00f000, .op = 0x55000000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SXTB_SL1_LOADRI_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 20 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 8 } }, .imm_scale = 2, .syntax = 21 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = sxtb() ;  = memw(+)",
	},
	{
		// 01010100SSSSDDDDEE00iiiissssdddd | RD = sxth(RS) ; Rd = memw(Rs+Ii)
		.encoding = { .mask = 0xff00f000, .op = 0x54000000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SXTH_SL1_LOADRI_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 20 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 8 } }, .imm_scale = 2, .syntax = 21 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = sxth() ;  = memw(+)",
	},
	{
		// 01010000SSSSDDDDEE00iiiissssdddd | RD = RS ; Rd = memw(Rs+Ii)
		.encoding = { .mask = 0xff00f000, .op = 0x50000000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_TFR_SL1_LOADRI_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 8 } }, .imm_scale = 2, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ;  = memw(+)",
	},
	{
		// 01010111SSSSDDDDEE00iiiissssdddd | RD = and(RS,#255) ; Rd = memw(Rs+Ii)
		.encoding = { .mask = 0xff00f000, .op = 0x57000000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ZXTB_SL1_LOADRI_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 24 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 8 } }, .imm_scale = 2, .syntax = 25 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = and(,#255) ;  = memw(+)",
	},
	{
		// 01010110SSSSDDDDEE00iiiissssdddd | RD = zxth(RS) ; Rd = memw(Rs+Ii)
		.encoding = { .mask = 0xff00f000, .op = 0x56000000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ZXTH_SL1_LOADRI_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 20 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 8 } }, .imm_scale = 2, .syntax = 21 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = zxth() ;  = memw(+)",
	},
	{
		// 010010IIIIIIDDDDEE00iiiissssdddd | RD = II ; Rd = memw(Rs+Ii)
		.encoding = { .mask = 0xfc00f000, .op = 0x48000000 },
		.id = HEX_INS_X2_AUTOJOIN_UNDOCUMENTED_SA2_TFRSI_SL1_LOADRI_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x6, 20 } }, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 8 } }, .imm_scale = 2, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ;  = memw(+)",
	},
	{
		// 01000IIIIIIIxxxxEE01iiiissssdddd | Rx = add(Rxin,II) ; Rd = memub(Rs+Ii)
		.encoding = { .mask = 0xf800f000, .op = 0x40001000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDI_SL1_LOADRUB_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 20 } }, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 21 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 8 } }, .syntax = 22 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,) ;  = memub(+)",
	},
	{
		// 01011000SSSSxxxxEE01iiiissssdddd | Rx = add(Rxin,RS) ; Rd = memub(Rs+Ii)
		.encoding = { .mask = 0xff00f000, .op = 0x58001000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDRX_SL1_LOADRUB_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 21 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 8 } }, .syntax = 22 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,) ;  = memub(+)",
	},
	{
		// 010011IIIIIIDDDDEE01iiiissssdddd | RD = add(r29,II) ; Rd = memub(Rs+Ii)
		.encoding = { .mask = 0xfc00f000, .op = 0x4c001000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDSP_SL1_LOADRUB_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x6, 20 } }, .imm_scale = 2, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 24 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 8 } }, .syntax = 25 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(R29,) ;  = memub(+)",
	},
	{
		// 01010010SSSSDDDDEE01iiiissssdddd | RD = and(RS,#1) ; Rd = memub(Rs+Ii)
		.encoding = { .mask = 0xff00f000, .op = 0x52001000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_AND1_SL1_LOADRUB_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 23 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 8 } }, .syntax = 24 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = and(,#1) ;  = memub(+)",
	},
	{
		// 010110100111DDDDEE01iiiissssdddd | if (!p0) RD = #0 ; Rd = memub(Rs+Ii)
		.encoding = { .mask = 0xfff0f000, .op = 0x5a701000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRF_SL1_LOADRUB_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 26 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 8 } }, .syntax = 27 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!P0)  = #0 ;  = memub(+)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010110100101DDDDEE01iiiissssdddd | if (!p0.new) RD = #0 ; Rd = memub(Rs+Ii)
		.encoding = { .mask = 0xfff0f000, .op = 0x5a501000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRFNEW_SL1_LOADRUB_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 21 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 30 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 8 } }, .syntax = 31 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!P0.new)  = #0 ;  = memub(+)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010110100110DDDDEE01iiiissssdddd | if (p0) RD = #0 ; Rd = memub(Rs+Ii)
		.encoding = { .mask = 0xfff0f000, .op = 0x5a601000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRT_SL1_LOADRUB_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 25 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 8 } }, .syntax = 26 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (P0)  = #0 ;  = memub(+)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010110100100DDDDEE01iiiissssdddd | if (p0.new) RD = #0 ; Rd = memub(Rs+Ii)
		.encoding = { .mask = 0xfff0f000, .op = 0x5a401000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRTNEW_SL1_LOADRUB_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 20 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 29 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 8 } }, .syntax = 30 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (P0.new)  = #0 ;  = memub(+)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01011001SSSS00IIEE01iiiissssdddd | p0 = cmp.eq(RS,II) ; Rd = memub(Rs+Ii)
		.encoding = { .mask = 0xff0cf000, .op = 0x59001000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CMPEQI_SL1_LOADRUB_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 16 } }, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 26 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 8 } }, .syntax = 27 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "P0 = cmp.eq(,) ;  = memub(+)",
	},
	{
		// 010111000II00DDDEE01iiiissssdddd | RDD = combine(#0,II) ; Rd = memub(Rs+Ii)
		.encoding = { .mask = 0xff98f000, .op = 0x5c001000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE0I_SL1_LOADRUB_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 21 } }, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 27 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 8 } }, .syntax = 28 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(#0,) ;  = memub(+)",
	},
	{
		// 010111000II01DDDEE01iiiissssdddd | RDD = combine(#1,II) ; Rd = memub(Rs+Ii)
		.encoding = { .mask = 0xff98f000, .op = 0x5c081000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE1I_SL1_LOADRUB_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 21 } }, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 27 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 8 } }, .syntax = 28 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(#1,) ;  = memub(+)",
	},
	{
		// 010111000II10DDDEE01iiiissssdddd | RDD = combine(#2,II) ; Rd = memub(Rs+Ii)
		.encoding = { .mask = 0xff98f000, .op = 0x5c101000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE2I_SL1_LOADRUB_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 21 } }, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 27 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 8 } }, .syntax = 28 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(#2,) ;  = memub(+)",
	},
	{
		// 010111000II11DDDEE01iiiissssdddd | RDD = combine(#3,II) ; Rd = memub(Rs+Ii)
		.encoding = { .mask = 0xff98f000, .op = 0x5c181000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE3I_SL1_LOADRUB_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 21 } }, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 27 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 8 } }, .syntax = 28 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(#3,) ;  = memub(+)",
	},
	{
		// 01011101SSSS1DDDEE01iiiissssdddd | RDD = combine(RS,#0) ; Rd = memub(Rs+Ii)
		.encoding = { .mask = 0xff08f000, .op = 0x5d081000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINERZ_SL1_LOADRUB_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 27 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 8 } }, .syntax = 28 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(,#0) ;  = memub(+)",
	},
	{
		// 01011101SSSS0DDDEE01iiiissssdddd | RDD = combine(#0,RS) ; Rd = memub(Rs+Ii)
		.encoding = { .mask = 0xff08f000, .op = 0x5d001000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINEZR_SL1_LOADRUB_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 27 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 8 } }, .syntax = 28 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(#0,) ;  = memub(+)",
	},
	{
		// 01010011SSSSDDDDEE01iiiissssdddd | RD = add(RS,n1) ; Rd = memub(Rs+Ii)
		.encoding = { .mask = 0xff00f000, .op = 0x53001000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_DEC_SL1_LOADRUB_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 21 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 8 } }, .syntax = 22 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,) ;  = memub(+)",
	},
	{
		// 01010001SSSSDDDDEE01iiiissssdddd | RD = add(RS,#1) ; Rd = memub(Rs+Ii)
		.encoding = { .mask = 0xff00f000, .op = 0x51001000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_INC_SL1_LOADRUB_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 23 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 8 } }, .syntax = 24 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,#1) ;  = memub(+)",
	},
	{
		// 010010IIIIIIDDDDEE01iiiissssdddd | RD = II ; Rd = memub(Rs+Ii)
		.encoding = { .mask = 0xfc00f000, .op = 0x48001000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SETI_SL1_LOADRUB_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x6, 20 } }, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 8 } }, .syntax = 16 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ;  = memub(+)",
	},
	{
		// 010110100000DDDDEE01iiiissssdddd | RD = n1 ; Rd = memub(Rs+Ii)
		.encoding = { .mask = 0xfff0f000, .op = 0x5a001000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SETIN1_SL1_LOADRUB_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 8 } }, .syntax = 16 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ;  = memub(+)",
	},
	{
		// 01010101SSSSDDDDEE01iiiissssdddd | RD = sxtb(RS) ; Rd = memub(Rs+Ii)
		.encoding = { .mask = 0xff00f000, .op = 0x55001000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SXTB_SL1_LOADRUB_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 21 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 8 } }, .syntax = 22 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = sxtb() ;  = memub(+)",
	},
	{
		// 01010100SSSSDDDDEE01iiiissssdddd | RD = sxth(RS) ; Rd = memub(Rs+Ii)
		.encoding = { .mask = 0xff00f000, .op = 0x54001000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SXTH_SL1_LOADRUB_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 21 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 8 } }, .syntax = 22 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = sxth() ;  = memub(+)",
	},
	{
		// 01010000SSSSDDDDEE01iiiissssdddd | RD = RS ; Rd = memub(Rs+Ii)
		.encoding = { .mask = 0xff00f000, .op = 0x50001000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_TFR_SL1_LOADRUB_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 8 } }, .syntax = 16 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ;  = memub(+)",
	},
	{
		// 01010111SSSSDDDDEE01iiiissssdddd | RD = and(RS,#255) ; Rd = memub(Rs+Ii)
		.encoding = { .mask = 0xff00f000, .op = 0x57001000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ZXTB_SL1_LOADRUB_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 25 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 8 } }, .syntax = 26 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = and(,#255) ;  = memub(+)",
	},
	{
		// 01010110SSSSDDDDEE01iiiissssdddd | RD = zxth(RS) ; Rd = memub(Rs+Ii)
		.encoding = { .mask = 0xff00f000, .op = 0x56001000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ZXTH_SL1_LOADRUB_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 21 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 8 } }, .syntax = 22 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = zxth() ;  = memub(+)",
	},
	{
		// 010010IIIIIIDDDDEE01iiiissssdddd | RD = II ; Rd = memub(Rs+Ii)
		.encoding = { .mask = 0xfc00f000, .op = 0x48001000 },
		.id = HEX_INS_X2_AUTOJOIN_UNDOCUMENTED_SA2_TFRSI_SL1_LOADRUB_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x6, 20 } }, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 8 } }, .syntax = 16 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ;  = memub(+)",
	},
	{ { 0 } },
};

static const HexInsnTemplate templates_duplex_0x5[] = {
	{
		// 01000iiiiiiixxxxEE11111100000000 | Rx = add(Rxin,Ii) ; deallocframe
		.encoding = { .mask = 0xf800ffff, .op = 0x40003f00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDI_SL2_DEALLOCFRAME,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 20 } }, .syntax = 8 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,) ; deallocframe",
	},
	{
		// 01011000ssssxxxxEE11111100000000 | Rx = add(Rxin,Rs) ; deallocframe
		.encoding = { .mask = 0xff00ffff, .op = 0x58003f00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDRX_SL2_DEALLOCFRAME,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,) ; deallocframe",
	},
	{
		// 010011iiiiiiddddEE11111100000000 | Rd = add(r29,Ii) ; deallocframe
		.encoding = { .mask = 0xfc00ffff, .op = 0x4c003f00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDSP_SL2_DEALLOCFRAME,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x6, 20 } }, .imm_scale = 2, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(R29,) ; deallocframe",
	},
	{
		// 01010010ssssddddEE11111100000000 | Rd = and(Rs,#1) ; deallocframe
		.encoding = { .mask = 0xff00ffff, .op = 0x52003f00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_AND1_SL2_DEALLOCFRAME,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = and(,#1) ; deallocframe",
	},
	{
		// 010110100111ddddEE11111100000000 | if (!p0) Rd = #0 ; deallocframe
		.encoding = { .mask = 0xfff0ffff, .op = 0x5a703f00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRF_SL2_DEALLOCFRAME,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 9 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!P0)  = #0 ; deallocframe",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010110100101ddddEE11111100000000 | if (!p0.new) Rd = #0 ; deallocframe
		.encoding = { .mask = 0xfff0ffff, .op = 0x5a503f00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRFNEW_SL2_DEALLOCFRAME,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 13 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!P0.new)  = #0 ; deallocframe",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010110100110ddddEE11111100000000 | if (p0) Rd = #0 ; deallocframe
		.encoding = { .mask = 0xfff0ffff, .op = 0x5a603f00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRT_SL2_DEALLOCFRAME,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (P0)  = #0 ; deallocframe",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010110100100ddddEE11111100000000 | if (p0.new) Rd = #0 ; deallocframe
		.encoding = { .mask = 0xfff0ffff, .op = 0x5a403f00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRTNEW_SL2_DEALLOCFRAME,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (P0.new)  = #0 ; deallocframe",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01011001ssss00iiEE11111100000000 | p0 = cmp.eq(Rs,Ii) ; deallocframe
		.encoding = { .mask = 0xff0cffff, .op = 0x59003f00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CMPEQI_SL2_DEALLOCFRAME,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 16 } }, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "P0 = cmp.eq(,) ; deallocframe",
	},
	{
		// 010111000ii00dddEE11111100000000 | Rdd = combine(#0,Ii) ; deallocframe
		.encoding = { .mask = 0xff98ffff, .op = 0x5c003f00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE0I_SL2_DEALLOCFRAME,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 21 } }, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(#0,) ; deallocframe",
	},
	{
		// 010111000ii01dddEE11111100000000 | Rdd = combine(#1,Ii) ; deallocframe
		.encoding = { .mask = 0xff98ffff, .op = 0x5c083f00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE1I_SL2_DEALLOCFRAME,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 21 } }, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(#1,) ; deallocframe",
	},
	{
		// 010111000ii10dddEE11111100000000 | Rdd = combine(#2,Ii) ; deallocframe
		.encoding = { .mask = 0xff98ffff, .op = 0x5c103f00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE2I_SL2_DEALLOCFRAME,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 21 } }, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(#2,) ; deallocframe",
	},
	{
		// 010111000ii11dddEE11111100000000 | Rdd = combine(#3,Ii) ; deallocframe
		.encoding = { .mask = 0xff98ffff, .op = 0x5c183f00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE3I_SL2_DEALLOCFRAME,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 21 } }, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(#3,) ; deallocframe",
	},
	{
		// 01011101ssss1dddEE11111100000000 | Rdd = combine(Rs,#0) ; deallocframe
		.encoding = { .mask = 0xff08ffff, .op = 0x5d083f00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINERZ_SL2_DEALLOCFRAME,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(,#0) ; deallocframe",
	},
	{
		// 01011101ssss0dddEE11111100000000 | Rdd = combine(#0,Rs) ; deallocframe
		.encoding = { .mask = 0xff08ffff, .op = 0x5d003f00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINEZR_SL2_DEALLOCFRAME,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(#0,) ; deallocframe",
	},
	{
		// 01010011ssssddddEE11111100000000 | Rd = add(Rs,n1) ; deallocframe
		.encoding = { .mask = 0xff00ffff, .op = 0x53003f00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_DEC_SL2_DEALLOCFRAME,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 8 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,) ; deallocframe",
	},
	{
		// 01010001ssssddddEE11111100000000 | Rd = add(Rs,#1) ; deallocframe
		.encoding = { .mask = 0xff00ffff, .op = 0x51003f00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_INC_SL2_DEALLOCFRAME,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,#1) ; deallocframe",
	},
	{
		// 010010iiiiiiddddEE11111100000000 | Rd = Ii ; deallocframe
		.encoding = { .mask = 0xfc00ffff, .op = 0x48003f00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SETI_SL2_DEALLOCFRAME,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x6, 20 } }, .syntax = 3 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ; deallocframe",
	},
	{
		// 010110100000ddddEE11111100000000 | Rd = n1 ; deallocframe
		.encoding = { .mask = 0xfff0ffff, .op = 0x5a003f00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SETIN1_SL2_DEALLOCFRAME,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 3 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ; deallocframe",
	},
	{
		// 01010101ssssddddEE11111100000000 | Rd = sxtb(Rs) ; deallocframe
		.encoding = { .mask = 0xff00ffff, .op = 0x55003f00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SXTB_SL2_DEALLOCFRAME,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = sxtb() ; deallocframe",
	},
	{
		// 01010100ssssddddEE11111100000000 | Rd = sxth(Rs) ; deallocframe
		.encoding = { .mask = 0xff00ffff, .op = 0x54003f00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SXTH_SL2_DEALLOCFRAME,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = sxth() ; deallocframe",
	},
	{
		// 01010000ssssddddEE11111100000000 | Rd = Rs ; deallocframe
		.encoding = { .mask = 0xff00ffff, .op = 0x50003f00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_TFR_SL2_DEALLOCFRAME,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 3 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ; deallocframe",
	},
	{
		// 01010111ssssddddEE11111100000000 | Rd = and(Rs,#255) ; deallocframe
		.encoding = { .mask = 0xff00ffff, .op = 0x57003f00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ZXTB_SL2_DEALLOCFRAME,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = and(,#255) ; deallocframe",
	},
	{
		// 01010110ssssddddEE11111100000000 | Rd = zxth(Rs) ; deallocframe
		.encoding = { .mask = 0xff00ffff, .op = 0x56003f00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ZXTH_SL2_DEALLOCFRAME,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = zxth() ; deallocframe",
	},
	{
		// 010010iiiiiiddddEE11111100000000 | Rd = Ii ; deallocframe
		.encoding = { .mask = 0xfc00ffff, .op = 0x48003f00 },
		.id = HEX_INS_X2_AUTOJOIN_UNDOCUMENTED_SA2_TFRSI_SL2_DEALLOCFRAME,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x6, 20 } }, .syntax = 3 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ; deallocframe",
	},
	{
		// 01000iiiiiiixxxxEE11111111000000 | Rx = add(Rxin,Ii) ; jumpr r31
		.encoding = { .mask = 0xf800ffff, .op = 0x40003fc0 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDI_SL2_JUMPR31,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 20 } }, .syntax = 8 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_RET,
		.syntax = " = add(,) ; jumpr R31",
	},
	{
		// 01011000ssssxxxxEE11111111000000 | Rx = add(Rxin,Rs) ; jumpr r31
		.encoding = { .mask = 0xff00ffff, .op = 0x58003fc0 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDRX_SL2_JUMPR31,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_RET,
		.syntax = " = add(,) ; jumpr R31",
	},
	{
		// 010011iiiiiiddddEE11111111000000 | Rd = add(r29,Ii) ; jumpr r31
		.encoding = { .mask = 0xfc00ffff, .op = 0x4c003fc0 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDSP_SL2_JUMPR31,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x6, 20 } }, .imm_scale = 2, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_RET,
		.syntax = " = add(R29,) ; jumpr R31",
	},
	{
		// 01010010ssssddddEE11111111000000 | Rd = and(Rs,#1) ; jumpr r31
		.encoding = { .mask = 0xff00ffff, .op = 0x52003fc0 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_AND1_SL2_JUMPR31,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_RET,
		.syntax = " = and(,#1) ; jumpr R31",
	},
	{
		// 010110100111ddddEE11111111000000 | if (!p0) Rd = #0 ; jumpr r31
		.encoding = { .mask = 0xfff0ffff, .op = 0x5a703fc0 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRF_SL2_JUMPR31,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 9 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "if (!P0)  = #0 ; jumpr R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010110100101ddddEE11111111000000 | if (!p0.new) Rd = #0 ; jumpr r31
		.encoding = { .mask = 0xfff0ffff, .op = 0x5a503fc0 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRFNEW_SL2_JUMPR31,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 13 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "if (!P0.new)  = #0 ; jumpr R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010110100110ddddEE11111111000000 | if (p0) Rd = #0 ; jumpr r31
		.encoding = { .mask = 0xfff0ffff, .op = 0x5a603fc0 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRT_SL2_JUMPR31,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "if (P0)  = #0 ; jumpr R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010110100100ddddEE11111111000000 | if (p0.new) Rd = #0 ; jumpr r31
		.encoding = { .mask = 0xfff0ffff, .op = 0x5a403fc0 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRTNEW_SL2_JUMPR31,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "if (P0.new)  = #0 ; jumpr R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01011001ssss00iiEE11111111000000 | p0 = cmp.eq(Rs,Ii) ; jumpr r31
		.encoding = { .mask = 0xff0cffff, .op = 0x59003fc0 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CMPEQI_SL2_JUMPR31,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 16 } }, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_RET,
		.syntax = "P0 = cmp.eq(,) ; jumpr R31",
	},
	{
		// 010111000ii00dddEE11111111000000 | Rdd = combine(#0,Ii) ; jumpr r31
		.encoding = { .mask = 0xff98ffff, .op = 0x5c003fc0 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE0I_SL2_JUMPR31,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 21 } }, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_RET,
		.syntax = " = combine(#0,) ; jumpr R31",
	},
	{
		// 010111000ii01dddEE11111111000000 | Rdd = combine(#1,Ii) ; jumpr r31
		.encoding = { .mask = 0xff98ffff, .op = 0x5c083fc0 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE1I_SL2_JUMPR31,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 21 } }, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_RET,
		.syntax = " = combine(#1,) ; jumpr R31",
	},
	{
		// 010111000ii10dddEE11111111000000 | Rdd = combine(#2,Ii) ; jumpr r31
		.encoding = { .mask = 0xff98ffff, .op = 0x5c103fc0 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE2I_SL2_JUMPR31,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 21 } }, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_RET,
		.syntax = " = combine(#2,) ; jumpr R31",
	},
	{
		// 010111000ii11dddEE11111111000000 | Rdd = combine(#3,Ii) ; jumpr r31
		.encoding = { .mask = 0xff98ffff, .op = 0x5c183fc0 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE3I_SL2_JUMPR31,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 21 } }, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_RET,
		.syntax = " = combine(#3,) ; jumpr R31",
	},
	{
		// 01011101ssss1dddEE11111111000000 | Rdd = combine(Rs,#0) ; jumpr r31
		.encoding = { .mask = 0xff08ffff, .op = 0x5d083fc0 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINERZ_SL2_JUMPR31,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_RET,
		.syntax = " = combine(,#0) ; jumpr R31",
	},
	{
		// 01011101ssss0dddEE11111111000000 | Rdd = combine(#0,Rs) ; jumpr r31
		.encoding = { .mask = 0xff08ffff, .op = 0x5d003fc0 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINEZR_SL2_JUMPR31,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_RET,
		.syntax = " = combine(#0,) ; jumpr R31",
	},
	{
		// 01010011ssssddddEE11111111000000 | Rd = add(Rs,n1) ; jumpr r31
		.encoding = { .mask = 0xff00ffff, .op = 0x53003fc0 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_DEC_SL2_JUMPR31,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 8 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_RET,
		.syntax = " = add(,) ; jumpr R31",
	},
	{
		// 01010001ssssddddEE11111111000000 | Rd = add(Rs,#1) ; jumpr r31
		.encoding = { .mask = 0xff00ffff, .op = 0x51003fc0 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_INC_SL2_JUMPR31,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_RET,
		.syntax = " = add(,#1) ; jumpr R31",
	},
	{
		// 010010iiiiiiddddEE11111111000000 | Rd = Ii ; jumpr r31
		.encoding = { .mask = 0xfc00ffff, .op = 0x48003fc0 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SETI_SL2_JUMPR31,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x6, 20 } }, .syntax = 3 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_RET,
		.syntax = " =  ; jumpr R31",
	},
	{
		// 010110100000ddddEE11111111000000 | Rd = n1 ; jumpr r31
		.encoding = { .mask = 0xfff0ffff, .op = 0x5a003fc0 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SETIN1_SL2_JUMPR31,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 3 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_RET,
		.syntax = " =  ; jumpr R31",
	},
	{
		// 01010101ssssddddEE11111111000000 | Rd = sxtb(Rs) ; jumpr r31
		.encoding = { .mask = 0xff00ffff, .op = 0x55003fc0 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SXTB_SL2_JUMPR31,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_RET,
		.syntax = " = sxtb() ; jumpr R31",
	},
	{
		// 01010100ssssddddEE11111111000000 | Rd = sxth(Rs) ; jumpr r31
		.encoding = { .mask = 0xff00ffff, .op = 0x54003fc0 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SXTH_SL2_JUMPR31,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_RET,
		.syntax = " = sxth() ; jumpr R31",
	},
	{
		// 01010000ssssddddEE11111111000000 | Rd = Rs ; jumpr r31
		.encoding = { .mask = 0xff00ffff, .op = 0x50003fc0 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_TFR_SL2_JUMPR31,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 3 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_RET,
		.syntax = " =  ; jumpr R31",
	},
	{
		// 01010111ssssddddEE11111111000000 | Rd = and(Rs,#255) ; jumpr r31
		.encoding = { .mask = 0xff00ffff, .op = 0x57003fc0 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ZXTB_SL2_JUMPR31,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_RET,
		.syntax = " = and(,#255) ; jumpr R31",
	},
	{
		// 01010110ssssddddEE11111111000000 | Rd = zxth(Rs) ; jumpr r31
		.encoding = { .mask = 0xff00ffff, .op = 0x56003fc0 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ZXTH_SL2_JUMPR31,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_RET,
		.syntax = " = zxth() ; jumpr R31",
	},
	{
		// 010010iiiiiiddddEE11111111000000 | Rd = Ii ; jumpr r31
		.encoding = { .mask = 0xfc00ffff, .op = 0x48003fc0 },
		.id = HEX_INS_X2_AUTOJOIN_UNDOCUMENTED_SA2_TFRSI_SL2_JUMPR31,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x6, 20 } }, .syntax = 3 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_RET,
		.syntax = " =  ; jumpr R31",
	},
	{
		// 01000iiiiiiixxxxEE11111111000101 | Rx = add(Rxin,Ii) ; if (!p0) jumpr r31
		.encoding = { .mask = 0xf800ffff, .op = 0x40003fc5 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDI_SL2_JUMPR31_F,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 20 } }, .syntax = 8 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = add(,) ; if (!P0) jumpr R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01011000ssssxxxxEE11111111000101 | Rx = add(Rxin,Rs) ; if (!p0) jumpr r31
		.encoding = { .mask = 0xff00ffff, .op = 0x58003fc5 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDRX_SL2_JUMPR31_F,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = add(,) ; if (!P0) jumpr R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010011iiiiiiddddEE11111111000101 | Rd = add(r29,Ii) ; if (!p0) jumpr r31
		.encoding = { .mask = 0xfc00ffff, .op = 0x4c003fc5 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDSP_SL2_JUMPR31_F,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x6, 20 } }, .imm_scale = 2, .syntax = 11 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = add(R29,) ; if (!P0) jumpr R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01010010ssssddddEE11111111000101 | Rd = and(Rs,#1) ; if (!p0) jumpr r31
		.encoding = { .mask = 0xff00ffff, .op = 0x52003fc5 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_AND1_SL2_JUMPR31_F,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = and(,#1) ; if (!P0) jumpr R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010110100111ddddEE11111111000101 | if (!p0) Rd = #0 ; if (!p0) jumpr r31
		.encoding = { .mask = 0xfff0ffff, .op = 0x5a703fc5 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRF_SL2_JUMPR31_F,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 9 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "if (!P0)  = #0 ; if (!P0) jumpr R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010110100101ddddEE11111111000101 | if (!p0.new) Rd = #0 ; if (!p0) jumpr r31
		.encoding = { .mask = 0xfff0ffff, .op = 0x5a503fc5 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRFNEW_SL2_JUMPR31_F,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 13 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "if (!P0.new)  = #0 ; if (!P0) jumpr R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010110100110ddddEE11111111000101 | if (p0) Rd = #0 ; if (!p0) jumpr r31
		.encoding = { .mask = 0xfff0ffff, .op = 0x5a603fc5 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRT_SL2_JUMPR31_F,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "if (P0)  = #0 ; if (!P0) jumpr R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010110100100ddddEE11111111000101 | if (p0.new) Rd = #0 ; if (!p0) jumpr r31
		.encoding = { .mask = 0xfff0ffff, .op = 0x5a403fc5 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRTNEW_SL2_JUMPR31_F,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "if (P0.new)  = #0 ; if (!P0) jumpr R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01011001ssss00iiEE11111111000101 | p0 = cmp.eq(Rs,Ii) ; if (!p0) jumpr r31
		.encoding = { .mask = 0xff0cffff, .op = 0x59003fc5 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CMPEQI_SL2_JUMPR31_F,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 16 } }, .syntax = 13 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "P0 = cmp.eq(,) ; if (!P0) jumpr R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010111000ii00dddEE11111111000101 | Rdd = combine(#0,Ii) ; if (!p0) jumpr r31
		.encoding = { .mask = 0xff98ffff, .op = 0x5c003fc5 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE0I_SL2_JUMPR31_F,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 21 } }, .syntax = 14 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = combine(#0,) ; if (!P0) jumpr R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010111000ii01dddEE11111111000101 | Rdd = combine(#1,Ii) ; if (!p0) jumpr r31
		.encoding = { .mask = 0xff98ffff, .op = 0x5c083fc5 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE1I_SL2_JUMPR31_F,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 21 } }, .syntax = 14 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = combine(#1,) ; if (!P0) jumpr R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010111000ii10dddEE11111111000101 | Rdd = combine(#2,Ii) ; if (!p0) jumpr r31
		.encoding = { .mask = 0xff98ffff, .op = 0x5c103fc5 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE2I_SL2_JUMPR31_F,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 21 } }, .syntax = 14 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = combine(#2,) ; if (!P0) jumpr R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010111000ii11dddEE11111111000101 | Rdd = combine(#3,Ii) ; if (!p0) jumpr r31
		.encoding = { .mask = 0xff98ffff, .op = 0x5c183fc5 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE3I_SL2_JUMPR31_F,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 21 } }, .syntax = 14 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = combine(#3,) ; if (!P0) jumpr R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01011101ssss1dddEE11111111000101 | Rdd = combine(Rs,#0) ; if (!p0) jumpr r31
		.encoding = { .mask = 0xff08ffff, .op = 0x5d083fc5 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINERZ_SL2_JUMPR31_F,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 11 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = combine(,#0) ; if (!P0) jumpr R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01011101ssss0dddEE11111111000101 | Rdd = combine(#0,Rs) ; if (!p0) jumpr r31
		.encoding = { .mask = 0xff08ffff, .op = 0x5d003fc5 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINEZR_SL2_JUMPR31_F,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 14 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = combine(#0,) ; if (!P0) jumpr R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01010011ssssddddEE11111111000101 | Rd = add(Rs,n1) ; if (!p0) jumpr r31
		.encoding = { .mask = 0xff00ffff, .op = 0x53003fc5 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_DEC_SL2_JUMPR31_F,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 8 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = add(,) ; if (!P0) jumpr R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01010001ssssddddEE11111111000101 | Rd = add(Rs,#1) ; if (!p0) jumpr r31
		.encoding = { .mask = 0xff00ffff, .op = 0x51003fc5 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_INC_SL2_JUMPR31_F,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = add(,#1) ; if (!P0) jumpr R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010010iiiiiiddddEE11111111000101 | Rd = Ii ; if (!p0) jumpr r31
		.encoding = { .mask = 0xfc00ffff, .op = 0x48003fc5 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SETI_SL2_JUMPR31_F,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x6, 20 } }, .syntax = 3 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " =  ; if (!P0) jumpr R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010110100000ddddEE11111111000101 | Rd = n1 ; if (!p0) jumpr r31
		.encoding = { .mask = 0xfff0ffff, .op = 0x5a003fc5 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SETIN1_SL2_JUMPR31_F,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 3 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " =  ; if (!P0) jumpr R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01010101ssssddddEE11111111000101 | Rd = sxtb(Rs) ; if (!p0) jumpr r31
		.encoding = { .mask = 0xff00ffff, .op = 0x55003fc5 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SXTB_SL2_JUMPR31_F,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = sxtb() ; if (!P0) jumpr R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01010100ssssddddEE11111111000101 | Rd = sxth(Rs) ; if (!p0) jumpr r31
		.encoding = { .mask = 0xff00ffff, .op = 0x54003fc5 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SXTH_SL2_JUMPR31_F,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = sxth() ; if (!P0) jumpr R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01010000ssssddddEE11111111000101 | Rd = Rs ; if (!p0) jumpr r31
		.encoding = { .mask = 0xff00ffff, .op = 0x50003fc5 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_TFR_SL2_JUMPR31_F,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 3 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " =  ; if (!P0) jumpr R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01010111ssssddddEE11111111000101 | Rd = and(Rs,#255) ; if (!p0) jumpr r31
		.encoding = { .mask = 0xff00ffff, .op = 0x57003fc5 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ZXTB_SL2_JUMPR31_F,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = and(,#255) ; if (!P0) jumpr R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01010110ssssddddEE11111111000101 | Rd = zxth(Rs) ; if (!p0) jumpr r31
		.encoding = { .mask = 0xff00ffff, .op = 0x56003fc5 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ZXTH_SL2_JUMPR31_F,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = zxth() ; if (!P0) jumpr R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010010iiiiiiddddEE11111111000101 | Rd = Ii ; if (!p0) jumpr r31
		.encoding = { .mask = 0xfc00ffff, .op = 0x48003fc5 },
		.id = HEX_INS_X2_AUTOJOIN_UNDOCUMENTED_SA2_TFRSI_SL2_JUMPR31_F,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x6, 20 } }, .syntax = 3 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " =  ; if (!P0) jumpr R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01000iiiiiiixxxxEE11111111000111 | Rx = add(Rxin,Ii) ; if (!p0.new) jumpr:nt r31
		.encoding = { .mask = 0xf800ffff, .op = 0x40003fc7 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDI_SL2_JUMPR31_FNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 20 } }, .syntax = 8 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = add(,) ; if (!P0.new) jumpr:nt R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01011000ssssxxxxEE11111111000111 | Rx = add(Rxin,Rs) ; if (!p0.new) jumpr:nt r31
		.encoding = { .mask = 0xff00ffff, .op = 0x58003fc7 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDRX_SL2_JUMPR31_FNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = add(,) ; if (!P0.new) jumpr:nt R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010011iiiiiiddddEE11111111000111 | Rd = add(r29,Ii) ; if (!p0.new) jumpr:nt r31
		.encoding = { .mask = 0xfc00ffff, .op = 0x4c003fc7 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDSP_SL2_JUMPR31_FNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x6, 20 } }, .imm_scale = 2, .syntax = 11 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = add(R29,) ; if (!P0.new) jumpr:nt R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01010010ssssddddEE11111111000111 | Rd = and(Rs,#1) ; if (!p0.new) jumpr:nt r31
		.encoding = { .mask = 0xff00ffff, .op = 0x52003fc7 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_AND1_SL2_JUMPR31_FNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = and(,#1) ; if (!P0.new) jumpr:nt R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010110100111ddddEE11111111000111 | if (!p0) Rd = #0 ; if (!p0.new) jumpr:nt r31
		.encoding = { .mask = 0xfff0ffff, .op = 0x5a703fc7 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRF_SL2_JUMPR31_FNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 9 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "if (!P0)  = #0 ; if (!P0.new) jumpr:nt R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010110100101ddddEE11111111000111 | if (!p0.new) Rd = #0 ; if (!p0.new) jumpr:nt r31
		.encoding = { .mask = 0xfff0ffff, .op = 0x5a503fc7 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRFNEW_SL2_JUMPR31_FNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 13 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "if (!P0.new)  = #0 ; if (!P0.new) jumpr:nt R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010110100110ddddEE11111111000111 | if (p0) Rd = #0 ; if (!p0.new) jumpr:nt r31
		.encoding = { .mask = 0xfff0ffff, .op = 0x5a603fc7 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRT_SL2_JUMPR31_FNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "if (P0)  = #0 ; if (!P0.new) jumpr:nt R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010110100100ddddEE11111111000111 | if (p0.new) Rd = #0 ; if (!p0.new) jumpr:nt r31
		.encoding = { .mask = 0xfff0ffff, .op = 0x5a403fc7 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRTNEW_SL2_JUMPR31_FNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "if (P0.new)  = #0 ; if (!P0.new) jumpr:nt R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01011001ssss00iiEE11111111000111 | p0 = cmp.eq(Rs,Ii) ; if (!p0.new) jumpr:nt r31
		.encoding = { .mask = 0xff0cffff, .op = 0x59003fc7 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CMPEQI_SL2_JUMPR31_FNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 16 } }, .syntax = 13 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "P0 = cmp.eq(,) ; if (!P0.new) jumpr:nt R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010111000ii00dddEE11111111000111 | Rdd = combine(#0,Ii) ; if (!p0.new) jumpr:nt r31
		.encoding = { .mask = 0xff98ffff, .op = 0x5c003fc7 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE0I_SL2_JUMPR31_FNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 21 } }, .syntax = 14 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = combine(#0,) ; if (!P0.new) jumpr:nt R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010111000ii01dddEE11111111000111 | Rdd = combine(#1,Ii) ; if (!p0.new) jumpr:nt r31
		.encoding = { .mask = 0xff98ffff, .op = 0x5c083fc7 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE1I_SL2_JUMPR31_FNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 21 } }, .syntax = 14 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = combine(#1,) ; if (!P0.new) jumpr:nt R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010111000ii10dddEE11111111000111 | Rdd = combine(#2,Ii) ; if (!p0.new) jumpr:nt r31
		.encoding = { .mask = 0xff98ffff, .op = 0x5c103fc7 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE2I_SL2_JUMPR31_FNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 21 } }, .syntax = 14 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = combine(#2,) ; if (!P0.new) jumpr:nt R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010111000ii11dddEE11111111000111 | Rdd = combine(#3,Ii) ; if (!p0.new) jumpr:nt r31
		.encoding = { .mask = 0xff98ffff, .op = 0x5c183fc7 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE3I_SL2_JUMPR31_FNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 21 } }, .syntax = 14 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = combine(#3,) ; if (!P0.new) jumpr:nt R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01011101ssss1dddEE11111111000111 | Rdd = combine(Rs,#0) ; if (!p0.new) jumpr:nt r31
		.encoding = { .mask = 0xff08ffff, .op = 0x5d083fc7 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINERZ_SL2_JUMPR31_FNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 11 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = combine(,#0) ; if (!P0.new) jumpr:nt R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01011101ssss0dddEE11111111000111 | Rdd = combine(#0,Rs) ; if (!p0.new) jumpr:nt r31
		.encoding = { .mask = 0xff08ffff, .op = 0x5d003fc7 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINEZR_SL2_JUMPR31_FNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 14 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = combine(#0,) ; if (!P0.new) jumpr:nt R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01010011ssssddddEE11111111000111 | Rd = add(Rs,n1) ; if (!p0.new) jumpr:nt r31
		.encoding = { .mask = 0xff00ffff, .op = 0x53003fc7 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_DEC_SL2_JUMPR31_FNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 8 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = add(,) ; if (!P0.new) jumpr:nt R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01010001ssssddddEE11111111000111 | Rd = add(Rs,#1) ; if (!p0.new) jumpr:nt r31
		.encoding = { .mask = 0xff00ffff, .op = 0x51003fc7 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_INC_SL2_JUMPR31_FNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = add(,#1) ; if (!P0.new) jumpr:nt R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010010iiiiiiddddEE11111111000111 | Rd = Ii ; if (!p0.new) jumpr:nt r31
		.encoding = { .mask = 0xfc00ffff, .op = 0x48003fc7 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SETI_SL2_JUMPR31_FNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x6, 20 } }, .syntax = 3 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " =  ; if (!P0.new) jumpr:nt R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010110100000ddddEE11111111000111 | Rd = n1 ; if (!p0.new) jumpr:nt r31
		.encoding = { .mask = 0xfff0ffff, .op = 0x5a003fc7 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SETIN1_SL2_JUMPR31_FNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 3 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " =  ; if (!P0.new) jumpr:nt R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01010101ssssddddEE11111111000111 | Rd = sxtb(Rs) ; if (!p0.new) jumpr:nt r31
		.encoding = { .mask = 0xff00ffff, .op = 0x55003fc7 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SXTB_SL2_JUMPR31_FNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = sxtb() ; if (!P0.new) jumpr:nt R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01010100ssssddddEE11111111000111 | Rd = sxth(Rs) ; if (!p0.new) jumpr:nt r31
		.encoding = { .mask = 0xff00ffff, .op = 0x54003fc7 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SXTH_SL2_JUMPR31_FNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = sxth() ; if (!P0.new) jumpr:nt R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01010000ssssddddEE11111111000111 | Rd = Rs ; if (!p0.new) jumpr:nt r31
		.encoding = { .mask = 0xff00ffff, .op = 0x50003fc7 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_TFR_SL2_JUMPR31_FNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 3 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " =  ; if (!P0.new) jumpr:nt R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01010111ssssddddEE11111111000111 | Rd = and(Rs,#255) ; if (!p0.new) jumpr:nt r31
		.encoding = { .mask = 0xff00ffff, .op = 0x57003fc7 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ZXTB_SL2_JUMPR31_FNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = and(,#255) ; if (!P0.new) jumpr:nt R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01010110ssssddddEE11111111000111 | Rd = zxth(Rs) ; if (!p0.new) jumpr:nt r31
		.encoding = { .mask = 0xff00ffff, .op = 0x56003fc7 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ZXTH_SL2_JUMPR31_FNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = zxth() ; if (!P0.new) jumpr:nt R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010010iiiiiiddddEE11111111000111 | Rd = Ii ; if (!p0.new) jumpr:nt r31
		.encoding = { .mask = 0xfc00ffff, .op = 0x48003fc7 },
		.id = HEX_INS_X2_AUTOJOIN_UNDOCUMENTED_SA2_TFRSI_SL2_JUMPR31_FNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x6, 20 } }, .syntax = 3 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " =  ; if (!P0.new) jumpr:nt R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01000iiiiiiixxxxEE11111111000100 | Rx = add(Rxin,Ii) ; if (p0) jumpr r31
		.encoding = { .mask = 0xf800ffff, .op = 0x40003fc4 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDI_SL2_JUMPR31_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 20 } }, .syntax = 8 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = add(,) ; if (P0) jumpr R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01011000ssssxxxxEE11111111000100 | Rx = add(Rxin,Rs) ; if (p0) jumpr r31
		.encoding = { .mask = 0xff00ffff, .op = 0x58003fc4 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDRX_SL2_JUMPR31_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = add(,) ; if (P0) jumpr R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010011iiiiiiddddEE11111111000100 | Rd = add(r29,Ii) ; if (p0) jumpr r31
		.encoding = { .mask = 0xfc00ffff, .op = 0x4c003fc4 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDSP_SL2_JUMPR31_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x6, 20 } }, .imm_scale = 2, .syntax = 11 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = add(R29,) ; if (P0) jumpr R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01010010ssssddddEE11111111000100 | Rd = and(Rs,#1) ; if (p0) jumpr r31
		.encoding = { .mask = 0xff00ffff, .op = 0x52003fc4 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_AND1_SL2_JUMPR31_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = and(,#1) ; if (P0) jumpr R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010110100111ddddEE11111111000100 | if (!p0) Rd = #0 ; if (p0) jumpr r31
		.encoding = { .mask = 0xfff0ffff, .op = 0x5a703fc4 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRF_SL2_JUMPR31_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 9 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "if (!P0)  = #0 ; if (P0) jumpr R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010110100101ddddEE11111111000100 | if (!p0.new) Rd = #0 ; if (p0) jumpr r31
		.encoding = { .mask = 0xfff0ffff, .op = 0x5a503fc4 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRFNEW_SL2_JUMPR31_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 13 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "if (!P0.new)  = #0 ; if (P0) jumpr R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010110100110ddddEE11111111000100 | if (p0) Rd = #0 ; if (p0) jumpr r31
		.encoding = { .mask = 0xfff0ffff, .op = 0x5a603fc4 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRT_SL2_JUMPR31_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "if (P0)  = #0 ; if (P0) jumpr R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010110100100ddddEE11111111000100 | if (p0.new) Rd = #0 ; if (p0) jumpr r31
		.encoding = { .mask = 0xfff0ffff, .op = 0x5a403fc4 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRTNEW_SL2_JUMPR31_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "if (P0.new)  = #0 ; if (P0) jumpr R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01011001ssss00iiEE11111111000100 | p0 = cmp.eq(Rs,Ii) ; if (p0) jumpr r31
		.encoding = { .mask = 0xff0cffff, .op = 0x59003fc4 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CMPEQI_SL2_JUMPR31_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 16 } }, .syntax = 13 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "P0 = cmp.eq(,) ; if (P0) jumpr R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010111000ii00dddEE11111111000100 | Rdd = combine(#0,Ii) ; if (p0) jumpr r31
		.encoding = { .mask = 0xff98ffff, .op = 0x5c003fc4 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE0I_SL2_JUMPR31_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 21 } }, .syntax = 14 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = combine(#0,) ; if (P0) jumpr R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010111000ii01dddEE11111111000100 | Rdd = combine(#1,Ii) ; if (p0) jumpr r31
		.encoding = { .mask = 0xff98ffff, .op = 0x5c083fc4 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE1I_SL2_JUMPR31_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 21 } }, .syntax = 14 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = combine(#1,) ; if (P0) jumpr R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010111000ii10dddEE11111111000100 | Rdd = combine(#2,Ii) ; if (p0) jumpr r31
		.encoding = { .mask = 0xff98ffff, .op = 0x5c103fc4 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE2I_SL2_JUMPR31_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 21 } }, .syntax = 14 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = combine(#2,) ; if (P0) jumpr R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010111000ii11dddEE11111111000100 | Rdd = combine(#3,Ii) ; if (p0) jumpr r31
		.encoding = { .mask = 0xff98ffff, .op = 0x5c183fc4 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE3I_SL2_JUMPR31_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 21 } }, .syntax = 14 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = combine(#3,) ; if (P0) jumpr R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01011101ssss1dddEE11111111000100 | Rdd = combine(Rs,#0) ; if (p0) jumpr r31
		.encoding = { .mask = 0xff08ffff, .op = 0x5d083fc4 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINERZ_SL2_JUMPR31_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 11 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = combine(,#0) ; if (P0) jumpr R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01011101ssss0dddEE11111111000100 | Rdd = combine(#0,Rs) ; if (p0) jumpr r31
		.encoding = { .mask = 0xff08ffff, .op = 0x5d003fc4 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINEZR_SL2_JUMPR31_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 14 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = combine(#0,) ; if (P0) jumpr R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01010011ssssddddEE11111111000100 | Rd = add(Rs,n1) ; if (p0) jumpr r31
		.encoding = { .mask = 0xff00ffff, .op = 0x53003fc4 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_DEC_SL2_JUMPR31_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 8 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = add(,) ; if (P0) jumpr R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01010001ssssddddEE11111111000100 | Rd = add(Rs,#1) ; if (p0) jumpr r31
		.encoding = { .mask = 0xff00ffff, .op = 0x51003fc4 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_INC_SL2_JUMPR31_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = add(,#1) ; if (P0) jumpr R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010010iiiiiiddddEE11111111000100 | Rd = Ii ; if (p0) jumpr r31
		.encoding = { .mask = 0xfc00ffff, .op = 0x48003fc4 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SETI_SL2_JUMPR31_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x6, 20 } }, .syntax = 3 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " =  ; if (P0) jumpr R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010110100000ddddEE11111111000100 | Rd = n1 ; if (p0) jumpr r31
		.encoding = { .mask = 0xfff0ffff, .op = 0x5a003fc4 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SETIN1_SL2_JUMPR31_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 3 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " =  ; if (P0) jumpr R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01010101ssssddddEE11111111000100 | Rd = sxtb(Rs) ; if (p0) jumpr r31
		.encoding = { .mask = 0xff00ffff, .op = 0x55003fc4 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SXTB_SL2_JUMPR31_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = sxtb() ; if (P0) jumpr R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01010100ssssddddEE11111111000100 | Rd = sxth(Rs) ; if (p0) jumpr r31
		.encoding = { .mask = 0xff00ffff, .op = 0x54003fc4 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SXTH_SL2_JUMPR31_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = sxth() ; if (P0) jumpr R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01010000ssssddddEE11111111000100 | Rd = Rs ; if (p0) jumpr r31
		.encoding = { .mask = 0xff00ffff, .op = 0x50003fc4 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_TFR_SL2_JUMPR31_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 3 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " =  ; if (P0) jumpr R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01010111ssssddddEE11111111000100 | Rd = and(Rs,#255) ; if (p0) jumpr r31
		.encoding = { .mask = 0xff00ffff, .op = 0x57003fc4 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ZXTB_SL2_JUMPR31_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = and(,#255) ; if (P0) jumpr R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01010110ssssddddEE11111111000100 | Rd = zxth(Rs) ; if (p0) jumpr r31
		.encoding = { .mask = 0xff00ffff, .op = 0x56003fc4 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ZXTH_SL2_JUMPR31_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = zxth() ; if (P0) jumpr R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010010iiiiiiddddEE11111111000100 | Rd = Ii ; if (p0) jumpr r31
		.encoding = { .mask = 0xfc00ffff, .op = 0x48003fc4 },
		.id = HEX_INS_X2_AUTOJOIN_UNDOCUMENTED_SA2_TFRSI_SL2_JUMPR31_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x6, 20 } }, .syntax = 3 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " =  ; if (P0) jumpr R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01000iiiiiiixxxxEE11111111000110 | Rx = add(Rxin,Ii) ; if (p0.new) jumpr:nt r31
		.encoding = { .mask = 0xf800ffff, .op = 0x40003fc6 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDI_SL2_JUMPR31_TNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 20 } }, .syntax = 8 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = add(,) ; if (P0.new) jumpr:nt R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01011000ssssxxxxEE11111111000110 | Rx = add(Rxin,Rs) ; if (p0.new) jumpr:nt r31
		.encoding = { .mask = 0xff00ffff, .op = 0x58003fc6 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDRX_SL2_JUMPR31_TNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = add(,) ; if (P0.new) jumpr:nt R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010011iiiiiiddddEE11111111000110 | Rd = add(r29,Ii) ; if (p0.new) jumpr:nt r31
		.encoding = { .mask = 0xfc00ffff, .op = 0x4c003fc6 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDSP_SL2_JUMPR31_TNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x6, 20 } }, .imm_scale = 2, .syntax = 11 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = add(R29,) ; if (P0.new) jumpr:nt R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01010010ssssddddEE11111111000110 | Rd = and(Rs,#1) ; if (p0.new) jumpr:nt r31
		.encoding = { .mask = 0xff00ffff, .op = 0x52003fc6 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_AND1_SL2_JUMPR31_TNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = and(,#1) ; if (P0.new) jumpr:nt R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010110100111ddddEE11111111000110 | if (!p0) Rd = #0 ; if (p0.new) jumpr:nt r31
		.encoding = { .mask = 0xfff0ffff, .op = 0x5a703fc6 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRF_SL2_JUMPR31_TNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 9 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "if (!P0)  = #0 ; if (P0.new) jumpr:nt R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010110100101ddddEE11111111000110 | if (!p0.new) Rd = #0 ; if (p0.new) jumpr:nt r31
		.encoding = { .mask = 0xfff0ffff, .op = 0x5a503fc6 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRFNEW_SL2_JUMPR31_TNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 13 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "if (!P0.new)  = #0 ; if (P0.new) jumpr:nt R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010110100110ddddEE11111111000110 | if (p0) Rd = #0 ; if (p0.new) jumpr:nt r31
		.encoding = { .mask = 0xfff0ffff, .op = 0x5a603fc6 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRT_SL2_JUMPR31_TNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "if (P0)  = #0 ; if (P0.new) jumpr:nt R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010110100100ddddEE11111111000110 | if (p0.new) Rd = #0 ; if (p0.new) jumpr:nt r31
		.encoding = { .mask = 0xfff0ffff, .op = 0x5a403fc6 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRTNEW_SL2_JUMPR31_TNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "if (P0.new)  = #0 ; if (P0.new) jumpr:nt R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01011001ssss00iiEE11111111000110 | p0 = cmp.eq(Rs,Ii) ; if (p0.new) jumpr:nt r31
		.encoding = { .mask = 0xff0cffff, .op = 0x59003fc6 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CMPEQI_SL2_JUMPR31_TNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 16 } }, .syntax = 13 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "P0 = cmp.eq(,) ; if (P0.new) jumpr:nt R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010111000ii00dddEE11111111000110 | Rdd = combine(#0,Ii) ; if (p0.new) jumpr:nt r31
		.encoding = { .mask = 0xff98ffff, .op = 0x5c003fc6 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE0I_SL2_JUMPR31_TNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 21 } }, .syntax = 14 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = combine(#0,) ; if (P0.new) jumpr:nt R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010111000ii01dddEE11111111000110 | Rdd = combine(#1,Ii) ; if (p0.new) jumpr:nt r31
		.encoding = { .mask = 0xff98ffff, .op = 0x5c083fc6 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE1I_SL2_JUMPR31_TNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 21 } }, .syntax = 14 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = combine(#1,) ; if (P0.new) jumpr:nt R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010111000ii10dddEE11111111000110 | Rdd = combine(#2,Ii) ; if (p0.new) jumpr:nt r31
		.encoding = { .mask = 0xff98ffff, .op = 0x5c103fc6 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE2I_SL2_JUMPR31_TNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 21 } }, .syntax = 14 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = combine(#2,) ; if (P0.new) jumpr:nt R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010111000ii11dddEE11111111000110 | Rdd = combine(#3,Ii) ; if (p0.new) jumpr:nt r31
		.encoding = { .mask = 0xff98ffff, .op = 0x5c183fc6 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE3I_SL2_JUMPR31_TNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 21 } }, .syntax = 14 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = combine(#3,) ; if (P0.new) jumpr:nt R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01011101ssss1dddEE11111111000110 | Rdd = combine(Rs,#0) ; if (p0.new) jumpr:nt r31
		.encoding = { .mask = 0xff08ffff, .op = 0x5d083fc6 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINERZ_SL2_JUMPR31_TNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 11 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = combine(,#0) ; if (P0.new) jumpr:nt R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01011101ssss0dddEE11111111000110 | Rdd = combine(#0,Rs) ; if (p0.new) jumpr:nt r31
		.encoding = { .mask = 0xff08ffff, .op = 0x5d003fc6 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINEZR_SL2_JUMPR31_TNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 14 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = combine(#0,) ; if (P0.new) jumpr:nt R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01010011ssssddddEE11111111000110 | Rd = add(Rs,n1) ; if (p0.new) jumpr:nt r31
		.encoding = { .mask = 0xff00ffff, .op = 0x53003fc6 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_DEC_SL2_JUMPR31_TNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 8 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = add(,) ; if (P0.new) jumpr:nt R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01010001ssssddddEE11111111000110 | Rd = add(Rs,#1) ; if (p0.new) jumpr:nt r31
		.encoding = { .mask = 0xff00ffff, .op = 0x51003fc6 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_INC_SL2_JUMPR31_TNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = add(,#1) ; if (P0.new) jumpr:nt R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010010iiiiiiddddEE11111111000110 | Rd = Ii ; if (p0.new) jumpr:nt r31
		.encoding = { .mask = 0xfc00ffff, .op = 0x48003fc6 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SETI_SL2_JUMPR31_TNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x6, 20 } }, .syntax = 3 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " =  ; if (P0.new) jumpr:nt R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010110100000ddddEE11111111000110 | Rd = n1 ; if (p0.new) jumpr:nt r31
		.encoding = { .mask = 0xfff0ffff, .op = 0x5a003fc6 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SETIN1_SL2_JUMPR31_TNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 3 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " =  ; if (P0.new) jumpr:nt R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01010101ssssddddEE11111111000110 | Rd = sxtb(Rs) ; if (p0.new) jumpr:nt r31
		.encoding = { .mask = 0xff00ffff, .op = 0x55003fc6 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SXTB_SL2_JUMPR31_TNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = sxtb() ; if (P0.new) jumpr:nt R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01010100ssssddddEE11111111000110 | Rd = sxth(Rs) ; if (p0.new) jumpr:nt r31
		.encoding = { .mask = 0xff00ffff, .op = 0x54003fc6 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SXTH_SL2_JUMPR31_TNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = sxth() ; if (P0.new) jumpr:nt R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01010000ssssddddEE11111111000110 | Rd = Rs ; if (p0.new) jumpr:nt r31
		.encoding = { .mask = 0xff00ffff, .op = 0x50003fc6 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_TFR_SL2_JUMPR31_TNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 3 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " =  ; if (P0.new) jumpr:nt R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01010111ssssddddEE11111111000110 | Rd = and(Rs,#255) ; if (p0.new) jumpr:nt r31
		.encoding = { .mask = 0xff00ffff, .op = 0x57003fc6 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ZXTB_SL2_JUMPR31_TNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = and(,#255) ; if (P0.new) jumpr:nt R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01010110ssssddddEE11111111000110 | Rd = zxth(Rs) ; if (p0.new) jumpr:nt r31
		.encoding = { .mask = 0xff00ffff, .op = 0x56003fc6 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ZXTH_SL2_JUMPR31_TNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = zxth() ; if (P0.new) jumpr:nt R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010010iiiiiiddddEE11111111000110 | Rd = Ii ; if (p0.new) jumpr:nt r31
		.encoding = { .mask = 0xfc00ffff, .op = 0x48003fc6 },
		.id = HEX_INS_X2_AUTOJOIN_UNDOCUMENTED_SA2_TFRSI_SL2_JUMPR31_TNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x6, 20 } }, .syntax = 3 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " =  ; if (P0.new) jumpr:nt R31",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01000IIIIIIIxxxxEE110iiissssdddd | Rx = add(Rxin,II) ; Rd = memb(Rs+Ii)
		.encoding = { .mask = 0xf800f800, .op = 0x40003000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDI_SL2_LOADRB_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 20 } }, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 20 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 8 } }, .syntax = 21 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,) ;  = memb(+)",
	},
	{
		// 01011000SSSSxxxxEE110iiissssdddd | Rx = add(Rxin,RS) ; Rd = memb(Rs+Ii)
		.encoding = { .mask = 0xff00f800, .op = 0x58003000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDRX_SL2_LOADRB_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 20 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 } }, .syntax = 21 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,) ;  = memb(+)",
	},
	{
		// 010011IIIIIIDDDDEE110iiissssdddd | RD = add(r29,II) ; Rd = memb(Rs+Ii)
		.encoding = { .mask = 0xfc00f800, .op = 0x4c003000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDSP_SL2_LOADRB_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x6, 20 } }, .imm_scale = 2, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 23 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 8 } }, .syntax = 24 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(R29,) ;  = memb(+)",
	},
	{
		// 01010010SSSSDDDDEE110iiissssdddd | RD = and(RS,#1) ; Rd = memb(Rs+Ii)
		.encoding = { .mask = 0xff00f800, .op = 0x52003000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_AND1_SL2_LOADRB_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 22 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 } }, .syntax = 23 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = and(,#1) ;  = memb(+)",
	},
	{
		// 010110100111DDDDEE110iiissssdddd | if (!p0) RD = #0 ; Rd = memb(Rs+Ii)
		.encoding = { .mask = 0xfff0f800, .op = 0x5a703000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRF_SL2_LOADRB_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 25 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 } }, .syntax = 26 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!P0)  = #0 ;  = memb(+)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010110100101DDDDEE110iiissssdddd | if (!p0.new) RD = #0 ; Rd = memb(Rs+Ii)
		.encoding = { .mask = 0xfff0f800, .op = 0x5a503000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRFNEW_SL2_LOADRB_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 21 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 29 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 } }, .syntax = 30 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!P0.new)  = #0 ;  = memb(+)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010110100110DDDDEE110iiissssdddd | if (p0) RD = #0 ; Rd = memb(Rs+Ii)
		.encoding = { .mask = 0xfff0f800, .op = 0x5a603000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRT_SL2_LOADRB_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 24 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 } }, .syntax = 25 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (P0)  = #0 ;  = memb(+)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010110100100DDDDEE110iiissssdddd | if (p0.new) RD = #0 ; Rd = memb(Rs+Ii)
		.encoding = { .mask = 0xfff0f800, .op = 0x5a403000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRTNEW_SL2_LOADRB_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 20 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 28 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 } }, .syntax = 29 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (P0.new)  = #0 ;  = memb(+)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01011001SSSS00IIEE110iiissssdddd | p0 = cmp.eq(RS,II) ; Rd = memb(Rs+Ii)
		.encoding = { .mask = 0xff0cf800, .op = 0x59003000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CMPEQI_SL2_LOADRB_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 16 } }, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 25 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 8 } }, .syntax = 26 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "P0 = cmp.eq(,) ;  = memb(+)",
	},
	{
		// 010111000II00DDDEE110iiissssdddd | RDD = combine(#0,II) ; Rd = memb(Rs+Ii)
		.encoding = { .mask = 0xff98f800, .op = 0x5c003000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE0I_SL2_LOADRB_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 21 } }, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 26 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 8 } }, .syntax = 27 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(#0,) ;  = memb(+)",
	},
	{
		// 010111000II01DDDEE110iiissssdddd | RDD = combine(#1,II) ; Rd = memb(Rs+Ii)
		.encoding = { .mask = 0xff98f800, .op = 0x5c083000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE1I_SL2_LOADRB_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 21 } }, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 26 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 8 } }, .syntax = 27 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(#1,) ;  = memb(+)",
	},
	{
		// 010111000II10DDDEE110iiissssdddd | RDD = combine(#2,II) ; Rd = memb(Rs+Ii)
		.encoding = { .mask = 0xff98f800, .op = 0x5c103000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE2I_SL2_LOADRB_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 21 } }, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 26 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 8 } }, .syntax = 27 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(#2,) ;  = memb(+)",
	},
	{
		// 010111000II11DDDEE110iiissssdddd | RDD = combine(#3,II) ; Rd = memb(Rs+Ii)
		.encoding = { .mask = 0xff98f800, .op = 0x5c183000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE3I_SL2_LOADRB_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 21 } }, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 26 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 8 } }, .syntax = 27 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(#3,) ;  = memb(+)",
	},
	{
		// 01011101SSSS1DDDEE110iiissssdddd | RDD = combine(RS,#0) ; Rd = memb(Rs+Ii)
		.encoding = { .mask = 0xff08f800, .op = 0x5d083000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINERZ_SL2_LOADRB_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 26 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 } }, .syntax = 27 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(,#0) ;  = memb(+)",
	},
	{
		// 01011101SSSS0DDDEE110iiissssdddd | RDD = combine(#0,RS) ; Rd = memb(Rs+Ii)
		.encoding = { .mask = 0xff08f800, .op = 0x5d003000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINEZR_SL2_LOADRB_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 26 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 } }, .syntax = 27 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(#0,) ;  = memb(+)",
	},
	{
		// 01010011SSSSDDDDEE110iiissssdddd | RD = add(RS,n1) ; Rd = memb(Rs+Ii)
		.encoding = { .mask = 0xff00f800, .op = 0x53003000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_DEC_SL2_LOADRB_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 20 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 8 } }, .syntax = 21 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,) ;  = memb(+)",
	},
	{
		// 01010001SSSSDDDDEE110iiissssdddd | RD = add(RS,#1) ; Rd = memb(Rs+Ii)
		.encoding = { .mask = 0xff00f800, .op = 0x51003000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_INC_SL2_LOADRB_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 22 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 } }, .syntax = 23 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,#1) ;  = memb(+)",
	},
	{
		// 010010IIIIIIDDDDEE110iiissssdddd | RD = II ; Rd = memb(Rs+Ii)
		.encoding = { .mask = 0xfc00f800, .op = 0x48003000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SETI_SL2_LOADRB_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x6, 20 } }, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 8 } }, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ;  = memb(+)",
	},
	{
		// 010110100000DDDDEE110iiissssdddd | RD = n1 ; Rd = memb(Rs+Ii)
		.encoding = { .mask = 0xfff0f800, .op = 0x5a003000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SETIN1_SL2_LOADRB_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 8 } }, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ;  = memb(+)",
	},
	{
		// 01010101SSSSDDDDEE110iiissssdddd | RD = sxtb(RS) ; Rd = memb(Rs+Ii)
		.encoding = { .mask = 0xff00f800, .op = 0x55003000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SXTB_SL2_LOADRB_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 20 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 } }, .syntax = 21 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = sxtb() ;  = memb(+)",
	},
	{
		// 01010100SSSSDDDDEE110iiissssdddd | RD = sxth(RS) ; Rd = memb(Rs+Ii)
		.encoding = { .mask = 0xff00f800, .op = 0x54003000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SXTH_SL2_LOADRB_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 20 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 } }, .syntax = 21 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = sxth() ;  = memb(+)",
	},
	{
		// 01010000SSSSDDDDEE110iiissssdddd | RD = RS ; Rd = memb(Rs+Ii)
		.encoding = { .mask = 0xff00f800, .op = 0x50003000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_TFR_SL2_LOADRB_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 } }, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ;  = memb(+)",
	},
	{
		// 01010111SSSSDDDDEE110iiissssdddd | RD = and(RS,#255) ; Rd = memb(Rs+Ii)
		.encoding = { .mask = 0xff00f800, .op = 0x57003000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ZXTB_SL2_LOADRB_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 24 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 } }, .syntax = 25 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = and(,#255) ;  = memb(+)",
	},
	{
		// 01010110SSSSDDDDEE110iiissssdddd | RD = zxth(RS) ; Rd = memb(Rs+Ii)
		.encoding = { .mask = 0xff00f800, .op = 0x56003000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ZXTH_SL2_LOADRB_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 20 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 } }, .syntax = 21 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = zxth() ;  = memb(+)",
	},
	{
		// 010010IIIIIIDDDDEE110iiissssdddd | RD = II ; Rd = memb(Rs+Ii)
		.encoding = { .mask = 0xfc00f800, .op = 0x48003000 },
		.id = HEX_INS_X2_AUTOJOIN_UNDOCUMENTED_SA2_TFRSI_SL2_LOADRB_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x6, 20 } }, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 8 } }, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ;  = memb(+)",
	},
	{
		// 01000IIIIIIIxxxxEE111110iiiiiddd | Rx = add(Rxin,II) ; Rdd = memd(r29+Ii)
		.encoding = { .mask = 0xf800ff00, .op = 0x40003e00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDI_SL2_LOADRD_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 20 } }, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 3 } }, .imm_scale = 3, .syntax = 24 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,) ;  = memd(R29+)",
	},
	{
		// 01011000ssssxxxxEE111110iiiiiddd | Rx = add(Rxin,Rs) ; Rdd = memd(r29+Ii)
		.encoding = { .mask = 0xff00ff00, .op = 0x58003e00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDRX_SL2_LOADRD_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 3 } }, .imm_scale = 3, .syntax = 24 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,) ;  = memd(R29+)",
	},
	{
		// 010011IIIIIIDDDDEE111110iiiiiddd | RD = add(r29,II) ; Rdd = memd(r29+Ii)
		.encoding = { .mask = 0xfc00ff00, .op = 0x4c003e00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDSP_SL2_LOADRD_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x6, 20 } }, .imm_scale = 2, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 3 } }, .imm_scale = 3, .syntax = 27 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(R29,) ;  = memd(R29+)",
	},
	{
		// 01010010ssssDDDDEE111110iiiiiddd | RD = and(Rs,#1) ; Rdd = memd(r29+Ii)
		.encoding = { .mask = 0xff00ff00, .op = 0x52003e00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_AND1_SL2_LOADRD_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 3 } }, .imm_scale = 3, .syntax = 26 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = and(,#1) ;  = memd(R29+)",
	},
	{
		// 010110100111DDDDEE111110iiiiiddd | if (!p0) RD = #0 ; Rdd = memd(r29+Ii)
		.encoding = { .mask = 0xfff0ff00, .op = 0x5a703e00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRF_SL2_LOADRD_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 3 } }, .imm_scale = 3, .syntax = 29 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!P0)  = #0 ;  = memd(R29+)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010110100101DDDDEE111110iiiiiddd | if (!p0.new) RD = #0 ; Rdd = memd(r29+Ii)
		.encoding = { .mask = 0xfff0ff00, .op = 0x5a503e00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRFNEW_SL2_LOADRD_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 21 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 3 } }, .imm_scale = 3, .syntax = 33 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!P0.new)  = #0 ;  = memd(R29+)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010110100110DDDDEE111110iiiiiddd | if (p0) RD = #0 ; Rdd = memd(r29+Ii)
		.encoding = { .mask = 0xfff0ff00, .op = 0x5a603e00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRT_SL2_LOADRD_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 3 } }, .imm_scale = 3, .syntax = 28 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (P0)  = #0 ;  = memd(R29+)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010110100100DDDDEE111110iiiiiddd | if (p0.new) RD = #0 ; Rdd = memd(r29+Ii)
		.encoding = { .mask = 0xfff0ff00, .op = 0x5a403e00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRTNEW_SL2_LOADRD_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 20 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 3 } }, .imm_scale = 3, .syntax = 32 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (P0.new)  = #0 ;  = memd(R29+)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01011001ssss00IIEE111110iiiiiddd | p0 = cmp.eq(Rs,II) ; Rdd = memd(r29+Ii)
		.encoding = { .mask = 0xff0cff00, .op = 0x59003e00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CMPEQI_SL2_LOADRD_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 16 } }, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 3 } }, .imm_scale = 3, .syntax = 29 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "P0 = cmp.eq(,) ;  = memd(R29+)",
	},
	{
		// 010111000II00DDDEE111110iiiiiddd | RDD = combine(#0,II) ; Rdd = memd(r29+Ii)
		.encoding = { .mask = 0xff98ff00, .op = 0x5c003e00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE0I_SL2_LOADRD_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 21 } }, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 3 } }, .imm_scale = 3, .syntax = 30 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(#0,) ;  = memd(R29+)",
	},
	{
		// 010111000II01DDDEE111110iiiiiddd | RDD = combine(#1,II) ; Rdd = memd(r29+Ii)
		.encoding = { .mask = 0xff98ff00, .op = 0x5c083e00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE1I_SL2_LOADRD_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 21 } }, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 3 } }, .imm_scale = 3, .syntax = 30 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(#1,) ;  = memd(R29+)",
	},
	{
		// 010111000II10DDDEE111110iiiiiddd | RDD = combine(#2,II) ; Rdd = memd(r29+Ii)
		.encoding = { .mask = 0xff98ff00, .op = 0x5c103e00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE2I_SL2_LOADRD_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 21 } }, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 3 } }, .imm_scale = 3, .syntax = 30 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(#2,) ;  = memd(R29+)",
	},
	{
		// 010111000II11DDDEE111110iiiiiddd | RDD = combine(#3,II) ; Rdd = memd(r29+Ii)
		.encoding = { .mask = 0xff98ff00, .op = 0x5c183e00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE3I_SL2_LOADRD_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 21 } }, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 3 } }, .imm_scale = 3, .syntax = 30 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(#3,) ;  = memd(R29+)",
	},
	{
		// 01011101ssss1DDDEE111110iiiiiddd | RDD = combine(Rs,#0) ; Rdd = memd(r29+Ii)
		.encoding = { .mask = 0xff08ff00, .op = 0x5d083e00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINERZ_SL2_LOADRD_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 3 } }, .imm_scale = 3, .syntax = 30 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(,#0) ;  = memd(R29+)",
	},
	{
		// 01011101ssss0DDDEE111110iiiiiddd | RDD = combine(#0,Rs) ; Rdd = memd(r29+Ii)
		.encoding = { .mask = 0xff08ff00, .op = 0x5d003e00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINEZR_SL2_LOADRD_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 3 } }, .imm_scale = 3, .syntax = 30 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(#0,) ;  = memd(R29+)",
	},
	{
		// 01010011ssssDDDDEE111110iiiiiddd | RD = add(Rs,n1) ; Rdd = memd(r29+Ii)
		.encoding = { .mask = 0xff00ff00, .op = 0x53003e00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_DEC_SL2_LOADRD_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 3 } }, .imm_scale = 3, .syntax = 24 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,) ;  = memd(R29+)",
	},
	{
		// 01010001ssssDDDDEE111110iiiiiddd | RD = add(Rs,#1) ; Rdd = memd(r29+Ii)
		.encoding = { .mask = 0xff00ff00, .op = 0x51003e00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_INC_SL2_LOADRD_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 3 } }, .imm_scale = 3, .syntax = 26 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,#1) ;  = memd(R29+)",
	},
	{
		// 010010IIIIIIDDDDEE111110iiiiiddd | RD = II ; Rdd = memd(r29+Ii)
		.encoding = { .mask = 0xfc00ff00, .op = 0x48003e00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SETI_SL2_LOADRD_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x6, 20 } }, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 3 } }, .imm_scale = 3, .syntax = 18 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ;  = memd(R29+)",
	},
	{
		// 010110100000DDDDEE111110iiiiiddd | RD = n1 ; Rdd = memd(r29+Ii)
		.encoding = { .mask = 0xfff0ff00, .op = 0x5a003e00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SETIN1_SL2_LOADRD_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 3 } }, .imm_scale = 3, .syntax = 18 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ;  = memd(R29+)",
	},
	{
		// 01010101ssssDDDDEE111110iiiiiddd | RD = sxtb(Rs) ; Rdd = memd(r29+Ii)
		.encoding = { .mask = 0xff00ff00, .op = 0x55003e00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SXTB_SL2_LOADRD_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 3 } }, .imm_scale = 3, .syntax = 24 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = sxtb() ;  = memd(R29+)",
	},
	{
		// 01010100ssssDDDDEE111110iiiiiddd | RD = sxth(Rs) ; Rdd = memd(r29+Ii)
		.encoding = { .mask = 0xff00ff00, .op = 0x54003e00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SXTH_SL2_LOADRD_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 3 } }, .imm_scale = 3, .syntax = 24 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = sxth() ;  = memd(R29+)",
	},
	{
		// 01010000ssssDDDDEE111110iiiiiddd | RD = Rs ; Rdd = memd(r29+Ii)
		.encoding = { .mask = 0xff00ff00, .op = 0x50003e00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_TFR_SL2_LOADRD_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 3 } }, .imm_scale = 3, .syntax = 18 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ;  = memd(R29+)",
	},
	{
		// 01010111ssssDDDDEE111110iiiiiddd | RD = and(Rs,#255) ; Rdd = memd(r29+Ii)
		.encoding = { .mask = 0xff00ff00, .op = 0x57003e00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ZXTB_SL2_LOADRD_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 3 } }, .imm_scale = 3, .syntax = 28 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = and(,#255) ;  = memd(R29+)",
	},
	{
		// 01010110ssssDDDDEE111110iiiiiddd | RD = zxth(Rs) ; Rdd = memd(r29+Ii)
		.encoding = { .mask = 0xff00ff00, .op = 0x56003e00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ZXTH_SL2_LOADRD_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 3 } }, .imm_scale = 3, .syntax = 24 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = zxth() ;  = memd(R29+)",
	},
	{
		// 010010IIIIIIDDDDEE111110iiiiiddd | RD = II ; Rdd = memd(r29+Ii)
		.encoding = { .mask = 0xfc00ff00, .op = 0x48003e00 },
		.id = HEX_INS_X2_AUTOJOIN_UNDOCUMENTED_SA2_TFRSI_SL2_LOADRD_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x6, 20 } }, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 3 } }, .imm_scale = 3, .syntax = 18 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ;  = memd(R29+)",
	},
	{
		// 01000IIIIIIIxxxxEE100iiissssdddd | Rx = add(Rxin,II) ; Rd = memh(Rs+Ii)
		.encoding = { .mask = 0xf800f800, .op = 0x40002000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDI_SL2_LOADRH_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 20 } }, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 20 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 8 } }, .imm_scale = 1, .syntax = 21 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,) ;  = memh(+)",
	},
	{
		// 01011000SSSSxxxxEE100iiissssdddd | Rx = add(Rxin,RS) ; Rd = memh(Rs+Ii)
		.encoding = { .mask = 0xff00f800, .op = 0x58002000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDRX_SL2_LOADRH_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 20 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 } }, .imm_scale = 1, .syntax = 21 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,) ;  = memh(+)",
	},
	{
		// 010011IIIIIIDDDDEE100iiissssdddd | RD = add(r29,II) ; Rd = memh(Rs+Ii)
		.encoding = { .mask = 0xfc00f800, .op = 0x4c002000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDSP_SL2_LOADRH_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x6, 20 } }, .imm_scale = 2, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 23 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 8 } }, .imm_scale = 1, .syntax = 24 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(R29,) ;  = memh(+)",
	},
	{
		// 01010010SSSSDDDDEE100iiissssdddd | RD = and(RS,#1) ; Rd = memh(Rs+Ii)
		.encoding = { .mask = 0xff00f800, .op = 0x52002000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_AND1_SL2_LOADRH_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 22 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 } }, .imm_scale = 1, .syntax = 23 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = and(,#1) ;  = memh(+)",
	},
	{
		// 010110100111DDDDEE100iiissssdddd | if (!p0) RD = #0 ; Rd = memh(Rs+Ii)
		.encoding = { .mask = 0xfff0f800, .op = 0x5a702000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRF_SL2_LOADRH_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 25 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 } }, .imm_scale = 1, .syntax = 26 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!P0)  = #0 ;  = memh(+)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010110100101DDDDEE100iiissssdddd | if (!p0.new) RD = #0 ; Rd = memh(Rs+Ii)
		.encoding = { .mask = 0xfff0f800, .op = 0x5a502000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRFNEW_SL2_LOADRH_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 21 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 29 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 } }, .imm_scale = 1, .syntax = 30 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!P0.new)  = #0 ;  = memh(+)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010110100110DDDDEE100iiissssdddd | if (p0) RD = #0 ; Rd = memh(Rs+Ii)
		.encoding = { .mask = 0xfff0f800, .op = 0x5a602000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRT_SL2_LOADRH_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 24 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 } }, .imm_scale = 1, .syntax = 25 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (P0)  = #0 ;  = memh(+)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010110100100DDDDEE100iiissssdddd | if (p0.new) RD = #0 ; Rd = memh(Rs+Ii)
		.encoding = { .mask = 0xfff0f800, .op = 0x5a402000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRTNEW_SL2_LOADRH_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 20 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 28 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 } }, .imm_scale = 1, .syntax = 29 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (P0.new)  = #0 ;  = memh(+)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01011001SSSS00IIEE100iiissssdddd | p0 = cmp.eq(RS,II) ; Rd = memh(Rs+Ii)
		.encoding = { .mask = 0xff0cf800, .op = 0x59002000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CMPEQI_SL2_LOADRH_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 16 } }, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 25 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 8 } }, .imm_scale = 1, .syntax = 26 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "P0 = cmp.eq(,) ;  = memh(+)",
	},
	{
		// 010111000II00DDDEE100iiissssdddd | RDD = combine(#0,II) ; Rd = memh(Rs+Ii)
		.encoding = { .mask = 0xff98f800, .op = 0x5c002000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE0I_SL2_LOADRH_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 21 } }, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 26 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 8 } }, .imm_scale = 1, .syntax = 27 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(#0,) ;  = memh(+)",
	},
	{
		// 010111000II01DDDEE100iiissssdddd | RDD = combine(#1,II) ; Rd = memh(Rs+Ii)
		.encoding = { .mask = 0xff98f800, .op = 0x5c082000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE1I_SL2_LOADRH_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 21 } }, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 26 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 8 } }, .imm_scale = 1, .syntax = 27 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(#1,) ;  = memh(+)",
	},
	{
		// 010111000II10DDDEE100iiissssdddd | RDD = combine(#2,II) ; Rd = memh(Rs+Ii)
		.encoding = { .mask = 0xff98f800, .op = 0x5c102000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE2I_SL2_LOADRH_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 21 } }, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 26 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 8 } }, .imm_scale = 1, .syntax = 27 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(#2,) ;  = memh(+)",
	},
	{
		// 010111000II11DDDEE100iiissssdddd | RDD = combine(#3,II) ; Rd = memh(Rs+Ii)
		.encoding = { .mask = 0xff98f800, .op = 0x5c182000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE3I_SL2_LOADRH_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 21 } }, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 26 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 8 } }, .imm_scale = 1, .syntax = 27 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(#3,) ;  = memh(+)",
	},
	{
		// 01011101SSSS1DDDEE100iiissssdddd | RDD = combine(RS,#0) ; Rd = memh(Rs+Ii)
		.encoding = { .mask = 0xff08f800, .op = 0x5d082000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINERZ_SL2_LOADRH_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 26 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 } }, .imm_scale = 1, .syntax = 27 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(,#0) ;  = memh(+)",
	},
	{
		// 01011101SSSS0DDDEE100iiissssdddd | RDD = combine(#0,RS) ; Rd = memh(Rs+Ii)
		.encoding = { .mask = 0xff08f800, .op = 0x5d002000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINEZR_SL2_LOADRH_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 26 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 } }, .imm_scale = 1, .syntax = 27 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(#0,) ;  = memh(+)",
	},
	{
		// 01010011SSSSDDDDEE100iiissssdddd | RD = add(RS,n1) ; Rd = memh(Rs+Ii)
		.encoding = { .mask = 0xff00f800, .op = 0x53002000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_DEC_SL2_LOADRH_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 20 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 8 } }, .imm_scale = 1, .syntax = 21 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,) ;  = memh(+)",
	},
	{
		// 01010001SSSSDDDDEE100iiissssdddd | RD = add(RS,#1) ; Rd = memh(Rs+Ii)
		.encoding = { .mask = 0xff00f800, .op = 0x51002000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_INC_SL2_LOADRH_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 22 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 } }, .imm_scale = 1, .syntax = 23 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,#1) ;  = memh(+)",
	},
	{
		// 010010IIIIIIDDDDEE100iiissssdddd | RD = II ; Rd = memh(Rs+Ii)
		.encoding = { .mask = 0xfc00f800, .op = 0x48002000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SETI_SL2_LOADRH_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x6, 20 } }, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 8 } }, .imm_scale = 1, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ;  = memh(+)",
	},
	{
		// 010110100000DDDDEE100iiissssdddd | RD = n1 ; Rd = memh(Rs+Ii)
		.encoding = { .mask = 0xfff0f800, .op = 0x5a002000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SETIN1_SL2_LOADRH_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 8 } }, .imm_scale = 1, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ;  = memh(+)",
	},
	{
		// 01010101SSSSDDDDEE100iiissssdddd | RD = sxtb(RS) ; Rd = memh(Rs+Ii)
		.encoding = { .mask = 0xff00f800, .op = 0x55002000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SXTB_SL2_LOADRH_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 20 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 } }, .imm_scale = 1, .syntax = 21 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = sxtb() ;  = memh(+)",
	},
	{
		// 01010100SSSSDDDDEE100iiissssdddd | RD = sxth(RS) ; Rd = memh(Rs+Ii)
		.encoding = { .mask = 0xff00f800, .op = 0x54002000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SXTH_SL2_LOADRH_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 20 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 } }, .imm_scale = 1, .syntax = 21 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = sxth() ;  = memh(+)",
	},
	{
		// 01010000SSSSDDDDEE100iiissssdddd | RD = RS ; Rd = memh(Rs+Ii)
		.encoding = { .mask = 0xff00f800, .op = 0x50002000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_TFR_SL2_LOADRH_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 } }, .imm_scale = 1, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ;  = memh(+)",
	},
	{
		// 01010111SSSSDDDDEE100iiissssdddd | RD = and(RS,#255) ; Rd = memh(Rs+Ii)
		.encoding = { .mask = 0xff00f800, .op = 0x57002000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ZXTB_SL2_LOADRH_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 24 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 } }, .imm_scale = 1, .syntax = 25 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = and(,#255) ;  = memh(+)",
	},
	{
		// 01010110SSSSDDDDEE100iiissssdddd | RD = zxth(RS) ; Rd = memh(Rs+Ii)
		.encoding = { .mask = 0xff00f800, .op = 0x56002000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ZXTH_SL2_LOADRH_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 20 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 } }, .imm_scale = 1, .syntax = 21 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = zxth() ;  = memh(+)",
	},
	{
		// 010010IIIIIIDDDDEE100iiissssdddd | RD = II ; Rd = memh(Rs+Ii)
		.encoding = { .mask = 0xfc00f800, .op = 0x48002000 },
		.id = HEX_INS_X2_AUTOJOIN_UNDOCUMENTED_SA2_TFRSI_SL2_LOADRH_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x6, 20 } }, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 8 } }, .imm_scale = 1, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ;  = memh(+)",
	},
	{
		// 01000IIIIIIIxxxxEE11110iiiiidddd | Rx = add(Rxin,II) ; Rd = memw(r29+Ii)
		.encoding = { .mask = 0xf800fe00, .op = 0x40003c00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDI_SL2_LOADRI_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 20 } }, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 4 } }, .imm_scale = 2, .syntax = 24 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,) ;  = memw(R29+)",
	},
	{
		// 01011000ssssxxxxEE11110iiiiidddd | Rx = add(Rxin,Rs) ; Rd = memw(r29+Ii)
		.encoding = { .mask = 0xff00fe00, .op = 0x58003c00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDRX_SL2_LOADRI_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 4 } }, .imm_scale = 2, .syntax = 24 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,) ;  = memw(R29+)",
	},
	{
		// 010011IIIIIIDDDDEE11110iiiiidddd | RD = add(r29,II) ; Rd = memw(r29+Ii)
		.encoding = { .mask = 0xfc00fe00, .op = 0x4c003c00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDSP_SL2_LOADRI_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x6, 20 } }, .imm_scale = 2, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 4 } }, .imm_scale = 2, .syntax = 27 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(R29,) ;  = memw(R29+)",
	},
	{
		// 01010010ssssDDDDEE11110iiiiidddd | RD = and(Rs,#1) ; Rd = memw(r29+Ii)
		.encoding = { .mask = 0xff00fe00, .op = 0x52003c00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_AND1_SL2_LOADRI_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 4 } }, .imm_scale = 2, .syntax = 26 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = and(,#1) ;  = memw(R29+)",
	},
	{
		// 010110100111DDDDEE11110iiiiidddd | if (!p0) RD = #0 ; Rd = memw(r29+Ii)
		.encoding = { .mask = 0xfff0fe00, .op = 0x5a703c00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRF_SL2_LOADRI_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 4 } }, .imm_scale = 2, .syntax = 29 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!P0)  = #0 ;  = memw(R29+)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010110100101DDDDEE11110iiiiidddd | if (!p0.new) RD = #0 ; Rd = memw(r29+Ii)
		.encoding = { .mask = 0xfff0fe00, .op = 0x5a503c00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRFNEW_SL2_LOADRI_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 21 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 4 } }, .imm_scale = 2, .syntax = 33 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!P0.new)  = #0 ;  = memw(R29+)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010110100110DDDDEE11110iiiiidddd | if (p0) RD = #0 ; Rd = memw(r29+Ii)
		.encoding = { .mask = 0xfff0fe00, .op = 0x5a603c00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRT_SL2_LOADRI_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 4 } }, .imm_scale = 2, .syntax = 28 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (P0)  = #0 ;  = memw(R29+)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010110100100DDDDEE11110iiiiidddd | if (p0.new) RD = #0 ; Rd = memw(r29+Ii)
		.encoding = { .mask = 0xfff0fe00, .op = 0x5a403c00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRTNEW_SL2_LOADRI_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 20 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 4 } }, .imm_scale = 2, .syntax = 32 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (P0.new)  = #0 ;  = memw(R29+)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01011001ssss00IIEE11110iiiiidddd | p0 = cmp.eq(Rs,II) ; Rd = memw(r29+Ii)
		.encoding = { .mask = 0xff0cfe00, .op = 0x59003c00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CMPEQI_SL2_LOADRI_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 16 } }, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 4 } }, .imm_scale = 2, .syntax = 29 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "P0 = cmp.eq(,) ;  = memw(R29+)",
	},
	{
		// 010111000II00DDDEE11110iiiiidddd | RDD = combine(#0,II) ; Rd = memw(r29+Ii)
		.encoding = { .mask = 0xff98fe00, .op = 0x5c003c00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE0I_SL2_LOADRI_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 21 } }, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 4 } }, .imm_scale = 2, .syntax = 30 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(#0,) ;  = memw(R29+)",
	},
	{
		// 010111000II01DDDEE11110iiiiidddd | RDD = combine(#1,II) ; Rd = memw(r29+Ii)
		.encoding = { .mask = 0xff98fe00, .op = 0x5c083c00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE1I_SL2_LOADRI_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 21 } }, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 4 } }, .imm_scale = 2, .syntax = 30 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(#1,) ;  = memw(R29+)",
	},
	{
		// 010111000II10DDDEE11110iiiiidddd | RDD = combine(#2,II) ; Rd = memw(r29+Ii)
		.encoding = { .mask = 0xff98fe00, .op = 0x5c103c00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE2I_SL2_LOADRI_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 21 } }, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 4 } }, .imm_scale = 2, .syntax = 30 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(#2,) ;  = memw(R29+)",
	},
	{
		// 010111000II11DDDEE11110iiiiidddd | RDD = combine(#3,II) ; Rd = memw(r29+Ii)
		.encoding = { .mask = 0xff98fe00, .op = 0x5c183c00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE3I_SL2_LOADRI_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 21 } }, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 4 } }, .imm_scale = 2, .syntax = 30 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(#3,) ;  = memw(R29+)",
	},
	{
		// 01011101ssss1DDDEE11110iiiiidddd | RDD = combine(Rs,#0) ; Rd = memw(r29+Ii)
		.encoding = { .mask = 0xff08fe00, .op = 0x5d083c00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINERZ_SL2_LOADRI_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 4 } }, .imm_scale = 2, .syntax = 30 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(,#0) ;  = memw(R29+)",
	},
	{
		// 01011101ssss0DDDEE11110iiiiidddd | RDD = combine(#0,Rs) ; Rd = memw(r29+Ii)
		.encoding = { .mask = 0xff08fe00, .op = 0x5d003c00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINEZR_SL2_LOADRI_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 4 } }, .imm_scale = 2, .syntax = 30 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(#0,) ;  = memw(R29+)",
	},
	{
		// 01010011ssssDDDDEE11110iiiiidddd | RD = add(Rs,n1) ; Rd = memw(r29+Ii)
		.encoding = { .mask = 0xff00fe00, .op = 0x53003c00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_DEC_SL2_LOADRI_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 4 } }, .imm_scale = 2, .syntax = 24 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,) ;  = memw(R29+)",
	},
	{
		// 01010001ssssDDDDEE11110iiiiidddd | RD = add(Rs,#1) ; Rd = memw(r29+Ii)
		.encoding = { .mask = 0xff00fe00, .op = 0x51003c00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_INC_SL2_LOADRI_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 4 } }, .imm_scale = 2, .syntax = 26 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,#1) ;  = memw(R29+)",
	},
	{
		// 010010IIIIIIDDDDEE11110iiiiidddd | RD = II ; Rd = memw(r29+Ii)
		.encoding = { .mask = 0xfc00fe00, .op = 0x48003c00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SETI_SL2_LOADRI_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x6, 20 } }, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 4 } }, .imm_scale = 2, .syntax = 18 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ;  = memw(R29+)",
	},
	{
		// 010110100000DDDDEE11110iiiiidddd | RD = n1 ; Rd = memw(r29+Ii)
		.encoding = { .mask = 0xfff0fe00, .op = 0x5a003c00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SETIN1_SL2_LOADRI_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 4 } }, .imm_scale = 2, .syntax = 18 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ;  = memw(R29+)",
	},
	{
		// 01010101ssssDDDDEE11110iiiiidddd | RD = sxtb(Rs) ; Rd = memw(r29+Ii)
		.encoding = { .mask = 0xff00fe00, .op = 0x55003c00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SXTB_SL2_LOADRI_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 4 } }, .imm_scale = 2, .syntax = 24 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = sxtb() ;  = memw(R29+)",
	},
	{
		// 01010100ssssDDDDEE11110iiiiidddd | RD = sxth(Rs) ; Rd = memw(r29+Ii)
		.encoding = { .mask = 0xff00fe00, .op = 0x54003c00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SXTH_SL2_LOADRI_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 4 } }, .imm_scale = 2, .syntax = 24 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = sxth() ;  = memw(R29+)",
	},
	{
		// 01010000ssssDDDDEE11110iiiiidddd | RD = Rs ; Rd = memw(r29+Ii)
		.encoding = { .mask = 0xff00fe00, .op = 0x50003c00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_TFR_SL2_LOADRI_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 4 } }, .imm_scale = 2, .syntax = 18 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ;  = memw(R29+)",
	},
	{
		// 01010111ssssDDDDEE11110iiiiidddd | RD = and(Rs,#255) ; Rd = memw(r29+Ii)
		.encoding = { .mask = 0xff00fe00, .op = 0x57003c00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ZXTB_SL2_LOADRI_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 4 } }, .imm_scale = 2, .syntax = 28 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = and(,#255) ;  = memw(R29+)",
	},
	{
		// 01010110ssssDDDDEE11110iiiiidddd | RD = zxth(Rs) ; Rd = memw(r29+Ii)
		.encoding = { .mask = 0xff00fe00, .op = 0x56003c00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ZXTH_SL2_LOADRI_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 4 } }, .imm_scale = 2, .syntax = 24 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = zxth() ;  = memw(R29+)",
	},
	{
		// 010010IIIIIIDDDDEE11110iiiiidddd | RD = II ; Rd = memw(r29+Ii)
		.encoding = { .mask = 0xfc00fe00, .op = 0x48003c00 },
		.id = HEX_INS_X2_AUTOJOIN_UNDOCUMENTED_SA2_TFRSI_SL2_LOADRI_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x6, 20 } }, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 4 } }, .imm_scale = 2, .syntax = 18 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ;  = memw(R29+)",
	},
	{
		// 01000IIIIIIIxxxxEE101iiissssdddd | Rx = add(Rxin,II) ; Rd = memuh(Rs+Ii)
		.encoding = { .mask = 0xf800f800, .op = 0x40002800 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDI_SL2_LOADRUH_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 20 } }, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 21 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 8 } }, .imm_scale = 1, .syntax = 22 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,) ;  = memuh(+)",
	},
	{
		// 01011000SSSSxxxxEE101iiissssdddd | Rx = add(Rxin,RS) ; Rd = memuh(Rs+Ii)
		.encoding = { .mask = 0xff00f800, .op = 0x58002800 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDRX_SL2_LOADRUH_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 21 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 } }, .imm_scale = 1, .syntax = 22 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,) ;  = memuh(+)",
	},
	{
		// 010011IIIIIIDDDDEE101iiissssdddd | RD = add(r29,II) ; Rd = memuh(Rs+Ii)
		.encoding = { .mask = 0xfc00f800, .op = 0x4c002800 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDSP_SL2_LOADRUH_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x6, 20 } }, .imm_scale = 2, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 24 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 8 } }, .imm_scale = 1, .syntax = 25 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(R29,) ;  = memuh(+)",
	},
	{
		// 01010010SSSSDDDDEE101iiissssdddd | RD = and(RS,#1) ; Rd = memuh(Rs+Ii)
		.encoding = { .mask = 0xff00f800, .op = 0x52002800 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_AND1_SL2_LOADRUH_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 23 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 } }, .imm_scale = 1, .syntax = 24 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = and(,#1) ;  = memuh(+)",
	},
	{
		// 010110100111DDDDEE101iiissssdddd | if (!p0) RD = #0 ; Rd = memuh(Rs+Ii)
		.encoding = { .mask = 0xfff0f800, .op = 0x5a702800 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRF_SL2_LOADRUH_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 26 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 } }, .imm_scale = 1, .syntax = 27 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!P0)  = #0 ;  = memuh(+)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010110100101DDDDEE101iiissssdddd | if (!p0.new) RD = #0 ; Rd = memuh(Rs+Ii)
		.encoding = { .mask = 0xfff0f800, .op = 0x5a502800 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRFNEW_SL2_LOADRUH_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 21 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 30 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 } }, .imm_scale = 1, .syntax = 31 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!P0.new)  = #0 ;  = memuh(+)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010110100110DDDDEE101iiissssdddd | if (p0) RD = #0 ; Rd = memuh(Rs+Ii)
		.encoding = { .mask = 0xfff0f800, .op = 0x5a602800 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRT_SL2_LOADRUH_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 25 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 } }, .imm_scale = 1, .syntax = 26 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (P0)  = #0 ;  = memuh(+)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010110100100DDDDEE101iiissssdddd | if (p0.new) RD = #0 ; Rd = memuh(Rs+Ii)
		.encoding = { .mask = 0xfff0f800, .op = 0x5a402800 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRTNEW_SL2_LOADRUH_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 20 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 29 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 } }, .imm_scale = 1, .syntax = 30 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (P0.new)  = #0 ;  = memuh(+)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01011001SSSS00IIEE101iiissssdddd | p0 = cmp.eq(RS,II) ; Rd = memuh(Rs+Ii)
		.encoding = { .mask = 0xff0cf800, .op = 0x59002800 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CMPEQI_SL2_LOADRUH_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 16 } }, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 26 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 8 } }, .imm_scale = 1, .syntax = 27 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "P0 = cmp.eq(,) ;  = memuh(+)",
	},
	{
		// 010111000II00DDDEE101iiissssdddd | RDD = combine(#0,II) ; Rd = memuh(Rs+Ii)
		.encoding = { .mask = 0xff98f800, .op = 0x5c002800 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE0I_SL2_LOADRUH_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 21 } }, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 27 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 8 } }, .imm_scale = 1, .syntax = 28 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(#0,) ;  = memuh(+)",
	},
	{
		// 010111000II01DDDEE101iiissssdddd | RDD = combine(#1,II) ; Rd = memuh(Rs+Ii)
		.encoding = { .mask = 0xff98f800, .op = 0x5c082800 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE1I_SL2_LOADRUH_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 21 } }, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 27 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 8 } }, .imm_scale = 1, .syntax = 28 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(#1,) ;  = memuh(+)",
	},
	{
		// 010111000II10DDDEE101iiissssdddd | RDD = combine(#2,II) ; Rd = memuh(Rs+Ii)
		.encoding = { .mask = 0xff98f800, .op = 0x5c102800 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE2I_SL2_LOADRUH_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 21 } }, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 27 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 8 } }, .imm_scale = 1, .syntax = 28 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(#2,) ;  = memuh(+)",
	},
	{
		// 010111000II11DDDEE101iiissssdddd | RDD = combine(#3,II) ; Rd = memuh(Rs+Ii)
		.encoding = { .mask = 0xff98f800, .op = 0x5c182800 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE3I_SL2_LOADRUH_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 21 } }, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 27 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 8 } }, .imm_scale = 1, .syntax = 28 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(#3,) ;  = memuh(+)",
	},
	{
		// 01011101SSSS1DDDEE101iiissssdddd | RDD = combine(RS,#0) ; Rd = memuh(Rs+Ii)
		.encoding = { .mask = 0xff08f800, .op = 0x5d082800 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINERZ_SL2_LOADRUH_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 27 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 } }, .imm_scale = 1, .syntax = 28 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(,#0) ;  = memuh(+)",
	},
	{
		// 01011101SSSS0DDDEE101iiissssdddd | RDD = combine(#0,RS) ; Rd = memuh(Rs+Ii)
		.encoding = { .mask = 0xff08f800, .op = 0x5d002800 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINEZR_SL2_LOADRUH_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 27 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 } }, .imm_scale = 1, .syntax = 28 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(#0,) ;  = memuh(+)",
	},
	{
		// 01010011SSSSDDDDEE101iiissssdddd | RD = add(RS,n1) ; Rd = memuh(Rs+Ii)
		.encoding = { .mask = 0xff00f800, .op = 0x53002800 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_DEC_SL2_LOADRUH_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 21 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 8 } }, .imm_scale = 1, .syntax = 22 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,) ;  = memuh(+)",
	},
	{
		// 01010001SSSSDDDDEE101iiissssdddd | RD = add(RS,#1) ; Rd = memuh(Rs+Ii)
		.encoding = { .mask = 0xff00f800, .op = 0x51002800 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_INC_SL2_LOADRUH_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 23 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 } }, .imm_scale = 1, .syntax = 24 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,#1) ;  = memuh(+)",
	},
	{
		// 010010IIIIIIDDDDEE101iiissssdddd | RD = II ; Rd = memuh(Rs+Ii)
		.encoding = { .mask = 0xfc00f800, .op = 0x48002800 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SETI_SL2_LOADRUH_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x6, 20 } }, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 8 } }, .imm_scale = 1, .syntax = 16 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ;  = memuh(+)",
	},
	{
		// 010110100000DDDDEE101iiissssdddd | RD = n1 ; Rd = memuh(Rs+Ii)
		.encoding = { .mask = 0xfff0f800, .op = 0x5a002800 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SETIN1_SL2_LOADRUH_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 8 } }, .imm_scale = 1, .syntax = 16 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ;  = memuh(+)",
	},
	{
		// 01010101SSSSDDDDEE101iiissssdddd | RD = sxtb(RS) ; Rd = memuh(Rs+Ii)
		.encoding = { .mask = 0xff00f800, .op = 0x55002800 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SXTB_SL2_LOADRUH_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 21 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 } }, .imm_scale = 1, .syntax = 22 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = sxtb() ;  = memuh(+)",
	},
	{
		// 01010100SSSSDDDDEE101iiissssdddd | RD = sxth(RS) ; Rd = memuh(Rs+Ii)
		.encoding = { .mask = 0xff00f800, .op = 0x54002800 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SXTH_SL2_LOADRUH_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 21 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 } }, .imm_scale = 1, .syntax = 22 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = sxth() ;  = memuh(+)",
	},
	{
		// 01010000SSSSDDDDEE101iiissssdddd | RD = RS ; Rd = memuh(Rs+Ii)
		.encoding = { .mask = 0xff00f800, .op = 0x50002800 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_TFR_SL2_LOADRUH_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 } }, .imm_scale = 1, .syntax = 16 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ;  = memuh(+)",
	},
	{
		// 01010111SSSSDDDDEE101iiissssdddd | RD = and(RS,#255) ; Rd = memuh(Rs+Ii)
		.encoding = { .mask = 0xff00f800, .op = 0x57002800 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ZXTB_SL2_LOADRUH_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 25 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 } }, .imm_scale = 1, .syntax = 26 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = and(,#255) ;  = memuh(+)",
	},
	{
		// 01010110SSSSDDDDEE101iiissssdddd | RD = zxth(RS) ; Rd = memuh(Rs+Ii)
		.encoding = { .mask = 0xff00f800, .op = 0x56002800 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ZXTH_SL2_LOADRUH_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 21 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 } }, .imm_scale = 1, .syntax = 22 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = zxth() ;  = memuh(+)",
	},
	{
		// 010010IIIIIIDDDDEE101iiissssdddd | RD = II ; Rd = memuh(Rs+Ii)
		.encoding = { .mask = 0xfc00f800, .op = 0x48002800 },
		.id = HEX_INS_X2_AUTOJOIN_UNDOCUMENTED_SA2_TFRSI_SL2_LOADRUH_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x6, 20 } }, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 8 } }, .imm_scale = 1, .syntax = 16 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ;  = memuh(+)",
	},
	{
		// 01000iiiiiiixxxxEE11111101000000 | Rx = add(Rxin,Ii) ; dealloc_return
		.encoding = { .mask = 0xf800ffff, .op = 0x40003f40 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDI_SL2_RETURN,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 20 } }, .syntax = 8 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_RET,
		.syntax = " = add(,) ; dealloc_return",
	},
	{
		// 01011000ssssxxxxEE11111101000000 | Rx = add(Rxin,Rs) ; dealloc_return
		.encoding = { .mask = 0xff00ffff, .op = 0x58003f40 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDRX_SL2_RETURN,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_RET,
		.syntax = " = add(,) ; dealloc_return",
	},
	{
		// 010011iiiiiiddddEE11111101000000 | Rd = add(r29,Ii) ; dealloc_return
		.encoding = { .mask = 0xfc00ffff, .op = 0x4c003f40 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDSP_SL2_RETURN,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x6, 20 } }, .imm_scale = 2, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_RET,
		.syntax = " = add(R29,) ; dealloc_return",
	},
	{
		// 01010010ssssddddEE11111101000000 | Rd = and(Rs,#1) ; dealloc_return
		.encoding = { .mask = 0xff00ffff, .op = 0x52003f40 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_AND1_SL2_RETURN,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_RET,
		.syntax = " = and(,#1) ; dealloc_return",
	},
	{
		// 010110100111ddddEE11111101000000 | if (!p0) Rd = #0 ; dealloc_return
		.encoding = { .mask = 0xfff0ffff, .op = 0x5a703f40 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRF_SL2_RETURN,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 9 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "if (!P0)  = #0 ; dealloc_return",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010110100101ddddEE11111101000000 | if (!p0.new) Rd = #0 ; dealloc_return
		.encoding = { .mask = 0xfff0ffff, .op = 0x5a503f40 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRFNEW_SL2_RETURN,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 13 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "if (!P0.new)  = #0 ; dealloc_return",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010110100110ddddEE11111101000000 | if (p0) Rd = #0 ; dealloc_return
		.encoding = { .mask = 0xfff0ffff, .op = 0x5a603f40 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRT_SL2_RETURN,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "if (P0)  = #0 ; dealloc_return",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010110100100ddddEE11111101000000 | if (p0.new) Rd = #0 ; dealloc_return
		.encoding = { .mask = 0xfff0ffff, .op = 0x5a403f40 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRTNEW_SL2_RETURN,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "if (P0.new)  = #0 ; dealloc_return",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01011001ssss00iiEE11111101000000 | p0 = cmp.eq(Rs,Ii) ; dealloc_return
		.encoding = { .mask = 0xff0cffff, .op = 0x59003f40 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CMPEQI_SL2_RETURN,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 16 } }, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_RET,
		.syntax = "P0 = cmp.eq(,) ; dealloc_return",
	},
	{
		// 010111000ii00dddEE11111101000000 | Rdd = combine(#0,Ii) ; dealloc_return
		.encoding = { .mask = 0xff98ffff, .op = 0x5c003f40 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE0I_SL2_RETURN,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 21 } }, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_RET,
		.syntax = " = combine(#0,) ; dealloc_return",
	},
	{
		// 010111000ii01dddEE11111101000000 | Rdd = combine(#1,Ii) ; dealloc_return
		.encoding = { .mask = 0xff98ffff, .op = 0x5c083f40 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE1I_SL2_RETURN,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 21 } }, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_RET,
		.syntax = " = combine(#1,) ; dealloc_return",
	},
	{
		// 010111000ii10dddEE11111101000000 | Rdd = combine(#2,Ii) ; dealloc_return
		.encoding = { .mask = 0xff98ffff, .op = 0x5c103f40 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE2I_SL2_RETURN,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 21 } }, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_RET,
		.syntax = " = combine(#2,) ; dealloc_return",
	},
	{
		// 010111000ii11dddEE11111101000000 | Rdd = combine(#3,Ii) ; dealloc_return
		.encoding = { .mask = 0xff98ffff, .op = 0x5c183f40 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE3I_SL2_RETURN,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 21 } }, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_RET,
		.syntax = " = combine(#3,) ; dealloc_return",
	},
	{
		// 01011101ssss1dddEE11111101000000 | Rdd = combine(Rs,#0) ; dealloc_return
		.encoding = { .mask = 0xff08ffff, .op = 0x5d083f40 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINERZ_SL2_RETURN,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_RET,
		.syntax = " = combine(,#0) ; dealloc_return",
	},
	{
		// 01011101ssss0dddEE11111101000000 | Rdd = combine(#0,Rs) ; dealloc_return
		.encoding = { .mask = 0xff08ffff, .op = 0x5d003f40 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINEZR_SL2_RETURN,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_RET,
		.syntax = " = combine(#0,) ; dealloc_return",
	},
	{
		// 01010011ssssddddEE11111101000000 | Rd = add(Rs,n1) ; dealloc_return
		.encoding = { .mask = 0xff00ffff, .op = 0x53003f40 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_DEC_SL2_RETURN,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 8 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_RET,
		.syntax = " = add(,) ; dealloc_return",
	},
	{
		// 01010001ssssddddEE11111101000000 | Rd = add(Rs,#1) ; dealloc_return
		.encoding = { .mask = 0xff00ffff, .op = 0x51003f40 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_INC_SL2_RETURN,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_RET,
		.syntax = " = add(,#1) ; dealloc_return",
	},
	{
		// 010010iiiiiiddddEE11111101000000 | Rd = Ii ; dealloc_return
		.encoding = { .mask = 0xfc00ffff, .op = 0x48003f40 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SETI_SL2_RETURN,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x6, 20 } }, .syntax = 3 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_RET,
		.syntax = " =  ; dealloc_return",
	},
	{
		// 010110100000ddddEE11111101000000 | Rd = n1 ; dealloc_return
		.encoding = { .mask = 0xfff0ffff, .op = 0x5a003f40 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SETIN1_SL2_RETURN,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 3 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_RET,
		.syntax = " =  ; dealloc_return",
	},
	{
		// 01010101ssssddddEE11111101000000 | Rd = sxtb(Rs) ; dealloc_return
		.encoding = { .mask = 0xff00ffff, .op = 0x55003f40 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SXTB_SL2_RETURN,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_RET,
		.syntax = " = sxtb() ; dealloc_return",
	},
	{
		// 01010100ssssddddEE11111101000000 | Rd = sxth(Rs) ; dealloc_return
		.encoding = { .mask = 0xff00ffff, .op = 0x54003f40 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SXTH_SL2_RETURN,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_RET,
		.syntax = " = sxth() ; dealloc_return",
	},
	{
		// 01010000ssssddddEE11111101000000 | Rd = Rs ; dealloc_return
		.encoding = { .mask = 0xff00ffff, .op = 0x50003f40 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_TFR_SL2_RETURN,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 3 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_RET,
		.syntax = " =  ; dealloc_return",
	},
	{
		// 01010111ssssddddEE11111101000000 | Rd = and(Rs,#255) ; dealloc_return
		.encoding = { .mask = 0xff00ffff, .op = 0x57003f40 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ZXTB_SL2_RETURN,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_RET,
		.syntax = " = and(,#255) ; dealloc_return",
	},
	{
		// 01010110ssssddddEE11111101000000 | Rd = zxth(Rs) ; dealloc_return
		.encoding = { .mask = 0xff00ffff, .op = 0x56003f40 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ZXTH_SL2_RETURN,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_RET,
		.syntax = " = zxth() ; dealloc_return",
	},
	{
		// 010010iiiiiiddddEE11111101000000 | Rd = Ii ; dealloc_return
		.encoding = { .mask = 0xfc00ffff, .op = 0x48003f40 },
		.id = HEX_INS_X2_AUTOJOIN_UNDOCUMENTED_SA2_TFRSI_SL2_RETURN,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x6, 20 } }, .syntax = 3 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_RET,
		.syntax = " =  ; dealloc_return",
	},
	{
		// 01000iiiiiiixxxxEE11111101000101 | Rx = add(Rxin,Ii) ; if (!p0) dealloc_return
		.encoding = { .mask = 0xf800ffff, .op = 0x40003f45 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDI_SL2_RETURN_F,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 20 } }, .syntax = 8 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = add(,) ; if (!P0) dealloc_return",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01011000ssssxxxxEE11111101000101 | Rx = add(Rxin,Rs) ; if (!p0) dealloc_return
		.encoding = { .mask = 0xff00ffff, .op = 0x58003f45 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDRX_SL2_RETURN_F,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = add(,) ; if (!P0) dealloc_return",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010011iiiiiiddddEE11111101000101 | Rd = add(r29,Ii) ; if (!p0) dealloc_return
		.encoding = { .mask = 0xfc00ffff, .op = 0x4c003f45 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDSP_SL2_RETURN_F,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x6, 20 } }, .imm_scale = 2, .syntax = 11 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = add(R29,) ; if (!P0) dealloc_return",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01010010ssssddddEE11111101000101 | Rd = and(Rs,#1) ; if (!p0) dealloc_return
		.encoding = { .mask = 0xff00ffff, .op = 0x52003f45 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_AND1_SL2_RETURN_F,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = and(,#1) ; if (!P0) dealloc_return",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010110100111ddddEE11111101000101 | if (!p0) Rd = #0 ; if (!p0) dealloc_return
		.encoding = { .mask = 0xfff0ffff, .op = 0x5a703f45 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRF_SL2_RETURN_F,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 9 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "if (!P0)  = #0 ; if (!P0) dealloc_return",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010110100101ddddEE11111101000101 | if (!p0.new) Rd = #0 ; if (!p0) dealloc_return
		.encoding = { .mask = 0xfff0ffff, .op = 0x5a503f45 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRFNEW_SL2_RETURN_F,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 13 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "if (!P0.new)  = #0 ; if (!P0) dealloc_return",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010110100110ddddEE11111101000101 | if (p0) Rd = #0 ; if (!p0) dealloc_return
		.encoding = { .mask = 0xfff0ffff, .op = 0x5a603f45 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRT_SL2_RETURN_F,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "if (P0)  = #0 ; if (!P0) dealloc_return",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010110100100ddddEE11111101000101 | if (p0.new) Rd = #0 ; if (!p0) dealloc_return
		.encoding = { .mask = 0xfff0ffff, .op = 0x5a403f45 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRTNEW_SL2_RETURN_F,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "if (P0.new)  = #0 ; if (!P0) dealloc_return",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01011001ssss00iiEE11111101000101 | p0 = cmp.eq(Rs,Ii) ; if (!p0) dealloc_return
		.encoding = { .mask = 0xff0cffff, .op = 0x59003f45 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CMPEQI_SL2_RETURN_F,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 16 } }, .syntax = 13 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "P0 = cmp.eq(,) ; if (!P0) dealloc_return",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010111000ii00dddEE11111101000101 | Rdd = combine(#0,Ii) ; if (!p0) dealloc_return
		.encoding = { .mask = 0xff98ffff, .op = 0x5c003f45 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE0I_SL2_RETURN_F,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 21 } }, .syntax = 14 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = combine(#0,) ; if (!P0) dealloc_return",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010111000ii01dddEE11111101000101 | Rdd = combine(#1,Ii) ; if (!p0) dealloc_return
		.encoding = { .mask = 0xff98ffff, .op = 0x5c083f45 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE1I_SL2_RETURN_F,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 21 } }, .syntax = 14 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = combine(#1,) ; if (!P0) dealloc_return",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010111000ii10dddEE11111101000101 | Rdd = combine(#2,Ii) ; if (!p0) dealloc_return
		.encoding = { .mask = 0xff98ffff, .op = 0x5c103f45 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE2I_SL2_RETURN_F,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 21 } }, .syntax = 14 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = combine(#2,) ; if (!P0) dealloc_return",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010111000ii11dddEE11111101000101 | Rdd = combine(#3,Ii) ; if (!p0) dealloc_return
		.encoding = { .mask = 0xff98ffff, .op = 0x5c183f45 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE3I_SL2_RETURN_F,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 21 } }, .syntax = 14 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = combine(#3,) ; if (!P0) dealloc_return",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01011101ssss1dddEE11111101000101 | Rdd = combine(Rs,#0) ; if (!p0) dealloc_return
		.encoding = { .mask = 0xff08ffff, .op = 0x5d083f45 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINERZ_SL2_RETURN_F,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 11 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = combine(,#0) ; if (!P0) dealloc_return",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01011101ssss0dddEE11111101000101 | Rdd = combine(#0,Rs) ; if (!p0) dealloc_return
		.encoding = { .mask = 0xff08ffff, .op = 0x5d003f45 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINEZR_SL2_RETURN_F,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 14 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = combine(#0,) ; if (!P0) dealloc_return",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01010011ssssddddEE11111101000101 | Rd = add(Rs,n1) ; if (!p0) dealloc_return
		.encoding = { .mask = 0xff00ffff, .op = 0x53003f45 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_DEC_SL2_RETURN_F,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 8 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = add(,) ; if (!P0) dealloc_return",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01010001ssssddddEE11111101000101 | Rd = add(Rs,#1) ; if (!p0) dealloc_return
		.encoding = { .mask = 0xff00ffff, .op = 0x51003f45 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_INC_SL2_RETURN_F,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = add(,#1) ; if (!P0) dealloc_return",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010010iiiiiiddddEE11111101000101 | Rd = Ii ; if (!p0) dealloc_return
		.encoding = { .mask = 0xfc00ffff, .op = 0x48003f45 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SETI_SL2_RETURN_F,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x6, 20 } }, .syntax = 3 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " =  ; if (!P0) dealloc_return",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010110100000ddddEE11111101000101 | Rd = n1 ; if (!p0) dealloc_return
		.encoding = { .mask = 0xfff0ffff, .op = 0x5a003f45 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SETIN1_SL2_RETURN_F,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 3 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " =  ; if (!P0) dealloc_return",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01010101ssssddddEE11111101000101 | Rd = sxtb(Rs) ; if (!p0) dealloc_return
		.encoding = { .mask = 0xff00ffff, .op = 0x55003f45 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SXTB_SL2_RETURN_F,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = sxtb() ; if (!P0) dealloc_return",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01010100ssssddddEE11111101000101 | Rd = sxth(Rs) ; if (!p0) dealloc_return
		.encoding = { .mask = 0xff00ffff, .op = 0x54003f45 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SXTH_SL2_RETURN_F,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = sxth() ; if (!P0) dealloc_return",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01010000ssssddddEE11111101000101 | Rd = Rs ; if (!p0) dealloc_return
		.encoding = { .mask = 0xff00ffff, .op = 0x50003f45 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_TFR_SL2_RETURN_F,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 3 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " =  ; if (!P0) dealloc_return",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01010111ssssddddEE11111101000101 | Rd = and(Rs,#255) ; if (!p0) dealloc_return
		.encoding = { .mask = 0xff00ffff, .op = 0x57003f45 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ZXTB_SL2_RETURN_F,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = and(,#255) ; if (!P0) dealloc_return",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01010110ssssddddEE11111101000101 | Rd = zxth(Rs) ; if (!p0) dealloc_return
		.encoding = { .mask = 0xff00ffff, .op = 0x56003f45 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ZXTH_SL2_RETURN_F,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = zxth() ; if (!P0) dealloc_return",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010010iiiiiiddddEE11111101000101 | Rd = Ii ; if (!p0) dealloc_return
		.encoding = { .mask = 0xfc00ffff, .op = 0x48003f45 },
		.id = HEX_INS_X2_AUTOJOIN_UNDOCUMENTED_SA2_TFRSI_SL2_RETURN_F,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x6, 20 } }, .syntax = 3 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " =  ; if (!P0) dealloc_return",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01000iiiiiiixxxxEE11111101000111 | Rx = add(Rxin,Ii) ; if (!p0.new) dealloc_return:nt
		.encoding = { .mask = 0xf800ffff, .op = 0x40003f47 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDI_SL2_RETURN_FNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 20 } }, .syntax = 8 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = add(,) ; if (!P0.new) dealloc_return:nt",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01011000ssssxxxxEE11111101000111 | Rx = add(Rxin,Rs) ; if (!p0.new) dealloc_return:nt
		.encoding = { .mask = 0xff00ffff, .op = 0x58003f47 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDRX_SL2_RETURN_FNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = add(,) ; if (!P0.new) dealloc_return:nt",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010011iiiiiiddddEE11111101000111 | Rd = add(r29,Ii) ; if (!p0.new) dealloc_return:nt
		.encoding = { .mask = 0xfc00ffff, .op = 0x4c003f47 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDSP_SL2_RETURN_FNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x6, 20 } }, .imm_scale = 2, .syntax = 11 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = add(R29,) ; if (!P0.new) dealloc_return:nt",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01010010ssssddddEE11111101000111 | Rd = and(Rs,#1) ; if (!p0.new) dealloc_return:nt
		.encoding = { .mask = 0xff00ffff, .op = 0x52003f47 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_AND1_SL2_RETURN_FNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = and(,#1) ; if (!P0.new) dealloc_return:nt",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010110100111ddddEE11111101000111 | if (!p0) Rd = #0 ; if (!p0.new) dealloc_return:nt
		.encoding = { .mask = 0xfff0ffff, .op = 0x5a703f47 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRF_SL2_RETURN_FNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 9 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "if (!P0)  = #0 ; if (!P0.new) dealloc_return:nt",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010110100101ddddEE11111101000111 | if (!p0.new) Rd = #0 ; if (!p0.new) dealloc_return:nt
		.encoding = { .mask = 0xfff0ffff, .op = 0x5a503f47 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRFNEW_SL2_RETURN_FNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 13 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "if (!P0.new)  = #0 ; if (!P0.new) dealloc_return:nt",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010110100110ddddEE11111101000111 | if (p0) Rd = #0 ; if (!p0.new) dealloc_return:nt
		.encoding = { .mask = 0xfff0ffff, .op = 0x5a603f47 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRT_SL2_RETURN_FNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "if (P0)  = #0 ; if (!P0.new) dealloc_return:nt",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010110100100ddddEE11111101000111 | if (p0.new) Rd = #0 ; if (!p0.new) dealloc_return:nt
		.encoding = { .mask = 0xfff0ffff, .op = 0x5a403f47 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRTNEW_SL2_RETURN_FNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "if (P0.new)  = #0 ; if (!P0.new) dealloc_return:nt",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01011001ssss00iiEE11111101000111 | p0 = cmp.eq(Rs,Ii) ; if (!p0.new) dealloc_return:nt
		.encoding = { .mask = 0xff0cffff, .op = 0x59003f47 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CMPEQI_SL2_RETURN_FNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 16 } }, .syntax = 13 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "P0 = cmp.eq(,) ; if (!P0.new) dealloc_return:nt",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010111000ii00dddEE11111101000111 | Rdd = combine(#0,Ii) ; if (!p0.new) dealloc_return:nt
		.encoding = { .mask = 0xff98ffff, .op = 0x5c003f47 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE0I_SL2_RETURN_FNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 21 } }, .syntax = 14 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = combine(#0,) ; if (!P0.new) dealloc_return:nt",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010111000ii01dddEE11111101000111 | Rdd = combine(#1,Ii) ; if (!p0.new) dealloc_return:nt
		.encoding = { .mask = 0xff98ffff, .op = 0x5c083f47 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE1I_SL2_RETURN_FNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 21 } }, .syntax = 14 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = combine(#1,) ; if (!P0.new) dealloc_return:nt",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010111000ii10dddEE11111101000111 | Rdd = combine(#2,Ii) ; if (!p0.new) dealloc_return:nt
		.encoding = { .mask = 0xff98ffff, .op = 0x5c103f47 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE2I_SL2_RETURN_FNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 21 } }, .syntax = 14 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = combine(#2,) ; if (!P0.new) dealloc_return:nt",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010111000ii11dddEE11111101000111 | Rdd = combine(#3,Ii) ; if (!p0.new) dealloc_return:nt
		.encoding = { .mask = 0xff98ffff, .op = 0x5c183f47 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE3I_SL2_RETURN_FNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 21 } }, .syntax = 14 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = combine(#3,) ; if (!P0.new) dealloc_return:nt",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01011101ssss1dddEE11111101000111 | Rdd = combine(Rs,#0) ; if (!p0.new) dealloc_return:nt
		.encoding = { .mask = 0xff08ffff, .op = 0x5d083f47 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINERZ_SL2_RETURN_FNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 11 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = combine(,#0) ; if (!P0.new) dealloc_return:nt",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01011101ssss0dddEE11111101000111 | Rdd = combine(#0,Rs) ; if (!p0.new) dealloc_return:nt
		.encoding = { .mask = 0xff08ffff, .op = 0x5d003f47 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINEZR_SL2_RETURN_FNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 14 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = combine(#0,) ; if (!P0.new) dealloc_return:nt",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01010011ssssddddEE11111101000111 | Rd = add(Rs,n1) ; if (!p0.new) dealloc_return:nt
		.encoding = { .mask = 0xff00ffff, .op = 0x53003f47 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_DEC_SL2_RETURN_FNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 8 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = add(,) ; if (!P0.new) dealloc_return:nt",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01010001ssssddddEE11111101000111 | Rd = add(Rs,#1) ; if (!p0.new) dealloc_return:nt
		.encoding = { .mask = 0xff00ffff, .op = 0x51003f47 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_INC_SL2_RETURN_FNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = add(,#1) ; if (!P0.new) dealloc_return:nt",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010010iiiiiiddddEE11111101000111 | Rd = Ii ; if (!p0.new) dealloc_return:nt
		.encoding = { .mask = 0xfc00ffff, .op = 0x48003f47 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SETI_SL2_RETURN_FNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x6, 20 } }, .syntax = 3 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " =  ; if (!P0.new) dealloc_return:nt",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010110100000ddddEE11111101000111 | Rd = n1 ; if (!p0.new) dealloc_return:nt
		.encoding = { .mask = 0xfff0ffff, .op = 0x5a003f47 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SETIN1_SL2_RETURN_FNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 3 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " =  ; if (!P0.new) dealloc_return:nt",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01010101ssssddddEE11111101000111 | Rd = sxtb(Rs) ; if (!p0.new) dealloc_return:nt
		.encoding = { .mask = 0xff00ffff, .op = 0x55003f47 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SXTB_SL2_RETURN_FNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = sxtb() ; if (!P0.new) dealloc_return:nt",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01010100ssssddddEE11111101000111 | Rd = sxth(Rs) ; if (!p0.new) dealloc_return:nt
		.encoding = { .mask = 0xff00ffff, .op = 0x54003f47 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SXTH_SL2_RETURN_FNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = sxth() ; if (!P0.new) dealloc_return:nt",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01010000ssssddddEE11111101000111 | Rd = Rs ; if (!p0.new) dealloc_return:nt
		.encoding = { .mask = 0xff00ffff, .op = 0x50003f47 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_TFR_SL2_RETURN_FNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 3 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " =  ; if (!P0.new) dealloc_return:nt",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01010111ssssddddEE11111101000111 | Rd = and(Rs,#255) ; if (!p0.new) dealloc_return:nt
		.encoding = { .mask = 0xff00ffff, .op = 0x57003f47 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ZXTB_SL2_RETURN_FNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = and(,#255) ; if (!P0.new) dealloc_return:nt",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01010110ssssddddEE11111101000111 | Rd = zxth(Rs) ; if (!p0.new) dealloc_return:nt
		.encoding = { .mask = 0xff00ffff, .op = 0x56003f47 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ZXTH_SL2_RETURN_FNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = zxth() ; if (!P0.new) dealloc_return:nt",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010010iiiiiiddddEE11111101000111 | Rd = Ii ; if (!p0.new) dealloc_return:nt
		.encoding = { .mask = 0xfc00ffff, .op = 0x48003f47 },
		.id = HEX_INS_X2_AUTOJOIN_UNDOCUMENTED_SA2_TFRSI_SL2_RETURN_FNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x6, 20 } }, .syntax = 3 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " =  ; if (!P0.new) dealloc_return:nt",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01000iiiiiiixxxxEE11111101000100 | Rx = add(Rxin,Ii) ; if (p0) dealloc_return
		.encoding = { .mask = 0xf800ffff, .op = 0x40003f44 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDI_SL2_RETURN_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 20 } }, .syntax = 8 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = add(,) ; if (P0) dealloc_return",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01011000ssssxxxxEE11111101000100 | Rx = add(Rxin,Rs) ; if (p0) dealloc_return
		.encoding = { .mask = 0xff00ffff, .op = 0x58003f44 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDRX_SL2_RETURN_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = add(,) ; if (P0) dealloc_return",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010011iiiiiiddddEE11111101000100 | Rd = add(r29,Ii) ; if (p0) dealloc_return
		.encoding = { .mask = 0xfc00ffff, .op = 0x4c003f44 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDSP_SL2_RETURN_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x6, 20 } }, .imm_scale = 2, .syntax = 11 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = add(R29,) ; if (P0) dealloc_return",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01010010ssssddddEE11111101000100 | Rd = and(Rs,#1) ; if (p0) dealloc_return
		.encoding = { .mask = 0xff00ffff, .op = 0x52003f44 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_AND1_SL2_RETURN_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = and(,#1) ; if (P0) dealloc_return",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010110100111ddddEE11111101000100 | if (!p0) Rd = #0 ; if (p0) dealloc_return
		.encoding = { .mask = 0xfff0ffff, .op = 0x5a703f44 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRF_SL2_RETURN_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 9 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "if (!P0)  = #0 ; if (P0) dealloc_return",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010110100101ddddEE11111101000100 | if (!p0.new) Rd = #0 ; if (p0) dealloc_return
		.encoding = { .mask = 0xfff0ffff, .op = 0x5a503f44 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRFNEW_SL2_RETURN_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 13 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "if (!P0.new)  = #0 ; if (P0) dealloc_return",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010110100110ddddEE11111101000100 | if (p0) Rd = #0 ; if (p0) dealloc_return
		.encoding = { .mask = 0xfff0ffff, .op = 0x5a603f44 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRT_SL2_RETURN_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "if (P0)  = #0 ; if (P0) dealloc_return",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010110100100ddddEE11111101000100 | if (p0.new) Rd = #0 ; if (p0) dealloc_return
		.encoding = { .mask = 0xfff0ffff, .op = 0x5a403f44 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRTNEW_SL2_RETURN_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "if (P0.new)  = #0 ; if (P0) dealloc_return",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01011001ssss00iiEE11111101000100 | p0 = cmp.eq(Rs,Ii) ; if (p0) dealloc_return
		.encoding = { .mask = 0xff0cffff, .op = 0x59003f44 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CMPEQI_SL2_RETURN_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 16 } }, .syntax = 13 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "P0 = cmp.eq(,) ; if (P0) dealloc_return",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010111000ii00dddEE11111101000100 | Rdd = combine(#0,Ii) ; if (p0) dealloc_return
		.encoding = { .mask = 0xff98ffff, .op = 0x5c003f44 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE0I_SL2_RETURN_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 21 } }, .syntax = 14 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = combine(#0,) ; if (P0) dealloc_return",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010111000ii01dddEE11111101000100 | Rdd = combine(#1,Ii) ; if (p0) dealloc_return
		.encoding = { .mask = 0xff98ffff, .op = 0x5c083f44 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE1I_SL2_RETURN_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 21 } }, .syntax = 14 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = combine(#1,) ; if (P0) dealloc_return",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010111000ii10dddEE11111101000100 | Rdd = combine(#2,Ii) ; if (p0) dealloc_return
		.encoding = { .mask = 0xff98ffff, .op = 0x5c103f44 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE2I_SL2_RETURN_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 21 } }, .syntax = 14 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = combine(#2,) ; if (P0) dealloc_return",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010111000ii11dddEE11111101000100 | Rdd = combine(#3,Ii) ; if (p0) dealloc_return
		.encoding = { .mask = 0xff98ffff, .op = 0x5c183f44 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE3I_SL2_RETURN_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 21 } }, .syntax = 14 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = combine(#3,) ; if (P0) dealloc_return",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01011101ssss1dddEE11111101000100 | Rdd = combine(Rs,#0) ; if (p0) dealloc_return
		.encoding = { .mask = 0xff08ffff, .op = 0x5d083f44 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINERZ_SL2_RETURN_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 11 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = combine(,#0) ; if (P0) dealloc_return",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01011101ssss0dddEE11111101000100 | Rdd = combine(#0,Rs) ; if (p0) dealloc_return
		.encoding = { .mask = 0xff08ffff, .op = 0x5d003f44 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINEZR_SL2_RETURN_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 14 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = combine(#0,) ; if (P0) dealloc_return",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01010011ssssddddEE11111101000100 | Rd = add(Rs,n1) ; if (p0) dealloc_return
		.encoding = { .mask = 0xff00ffff, .op = 0x53003f44 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_DEC_SL2_RETURN_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 8 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = add(,) ; if (P0) dealloc_return",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01010001ssssddddEE11111101000100 | Rd = add(Rs,#1) ; if (p0) dealloc_return
		.encoding = { .mask = 0xff00ffff, .op = 0x51003f44 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_INC_SL2_RETURN_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = add(,#1) ; if (P0) dealloc_return",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010010iiiiiiddddEE11111101000100 | Rd = Ii ; if (p0) dealloc_return
		.encoding = { .mask = 0xfc00ffff, .op = 0x48003f44 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SETI_SL2_RETURN_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x6, 20 } }, .syntax = 3 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " =  ; if (P0) dealloc_return",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010110100000ddddEE11111101000100 | Rd = n1 ; if (p0) dealloc_return
		.encoding = { .mask = 0xfff0ffff, .op = 0x5a003f44 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SETIN1_SL2_RETURN_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 3 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " =  ; if (P0) dealloc_return",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01010101ssssddddEE11111101000100 | Rd = sxtb(Rs) ; if (p0) dealloc_return
		.encoding = { .mask = 0xff00ffff, .op = 0x55003f44 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SXTB_SL2_RETURN_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = sxtb() ; if (P0) dealloc_return",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01010100ssssddddEE11111101000100 | Rd = sxth(Rs) ; if (p0) dealloc_return
		.encoding = { .mask = 0xff00ffff, .op = 0x54003f44 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SXTH_SL2_RETURN_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = sxth() ; if (P0) dealloc_return",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01010000ssssddddEE11111101000100 | Rd = Rs ; if (p0) dealloc_return
		.encoding = { .mask = 0xff00ffff, .op = 0x50003f44 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_TFR_SL2_RETURN_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 3 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " =  ; if (P0) dealloc_return",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01010111ssssddddEE11111101000100 | Rd = and(Rs,#255) ; if (p0) dealloc_return
		.encoding = { .mask = 0xff00ffff, .op = 0x57003f44 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ZXTB_SL2_RETURN_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = and(,#255) ; if (P0) dealloc_return",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01010110ssssddddEE11111101000100 | Rd = zxth(Rs) ; if (p0) dealloc_return
		.encoding = { .mask = 0xff00ffff, .op = 0x56003f44 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ZXTH_SL2_RETURN_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = zxth() ; if (P0) dealloc_return",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010010iiiiiiddddEE11111101000100 | Rd = Ii ; if (p0) dealloc_return
		.encoding = { .mask = 0xfc00ffff, .op = 0x48003f44 },
		.id = HEX_INS_X2_AUTOJOIN_UNDOCUMENTED_SA2_TFRSI_SL2_RETURN_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x6, 20 } }, .syntax = 3 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " =  ; if (P0) dealloc_return",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01000iiiiiiixxxxEE11111101000110 | Rx = add(Rxin,Ii) ; if (p0.new) dealloc_return:nt
		.encoding = { .mask = 0xf800ffff, .op = 0x40003f46 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDI_SL2_RETURN_TNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 20 } }, .syntax = 8 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = add(,) ; if (P0.new) dealloc_return:nt",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01011000ssssxxxxEE11111101000110 | Rx = add(Rxin,Rs) ; if (p0.new) dealloc_return:nt
		.encoding = { .mask = 0xff00ffff, .op = 0x58003f46 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDRX_SL2_RETURN_TNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = add(,) ; if (P0.new) dealloc_return:nt",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010011iiiiiiddddEE11111101000110 | Rd = add(r29,Ii) ; if (p0.new) dealloc_return:nt
		.encoding = { .mask = 0xfc00ffff, .op = 0x4c003f46 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDSP_SL2_RETURN_TNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x6, 20 } }, .imm_scale = 2, .syntax = 11 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = add(R29,) ; if (P0.new) dealloc_return:nt",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01010010ssssddddEE11111101000110 | Rd = and(Rs,#1) ; if (p0.new) dealloc_return:nt
		.encoding = { .mask = 0xff00ffff, .op = 0x52003f46 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_AND1_SL2_RETURN_TNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = and(,#1) ; if (P0.new) dealloc_return:nt",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010110100111ddddEE11111101000110 | if (!p0) Rd = #0 ; if (p0.new) dealloc_return:nt
		.encoding = { .mask = 0xfff0ffff, .op = 0x5a703f46 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRF_SL2_RETURN_TNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 9 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "if (!P0)  = #0 ; if (P0.new) dealloc_return:nt",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010110100101ddddEE11111101000110 | if (!p0.new) Rd = #0 ; if (p0.new) dealloc_return:nt
		.encoding = { .mask = 0xfff0ffff, .op = 0x5a503f46 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRFNEW_SL2_RETURN_TNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 13 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "if (!P0.new)  = #0 ; if (P0.new) dealloc_return:nt",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010110100110ddddEE11111101000110 | if (p0) Rd = #0 ; if (p0.new) dealloc_return:nt
		.encoding = { .mask = 0xfff0ffff, .op = 0x5a603f46 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRT_SL2_RETURN_TNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "if (P0)  = #0 ; if (P0.new) dealloc_return:nt",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010110100100ddddEE11111101000110 | if (p0.new) Rd = #0 ; if (p0.new) dealloc_return:nt
		.encoding = { .mask = 0xfff0ffff, .op = 0x5a403f46 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRTNEW_SL2_RETURN_TNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "if (P0.new)  = #0 ; if (P0.new) dealloc_return:nt",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01011001ssss00iiEE11111101000110 | p0 = cmp.eq(Rs,Ii) ; if (p0.new) dealloc_return:nt
		.encoding = { .mask = 0xff0cffff, .op = 0x59003f46 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CMPEQI_SL2_RETURN_TNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 16 } }, .syntax = 13 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "P0 = cmp.eq(,) ; if (P0.new) dealloc_return:nt",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010111000ii00dddEE11111101000110 | Rdd = combine(#0,Ii) ; if (p0.new) dealloc_return:nt
		.encoding = { .mask = 0xff98ffff, .op = 0x5c003f46 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE0I_SL2_RETURN_TNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 21 } }, .syntax = 14 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = combine(#0,) ; if (P0.new) dealloc_return:nt",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010111000ii01dddEE11111101000110 | Rdd = combine(#1,Ii) ; if (p0.new) dealloc_return:nt
		.encoding = { .mask = 0xff98ffff, .op = 0x5c083f46 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE1I_SL2_RETURN_TNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 21 } }, .syntax = 14 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = combine(#1,) ; if (P0.new) dealloc_return:nt",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010111000ii10dddEE11111101000110 | Rdd = combine(#2,Ii) ; if (p0.new) dealloc_return:nt
		.encoding = { .mask = 0xff98ffff, .op = 0x5c103f46 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE2I_SL2_RETURN_TNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 21 } }, .syntax = 14 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = combine(#2,) ; if (P0.new) dealloc_return:nt",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010111000ii11dddEE11111101000110 | Rdd = combine(#3,Ii) ; if (p0.new) dealloc_return:nt
		.encoding = { .mask = 0xff98ffff, .op = 0x5c183f46 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE3I_SL2_RETURN_TNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 21 } }, .syntax = 14 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = combine(#3,) ; if (P0.new) dealloc_return:nt",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01011101ssss1dddEE11111101000110 | Rdd = combine(Rs,#0) ; if (p0.new) dealloc_return:nt
		.encoding = { .mask = 0xff08ffff, .op = 0x5d083f46 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINERZ_SL2_RETURN_TNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 11 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = combine(,#0) ; if (P0.new) dealloc_return:nt",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01011101ssss0dddEE11111101000110 | Rdd = combine(#0,Rs) ; if (p0.new) dealloc_return:nt
		.encoding = { .mask = 0xff08ffff, .op = 0x5d003f46 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINEZR_SL2_RETURN_TNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 14 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = combine(#0,) ; if (P0.new) dealloc_return:nt",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01010011ssssddddEE11111101000110 | Rd = add(Rs,n1) ; if (p0.new) dealloc_return:nt
		.encoding = { .mask = 0xff00ffff, .op = 0x53003f46 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_DEC_SL2_RETURN_TNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 8 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = add(,) ; if (P0.new) dealloc_return:nt",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01010001ssssddddEE11111101000110 | Rd = add(Rs,#1) ; if (p0.new) dealloc_return:nt
		.encoding = { .mask = 0xff00ffff, .op = 0x51003f46 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_INC_SL2_RETURN_TNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = add(,#1) ; if (P0.new) dealloc_return:nt",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010010iiiiiiddddEE11111101000110 | Rd = Ii ; if (p0.new) dealloc_return:nt
		.encoding = { .mask = 0xfc00ffff, .op = 0x48003f46 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SETI_SL2_RETURN_TNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x6, 20 } }, .syntax = 3 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " =  ; if (P0.new) dealloc_return:nt",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010110100000ddddEE11111101000110 | Rd = n1 ; if (p0.new) dealloc_return:nt
		.encoding = { .mask = 0xfff0ffff, .op = 0x5a003f46 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SETIN1_SL2_RETURN_TNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 3 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " =  ; if (P0.new) dealloc_return:nt",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01010101ssssddddEE11111101000110 | Rd = sxtb(Rs) ; if (p0.new) dealloc_return:nt
		.encoding = { .mask = 0xff00ffff, .op = 0x55003f46 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SXTB_SL2_RETURN_TNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = sxtb() ; if (P0.new) dealloc_return:nt",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01010100ssssddddEE11111101000110 | Rd = sxth(Rs) ; if (p0.new) dealloc_return:nt
		.encoding = { .mask = 0xff00ffff, .op = 0x54003f46 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SXTH_SL2_RETURN_TNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = sxth() ; if (P0.new) dealloc_return:nt",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01010000ssssddddEE11111101000110 | Rd = Rs ; if (p0.new) dealloc_return:nt
		.encoding = { .mask = 0xff00ffff, .op = 0x50003f46 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_TFR_SL2_RETURN_TNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 3 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " =  ; if (P0.new) dealloc_return:nt",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01010111ssssddddEE11111101000110 | Rd = and(Rs,#255) ; if (p0.new) dealloc_return:nt
		.encoding = { .mask = 0xff00ffff, .op = 0x57003f46 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ZXTB_SL2_RETURN_TNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = and(,#255) ; if (P0.new) dealloc_return:nt",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01010110ssssddddEE11111101000110 | Rd = zxth(Rs) ; if (p0.new) dealloc_return:nt
		.encoding = { .mask = 0xff00ffff, .op = 0x56003f46 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ZXTH_SL2_RETURN_TNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " = zxth() ; if (P0.new) dealloc_return:nt",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 010010iiiiiiddddEE11111101000110 | Rd = Ii ; if (p0.new) dealloc_return:nt
		.encoding = { .mask = 0xfc00ffff, .op = 0x48003f46 },
		.id = HEX_INS_X2_AUTOJOIN_UNDOCUMENTED_SA2_TFRSI_SL2_RETURN_TNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x6, 20 } }, .syntax = 3 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = " =  ; if (P0.new) dealloc_return:nt",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{ { 0 } },
};

static const HexInsnTemplate templates_duplex_0x6[] = {
	{
		// 01100IIIIIIIxxxxEE01iiiisssstttt | Rx = add(Rxin,II) ; memb(Rs+Ii) = Rt
		.encoding = { .mask = 0xf800f000, .op = 0x60001000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDI_SS1_STOREB_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 20 } }, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 8 } }, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 22 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,) ; memb(+) = ",
	},
	{
		// 01111000SSSSxxxxEE01iiiisssstttt | Rx = add(Rxin,RS) ; memb(Rs+Ii) = Rt
		.encoding = { .mask = 0xff00f000, .op = 0x78001000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDRX_SS1_STOREB_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 8 } }, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 22 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,) ; memb(+) = ",
	},
	{
		// 011011IIIIIIddddEE01iiiisssstttt | Rd = add(r29,II) ; memb(Rs+Ii) = Rt
		.encoding = { .mask = 0xfc00f000, .op = 0x6c001000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDSP_SS1_STOREB_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x6, 20 } }, .imm_scale = 2, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 20 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 8 } }, .syntax = 21 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 25 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(R29,) ; memb(+) = ",
	},
	{
		// 01110010SSSSddddEE01iiiisssstttt | Rd = and(RS,#1) ; memb(Rs+Ii) = Rt
		.encoding = { .mask = 0xff00f000, .op = 0x72001000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_AND1_SS1_STOREB_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 19 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 8 } }, .syntax = 20 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 24 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = and(,#1) ; memb(+) = ",
	},
	{
		// 011110100111ddddEE01iiiisssstttt | if (!p0) Rd = #0 ; memb(Rs+Ii) = Rt
		.encoding = { .mask = 0xfff0f000, .op = 0x7a701000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRF_SS1_STOREB_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 22 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 8 } }, .syntax = 23 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 27 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!P0)  = #0 ; memb(+) = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 011110100101ddddEE01iiiisssstttt | if (!p0.new) Rd = #0 ; memb(Rs+Ii) = Rt
		.encoding = { .mask = 0xfff0f000, .op = 0x7a501000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRFNEW_SS1_STOREB_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 26 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 8 } }, .syntax = 27 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 31 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!P0.new)  = #0 ; memb(+) = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 011110100110ddddEE01iiiisssstttt | if (p0) Rd = #0 ; memb(Rs+Ii) = Rt
		.encoding = { .mask = 0xfff0f000, .op = 0x7a601000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRT_SS1_STOREB_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 21 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 8 } }, .syntax = 22 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 26 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (P0)  = #0 ; memb(+) = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 011110100100ddddEE01iiiisssstttt | if (p0.new) Rd = #0 ; memb(Rs+Ii) = Rt
		.encoding = { .mask = 0xfff0f000, .op = 0x7a401000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRTNEW_SS1_STOREB_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 25 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 8 } }, .syntax = 26 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 30 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (P0.new)  = #0 ; memb(+) = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01111001SSSS00IIEE01iiiisssstttt | p0 = cmp.eq(RS,II) ; memb(Rs+Ii) = Rt
		.encoding = { .mask = 0xff0cf000, .op = 0x79001000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CMPEQI_SS1_STOREB_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 16 } }, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 22 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 8 } }, .syntax = 23 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 27 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "P0 = cmp.eq(,) ; memb(+) = ",
	},
	{
		// 011111000II00dddEE01iiiisssstttt | Rdd = combine(#0,II) ; memb(Rs+Ii) = Rt
		.encoding = { .mask = 0xff98f000, .op = 0x7c001000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE0I_SS1_STOREB_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 21 } }, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 23 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 8 } }, .syntax = 24 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 28 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(#0,) ; memb(+) = ",
	},
	{
		// 011111000II01dddEE01iiiisssstttt | Rdd = combine(#1,II) ; memb(Rs+Ii) = Rt
		.encoding = { .mask = 0xff98f000, .op = 0x7c081000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE1I_SS1_STOREB_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 21 } }, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 23 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 8 } }, .syntax = 24 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 28 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(#1,) ; memb(+) = ",
	},
	{
		// 011111000II10dddEE01iiiisssstttt | Rdd = combine(#2,II) ; memb(Rs+Ii) = Rt
		.encoding = { .mask = 0xff98f000, .op = 0x7c101000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE2I_SS1_STOREB_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 21 } }, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 23 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 8 } }, .syntax = 24 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 28 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(#2,) ; memb(+) = ",
	},
	{
		// 011111000II11dddEE01iiiisssstttt | Rdd = combine(#3,II) ; memb(Rs+Ii) = Rt
		.encoding = { .mask = 0xff98f000, .op = 0x7c181000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE3I_SS1_STOREB_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 21 } }, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 23 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 8 } }, .syntax = 24 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 28 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(#3,) ; memb(+) = ",
	},
	{
		// 01111101SSSS1dddEE01iiiisssstttt | Rdd = combine(RS,#0) ; memb(Rs+Ii) = Rt
		.encoding = { .mask = 0xff08f000, .op = 0x7d081000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINERZ_SS1_STOREB_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 23 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 8 } }, .syntax = 24 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 28 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(,#0) ; memb(+) = ",
	},
	{
		// 01111101SSSS0dddEE01iiiisssstttt | Rdd = combine(#0,RS) ; memb(Rs+Ii) = Rt
		.encoding = { .mask = 0xff08f000, .op = 0x7d001000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINEZR_SS1_STOREB_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 23 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 8 } }, .syntax = 24 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 28 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(#0,) ; memb(+) = ",
	},
	{
		// 01110011SSSSddddEE01iiiisssstttt | Rd = add(RS,n1) ; memb(Rs+Ii) = Rt
		.encoding = { .mask = 0xff00f000, .op = 0x73001000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_DEC_SS1_STOREB_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 8 } }, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 22 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,) ; memb(+) = ",
	},
	{
		// 01110001SSSSddddEE01iiiisssstttt | Rd = add(RS,#1) ; memb(Rs+Ii) = Rt
		.encoding = { .mask = 0xff00f000, .op = 0x71001000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_INC_SS1_STOREB_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 19 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 8 } }, .syntax = 20 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 24 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,#1) ; memb(+) = ",
	},
	{
		// 011010IIIIIIddddEE01iiiisssstttt | Rd = II ; memb(Rs+Ii) = Rt
		.encoding = { .mask = 0xfc00f000, .op = 0x68001000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SETI_SS1_STOREB_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x6, 20 } }, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 8 } }, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 16 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ; memb(+) = ",
	},
	{
		// 011110100000ddddEE01iiiisssstttt | Rd = n1 ; memb(Rs+Ii) = Rt
		.encoding = { .mask = 0xfff0f000, .op = 0x7a001000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SETIN1_SS1_STOREB_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 8 } }, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 16 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ; memb(+) = ",
	},
	{
		// 01110101SSSSddddEE01iiiisssstttt | Rd = sxtb(RS) ; memb(Rs+Ii) = Rt
		.encoding = { .mask = 0xff00f000, .op = 0x75001000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SXTB_SS1_STOREB_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 8 } }, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 22 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = sxtb() ; memb(+) = ",
	},
	{
		// 01110100SSSSddddEE01iiiisssstttt | Rd = sxth(RS) ; memb(Rs+Ii) = Rt
		.encoding = { .mask = 0xff00f000, .op = 0x74001000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SXTH_SS1_STOREB_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 8 } }, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 22 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = sxth() ; memb(+) = ",
	},
	{
		// 01110000SSSSddddEE01iiiisssstttt | Rd = RS ; memb(Rs+Ii) = Rt
		.encoding = { .mask = 0xff00f000, .op = 0x70001000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_TFR_SS1_STOREB_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 8 } }, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 16 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ; memb(+) = ",
	},
	{
		// 01110111SSSSddddEE01iiiisssstttt | Rd = and(RS,#255) ; memb(Rs+Ii) = Rt
		.encoding = { .mask = 0xff00f000, .op = 0x77001000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ZXTB_SS1_STOREB_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 21 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 8 } }, .syntax = 22 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 26 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = and(,#255) ; memb(+) = ",
	},
	{
		// 01110110SSSSddddEE01iiiisssstttt | Rd = zxth(RS) ; memb(Rs+Ii) = Rt
		.encoding = { .mask = 0xff00f000, .op = 0x76001000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ZXTH_SS1_STOREB_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 8 } }, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 22 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = zxth() ; memb(+) = ",
	},
	{
		// 011010IIIIIIddddEE01iiiisssstttt | Rd = II ; memb(Rs+Ii) = Rt
		.encoding = { .mask = 0xfc00f000, .op = 0x68001000 },
		.id = HEX_INS_X2_AUTOJOIN_UNDOCUMENTED_SA2_TFRSI_SS1_STOREB_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x6, 20 } }, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 8 } }, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 16 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ; memb(+) = ",
	},
	{
		// 01100IIIIIIIxxxxEE00iiiisssstttt | Rx = add(Rxin,II) ; memw(Rs+Ii) = Rt
		.encoding = { .mask = 0xf800f000, .op = 0x60000000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDI_SS1_STOREW_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 20 } }, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 8 } }, .imm_scale = 2, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 22 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,) ; memw(+) = ",
	},
	{
		// 01111000SSSSxxxxEE00iiiisssstttt | Rx = add(Rxin,RS) ; memw(Rs+Ii) = Rt
		.encoding = { .mask = 0xff00f000, .op = 0x78000000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDRX_SS1_STOREW_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 8 } }, .imm_scale = 2, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 22 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,) ; memw(+) = ",
	},
	{
		// 011011IIIIIIddddEE00iiiisssstttt | Rd = add(r29,II) ; memw(Rs+Ii) = Rt
		.encoding = { .mask = 0xfc00f000, .op = 0x6c000000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDSP_SS1_STOREW_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x6, 20 } }, .imm_scale = 2, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 20 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 8 } }, .imm_scale = 2, .syntax = 21 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 25 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(R29,) ; memw(+) = ",
	},
	{
		// 01110010SSSSddddEE00iiiisssstttt | Rd = and(RS,#1) ; memw(Rs+Ii) = Rt
		.encoding = { .mask = 0xff00f000, .op = 0x72000000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_AND1_SS1_STOREW_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 19 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 8 } }, .imm_scale = 2, .syntax = 20 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 24 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = and(,#1) ; memw(+) = ",
	},
	{
		// 011110100111ddddEE00iiiisssstttt | if (!p0) Rd = #0 ; memw(Rs+Ii) = Rt
		.encoding = { .mask = 0xfff0f000, .op = 0x7a700000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRF_SS1_STOREW_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 22 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 8 } }, .imm_scale = 2, .syntax = 23 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 27 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!P0)  = #0 ; memw(+) = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 011110100101ddddEE00iiiisssstttt | if (!p0.new) Rd = #0 ; memw(Rs+Ii) = Rt
		.encoding = { .mask = 0xfff0f000, .op = 0x7a500000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRFNEW_SS1_STOREW_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 26 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 8 } }, .imm_scale = 2, .syntax = 27 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 31 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!P0.new)  = #0 ; memw(+) = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 011110100110ddddEE00iiiisssstttt | if (p0) Rd = #0 ; memw(Rs+Ii) = Rt
		.encoding = { .mask = 0xfff0f000, .op = 0x7a600000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRT_SS1_STOREW_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 21 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 8 } }, .imm_scale = 2, .syntax = 22 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 26 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (P0)  = #0 ; memw(+) = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 011110100100ddddEE00iiiisssstttt | if (p0.new) Rd = #0 ; memw(Rs+Ii) = Rt
		.encoding = { .mask = 0xfff0f000, .op = 0x7a400000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRTNEW_SS1_STOREW_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 25 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 8 } }, .imm_scale = 2, .syntax = 26 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 30 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (P0.new)  = #0 ; memw(+) = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01111001SSSS00IIEE00iiiisssstttt | p0 = cmp.eq(RS,II) ; memw(Rs+Ii) = Rt
		.encoding = { .mask = 0xff0cf000, .op = 0x79000000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CMPEQI_SS1_STOREW_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 16 } }, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 22 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 8 } }, .imm_scale = 2, .syntax = 23 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 27 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "P0 = cmp.eq(,) ; memw(+) = ",
	},
	{
		// 011111000II00dddEE00iiiisssstttt | Rdd = combine(#0,II) ; memw(Rs+Ii) = Rt
		.encoding = { .mask = 0xff98f000, .op = 0x7c000000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE0I_SS1_STOREW_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 21 } }, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 23 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 8 } }, .imm_scale = 2, .syntax = 24 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 28 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(#0,) ; memw(+) = ",
	},
	{
		// 011111000II01dddEE00iiiisssstttt | Rdd = combine(#1,II) ; memw(Rs+Ii) = Rt
		.encoding = { .mask = 0xff98f000, .op = 0x7c080000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE1I_SS1_STOREW_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 21 } }, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 23 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 8 } }, .imm_scale = 2, .syntax = 24 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 28 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(#1,) ; memw(+) = ",
	},
	{
		// 011111000II10dddEE00iiiisssstttt | Rdd = combine(#2,II) ; memw(Rs+Ii) = Rt
		.encoding = { .mask = 0xff98f000, .op = 0x7c100000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE2I_SS1_STOREW_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 21 } }, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 23 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 8 } }, .imm_scale = 2, .syntax = 24 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 28 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(#2,) ; memw(+) = ",
	},
	{
		// 011111000II11dddEE00iiiisssstttt | Rdd = combine(#3,II) ; memw(Rs+Ii) = Rt
		.encoding = { .mask = 0xff98f000, .op = 0x7c180000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE3I_SS1_STOREW_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 21 } }, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 23 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 8 } }, .imm_scale = 2, .syntax = 24 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 28 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(#3,) ; memw(+) = ",
	},
	{
		// 01111101SSSS1dddEE00iiiisssstttt | Rdd = combine(RS,#0) ; memw(Rs+Ii) = Rt
		.encoding = { .mask = 0xff08f000, .op = 0x7d080000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINERZ_SS1_STOREW_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 23 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 8 } }, .imm_scale = 2, .syntax = 24 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 28 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(,#0) ; memw(+) = ",
	},
	{
		// 01111101SSSS0dddEE00iiiisssstttt | Rdd = combine(#0,RS) ; memw(Rs+Ii) = Rt
		.encoding = { .mask = 0xff08f000, .op = 0x7d000000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINEZR_SS1_STOREW_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 23 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 8 } }, .imm_scale = 2, .syntax = 24 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 28 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(#0,) ; memw(+) = ",
	},
	{
		// 01110011SSSSddddEE00iiiisssstttt | Rd = add(RS,n1) ; memw(Rs+Ii) = Rt
		.encoding = { .mask = 0xff00f000, .op = 0x73000000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_DEC_SS1_STOREW_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 8 } }, .imm_scale = 2, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 22 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,) ; memw(+) = ",
	},
	{
		// 01110001SSSSddddEE00iiiisssstttt | Rd = add(RS,#1) ; memw(Rs+Ii) = Rt
		.encoding = { .mask = 0xff00f000, .op = 0x71000000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_INC_SS1_STOREW_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 19 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 8 } }, .imm_scale = 2, .syntax = 20 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 24 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,#1) ; memw(+) = ",
	},
	{
		// 011010IIIIIIddddEE00iiiisssstttt | Rd = II ; memw(Rs+Ii) = Rt
		.encoding = { .mask = 0xfc00f000, .op = 0x68000000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SETI_SS1_STOREW_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x6, 20 } }, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 8 } }, .imm_scale = 2, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 16 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ; memw(+) = ",
	},
	{
		// 011110100000ddddEE00iiiisssstttt | Rd = n1 ; memw(Rs+Ii) = Rt
		.encoding = { .mask = 0xfff0f000, .op = 0x7a000000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SETIN1_SS1_STOREW_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 8 } }, .imm_scale = 2, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 16 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ; memw(+) = ",
	},
	{
		// 01110101SSSSddddEE00iiiisssstttt | Rd = sxtb(RS) ; memw(Rs+Ii) = Rt
		.encoding = { .mask = 0xff00f000, .op = 0x75000000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SXTB_SS1_STOREW_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 8 } }, .imm_scale = 2, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 22 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = sxtb() ; memw(+) = ",
	},
	{
		// 01110100SSSSddddEE00iiiisssstttt | Rd = sxth(RS) ; memw(Rs+Ii) = Rt
		.encoding = { .mask = 0xff00f000, .op = 0x74000000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SXTH_SS1_STOREW_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 8 } }, .imm_scale = 2, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 22 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = sxth() ; memw(+) = ",
	},
	{
		// 01110000SSSSddddEE00iiiisssstttt | Rd = RS ; memw(Rs+Ii) = Rt
		.encoding = { .mask = 0xff00f000, .op = 0x70000000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_TFR_SS1_STOREW_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 8 } }, .imm_scale = 2, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 16 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ; memw(+) = ",
	},
	{
		// 01110111SSSSddddEE00iiiisssstttt | Rd = and(RS,#255) ; memw(Rs+Ii) = Rt
		.encoding = { .mask = 0xff00f000, .op = 0x77000000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ZXTB_SS1_STOREW_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 21 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 8 } }, .imm_scale = 2, .syntax = 22 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 26 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = and(,#255) ; memw(+) = ",
	},
	{
		// 01110110SSSSddddEE00iiiisssstttt | Rd = zxth(RS) ; memw(Rs+Ii) = Rt
		.encoding = { .mask = 0xff00f000, .op = 0x76000000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ZXTH_SS1_STOREW_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 8 } }, .imm_scale = 2, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 22 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = zxth() ; memw(+) = ",
	},
	{
		// 011010IIIIIIddddEE00iiiisssstttt | Rd = II ; memw(Rs+Ii) = Rt
		.encoding = { .mask = 0xfc00f000, .op = 0x68000000 },
		.id = HEX_INS_X2_AUTOJOIN_UNDOCUMENTED_SA2_TFRSI_SS1_STOREW_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x6, 20 } }, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 8 } }, .imm_scale = 2, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 16 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ; memw(+) = ",
	},
	{ { 0 } },
};

static const HexInsnTemplate templates_duplex_0x7[] = {
	{
		// 01100IIIIIIIxxxxEE11110iiiii0000 | Rx = add(Rxin,II) ; allocframe(Ii)
		.encoding = { .mask = 0xf800fe0f, .op = 0x60003c00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDI_SS2_ALLOCFRAME,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 20 } }, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 4 } }, .imm_scale = 3, .syntax = 23 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,) ; allocframe()",
	},
	{
		// 01111000ssssxxxxEE11110iiiii0000 | Rx = add(Rxin,Rs) ; allocframe(Ii)
		.encoding = { .mask = 0xff00fe0f, .op = 0x78003c00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDRX_SS2_ALLOCFRAME,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 4 } }, .imm_scale = 3, .syntax = 23 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,) ; allocframe()",
	},
	{
		// 011011IIIIIIddddEE11110iiiii0000 | Rd = add(r29,II) ; allocframe(Ii)
		.encoding = { .mask = 0xfc00fe0f, .op = 0x6c003c00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDSP_SS2_ALLOCFRAME,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x6, 20 } }, .imm_scale = 2, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 4 } }, .imm_scale = 3, .syntax = 26 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(R29,) ; allocframe()",
	},
	{
		// 01110010ssssddddEE11110iiiii0000 | Rd = and(Rs,#1) ; allocframe(Ii)
		.encoding = { .mask = 0xff00fe0f, .op = 0x72003c00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_AND1_SS2_ALLOCFRAME,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 4 } }, .imm_scale = 3, .syntax = 25 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = and(,#1) ; allocframe()",
	},
	{
		// 011110100111ddddEE11110iiiii0000 | if (!p0) Rd = #0 ; allocframe(Ii)
		.encoding = { .mask = 0xfff0fe0f, .op = 0x7a703c00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRF_SS2_ALLOCFRAME,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 4 } }, .imm_scale = 3, .syntax = 28 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!P0)  = #0 ; allocframe()",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 011110100101ddddEE11110iiiii0000 | if (!p0.new) Rd = #0 ; allocframe(Ii)
		.encoding = { .mask = 0xfff0fe0f, .op = 0x7a503c00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRFNEW_SS2_ALLOCFRAME,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 4 } }, .imm_scale = 3, .syntax = 32 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!P0.new)  = #0 ; allocframe()",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 011110100110ddddEE11110iiiii0000 | if (p0) Rd = #0 ; allocframe(Ii)
		.encoding = { .mask = 0xfff0fe0f, .op = 0x7a603c00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRT_SS2_ALLOCFRAME,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 4 } }, .imm_scale = 3, .syntax = 27 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (P0)  = #0 ; allocframe()",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 011110100100ddddEE11110iiiii0000 | if (p0.new) Rd = #0 ; allocframe(Ii)
		.encoding = { .mask = 0xfff0fe0f, .op = 0x7a403c00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRTNEW_SS2_ALLOCFRAME,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 4 } }, .imm_scale = 3, .syntax = 31 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (P0.new)  = #0 ; allocframe()",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01111001ssss00IIEE11110iiiii0000 | p0 = cmp.eq(Rs,II) ; allocframe(Ii)
		.encoding = { .mask = 0xff0cfe0f, .op = 0x79003c00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CMPEQI_SS2_ALLOCFRAME,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 16 } }, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 4 } }, .imm_scale = 3, .syntax = 28 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "P0 = cmp.eq(,) ; allocframe()",
	},
	{
		// 011111000II00dddEE11110iiiii0000 | Rdd = combine(#0,II) ; allocframe(Ii)
		.encoding = { .mask = 0xff98fe0f, .op = 0x7c003c00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE0I_SS2_ALLOCFRAME,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 21 } }, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 4 } }, .imm_scale = 3, .syntax = 29 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(#0,) ; allocframe()",
	},
	{
		// 011111000II01dddEE11110iiiii0000 | Rdd = combine(#1,II) ; allocframe(Ii)
		.encoding = { .mask = 0xff98fe0f, .op = 0x7c083c00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE1I_SS2_ALLOCFRAME,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 21 } }, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 4 } }, .imm_scale = 3, .syntax = 29 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(#1,) ; allocframe()",
	},
	{
		// 011111000II10dddEE11110iiiii0000 | Rdd = combine(#2,II) ; allocframe(Ii)
		.encoding = { .mask = 0xff98fe0f, .op = 0x7c103c00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE2I_SS2_ALLOCFRAME,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 21 } }, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 4 } }, .imm_scale = 3, .syntax = 29 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(#2,) ; allocframe()",
	},
	{
		// 011111000II11dddEE11110iiiii0000 | Rdd = combine(#3,II) ; allocframe(Ii)
		.encoding = { .mask = 0xff98fe0f, .op = 0x7c183c00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE3I_SS2_ALLOCFRAME,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 21 } }, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 4 } }, .imm_scale = 3, .syntax = 29 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(#3,) ; allocframe()",
	},
	{
		// 01111101ssss1dddEE11110iiiii0000 | Rdd = combine(Rs,#0) ; allocframe(Ii)
		.encoding = { .mask = 0xff08fe0f, .op = 0x7d083c00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINERZ_SS2_ALLOCFRAME,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 4 } }, .imm_scale = 3, .syntax = 29 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(,#0) ; allocframe()",
	},
	{
		// 01111101ssss0dddEE11110iiiii0000 | Rdd = combine(#0,Rs) ; allocframe(Ii)
		.encoding = { .mask = 0xff08fe0f, .op = 0x7d003c00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINEZR_SS2_ALLOCFRAME,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 4 } }, .imm_scale = 3, .syntax = 29 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(#0,) ; allocframe()",
	},
	{
		// 01110011ssssddddEE11110iiiii0000 | Rd = add(Rs,n1) ; allocframe(Ii)
		.encoding = { .mask = 0xff00fe0f, .op = 0x73003c00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_DEC_SS2_ALLOCFRAME,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 4 } }, .imm_scale = 3, .syntax = 23 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,) ; allocframe()",
	},
	{
		// 01110001ssssddddEE11110iiiii0000 | Rd = add(Rs,#1) ; allocframe(Ii)
		.encoding = { .mask = 0xff00fe0f, .op = 0x71003c00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_INC_SS2_ALLOCFRAME,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 4 } }, .imm_scale = 3, .syntax = 25 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,#1) ; allocframe()",
	},
	{
		// 011010IIIIIIddddEE11110iiiii0000 | Rd = II ; allocframe(Ii)
		.encoding = { .mask = 0xfc00fe0f, .op = 0x68003c00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SETI_SS2_ALLOCFRAME,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x6, 20 } }, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 4 } }, .imm_scale = 3, .syntax = 17 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ; allocframe()",
	},
	{
		// 011110100000ddddEE11110iiiii0000 | Rd = n1 ; allocframe(Ii)
		.encoding = { .mask = 0xfff0fe0f, .op = 0x7a003c00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SETIN1_SS2_ALLOCFRAME,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 4 } }, .imm_scale = 3, .syntax = 17 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ; allocframe()",
	},
	{
		// 01110101ssssddddEE11110iiiii0000 | Rd = sxtb(Rs) ; allocframe(Ii)
		.encoding = { .mask = 0xff00fe0f, .op = 0x75003c00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SXTB_SS2_ALLOCFRAME,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 4 } }, .imm_scale = 3, .syntax = 23 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = sxtb() ; allocframe()",
	},
	{
		// 01110100ssssddddEE11110iiiii0000 | Rd = sxth(Rs) ; allocframe(Ii)
		.encoding = { .mask = 0xff00fe0f, .op = 0x74003c00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SXTH_SS2_ALLOCFRAME,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 4 } }, .imm_scale = 3, .syntax = 23 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = sxth() ; allocframe()",
	},
	{
		// 01110000ssssddddEE11110iiiii0000 | Rd = Rs ; allocframe(Ii)
		.encoding = { .mask = 0xff00fe0f, .op = 0x70003c00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_TFR_SS2_ALLOCFRAME,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 4 } }, .imm_scale = 3, .syntax = 17 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ; allocframe()",
	},
	{
		// 01110111ssssddddEE11110iiiii0000 | Rd = and(Rs,#255) ; allocframe(Ii)
		.encoding = { .mask = 0xff00fe0f, .op = 0x77003c00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ZXTB_SS2_ALLOCFRAME,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 4 } }, .imm_scale = 3, .syntax = 27 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = and(,#255) ; allocframe()",
	},
	{
		// 01110110ssssddddEE11110iiiii0000 | Rd = zxth(Rs) ; allocframe(Ii)
		.encoding = { .mask = 0xff00fe0f, .op = 0x76003c00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ZXTH_SS2_ALLOCFRAME,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 4 } }, .imm_scale = 3, .syntax = 23 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = zxth() ; allocframe()",
	},
	{
		// 011010IIIIIIddddEE11110iiiii0000 | Rd = II ; allocframe(Ii)
		.encoding = { .mask = 0xfc00fe0f, .op = 0x68003c00 },
		.id = HEX_INS_X2_AUTOJOIN_UNDOCUMENTED_SA2_TFRSI_SS2_ALLOCFRAME,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x6, 20 } }, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 4 } }, .imm_scale = 3, .syntax = 17 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ; allocframe()",
	},
	{
		// 01100IIIIIIIxxxxEE110010ssssiiii | Rx = add(Rxin,II) ; memb(Rs+Ii) = #0
		.encoding = { .mask = 0xf800ff00, .op = 0x60003200 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDI_SS2_STOREBI0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 20 } }, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 0 } }, .syntax = 18 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,) ; memb(+) = #0",
	},
	{
		// 01111000SSSSxxxxEE110010ssssiiii | Rx = add(Rxin,RS) ; memb(Rs+Ii) = #0
		.encoding = { .mask = 0xff00ff00, .op = 0x78003200 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDRX_SS2_STOREBI0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 0 } }, .syntax = 18 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,) ; memb(+) = #0",
	},
	{
		// 011011IIIIIIddddEE110010ssssiiii | Rd = add(r29,II) ; memb(Rs+Ii) = #0
		.encoding = { .mask = 0xfc00ff00, .op = 0x6c003200 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDSP_SS2_STOREBI0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x6, 20 } }, .imm_scale = 2, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 20 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 0 } }, .syntax = 21 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(R29,) ; memb(+) = #0",
	},
	{
		// 01110010SSSSddddEE110010ssssiiii | Rd = and(RS,#1) ; memb(Rs+Ii) = #0
		.encoding = { .mask = 0xff00ff00, .op = 0x72003200 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_AND1_SS2_STOREBI0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 19 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 0 } }, .syntax = 20 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = and(,#1) ; memb(+) = #0",
	},
	{
		// 011110100111ddddEE110010ssssiiii | if (!p0) Rd = #0 ; memb(Rs+Ii) = #0
		.encoding = { .mask = 0xfff0ff00, .op = 0x7a703200 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRF_SS2_STOREBI0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 22 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 0 } }, .syntax = 23 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!P0)  = #0 ; memb(+) = #0",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 011110100101ddddEE110010ssssiiii | if (!p0.new) Rd = #0 ; memb(Rs+Ii) = #0
		.encoding = { .mask = 0xfff0ff00, .op = 0x7a503200 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRFNEW_SS2_STOREBI0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 26 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 0 } }, .syntax = 27 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!P0.new)  = #0 ; memb(+) = #0",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 011110100110ddddEE110010ssssiiii | if (p0) Rd = #0 ; memb(Rs+Ii) = #0
		.encoding = { .mask = 0xfff0ff00, .op = 0x7a603200 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRT_SS2_STOREBI0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 21 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 0 } }, .syntax = 22 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (P0)  = #0 ; memb(+) = #0",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 011110100100ddddEE110010ssssiiii | if (p0.new) Rd = #0 ; memb(Rs+Ii) = #0
		.encoding = { .mask = 0xfff0ff00, .op = 0x7a403200 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRTNEW_SS2_STOREBI0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 25 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 0 } }, .syntax = 26 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (P0.new)  = #0 ; memb(+) = #0",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01111001SSSS00IIEE110010ssssiiii | p0 = cmp.eq(RS,II) ; memb(Rs+Ii) = #0
		.encoding = { .mask = 0xff0cff00, .op = 0x79003200 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CMPEQI_SS2_STOREBI0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 16 } }, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 22 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 0 } }, .syntax = 23 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "P0 = cmp.eq(,) ; memb(+) = #0",
	},
	{
		// 011111000II00dddEE110010ssssiiii | Rdd = combine(#0,II) ; memb(Rs+Ii) = #0
		.encoding = { .mask = 0xff98ff00, .op = 0x7c003200 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE0I_SS2_STOREBI0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 21 } }, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 23 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 0 } }, .syntax = 24 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(#0,) ; memb(+) = #0",
	},
	{
		// 011111000II01dddEE110010ssssiiii | Rdd = combine(#1,II) ; memb(Rs+Ii) = #0
		.encoding = { .mask = 0xff98ff00, .op = 0x7c083200 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE1I_SS2_STOREBI0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 21 } }, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 23 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 0 } }, .syntax = 24 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(#1,) ; memb(+) = #0",
	},
	{
		// 011111000II10dddEE110010ssssiiii | Rdd = combine(#2,II) ; memb(Rs+Ii) = #0
		.encoding = { .mask = 0xff98ff00, .op = 0x7c103200 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE2I_SS2_STOREBI0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 21 } }, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 23 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 0 } }, .syntax = 24 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(#2,) ; memb(+) = #0",
	},
	{
		// 011111000II11dddEE110010ssssiiii | Rdd = combine(#3,II) ; memb(Rs+Ii) = #0
		.encoding = { .mask = 0xff98ff00, .op = 0x7c183200 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE3I_SS2_STOREBI0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 21 } }, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 23 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 0 } }, .syntax = 24 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(#3,) ; memb(+) = #0",
	},
	{
		// 01111101SSSS1dddEE110010ssssiiii | Rdd = combine(RS,#0) ; memb(Rs+Ii) = #0
		.encoding = { .mask = 0xff08ff00, .op = 0x7d083200 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINERZ_SS2_STOREBI0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 23 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 0 } }, .syntax = 24 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(,#0) ; memb(+) = #0",
	},
	{
		// 01111101SSSS0dddEE110010ssssiiii | Rdd = combine(#0,RS) ; memb(Rs+Ii) = #0
		.encoding = { .mask = 0xff08ff00, .op = 0x7d003200 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINEZR_SS2_STOREBI0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 23 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 0 } }, .syntax = 24 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(#0,) ; memb(+) = #0",
	},
	{
		// 01110011SSSSddddEE110010ssssiiii | Rd = add(RS,n1) ; memb(Rs+Ii) = #0
		.encoding = { .mask = 0xff00ff00, .op = 0x73003200 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_DEC_SS2_STOREBI0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 0 } }, .syntax = 18 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,) ; memb(+) = #0",
	},
	{
		// 01110001SSSSddddEE110010ssssiiii | Rd = add(RS,#1) ; memb(Rs+Ii) = #0
		.encoding = { .mask = 0xff00ff00, .op = 0x71003200 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_INC_SS2_STOREBI0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 19 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 0 } }, .syntax = 20 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,#1) ; memb(+) = #0",
	},
	{
		// 011010IIIIIIddddEE110010ssssiiii | Rd = II ; memb(Rs+Ii) = #0
		.encoding = { .mask = 0xfc00ff00, .op = 0x68003200 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SETI_SS2_STOREBI0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x6, 20 } }, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 0 } }, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ; memb(+) = #0",
	},
	{
		// 011110100000ddddEE110010ssssiiii | Rd = n1 ; memb(Rs+Ii) = #0
		.encoding = { .mask = 0xfff0ff00, .op = 0x7a003200 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SETIN1_SS2_STOREBI0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 0 } }, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ; memb(+) = #0",
	},
	{
		// 01110101SSSSddddEE110010ssssiiii | Rd = sxtb(RS) ; memb(Rs+Ii) = #0
		.encoding = { .mask = 0xff00ff00, .op = 0x75003200 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SXTB_SS2_STOREBI0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 0 } }, .syntax = 18 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = sxtb() ; memb(+) = #0",
	},
	{
		// 01110100SSSSddddEE110010ssssiiii | Rd = sxth(RS) ; memb(Rs+Ii) = #0
		.encoding = { .mask = 0xff00ff00, .op = 0x74003200 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SXTH_SS2_STOREBI0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 0 } }, .syntax = 18 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = sxth() ; memb(+) = #0",
	},
	{
		// 01110000SSSSddddEE110010ssssiiii | Rd = RS ; memb(Rs+Ii) = #0
		.encoding = { .mask = 0xff00ff00, .op = 0x70003200 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_TFR_SS2_STOREBI0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 0 } }, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ; memb(+) = #0",
	},
	{
		// 01110111SSSSddddEE110010ssssiiii | Rd = and(RS,#255) ; memb(Rs+Ii) = #0
		.encoding = { .mask = 0xff00ff00, .op = 0x77003200 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ZXTB_SS2_STOREBI0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 21 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 0 } }, .syntax = 22 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = and(,#255) ; memb(+) = #0",
	},
	{
		// 01110110SSSSddddEE110010ssssiiii | Rd = zxth(RS) ; memb(Rs+Ii) = #0
		.encoding = { .mask = 0xff00ff00, .op = 0x76003200 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ZXTH_SS2_STOREBI0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 0 } }, .syntax = 18 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = zxth() ; memb(+) = #0",
	},
	{
		// 011010IIIIIIddddEE110010ssssiiii | Rd = II ; memb(Rs+Ii) = #0
		.encoding = { .mask = 0xfc00ff00, .op = 0x68003200 },
		.id = HEX_INS_X2_AUTOJOIN_UNDOCUMENTED_SA2_TFRSI_SS2_STOREBI0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x6, 20 } }, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 0 } }, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ; memb(+) = #0",
	},
	{
		// 01100IIIIIIIxxxxEE110011ssssiiii | Rx = add(Rxin,II) ; memb(Rs+Ii) = #1
		.encoding = { .mask = 0xf800ff00, .op = 0x60003300 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDI_SS2_STOREBI1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 20 } }, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 0 } }, .syntax = 18 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,) ; memb(+) = #1",
	},
	{
		// 01111000SSSSxxxxEE110011ssssiiii | Rx = add(Rxin,RS) ; memb(Rs+Ii) = #1
		.encoding = { .mask = 0xff00ff00, .op = 0x78003300 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDRX_SS2_STOREBI1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 0 } }, .syntax = 18 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,) ; memb(+) = #1",
	},
	{
		// 011011IIIIIIddddEE110011ssssiiii | Rd = add(r29,II) ; memb(Rs+Ii) = #1
		.encoding = { .mask = 0xfc00ff00, .op = 0x6c003300 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDSP_SS2_STOREBI1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x6, 20 } }, .imm_scale = 2, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 20 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 0 } }, .syntax = 21 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(R29,) ; memb(+) = #1",
	},
	{
		// 01110010SSSSddddEE110011ssssiiii | Rd = and(RS,#1) ; memb(Rs+Ii) = #1
		.encoding = { .mask = 0xff00ff00, .op = 0x72003300 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_AND1_SS2_STOREBI1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 19 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 0 } }, .syntax = 20 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = and(,#1) ; memb(+) = #1",
	},
	{
		// 011110100111ddddEE110011ssssiiii | if (!p0) Rd = #0 ; memb(Rs+Ii) = #1
		.encoding = { .mask = 0xfff0ff00, .op = 0x7a703300 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRF_SS2_STOREBI1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 22 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 0 } }, .syntax = 23 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!P0)  = #0 ; memb(+) = #1",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 011110100101ddddEE110011ssssiiii | if (!p0.new) Rd = #0 ; memb(Rs+Ii) = #1
		.encoding = { .mask = 0xfff0ff00, .op = 0x7a503300 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRFNEW_SS2_STOREBI1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 26 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 0 } }, .syntax = 27 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!P0.new)  = #0 ; memb(+) = #1",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 011110100110ddddEE110011ssssiiii | if (p0) Rd = #0 ; memb(Rs+Ii) = #1
		.encoding = { .mask = 0xfff0ff00, .op = 0x7a603300 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRT_SS2_STOREBI1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 21 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 0 } }, .syntax = 22 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (P0)  = #0 ; memb(+) = #1",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 011110100100ddddEE110011ssssiiii | if (p0.new) Rd = #0 ; memb(Rs+Ii) = #1
		.encoding = { .mask = 0xfff0ff00, .op = 0x7a403300 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRTNEW_SS2_STOREBI1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 25 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 0 } }, .syntax = 26 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (P0.new)  = #0 ; memb(+) = #1",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01111001SSSS00IIEE110011ssssiiii | p0 = cmp.eq(RS,II) ; memb(Rs+Ii) = #1
		.encoding = { .mask = 0xff0cff00, .op = 0x79003300 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CMPEQI_SS2_STOREBI1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 16 } }, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 22 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 0 } }, .syntax = 23 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "P0 = cmp.eq(,) ; memb(+) = #1",
	},
	{
		// 011111000II00dddEE110011ssssiiii | Rdd = combine(#0,II) ; memb(Rs+Ii) = #1
		.encoding = { .mask = 0xff98ff00, .op = 0x7c003300 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE0I_SS2_STOREBI1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 21 } }, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 23 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 0 } }, .syntax = 24 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(#0,) ; memb(+) = #1",
	},
	{
		// 011111000II01dddEE110011ssssiiii | Rdd = combine(#1,II) ; memb(Rs+Ii) = #1
		.encoding = { .mask = 0xff98ff00, .op = 0x7c083300 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE1I_SS2_STOREBI1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 21 } }, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 23 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 0 } }, .syntax = 24 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(#1,) ; memb(+) = #1",
	},
	{
		// 011111000II10dddEE110011ssssiiii | Rdd = combine(#2,II) ; memb(Rs+Ii) = #1
		.encoding = { .mask = 0xff98ff00, .op = 0x7c103300 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE2I_SS2_STOREBI1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 21 } }, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 23 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 0 } }, .syntax = 24 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(#2,) ; memb(+) = #1",
	},
	{
		// 011111000II11dddEE110011ssssiiii | Rdd = combine(#3,II) ; memb(Rs+Ii) = #1
		.encoding = { .mask = 0xff98ff00, .op = 0x7c183300 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE3I_SS2_STOREBI1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 21 } }, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 23 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 0 } }, .syntax = 24 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(#3,) ; memb(+) = #1",
	},
	{
		// 01111101SSSS1dddEE110011ssssiiii | Rdd = combine(RS,#0) ; memb(Rs+Ii) = #1
		.encoding = { .mask = 0xff08ff00, .op = 0x7d083300 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINERZ_SS2_STOREBI1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 23 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 0 } }, .syntax = 24 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(,#0) ; memb(+) = #1",
	},
	{
		// 01111101SSSS0dddEE110011ssssiiii | Rdd = combine(#0,RS) ; memb(Rs+Ii) = #1
		.encoding = { .mask = 0xff08ff00, .op = 0x7d003300 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINEZR_SS2_STOREBI1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 23 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 0 } }, .syntax = 24 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(#0,) ; memb(+) = #1",
	},
	{
		// 01110011SSSSddddEE110011ssssiiii | Rd = add(RS,n1) ; memb(Rs+Ii) = #1
		.encoding = { .mask = 0xff00ff00, .op = 0x73003300 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_DEC_SS2_STOREBI1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 0 } }, .syntax = 18 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,) ; memb(+) = #1",
	},
	{
		// 01110001SSSSddddEE110011ssssiiii | Rd = add(RS,#1) ; memb(Rs+Ii) = #1
		.encoding = { .mask = 0xff00ff00, .op = 0x71003300 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_INC_SS2_STOREBI1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 19 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 0 } }, .syntax = 20 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,#1) ; memb(+) = #1",
	},
	{
		// 011010IIIIIIddddEE110011ssssiiii | Rd = II ; memb(Rs+Ii) = #1
		.encoding = { .mask = 0xfc00ff00, .op = 0x68003300 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SETI_SS2_STOREBI1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x6, 20 } }, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 0 } }, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ; memb(+) = #1",
	},
	{
		// 011110100000ddddEE110011ssssiiii | Rd = n1 ; memb(Rs+Ii) = #1
		.encoding = { .mask = 0xfff0ff00, .op = 0x7a003300 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SETIN1_SS2_STOREBI1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 0 } }, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ; memb(+) = #1",
	},
	{
		// 01110101SSSSddddEE110011ssssiiii | Rd = sxtb(RS) ; memb(Rs+Ii) = #1
		.encoding = { .mask = 0xff00ff00, .op = 0x75003300 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SXTB_SS2_STOREBI1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 0 } }, .syntax = 18 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = sxtb() ; memb(+) = #1",
	},
	{
		// 01110100SSSSddddEE110011ssssiiii | Rd = sxth(RS) ; memb(Rs+Ii) = #1
		.encoding = { .mask = 0xff00ff00, .op = 0x74003300 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SXTH_SS2_STOREBI1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 0 } }, .syntax = 18 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = sxth() ; memb(+) = #1",
	},
	{
		// 01110000SSSSddddEE110011ssssiiii | Rd = RS ; memb(Rs+Ii) = #1
		.encoding = { .mask = 0xff00ff00, .op = 0x70003300 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_TFR_SS2_STOREBI1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 0 } }, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ; memb(+) = #1",
	},
	{
		// 01110111SSSSddddEE110011ssssiiii | Rd = and(RS,#255) ; memb(Rs+Ii) = #1
		.encoding = { .mask = 0xff00ff00, .op = 0x77003300 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ZXTB_SS2_STOREBI1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 21 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 0 } }, .syntax = 22 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = and(,#255) ; memb(+) = #1",
	},
	{
		// 01110110SSSSddddEE110011ssssiiii | Rd = zxth(RS) ; memb(Rs+Ii) = #1
		.encoding = { .mask = 0xff00ff00, .op = 0x76003300 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ZXTH_SS2_STOREBI1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 0 } }, .syntax = 18 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = zxth() ; memb(+) = #1",
	},
	{
		// 011010IIIIIIddddEE110011ssssiiii | Rd = II ; memb(Rs+Ii) = #1
		.encoding = { .mask = 0xfc00ff00, .op = 0x68003300 },
		.id = HEX_INS_X2_AUTOJOIN_UNDOCUMENTED_SA2_TFRSI_SS2_STOREBI1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x6, 20 } }, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 0 } }, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ; memb(+) = #1",
	},
	{
		// 01100IIIIIIIxxxxEE10101iiiiiittt | Rx = add(Rxin,II) ; memd(r29+Ii) = Rtt
		.encoding = { .mask = 0xf800fe00, .op = 0x60002a00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDI_SS2_STORED_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 20 } }, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED, .masks = { { 0x6, 3 } }, .imm_scale = 3, .syntax = 21 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 25 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,) ; memd(R29+) = ",
	},
	{
		// 01111000ssssxxxxEE10101iiiiiittt | Rx = add(Rxin,Rs) ; memd(r29+Ii) = Rtt
		.encoding = { .mask = 0xff00fe00, .op = 0x78002a00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDRX_SS2_STORED_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x6, 3 } }, .imm_scale = 3, .syntax = 21 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 25 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,) ; memd(R29+) = ",
	},
	{
		// 011011IIIIIIddddEE10101iiiiiittt | Rd = add(r29,II) ; memd(r29+Ii) = Rtt
		.encoding = { .mask = 0xfc00fe00, .op = 0x6c002a00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDSP_SS2_STORED_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x6, 20 } }, .imm_scale = 2, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED, .masks = { { 0x6, 3 } }, .imm_scale = 3, .syntax = 24 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 28 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(R29,) ; memd(R29+) = ",
	},
	{
		// 01110010ssssddddEE10101iiiiiittt | Rd = and(Rs,#1) ; memd(r29+Ii) = Rtt
		.encoding = { .mask = 0xff00fe00, .op = 0x72002a00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_AND1_SS2_STORED_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x6, 3 } }, .imm_scale = 3, .syntax = 23 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 27 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = and(,#1) ; memd(R29+) = ",
	},
	{
		// 011110100111ddddEE10101iiiiiittt | if (!p0) Rd = #0 ; memd(r29+Ii) = Rtt
		.encoding = { .mask = 0xfff0fe00, .op = 0x7a702a00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRF_SS2_STORED_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x6, 3 } }, .imm_scale = 3, .syntax = 26 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 30 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!P0)  = #0 ; memd(R29+) = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 011110100101ddddEE10101iiiiiittt | if (!p0.new) Rd = #0 ; memd(r29+Ii) = Rtt
		.encoding = { .mask = 0xfff0fe00, .op = 0x7a502a00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRFNEW_SS2_STORED_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x6, 3 } }, .imm_scale = 3, .syntax = 30 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 34 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!P0.new)  = #0 ; memd(R29+) = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 011110100110ddddEE10101iiiiiittt | if (p0) Rd = #0 ; memd(r29+Ii) = Rtt
		.encoding = { .mask = 0xfff0fe00, .op = 0x7a602a00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRT_SS2_STORED_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x6, 3 } }, .imm_scale = 3, .syntax = 25 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 29 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (P0)  = #0 ; memd(R29+) = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 011110100100ddddEE10101iiiiiittt | if (p0.new) Rd = #0 ; memd(r29+Ii) = Rtt
		.encoding = { .mask = 0xfff0fe00, .op = 0x7a402a00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRTNEW_SS2_STORED_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x6, 3 } }, .imm_scale = 3, .syntax = 29 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 33 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (P0.new)  = #0 ; memd(R29+) = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01111001ssss00IIEE10101iiiiiittt | p0 = cmp.eq(Rs,II) ; memd(r29+Ii) = Rtt
		.encoding = { .mask = 0xff0cfe00, .op = 0x79002a00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CMPEQI_SS2_STORED_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 16 } }, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED, .masks = { { 0x6, 3 } }, .imm_scale = 3, .syntax = 26 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 30 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "P0 = cmp.eq(,) ; memd(R29+) = ",
	},
	{
		// 011111000II00dddEE10101iiiiiittt | Rdd = combine(#0,II) ; memd(r29+Ii) = Rtt
		.encoding = { .mask = 0xff98fe00, .op = 0x7c002a00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE0I_SS2_STORED_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 21 } }, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED, .masks = { { 0x6, 3 } }, .imm_scale = 3, .syntax = 27 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 31 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(#0,) ; memd(R29+) = ",
	},
	{
		// 011111000II01dddEE10101iiiiiittt | Rdd = combine(#1,II) ; memd(r29+Ii) = Rtt
		.encoding = { .mask = 0xff98fe00, .op = 0x7c082a00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE1I_SS2_STORED_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 21 } }, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED, .masks = { { 0x6, 3 } }, .imm_scale = 3, .syntax = 27 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 31 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(#1,) ; memd(R29+) = ",
	},
	{
		// 011111000II10dddEE10101iiiiiittt | Rdd = combine(#2,II) ; memd(r29+Ii) = Rtt
		.encoding = { .mask = 0xff98fe00, .op = 0x7c102a00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE2I_SS2_STORED_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 21 } }, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED, .masks = { { 0x6, 3 } }, .imm_scale = 3, .syntax = 27 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 31 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(#2,) ; memd(R29+) = ",
	},
	{
		// 011111000II11dddEE10101iiiiiittt | Rdd = combine(#3,II) ; memd(r29+Ii) = Rtt
		.encoding = { .mask = 0xff98fe00, .op = 0x7c182a00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE3I_SS2_STORED_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 21 } }, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED, .masks = { { 0x6, 3 } }, .imm_scale = 3, .syntax = 27 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 31 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(#3,) ; memd(R29+) = ",
	},
	{
		// 01111101ssss1dddEE10101iiiiiittt | Rdd = combine(Rs,#0) ; memd(r29+Ii) = Rtt
		.encoding = { .mask = 0xff08fe00, .op = 0x7d082a00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINERZ_SS2_STORED_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x6, 3 } }, .imm_scale = 3, .syntax = 27 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 31 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(,#0) ; memd(R29+) = ",
	},
	{
		// 01111101ssss0dddEE10101iiiiiittt | Rdd = combine(#0,Rs) ; memd(r29+Ii) = Rtt
		.encoding = { .mask = 0xff08fe00, .op = 0x7d002a00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINEZR_SS2_STORED_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x6, 3 } }, .imm_scale = 3, .syntax = 27 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 31 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(#0,) ; memd(R29+) = ",
	},
	{
		// 01110011ssssddddEE10101iiiiiittt | Rd = add(Rs,n1) ; memd(r29+Ii) = Rtt
		.encoding = { .mask = 0xff00fe00, .op = 0x73002a00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_DEC_SS2_STORED_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED, .masks = { { 0x6, 3 } }, .imm_scale = 3, .syntax = 21 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 25 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,) ; memd(R29+) = ",
	},
	{
		// 01110001ssssddddEE10101iiiiiittt | Rd = add(Rs,#1) ; memd(r29+Ii) = Rtt
		.encoding = { .mask = 0xff00fe00, .op = 0x71002a00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_INC_SS2_STORED_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x6, 3 } }, .imm_scale = 3, .syntax = 23 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 27 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,#1) ; memd(R29+) = ",
	},
	{
		// 011010IIIIIIddddEE10101iiiiiittt | Rd = II ; memd(r29+Ii) = Rtt
		.encoding = { .mask = 0xfc00fe00, .op = 0x68002a00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SETI_SS2_STORED_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x6, 20 } }, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED, .masks = { { 0x6, 3 } }, .imm_scale = 3, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 19 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ; memd(R29+) = ",
	},
	{
		// 011110100000ddddEE10101iiiiiittt | Rd = n1 ; memd(r29+Ii) = Rtt
		.encoding = { .mask = 0xfff0fe00, .op = 0x7a002a00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SETIN1_SS2_STORED_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED, .masks = { { 0x6, 3 } }, .imm_scale = 3, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 19 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ; memd(R29+) = ",
	},
	{
		// 01110101ssssddddEE10101iiiiiittt | Rd = sxtb(Rs) ; memd(r29+Ii) = Rtt
		.encoding = { .mask = 0xff00fe00, .op = 0x75002a00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SXTB_SS2_STORED_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x6, 3 } }, .imm_scale = 3, .syntax = 21 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 25 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = sxtb() ; memd(R29+) = ",
	},
	{
		// 01110100ssssddddEE10101iiiiiittt | Rd = sxth(Rs) ; memd(r29+Ii) = Rtt
		.encoding = { .mask = 0xff00fe00, .op = 0x74002a00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SXTH_SS2_STORED_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x6, 3 } }, .imm_scale = 3, .syntax = 21 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 25 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = sxth() ; memd(R29+) = ",
	},
	{
		// 01110000ssssddddEE10101iiiiiittt | Rd = Rs ; memd(r29+Ii) = Rtt
		.encoding = { .mask = 0xff00fe00, .op = 0x70002a00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_TFR_SS2_STORED_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x6, 3 } }, .imm_scale = 3, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 19 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ; memd(R29+) = ",
	},
	{
		// 01110111ssssddddEE10101iiiiiittt | Rd = and(Rs,#255) ; memd(r29+Ii) = Rtt
		.encoding = { .mask = 0xff00fe00, .op = 0x77002a00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ZXTB_SS2_STORED_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x6, 3 } }, .imm_scale = 3, .syntax = 25 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 29 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = and(,#255) ; memd(R29+) = ",
	},
	{
		// 01110110ssssddddEE10101iiiiiittt | Rd = zxth(Rs) ; memd(r29+Ii) = Rtt
		.encoding = { .mask = 0xff00fe00, .op = 0x76002a00 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ZXTH_SS2_STORED_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x6, 3 } }, .imm_scale = 3, .syntax = 21 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 25 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = zxth() ; memd(R29+) = ",
	},
	{
		// 011010IIIIIIddddEE10101iiiiiittt | Rd = II ; memd(r29+Ii) = Rtt
		.encoding = { .mask = 0xfc00fe00, .op = 0x68002a00 },
		.id = HEX_INS_X2_AUTOJOIN_UNDOCUMENTED_SA2_TFRSI_SS2_STORED_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x6, 20 } }, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED, .masks = { { 0x6, 3 } }, .imm_scale = 3, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 19 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ; memd(R29+) = ",
	},
	{
		// 01100IIIIIIIxxxxEE100iiisssstttt | Rx = add(Rxin,II) ; memh(Rs+Ii) = Rt
		.encoding = { .mask = 0xf800f800, .op = 0x60002000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDI_SS2_STOREH_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 20 } }, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 8 } }, .imm_scale = 1, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 22 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,) ; memh(+) = ",
	},
	{
		// 01111000SSSSxxxxEE100iiisssstttt | Rx = add(Rxin,RS) ; memh(Rs+Ii) = Rt
		.encoding = { .mask = 0xff00f800, .op = 0x78002000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDRX_SS2_STOREH_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 } }, .imm_scale = 1, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 22 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,) ; memh(+) = ",
	},
	{
		// 011011IIIIIIddddEE100iiisssstttt | Rd = add(r29,II) ; memh(Rs+Ii) = Rt
		.encoding = { .mask = 0xfc00f800, .op = 0x6c002000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDSP_SS2_STOREH_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x6, 20 } }, .imm_scale = 2, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 20 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 8 } }, .imm_scale = 1, .syntax = 21 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 25 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(R29,) ; memh(+) = ",
	},
	{
		// 01110010SSSSddddEE100iiisssstttt | Rd = and(RS,#1) ; memh(Rs+Ii) = Rt
		.encoding = { .mask = 0xff00f800, .op = 0x72002000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_AND1_SS2_STOREH_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 19 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 } }, .imm_scale = 1, .syntax = 20 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 24 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = and(,#1) ; memh(+) = ",
	},
	{
		// 011110100111ddddEE100iiisssstttt | if (!p0) Rd = #0 ; memh(Rs+Ii) = Rt
		.encoding = { .mask = 0xfff0f800, .op = 0x7a702000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRF_SS2_STOREH_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 22 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 } }, .imm_scale = 1, .syntax = 23 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 27 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!P0)  = #0 ; memh(+) = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 011110100101ddddEE100iiisssstttt | if (!p0.new) Rd = #0 ; memh(Rs+Ii) = Rt
		.encoding = { .mask = 0xfff0f800, .op = 0x7a502000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRFNEW_SS2_STOREH_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 26 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 } }, .imm_scale = 1, .syntax = 27 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 31 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!P0.new)  = #0 ; memh(+) = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 011110100110ddddEE100iiisssstttt | if (p0) Rd = #0 ; memh(Rs+Ii) = Rt
		.encoding = { .mask = 0xfff0f800, .op = 0x7a602000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRT_SS2_STOREH_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 21 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 } }, .imm_scale = 1, .syntax = 22 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 26 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (P0)  = #0 ; memh(+) = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 011110100100ddddEE100iiisssstttt | if (p0.new) Rd = #0 ; memh(Rs+Ii) = Rt
		.encoding = { .mask = 0xfff0f800, .op = 0x7a402000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRTNEW_SS2_STOREH_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 25 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 } }, .imm_scale = 1, .syntax = 26 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 30 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (P0.new)  = #0 ; memh(+) = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01111001SSSS00IIEE100iiisssstttt | p0 = cmp.eq(RS,II) ; memh(Rs+Ii) = Rt
		.encoding = { .mask = 0xff0cf800, .op = 0x79002000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CMPEQI_SS2_STOREH_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 16 } }, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 22 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 8 } }, .imm_scale = 1, .syntax = 23 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 27 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "P0 = cmp.eq(,) ; memh(+) = ",
	},
	{
		// 011111000II00dddEE100iiisssstttt | Rdd = combine(#0,II) ; memh(Rs+Ii) = Rt
		.encoding = { .mask = 0xff98f800, .op = 0x7c002000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE0I_SS2_STOREH_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 21 } }, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 23 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 8 } }, .imm_scale = 1, .syntax = 24 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 28 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(#0,) ; memh(+) = ",
	},
	{
		// 011111000II01dddEE100iiisssstttt | Rdd = combine(#1,II) ; memh(Rs+Ii) = Rt
		.encoding = { .mask = 0xff98f800, .op = 0x7c082000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE1I_SS2_STOREH_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 21 } }, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 23 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 8 } }, .imm_scale = 1, .syntax = 24 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 28 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(#1,) ; memh(+) = ",
	},
	{
		// 011111000II10dddEE100iiisssstttt | Rdd = combine(#2,II) ; memh(Rs+Ii) = Rt
		.encoding = { .mask = 0xff98f800, .op = 0x7c102000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE2I_SS2_STOREH_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 21 } }, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 23 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 8 } }, .imm_scale = 1, .syntax = 24 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 28 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(#2,) ; memh(+) = ",
	},
	{
		// 011111000II11dddEE100iiisssstttt | Rdd = combine(#3,II) ; memh(Rs+Ii) = Rt
		.encoding = { .mask = 0xff98f800, .op = 0x7c182000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE3I_SS2_STOREH_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 21 } }, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 23 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 8 } }, .imm_scale = 1, .syntax = 24 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 28 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(#3,) ; memh(+) = ",
	},
	{
		// 01111101SSSS1dddEE100iiisssstttt | Rdd = combine(RS,#0) ; memh(Rs+Ii) = Rt
		.encoding = { .mask = 0xff08f800, .op = 0x7d082000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINERZ_SS2_STOREH_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 23 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 } }, .imm_scale = 1, .syntax = 24 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 28 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(,#0) ; memh(+) = ",
	},
	{
		// 01111101SSSS0dddEE100iiisssstttt | Rdd = combine(#0,RS) ; memh(Rs+Ii) = Rt
		.encoding = { .mask = 0xff08f800, .op = 0x7d002000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINEZR_SS2_STOREH_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 23 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 } }, .imm_scale = 1, .syntax = 24 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 28 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(#0,) ; memh(+) = ",
	},
	{
		// 01110011SSSSddddEE100iiisssstttt | Rd = add(RS,n1) ; memh(Rs+Ii) = Rt
		.encoding = { .mask = 0xff00f800, .op = 0x73002000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_DEC_SS2_STOREH_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 8 } }, .imm_scale = 1, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 22 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,) ; memh(+) = ",
	},
	{
		// 01110001SSSSddddEE100iiisssstttt | Rd = add(RS,#1) ; memh(Rs+Ii) = Rt
		.encoding = { .mask = 0xff00f800, .op = 0x71002000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_INC_SS2_STOREH_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 19 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 } }, .imm_scale = 1, .syntax = 20 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 24 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,#1) ; memh(+) = ",
	},
	{
		// 011010IIIIIIddddEE100iiisssstttt | Rd = II ; memh(Rs+Ii) = Rt
		.encoding = { .mask = 0xfc00f800, .op = 0x68002000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SETI_SS2_STOREH_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x6, 20 } }, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 8 } }, .imm_scale = 1, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 16 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ; memh(+) = ",
	},
	{
		// 011110100000ddddEE100iiisssstttt | Rd = n1 ; memh(Rs+Ii) = Rt
		.encoding = { .mask = 0xfff0f800, .op = 0x7a002000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SETIN1_SS2_STOREH_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 8 } }, .imm_scale = 1, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 16 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ; memh(+) = ",
	},
	{
		// 01110101SSSSddddEE100iiisssstttt | Rd = sxtb(RS) ; memh(Rs+Ii) = Rt
		.encoding = { .mask = 0xff00f800, .op = 0x75002000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SXTB_SS2_STOREH_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 } }, .imm_scale = 1, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 22 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = sxtb() ; memh(+) = ",
	},
	{
		// 01110100SSSSddddEE100iiisssstttt | Rd = sxth(RS) ; memh(Rs+Ii) = Rt
		.encoding = { .mask = 0xff00f800, .op = 0x74002000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SXTH_SS2_STOREH_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 } }, .imm_scale = 1, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 22 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = sxth() ; memh(+) = ",
	},
	{
		// 01110000SSSSddddEE100iiisssstttt | Rd = RS ; memh(Rs+Ii) = Rt
		.encoding = { .mask = 0xff00f800, .op = 0x70002000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_TFR_SS2_STOREH_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 } }, .imm_scale = 1, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 16 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ; memh(+) = ",
	},
	{
		// 01110111SSSSddddEE100iiisssstttt | Rd = and(RS,#255) ; memh(Rs+Ii) = Rt
		.encoding = { .mask = 0xff00f800, .op = 0x77002000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ZXTB_SS2_STOREH_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 21 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 } }, .imm_scale = 1, .syntax = 22 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 26 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = and(,#255) ; memh(+) = ",
	},
	{
		// 01110110SSSSddddEE100iiisssstttt | Rd = zxth(RS) ; memh(Rs+Ii) = Rt
		.encoding = { .mask = 0xff00f800, .op = 0x76002000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ZXTH_SS2_STOREH_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 } }, .imm_scale = 1, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 22 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = zxth() ; memh(+) = ",
	},
	{
		// 011010IIIIIIddddEE100iiisssstttt | Rd = II ; memh(Rs+Ii) = Rt
		.encoding = { .mask = 0xfc00f800, .op = 0x68002000 },
		.id = HEX_INS_X2_AUTOJOIN_UNDOCUMENTED_SA2_TFRSI_SS2_STOREH_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x6, 20 } }, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 8 } }, .imm_scale = 1, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 16 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ; memh(+) = ",
	},
	{
		// 01100IIIIIIIxxxxEE10100iiiiitttt | Rx = add(Rxin,II) ; memw(r29+Ii) = Rt
		.encoding = { .mask = 0xf800fe00, .op = 0x60002800 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDI_SS2_STOREW_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 20 } }, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 4 } }, .imm_scale = 2, .syntax = 21 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 25 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,) ; memw(R29+) = ",
	},
	{
		// 01111000ssssxxxxEE10100iiiiitttt | Rx = add(Rxin,Rs) ; memw(r29+Ii) = Rt
		.encoding = { .mask = 0xff00fe00, .op = 0x78002800 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDRX_SS2_STOREW_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 4 } }, .imm_scale = 2, .syntax = 21 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 25 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,) ; memw(R29+) = ",
	},
	{
		// 011011IIIIIIddddEE10100iiiiitttt | Rd = add(r29,II) ; memw(r29+Ii) = Rt
		.encoding = { .mask = 0xfc00fe00, .op = 0x6c002800 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDSP_SS2_STOREW_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x6, 20 } }, .imm_scale = 2, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 4 } }, .imm_scale = 2, .syntax = 24 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 28 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(R29,) ; memw(R29+) = ",
	},
	{
		// 01110010ssssddddEE10100iiiiitttt | Rd = and(Rs,#1) ; memw(r29+Ii) = Rt
		.encoding = { .mask = 0xff00fe00, .op = 0x72002800 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_AND1_SS2_STOREW_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 4 } }, .imm_scale = 2, .syntax = 23 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 27 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = and(,#1) ; memw(R29+) = ",
	},
	{
		// 011110100111ddddEE10100iiiiitttt | if (!p0) Rd = #0 ; memw(r29+Ii) = Rt
		.encoding = { .mask = 0xfff0fe00, .op = 0x7a702800 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRF_SS2_STOREW_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 4 } }, .imm_scale = 2, .syntax = 26 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 30 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!P0)  = #0 ; memw(R29+) = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 011110100101ddddEE10100iiiiitttt | if (!p0.new) Rd = #0 ; memw(r29+Ii) = Rt
		.encoding = { .mask = 0xfff0fe00, .op = 0x7a502800 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRFNEW_SS2_STOREW_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 4 } }, .imm_scale = 2, .syntax = 30 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 34 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!P0.new)  = #0 ; memw(R29+) = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 011110100110ddddEE10100iiiiitttt | if (p0) Rd = #0 ; memw(r29+Ii) = Rt
		.encoding = { .mask = 0xfff0fe00, .op = 0x7a602800 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRT_SS2_STOREW_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 4 } }, .imm_scale = 2, .syntax = 25 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 29 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (P0)  = #0 ; memw(R29+) = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 011110100100ddddEE10100iiiiitttt | if (p0.new) Rd = #0 ; memw(r29+Ii) = Rt
		.encoding = { .mask = 0xfff0fe00, .op = 0x7a402800 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRTNEW_SS2_STOREW_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 4 } }, .imm_scale = 2, .syntax = 29 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 33 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (P0.new)  = #0 ; memw(R29+) = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01111001ssss00IIEE10100iiiiitttt | p0 = cmp.eq(Rs,II) ; memw(r29+Ii) = Rt
		.encoding = { .mask = 0xff0cfe00, .op = 0x79002800 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CMPEQI_SS2_STOREW_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 16 } }, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 4 } }, .imm_scale = 2, .syntax = 26 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 30 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "P0 = cmp.eq(,) ; memw(R29+) = ",
	},
	{
		// 011111000II00dddEE10100iiiiitttt | Rdd = combine(#0,II) ; memw(r29+Ii) = Rt
		.encoding = { .mask = 0xff98fe00, .op = 0x7c002800 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE0I_SS2_STOREW_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 21 } }, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 4 } }, .imm_scale = 2, .syntax = 27 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 31 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(#0,) ; memw(R29+) = ",
	},
	{
		// 011111000II01dddEE10100iiiiitttt | Rdd = combine(#1,II) ; memw(r29+Ii) = Rt
		.encoding = { .mask = 0xff98fe00, .op = 0x7c082800 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE1I_SS2_STOREW_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 21 } }, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 4 } }, .imm_scale = 2, .syntax = 27 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 31 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(#1,) ; memw(R29+) = ",
	},
	{
		// 011111000II10dddEE10100iiiiitttt | Rdd = combine(#2,II) ; memw(r29+Ii) = Rt
		.encoding = { .mask = 0xff98fe00, .op = 0x7c102800 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE2I_SS2_STOREW_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 21 } }, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 4 } }, .imm_scale = 2, .syntax = 27 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 31 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(#2,) ; memw(R29+) = ",
	},
	{
		// 011111000II11dddEE10100iiiiitttt | Rdd = combine(#3,II) ; memw(r29+Ii) = Rt
		.encoding = { .mask = 0xff98fe00, .op = 0x7c182800 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE3I_SS2_STOREW_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 21 } }, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 4 } }, .imm_scale = 2, .syntax = 27 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 31 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(#3,) ; memw(R29+) = ",
	},
	{
		// 01111101ssss1dddEE10100iiiiitttt | Rdd = combine(Rs,#0) ; memw(r29+Ii) = Rt
		.encoding = { .mask = 0xff08fe00, .op = 0x7d082800 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINERZ_SS2_STOREW_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 4 } }, .imm_scale = 2, .syntax = 27 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 31 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(,#0) ; memw(R29+) = ",
	},
	{
		// 01111101ssss0dddEE10100iiiiitttt | Rdd = combine(#0,Rs) ; memw(r29+Ii) = Rt
		.encoding = { .mask = 0xff08fe00, .op = 0x7d002800 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINEZR_SS2_STOREW_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 4 } }, .imm_scale = 2, .syntax = 27 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 31 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(#0,) ; memw(R29+) = ",
	},
	{
		// 01110011ssssddddEE10100iiiiitttt | Rd = add(Rs,n1) ; memw(r29+Ii) = Rt
		.encoding = { .mask = 0xff00fe00, .op = 0x73002800 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_DEC_SS2_STOREW_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 4 } }, .imm_scale = 2, .syntax = 21 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 25 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,) ; memw(R29+) = ",
	},
	{
		// 01110001ssssddddEE10100iiiiitttt | Rd = add(Rs,#1) ; memw(r29+Ii) = Rt
		.encoding = { .mask = 0xff00fe00, .op = 0x71002800 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_INC_SS2_STOREW_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 4 } }, .imm_scale = 2, .syntax = 23 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 27 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,#1) ; memw(R29+) = ",
	},
	{
		// 011010IIIIIIddddEE10100iiiiitttt | Rd = II ; memw(r29+Ii) = Rt
		.encoding = { .mask = 0xfc00fe00, .op = 0x68002800 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SETI_SS2_STOREW_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x6, 20 } }, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 4 } }, .imm_scale = 2, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 19 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ; memw(R29+) = ",
	},
	{
		// 011110100000ddddEE10100iiiiitttt | Rd = n1 ; memw(r29+Ii) = Rt
		.encoding = { .mask = 0xfff0fe00, .op = 0x7a002800 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SETIN1_SS2_STOREW_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 4 } }, .imm_scale = 2, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 19 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ; memw(R29+) = ",
	},
	{
		// 01110101ssssddddEE10100iiiiitttt | Rd = sxtb(Rs) ; memw(r29+Ii) = Rt
		.encoding = { .mask = 0xff00fe00, .op = 0x75002800 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SXTB_SS2_STOREW_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 4 } }, .imm_scale = 2, .syntax = 21 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 25 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = sxtb() ; memw(R29+) = ",
	},
	{
		// 01110100ssssddddEE10100iiiiitttt | Rd = sxth(Rs) ; memw(r29+Ii) = Rt
		.encoding = { .mask = 0xff00fe00, .op = 0x74002800 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SXTH_SS2_STOREW_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 4 } }, .imm_scale = 2, .syntax = 21 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 25 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = sxth() ; memw(R29+) = ",
	},
	{
		// 01110000ssssddddEE10100iiiiitttt | Rd = Rs ; memw(r29+Ii) = Rt
		.encoding = { .mask = 0xff00fe00, .op = 0x70002800 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_TFR_SS2_STOREW_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 4 } }, .imm_scale = 2, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 19 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ; memw(R29+) = ",
	},
	{
		// 01110111ssssddddEE10100iiiiitttt | Rd = and(Rs,#255) ; memw(r29+Ii) = Rt
		.encoding = { .mask = 0xff00fe00, .op = 0x77002800 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ZXTB_SS2_STOREW_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 4 } }, .imm_scale = 2, .syntax = 25 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 29 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = and(,#255) ; memw(R29+) = ",
	},
	{
		// 01110110ssssddddEE10100iiiiitttt | Rd = zxth(Rs) ; memw(r29+Ii) = Rt
		.encoding = { .mask = 0xff00fe00, .op = 0x76002800 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ZXTH_SS2_STOREW_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 4 } }, .imm_scale = 2, .syntax = 21 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 25 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = zxth() ; memw(R29+) = ",
	},
	{
		// 011010IIIIIIddddEE10100iiiiitttt | Rd = II ; memw(r29+Ii) = Rt
		.encoding = { .mask = 0xfc00fe00, .op = 0x68002800 },
		.id = HEX_INS_X2_AUTOJOIN_UNDOCUMENTED_SA2_TFRSI_SS2_STOREW_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x6, 20 } }, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 4 } }, .imm_scale = 2, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 19 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ; memw(R29+) = ",
	},
	{
		// 01100IIIIIIIxxxxEE110000ssssiiii | Rx = add(Rxin,II) ; memw(Rs+Ii) = #0
		.encoding = { .mask = 0xf800ff00, .op = 0x60003000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDI_SS2_STOREWI0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 20 } }, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 0 } }, .imm_scale = 2, .syntax = 18 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,) ; memw(+) = #0",
	},
	{
		// 01111000SSSSxxxxEE110000ssssiiii | Rx = add(Rxin,RS) ; memw(Rs+Ii) = #0
		.encoding = { .mask = 0xff00ff00, .op = 0x78003000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDRX_SS2_STOREWI0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 0 } }, .imm_scale = 2, .syntax = 18 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,) ; memw(+) = #0",
	},
	{
		// 011011IIIIIIddddEE110000ssssiiii | Rd = add(r29,II) ; memw(Rs+Ii) = #0
		.encoding = { .mask = 0xfc00ff00, .op = 0x6c003000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDSP_SS2_STOREWI0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x6, 20 } }, .imm_scale = 2, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 20 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 0 } }, .imm_scale = 2, .syntax = 21 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(R29,) ; memw(+) = #0",
	},
	{
		// 01110010SSSSddddEE110000ssssiiii | Rd = and(RS,#1) ; memw(Rs+Ii) = #0
		.encoding = { .mask = 0xff00ff00, .op = 0x72003000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_AND1_SS2_STOREWI0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 19 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 0 } }, .imm_scale = 2, .syntax = 20 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = and(,#1) ; memw(+) = #0",
	},
	{
		// 011110100111ddddEE110000ssssiiii | if (!p0) Rd = #0 ; memw(Rs+Ii) = #0
		.encoding = { .mask = 0xfff0ff00, .op = 0x7a703000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRF_SS2_STOREWI0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 22 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 0 } }, .imm_scale = 2, .syntax = 23 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!P0)  = #0 ; memw(+) = #0",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 011110100101ddddEE110000ssssiiii | if (!p0.new) Rd = #0 ; memw(Rs+Ii) = #0
		.encoding = { .mask = 0xfff0ff00, .op = 0x7a503000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRFNEW_SS2_STOREWI0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 26 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 0 } }, .imm_scale = 2, .syntax = 27 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!P0.new)  = #0 ; memw(+) = #0",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 011110100110ddddEE110000ssssiiii | if (p0) Rd = #0 ; memw(Rs+Ii) = #0
		.encoding = { .mask = 0xfff0ff00, .op = 0x7a603000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRT_SS2_STOREWI0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 21 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 0 } }, .imm_scale = 2, .syntax = 22 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (P0)  = #0 ; memw(+) = #0",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 011110100100ddddEE110000ssssiiii | if (p0.new) Rd = #0 ; memw(Rs+Ii) = #0
		.encoding = { .mask = 0xfff0ff00, .op = 0x7a403000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRTNEW_SS2_STOREWI0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 25 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 0 } }, .imm_scale = 2, .syntax = 26 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (P0.new)  = #0 ; memw(+) = #0",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01111001SSSS00IIEE110000ssssiiii | p0 = cmp.eq(RS,II) ; memw(Rs+Ii) = #0
		.encoding = { .mask = 0xff0cff00, .op = 0x79003000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CMPEQI_SS2_STOREWI0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 16 } }, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 22 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 0 } }, .imm_scale = 2, .syntax = 23 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "P0 = cmp.eq(,) ; memw(+) = #0",
	},
	{
		// 011111000II00dddEE110000ssssiiii | Rdd = combine(#0,II) ; memw(Rs+Ii) = #0
		.encoding = { .mask = 0xff98ff00, .op = 0x7c003000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE0I_SS2_STOREWI0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 21 } }, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 23 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 0 } }, .imm_scale = 2, .syntax = 24 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(#0,) ; memw(+) = #0",
	},
	{
		// 011111000II01dddEE110000ssssiiii | Rdd = combine(#1,II) ; memw(Rs+Ii) = #0
		.encoding = { .mask = 0xff98ff00, .op = 0x7c083000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE1I_SS2_STOREWI0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 21 } }, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 23 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 0 } }, .imm_scale = 2, .syntax = 24 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(#1,) ; memw(+) = #0",
	},
	{
		// 011111000II10dddEE110000ssssiiii | Rdd = combine(#2,II) ; memw(Rs+Ii) = #0
		.encoding = { .mask = 0xff98ff00, .op = 0x7c103000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE2I_SS2_STOREWI0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 21 } }, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 23 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 0 } }, .imm_scale = 2, .syntax = 24 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(#2,) ; memw(+) = #0",
	},
	{
		// 011111000II11dddEE110000ssssiiii | Rdd = combine(#3,II) ; memw(Rs+Ii) = #0
		.encoding = { .mask = 0xff98ff00, .op = 0x7c183000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE3I_SS2_STOREWI0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 21 } }, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 23 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 0 } }, .imm_scale = 2, .syntax = 24 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(#3,) ; memw(+) = #0",
	},
	{
		// 01111101SSSS1dddEE110000ssssiiii | Rdd = combine(RS,#0) ; memw(Rs+Ii) = #0
		.encoding = { .mask = 0xff08ff00, .op = 0x7d083000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINERZ_SS2_STOREWI0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 23 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 0 } }, .imm_scale = 2, .syntax = 24 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(,#0) ; memw(+) = #0",
	},
	{
		// 01111101SSSS0dddEE110000ssssiiii | Rdd = combine(#0,RS) ; memw(Rs+Ii) = #0
		.encoding = { .mask = 0xff08ff00, .op = 0x7d003000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINEZR_SS2_STOREWI0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 23 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 0 } }, .imm_scale = 2, .syntax = 24 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(#0,) ; memw(+) = #0",
	},
	{
		// 01110011SSSSddddEE110000ssssiiii | Rd = add(RS,n1) ; memw(Rs+Ii) = #0
		.encoding = { .mask = 0xff00ff00, .op = 0x73003000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_DEC_SS2_STOREWI0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 0 } }, .imm_scale = 2, .syntax = 18 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,) ; memw(+) = #0",
	},
	{
		// 01110001SSSSddddEE110000ssssiiii | Rd = add(RS,#1) ; memw(Rs+Ii) = #0
		.encoding = { .mask = 0xff00ff00, .op = 0x71003000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_INC_SS2_STOREWI0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 19 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 0 } }, .imm_scale = 2, .syntax = 20 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,#1) ; memw(+) = #0",
	},
	{
		// 011010IIIIIIddddEE110000ssssiiii | Rd = II ; memw(Rs+Ii) = #0
		.encoding = { .mask = 0xfc00ff00, .op = 0x68003000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SETI_SS2_STOREWI0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x6, 20 } }, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 0 } }, .imm_scale = 2, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ; memw(+) = #0",
	},
	{
		// 011110100000ddddEE110000ssssiiii | Rd = n1 ; memw(Rs+Ii) = #0
		.encoding = { .mask = 0xfff0ff00, .op = 0x7a003000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SETIN1_SS2_STOREWI0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 0 } }, .imm_scale = 2, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ; memw(+) = #0",
	},
	{
		// 01110101SSSSddddEE110000ssssiiii | Rd = sxtb(RS) ; memw(Rs+Ii) = #0
		.encoding = { .mask = 0xff00ff00, .op = 0x75003000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SXTB_SS2_STOREWI0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 0 } }, .imm_scale = 2, .syntax = 18 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = sxtb() ; memw(+) = #0",
	},
	{
		// 01110100SSSSddddEE110000ssssiiii | Rd = sxth(RS) ; memw(Rs+Ii) = #0
		.encoding = { .mask = 0xff00ff00, .op = 0x74003000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SXTH_SS2_STOREWI0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 0 } }, .imm_scale = 2, .syntax = 18 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = sxth() ; memw(+) = #0",
	},
	{
		// 01110000SSSSddddEE110000ssssiiii | Rd = RS ; memw(Rs+Ii) = #0
		.encoding = { .mask = 0xff00ff00, .op = 0x70003000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_TFR_SS2_STOREWI0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 0 } }, .imm_scale = 2, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ; memw(+) = #0",
	},
	{
		// 01110111SSSSddddEE110000ssssiiii | Rd = and(RS,#255) ; memw(Rs+Ii) = #0
		.encoding = { .mask = 0xff00ff00, .op = 0x77003000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ZXTB_SS2_STOREWI0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 21 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 0 } }, .imm_scale = 2, .syntax = 22 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = and(,#255) ; memw(+) = #0",
	},
	{
		// 01110110SSSSddddEE110000ssssiiii | Rd = zxth(RS) ; memw(Rs+Ii) = #0
		.encoding = { .mask = 0xff00ff00, .op = 0x76003000 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ZXTH_SS2_STOREWI0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 0 } }, .imm_scale = 2, .syntax = 18 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = zxth() ; memw(+) = #0",
	},
	{
		// 011010IIIIIIddddEE110000ssssiiii | Rd = II ; memw(Rs+Ii) = #0
		.encoding = { .mask = 0xfc00ff00, .op = 0x68003000 },
		.id = HEX_INS_X2_AUTOJOIN_UNDOCUMENTED_SA2_TFRSI_SS2_STOREWI0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x6, 20 } }, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 0 } }, .imm_scale = 2, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ; memw(+) = #0",
	},
	{
		// 01100IIIIIIIxxxxEE110001ssssiiii | Rx = add(Rxin,II) ; memw(Rs+Ii) = #1
		.encoding = { .mask = 0xf800ff00, .op = 0x60003100 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDI_SS2_STOREWI1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 20 } }, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 0 } }, .imm_scale = 2, .syntax = 18 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,) ; memw(+) = #1",
	},
	{
		// 01111000SSSSxxxxEE110001ssssiiii | Rx = add(Rxin,RS) ; memw(Rs+Ii) = #1
		.encoding = { .mask = 0xff00ff00, .op = 0x78003100 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDRX_SS2_STOREWI1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 0 } }, .imm_scale = 2, .syntax = 18 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,) ; memw(+) = #1",
	},
	{
		// 011011IIIIIIddddEE110001ssssiiii | Rd = add(r29,II) ; memw(Rs+Ii) = #1
		.encoding = { .mask = 0xfc00ff00, .op = 0x6c003100 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ADDSP_SS2_STOREWI1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x6, 20 } }, .imm_scale = 2, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 20 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 0 } }, .imm_scale = 2, .syntax = 21 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(R29,) ; memw(+) = #1",
	},
	{
		// 01110010SSSSddddEE110001ssssiiii | Rd = and(RS,#1) ; memw(Rs+Ii) = #1
		.encoding = { .mask = 0xff00ff00, .op = 0x72003100 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_AND1_SS2_STOREWI1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 19 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 0 } }, .imm_scale = 2, .syntax = 20 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = and(,#1) ; memw(+) = #1",
	},
	{
		// 011110100111ddddEE110001ssssiiii | if (!p0) Rd = #0 ; memw(Rs+Ii) = #1
		.encoding = { .mask = 0xfff0ff00, .op = 0x7a703100 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRF_SS2_STOREWI1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 22 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 0 } }, .imm_scale = 2, .syntax = 23 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!P0)  = #0 ; memw(+) = #1",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 011110100101ddddEE110001ssssiiii | if (!p0.new) Rd = #0 ; memw(Rs+Ii) = #1
		.encoding = { .mask = 0xfff0ff00, .op = 0x7a503100 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRFNEW_SS2_STOREWI1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 26 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 0 } }, .imm_scale = 2, .syntax = 27 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!P0.new)  = #0 ; memw(+) = #1",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 011110100110ddddEE110001ssssiiii | if (p0) Rd = #0 ; memw(Rs+Ii) = #1
		.encoding = { .mask = 0xfff0ff00, .op = 0x7a603100 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRT_SS2_STOREWI1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 21 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 0 } }, .imm_scale = 2, .syntax = 22 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (P0)  = #0 ; memw(+) = #1",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 011110100100ddddEE110001ssssiiii | if (p0.new) Rd = #0 ; memw(Rs+Ii) = #1
		.encoding = { .mask = 0xfff0ff00, .op = 0x7a403100 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CLRTNEW_SS2_STOREWI1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 25 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 0 } }, .imm_scale = 2, .syntax = 26 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (P0.new)  = #0 ; memw(+) = #1",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01111001SSSS00IIEE110001ssssiiii | p0 = cmp.eq(RS,II) ; memw(Rs+Ii) = #1
		.encoding = { .mask = 0xff0cff00, .op = 0x79003100 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_CMPEQI_SS2_STOREWI1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 16 } }, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 22 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 0 } }, .imm_scale = 2, .syntax = 23 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "P0 = cmp.eq(,) ; memw(+) = #1",
	},
	{
		// 011111000II00dddEE110001ssssiiii | Rdd = combine(#0,II) ; memw(Rs+Ii) = #1
		.encoding = { .mask = 0xff98ff00, .op = 0x7c003100 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE0I_SS2_STOREWI1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 21 } }, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 23 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 0 } }, .imm_scale = 2, .syntax = 24 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(#0,) ; memw(+) = #1",
	},
	{
		// 011111000II01dddEE110001ssssiiii | Rdd = combine(#1,II) ; memw(Rs+Ii) = #1
		.encoding = { .mask = 0xff98ff00, .op = 0x7c083100 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE1I_SS2_STOREWI1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 21 } }, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 23 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 0 } }, .imm_scale = 2, .syntax = 24 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(#1,) ; memw(+) = #1",
	},
	{
		// 011111000II10dddEE110001ssssiiii | Rdd = combine(#2,II) ; memw(Rs+Ii) = #1
		.encoding = { .mask = 0xff98ff00, .op = 0x7c103100 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE2I_SS2_STOREWI1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 21 } }, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 23 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 0 } }, .imm_scale = 2, .syntax = 24 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(#2,) ; memw(+) = #1",
	},
	{
		// 011111000II11dddEE110001ssssiiii | Rdd = combine(#3,II) ; memw(Rs+Ii) = #1
		.encoding = { .mask = 0xff98ff00, .op = 0x7c183100 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINE3I_SS2_STOREWI1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 21 } }, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 23 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 0 } }, .imm_scale = 2, .syntax = 24 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(#3,) ; memw(+) = #1",
	},
	{
		// 01111101SSSS1dddEE110001ssssiiii | Rdd = combine(RS,#0) ; memw(Rs+Ii) = #1
		.encoding = { .mask = 0xff08ff00, .op = 0x7d083100 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINERZ_SS2_STOREWI1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 23 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 0 } }, .imm_scale = 2, .syntax = 24 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(,#0) ; memw(+) = #1",
	},
	{
		// 01111101SSSS0dddEE110001ssssiiii | Rdd = combine(#0,RS) ; memw(Rs+Ii) = #1
		.encoding = { .mask = 0xff08ff00, .op = 0x7d003100 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_COMBINEZR_SS2_STOREWI1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 23 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 0 } }, .imm_scale = 2, .syntax = 24 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(#0,) ; memw(+) = #1",
	},
	{
		// 01110011SSSSddddEE110001ssssiiii | Rd = add(RS,n1) ; memw(Rs+Ii) = #1
		.encoding = { .mask = 0xff00ff00, .op = 0x73003100 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_DEC_SS2_STOREWI1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 0 } }, .imm_scale = 2, .syntax = 18 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,) ; memw(+) = #1",
	},
	{
		// 01110001SSSSddddEE110001ssssiiii | Rd = add(RS,#1) ; memw(Rs+Ii) = #1
		.encoding = { .mask = 0xff00ff00, .op = 0x71003100 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_INC_SS2_STOREWI1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 19 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 0 } }, .imm_scale = 2, .syntax = 20 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,#1) ; memw(+) = #1",
	},
	{
		// 011010IIIIIIddddEE110001ssssiiii | Rd = II ; memw(Rs+Ii) = #1
		.encoding = { .mask = 0xfc00ff00, .op = 0x68003100 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SETI_SS2_STOREWI1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x6, 20 } }, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 0 } }, .imm_scale = 2, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ; memw(+) = #1",
	},
	{
		// 011110100000ddddEE110001ssssiiii | Rd = n1 ; memw(Rs+Ii) = #1
		.encoding = { .mask = 0xfff0ff00, .op = 0x7a003100 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SETIN1_SS2_STOREWI1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 0 } }, .imm_scale = 2, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ; memw(+) = #1",
	},
	{
		// 01110101SSSSddddEE110001ssssiiii | Rd = sxtb(RS) ; memw(Rs+Ii) = #1
		.encoding = { .mask = 0xff00ff00, .op = 0x75003100 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SXTB_SS2_STOREWI1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 0 } }, .imm_scale = 2, .syntax = 18 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = sxtb() ; memw(+) = #1",
	},
	{
		// 01110100SSSSddddEE110001ssssiiii | Rd = sxth(RS) ; memw(Rs+Ii) = #1
		.encoding = { .mask = 0xff00ff00, .op = 0x74003100 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_SXTH_SS2_STOREWI1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 0 } }, .imm_scale = 2, .syntax = 18 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = sxth() ; memw(+) = #1",
	},
	{
		// 01110000SSSSddddEE110001ssssiiii | Rd = RS ; memw(Rs+Ii) = #1
		.encoding = { .mask = 0xff00ff00, .op = 0x70003100 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_TFR_SS2_STOREWI1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 0 } }, .imm_scale = 2, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ; memw(+) = #1",
	},
	{
		// 01110111SSSSddddEE110001ssssiiii | Rd = and(RS,#255) ; memw(Rs+Ii) = #1
		.encoding = { .mask = 0xff00ff00, .op = 0x77003100 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ZXTB_SS2_STOREWI1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 21 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 0 } }, .imm_scale = 2, .syntax = 22 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = and(,#255) ; memw(+) = #1",
	},
	{
		// 01110110SSSSddddEE110001ssssiiii | Rd = zxth(RS) ; memw(Rs+Ii) = #1
		.encoding = { .mask = 0xff00ff00, .op = 0x76003100 },
		.id = HEX_INS_X2_AUTOJOIN_SA1_ZXTH_SS2_STOREWI1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 0 } }, .imm_scale = 2, .syntax = 18 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = zxth() ; memw(+) = #1",
	},
	{
		// 011010IIIIIIddddEE110001ssssiiii | Rd = II ; memw(Rs+Ii) = #1
		.encoding = { .mask = 0xfc00ff00, .op = 0x68003100 },
		.id = HEX_INS_X2_AUTOJOIN_UNDOCUMENTED_SA2_TFRSI_SS2_STOREWI1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x6, 20 } }, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 0 } }, .imm_scale = 2, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " =  ; memw(+) = #1",
	},
	{ { 0 } },
};

static const HexInsnTemplate templates_duplex_0x8[] = {
	{
		// 1000IIIISSSSddddEE01iiiisssstttt | Rd = memw(RS+II) ; memb(Rs+Ii) = Rt
		.encoding = { .mask = 0xf000f000, .op = 0x80001000 },
		.id = HEX_INS_X2_AUTOJOIN_SL1_LOADRI_IO_SS1_STOREB_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 24 } }, .imm_scale = 2, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 8 } }, .syntax = 19 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 23 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memw(+) ; memb(+) = ",
	},
	{
		// 1001IIIISSSSddddEE01iiiisssstttt | Rd = memub(RS+II) ; memb(Rs+Ii) = Rt
		.encoding = { .mask = 0xf000f000, .op = 0x90001000 },
		.id = HEX_INS_X2_AUTOJOIN_SL1_LOADRUB_IO_SS1_STOREB_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 24 } }, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 19 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 8 } }, .syntax = 20 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 24 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memub(+) ; memb(+) = ",
	},
	{
		// 1000IIIISSSSddddEE00iiiisssstttt | Rd = memw(RS+II) ; memw(Rs+Ii) = Rt
		.encoding = { .mask = 0xf000f000, .op = 0x80000000 },
		.id = HEX_INS_X2_AUTOJOIN_SL1_LOADRI_IO_SS1_STOREW_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 24 } }, .imm_scale = 2, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 8 } }, .imm_scale = 2, .syntax = 19 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 23 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memw(+) ; memw(+) = ",
	},
	{
		// 1001IIIISSSSddddEE00iiiisssstttt | Rd = memub(RS+II) ; memw(Rs+Ii) = Rt
		.encoding = { .mask = 0xf000f000, .op = 0x90000000 },
		.id = HEX_INS_X2_AUTOJOIN_SL1_LOADRUB_IO_SS1_STOREW_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 24 } }, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 19 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 8 } }, .imm_scale = 2, .syntax = 20 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 24 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memub(+) ; memw(+) = ",
	},
	{ { 0 } },
};

static const HexInsnTemplate templates_duplex_0x9[] = {
	{
		// 1001111100000000EE11iiiisssstttt | deallocframe ; memb(Rs+Ii) = Rt
		.encoding = { .mask = 0xfffff000, .op = 0x9f003000 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_DEALLOCFRAME_SS1_STOREB_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 20 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 8 } }, .syntax = 21 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 25 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "deallocframe ; memb(+) = ",
	},
	{
		// 10010IIISSSSddddEE11iiiisssstttt | Rd = memb(RS+II) ; memb(Rs+Ii) = Rt
		.encoding = { .mask = 0xf800f000, .op = 0x90003000 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_LOADRB_IO_SS1_STOREB_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 24 } }, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 8 } }, .syntax = 19 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 23 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memb(+) ; memb(+) = ",
	},
	{
		// 10011110IIIIIdddEE11iiiisssstttt | Rdd = memd(r29+II) ; memb(Rs+Ii) = Rt
		.encoding = { .mask = 0xff00f000, .op = 0x9e003000 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_LOADRD_SP_SS1_STOREB_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 19 } }, .imm_scale = 3, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 21 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 8 } }, .syntax = 22 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 26 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memd(R29+) ; memb(+) = ",
	},
	{
		// 10000IIISSSSddddEE11iiiisssstttt | Rd = memh(RS+II) ; memb(Rs+Ii) = Rt
		.encoding = { .mask = 0xf800f000, .op = 0x80003000 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_LOADRH_IO_SS1_STOREB_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 24 } }, .imm_scale = 1, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 8 } }, .syntax = 19 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 23 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memh(+) ; memb(+) = ",
	},
	{
		// 1001110IIIIIddddEE11iiiisssstttt | Rd = memw(r29+II) ; memb(Rs+Ii) = Rt
		.encoding = { .mask = 0xfe00f000, .op = 0x9c003000 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_LOADRI_SP_SS1_STOREB_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 20 } }, .imm_scale = 2, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 21 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 8 } }, .syntax = 22 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 26 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memw(R29+) ; memb(+) = ",
	},
	{
		// 10001IIISSSSddddEE11iiiisssstttt | Rd = memuh(RS+II) ; memb(Rs+Ii) = Rt
		.encoding = { .mask = 0xf800f000, .op = 0x88003000 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_LOADRUH_IO_SS1_STOREB_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 24 } }, .imm_scale = 1, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 19 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 8 } }, .syntax = 20 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 24 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memuh(+) ; memb(+) = ",
	},
	{
		// 1001111101000000EE11iiiisssstttt | dealloc_return ; memb(Rs+Ii) = Rt
		.encoding = { .mask = 0xfffff000, .op = 0x9f403000 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_RETURN_SS1_STOREB_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 22 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 8 } }, .syntax = 23 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 27 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_RET,
		.syntax = "dealloc_return ; memb(+) = ",
	},
	{
		// 1001111101000101EE11iiiisssstttt | if (!p0) dealloc_return ; memb(Rs+Ii) = Rt
		.encoding = { .mask = 0xfffff000, .op = 0x9f453000 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_RETURN_F_SS1_STOREB_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 31 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 8 } }, .syntax = 32 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 36 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "if (!P0) dealloc_return ; memb(+) = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 1001111101000111EE11iiiisssstttt | if (!p0.new) dealloc_return:nt ; memb(Rs+Ii) = Rt
		.encoding = { .mask = 0xfffff000, .op = 0x9f473000 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_RETURN_FNEW_SS1_STOREB_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 38 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 8 } }, .syntax = 39 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 43 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "if (!P0.new) dealloc_return:nt ; memb(+) = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 1001111101000100EE11iiiisssstttt | if (p0) dealloc_return ; memb(Rs+Ii) = Rt
		.encoding = { .mask = 0xfffff000, .op = 0x9f443000 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_RETURN_T_SS1_STOREB_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 30 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 8 } }, .syntax = 31 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 35 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "if (P0) dealloc_return ; memb(+) = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 1001111101000110EE11iiiisssstttt | if (p0.new) dealloc_return:nt ; memb(Rs+Ii) = Rt
		.encoding = { .mask = 0xfffff000, .op = 0x9f463000 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_RETURN_TNEW_SS1_STOREB_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 37 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 8 } }, .syntax = 38 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 42 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "if (P0.new) dealloc_return:nt ; memb(+) = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 1001111100000000EE10iiiisssstttt | deallocframe ; memw(Rs+Ii) = Rt
		.encoding = { .mask = 0xfffff000, .op = 0x9f002000 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_DEALLOCFRAME_SS1_STOREW_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 20 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 8 } }, .imm_scale = 2, .syntax = 21 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 25 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "deallocframe ; memw(+) = ",
	},
	{
		// 10010IIISSSSddddEE10iiiisssstttt | Rd = memb(RS+II) ; memw(Rs+Ii) = Rt
		.encoding = { .mask = 0xf800f000, .op = 0x90002000 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_LOADRB_IO_SS1_STOREW_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 24 } }, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 8 } }, .imm_scale = 2, .syntax = 19 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 23 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memb(+) ; memw(+) = ",
	},
	{
		// 10011110IIIIIdddEE10iiiisssstttt | Rdd = memd(r29+II) ; memw(Rs+Ii) = Rt
		.encoding = { .mask = 0xff00f000, .op = 0x9e002000 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_LOADRD_SP_SS1_STOREW_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 19 } }, .imm_scale = 3, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 21 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 8 } }, .imm_scale = 2, .syntax = 22 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 26 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memd(R29+) ; memw(+) = ",
	},
	{
		// 10000IIISSSSddddEE10iiiisssstttt | Rd = memh(RS+II) ; memw(Rs+Ii) = Rt
		.encoding = { .mask = 0xf800f000, .op = 0x80002000 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_LOADRH_IO_SS1_STOREW_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 24 } }, .imm_scale = 1, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 8 } }, .imm_scale = 2, .syntax = 19 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 23 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memh(+) ; memw(+) = ",
	},
	{
		// 1001110IIIIIddddEE10iiiisssstttt | Rd = memw(r29+II) ; memw(Rs+Ii) = Rt
		.encoding = { .mask = 0xfe00f000, .op = 0x9c002000 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_LOADRI_SP_SS1_STOREW_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 20 } }, .imm_scale = 2, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 21 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 8 } }, .imm_scale = 2, .syntax = 22 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 26 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memw(R29+) ; memw(+) = ",
	},
	{
		// 10001IIISSSSddddEE10iiiisssstttt | Rd = memuh(RS+II) ; memw(Rs+Ii) = Rt
		.encoding = { .mask = 0xf800f000, .op = 0x88002000 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_LOADRUH_IO_SS1_STOREW_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 24 } }, .imm_scale = 1, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 19 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 8 } }, .imm_scale = 2, .syntax = 20 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 24 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memuh(+) ; memw(+) = ",
	},
	{
		// 1001111101000000EE10iiiisssstttt | dealloc_return ; memw(Rs+Ii) = Rt
		.encoding = { .mask = 0xfffff000, .op = 0x9f402000 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_RETURN_SS1_STOREW_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 22 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 8 } }, .imm_scale = 2, .syntax = 23 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 27 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_RET,
		.syntax = "dealloc_return ; memw(+) = ",
	},
	{
		// 1001111101000101EE10iiiisssstttt | if (!p0) dealloc_return ; memw(Rs+Ii) = Rt
		.encoding = { .mask = 0xfffff000, .op = 0x9f452000 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_RETURN_F_SS1_STOREW_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 31 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 8 } }, .imm_scale = 2, .syntax = 32 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 36 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "if (!P0) dealloc_return ; memw(+) = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 1001111101000111EE10iiiisssstttt | if (!p0.new) dealloc_return:nt ; memw(Rs+Ii) = Rt
		.encoding = { .mask = 0xfffff000, .op = 0x9f472000 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_RETURN_FNEW_SS1_STOREW_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 38 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 8 } }, .imm_scale = 2, .syntax = 39 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 43 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "if (!P0.new) dealloc_return:nt ; memw(+) = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 1001111101000100EE10iiiisssstttt | if (p0) dealloc_return ; memw(Rs+Ii) = Rt
		.encoding = { .mask = 0xfffff000, .op = 0x9f442000 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_RETURN_T_SS1_STOREW_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 30 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 8 } }, .imm_scale = 2, .syntax = 31 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 35 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "if (P0) dealloc_return ; memw(+) = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 1001111101000110EE10iiiisssstttt | if (p0.new) dealloc_return:nt ; memw(Rs+Ii) = Rt
		.encoding = { .mask = 0xfffff000, .op = 0x9f462000 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_RETURN_TNEW_SS1_STOREW_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 37 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 8 } }, .imm_scale = 2, .syntax = 38 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 42 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "if (P0.new) dealloc_return:nt ; memw(+) = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{ { 0 } },
};

static const HexInsnTemplate templates_duplex_0xa[] = {
	{
		// 1011IIIISSSSTTTTEE01iiiisssstttt | memb(RS+II) = RT ; memb(Rs+Ii) = Rt
		.encoding = { .mask = 0xf000f000, .op = 0xb0001000 },
		.id = HEX_INS_X2_AUTOJOIN_SS1_STOREB_IO_SS1_STOREB_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 24 } }, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 8 } }, .syntax = 19 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 23 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memb(+) =  ; memb(+) = ",
	},
	{
		// 1010IIIISSSSTTTTEE01iiiisssstttt | memw(RS+II) = RT ; memb(Rs+Ii) = Rt
		.encoding = { .mask = 0xf000f000, .op = 0xa0001000 },
		.id = HEX_INS_X2_AUTOJOIN_SS1_STOREW_IO_SS1_STOREB_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 24 } }, .imm_scale = 2, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 8 } }, .syntax = 19 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 23 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memw(+) =  ; memb(+) = ",
	},
	{
		// 1010IIIISSSSTTTTEE00iiiisssstttt | memw(RS+II) = RT ; memw(Rs+Ii) = Rt
		.encoding = { .mask = 0xf000f000, .op = 0xa0000000 },
		.id = HEX_INS_X2_AUTOJOIN_SS1_STOREW_IO_SS1_STOREW_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 24 } }, .imm_scale = 2, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 8 } }, .imm_scale = 2, .syntax = 19 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 23 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memw(+) =  ; memw(+) = ",
	},
	{ { 0 } },
};

static const HexInsnTemplate templates_duplex_0xb[] = {
	{
		// 1011IIIIssssttttEE11110iiiii0000 | memb(Rs+II) = Rt ; allocframe(Ii)
		.encoding = { .mask = 0xf000fe0f, .op = 0xb0003c00 },
		.id = HEX_INS_X2_AUTOJOIN_SS1_STOREB_IO_SS2_ALLOCFRAME,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 24 } }, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 4 } }, .imm_scale = 3, .syntax = 24 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memb(+) =  ; allocframe()",
	},
	{
		// 1010IIIIssssttttEE11110iiiii0000 | memw(Rs+II) = Rt ; allocframe(Ii)
		.encoding = { .mask = 0xf000fe0f, .op = 0xa0003c00 },
		.id = HEX_INS_X2_AUTOJOIN_SS1_STOREW_IO_SS2_ALLOCFRAME,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 24 } }, .imm_scale = 2, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 4 } }, .imm_scale = 3, .syntax = 24 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memw(+) =  ; allocframe()",
	},
	{
		// 1011IIIISSSSttttEE110010ssssiiii | memb(RS+II) = Rt ; memb(Rs+Ii) = #0
		.encoding = { .mask = 0xf000ff00, .op = 0xb0003200 },
		.id = HEX_INS_X2_AUTOJOIN_SS1_STOREB_IO_SS2_STOREBI0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 24 } }, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 0 } }, .syntax = 19 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memb(+) =  ; memb(+) = #0",
	},
	{
		// 1010IIIISSSSttttEE110010ssssiiii | memw(RS+II) = Rt ; memb(Rs+Ii) = #0
		.encoding = { .mask = 0xf000ff00, .op = 0xa0003200 },
		.id = HEX_INS_X2_AUTOJOIN_SS1_STOREW_IO_SS2_STOREBI0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 24 } }, .imm_scale = 2, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 0 } }, .syntax = 19 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memw(+) =  ; memb(+) = #0",
	},
	{
		// 1011IIIISSSSttttEE110011ssssiiii | memb(RS+II) = Rt ; memb(Rs+Ii) = #1
		.encoding = { .mask = 0xf000ff00, .op = 0xb0003300 },
		.id = HEX_INS_X2_AUTOJOIN_SS1_STOREB_IO_SS2_STOREBI1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 24 } }, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 0 } }, .syntax = 19 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memb(+) =  ; memb(+) = #1",
	},
	{
		// 1010IIIISSSSttttEE110011ssssiiii | memw(RS+II) = Rt ; memb(Rs+Ii) = #1
		.encoding = { .mask = 0xf000ff00, .op = 0xa0003300 },
		.id = HEX_INS_X2_AUTOJOIN_SS1_STOREW_IO_SS2_STOREBI1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 24 } }, .imm_scale = 2, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 0 } }, .syntax = 19 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memw(+) =  ; memb(+) = #1",
	},
	{
		// 1011IIIIssssTTTTEE10101iiiiiittt | memb(Rs+II) = RT ; memd(r29+Ii) = Rtt
		.encoding = { .mask = 0xf000fe00, .op = 0xb0002a00 },
		.id = HEX_INS_X2_AUTOJOIN_SS1_STOREB_IO_SS2_STORED_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 24 } }, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED, .masks = { { 0x6, 3 } }, .imm_scale = 3, .syntax = 22 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 26 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memb(+) =  ; memd(R29+) = ",
	},
	{
		// 1010IIIIssssTTTTEE10101iiiiiittt | memw(Rs+II) = RT ; memd(r29+Ii) = Rtt
		.encoding = { .mask = 0xf000fe00, .op = 0xa0002a00 },
		.id = HEX_INS_X2_AUTOJOIN_SS1_STOREW_IO_SS2_STORED_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 24 } }, .imm_scale = 2, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED, .masks = { { 0x6, 3 } }, .imm_scale = 3, .syntax = 22 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 26 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memw(+) =  ; memd(R29+) = ",
	},
	{
		// 1011IIIISSSSTTTTEE100iiisssstttt | memb(RS+II) = RT ; memh(Rs+Ii) = Rt
		.encoding = { .mask = 0xf000f800, .op = 0xb0002000 },
		.id = HEX_INS_X2_AUTOJOIN_SS1_STOREB_IO_SS2_STOREH_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 24 } }, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 8 } }, .imm_scale = 1, .syntax = 19 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 23 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memb(+) =  ; memh(+) = ",
	},
	{
		// 1010IIIISSSSTTTTEE100iiisssstttt | memw(RS+II) = RT ; memh(Rs+Ii) = Rt
		.encoding = { .mask = 0xf000f800, .op = 0xa0002000 },
		.id = HEX_INS_X2_AUTOJOIN_SS1_STOREW_IO_SS2_STOREH_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 24 } }, .imm_scale = 2, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 8 } }, .imm_scale = 1, .syntax = 19 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 23 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memw(+) =  ; memh(+) = ",
	},
	{
		// 1011IIIIssssTTTTEE10100iiiiitttt | memb(Rs+II) = RT ; memw(r29+Ii) = Rt
		.encoding = { .mask = 0xf000fe00, .op = 0xb0002800 },
		.id = HEX_INS_X2_AUTOJOIN_SS1_STOREB_IO_SS2_STOREW_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 24 } }, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 4 } }, .imm_scale = 2, .syntax = 22 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 26 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memb(+) =  ; memw(R29+) = ",
	},
	{
		// 1010IIIIssssTTTTEE10100iiiiitttt | memw(Rs+II) = RT ; memw(r29+Ii) = Rt
		.encoding = { .mask = 0xf000fe00, .op = 0xa0002800 },
		.id = HEX_INS_X2_AUTOJOIN_SS1_STOREW_IO_SS2_STOREW_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 24 } }, .imm_scale = 2, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 4 } }, .imm_scale = 2, .syntax = 22 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 26 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memw(+) =  ; memw(R29+) = ",
	},
	{
		// 1011IIIISSSSttttEE110000ssssiiii | memb(RS+II) = Rt ; memw(Rs+Ii) = #0
		.encoding = { .mask = 0xf000ff00, .op = 0xb0003000 },
		.id = HEX_INS_X2_AUTOJOIN_SS1_STOREB_IO_SS2_STOREWI0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 24 } }, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 0 } }, .imm_scale = 2, .syntax = 19 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memb(+) =  ; memw(+) = #0",
	},
	{
		// 1010IIIISSSSttttEE110000ssssiiii | memw(RS+II) = Rt ; memw(Rs+Ii) = #0
		.encoding = { .mask = 0xf000ff00, .op = 0xa0003000 },
		.id = HEX_INS_X2_AUTOJOIN_SS1_STOREW_IO_SS2_STOREWI0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 24 } }, .imm_scale = 2, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 0 } }, .imm_scale = 2, .syntax = 19 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memw(+) =  ; memw(+) = #0",
	},
	{
		// 1011IIIISSSSttttEE110001ssssiiii | memb(RS+II) = Rt ; memw(Rs+Ii) = #1
		.encoding = { .mask = 0xf000ff00, .op = 0xb0003100 },
		.id = HEX_INS_X2_AUTOJOIN_SS1_STOREB_IO_SS2_STOREWI1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 24 } }, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 0 } }, .imm_scale = 2, .syntax = 19 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memb(+) =  ; memw(+) = #1",
	},
	{
		// 1010IIIISSSSttttEE110001ssssiiii | memw(RS+II) = Rt ; memw(Rs+Ii) = #1
		.encoding = { .mask = 0xf000ff00, .op = 0xa0003100 },
		.id = HEX_INS_X2_AUTOJOIN_SS1_STOREW_IO_SS2_STOREWI1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 24 } }, .imm_scale = 2, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 0 } }, .imm_scale = 2, .syntax = 19 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memw(+) =  ; memw(+) = #1",
	},
	{ { 0 } },
};

static const HexInsnTemplate templates_duplex_0xc[] = {
	{
		// 1100IIIIssssddddEE01110iiiii0000 | Rd = memw(Rs+II) ; allocframe(Ii)
		.encoding = { .mask = 0xf000fe0f, .op = 0xc0001c00 },
		.id = HEX_INS_X2_AUTOJOIN_SL1_LOADRI_IO_SS2_ALLOCFRAME,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 24 } }, .imm_scale = 2, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 4 } }, .imm_scale = 3, .syntax = 24 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memw(+) ; allocframe()",
	},
	{
		// 1101IIIIssssddddEE01110iiiii0000 | Rd = memub(Rs+II) ; allocframe(Ii)
		.encoding = { .mask = 0xf000fe0f, .op = 0xd0001c00 },
		.id = HEX_INS_X2_AUTOJOIN_SL1_LOADRUB_IO_SS2_ALLOCFRAME,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 24 } }, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 4 } }, .imm_scale = 3, .syntax = 25 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memub(+) ; allocframe()",
	},
	{
		// 1100IIIISSSSddddEE010010ssssiiii | Rd = memw(RS+II) ; memb(Rs+Ii) = #0
		.encoding = { .mask = 0xf000ff00, .op = 0xc0001200 },
		.id = HEX_INS_X2_AUTOJOIN_SL1_LOADRI_IO_SS2_STOREBI0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 24 } }, .imm_scale = 2, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 0 } }, .syntax = 19 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memw(+) ; memb(+) = #0",
	},
	{
		// 1101IIIISSSSddddEE010010ssssiiii | Rd = memub(RS+II) ; memb(Rs+Ii) = #0
		.encoding = { .mask = 0xf000ff00, .op = 0xd0001200 },
		.id = HEX_INS_X2_AUTOJOIN_SL1_LOADRUB_IO_SS2_STOREBI0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 24 } }, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 19 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 0 } }, .syntax = 20 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memub(+) ; memb(+) = #0",
	},
	{
		// 1100IIIISSSSddddEE010011ssssiiii | Rd = memw(RS+II) ; memb(Rs+Ii) = #1
		.encoding = { .mask = 0xf000ff00, .op = 0xc0001300 },
		.id = HEX_INS_X2_AUTOJOIN_SL1_LOADRI_IO_SS2_STOREBI1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 24 } }, .imm_scale = 2, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 0 } }, .syntax = 19 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memw(+) ; memb(+) = #1",
	},
	{
		// 1101IIIISSSSddddEE010011ssssiiii | Rd = memub(RS+II) ; memb(Rs+Ii) = #1
		.encoding = { .mask = 0xf000ff00, .op = 0xd0001300 },
		.id = HEX_INS_X2_AUTOJOIN_SL1_LOADRUB_IO_SS2_STOREBI1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 24 } }, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 19 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 0 } }, .syntax = 20 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memub(+) ; memb(+) = #1",
	},
	{
		// 1100IIIIssssddddEE00101iiiiiittt | Rd = memw(Rs+II) ; memd(r29+Ii) = Rtt
		.encoding = { .mask = 0xf000fe00, .op = 0xc0000a00 },
		.id = HEX_INS_X2_AUTOJOIN_SL1_LOADRI_IO_SS2_STORED_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 24 } }, .imm_scale = 2, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED, .masks = { { 0x6, 3 } }, .imm_scale = 3, .syntax = 22 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 26 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memw(+) ; memd(R29+) = ",
	},
	{
		// 1101IIIIssssddddEE00101iiiiiittt | Rd = memub(Rs+II) ; memd(r29+Ii) = Rtt
		.encoding = { .mask = 0xf000fe00, .op = 0xd0000a00 },
		.id = HEX_INS_X2_AUTOJOIN_SL1_LOADRUB_IO_SS2_STORED_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 24 } }, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED, .masks = { { 0x6, 3 } }, .imm_scale = 3, .syntax = 23 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 27 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memub(+) ; memd(R29+) = ",
	},
	{
		// 1100IIIISSSSddddEE000iiisssstttt | Rd = memw(RS+II) ; memh(Rs+Ii) = Rt
		.encoding = { .mask = 0xf000f800, .op = 0xc0000000 },
		.id = HEX_INS_X2_AUTOJOIN_SL1_LOADRI_IO_SS2_STOREH_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 24 } }, .imm_scale = 2, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 8 } }, .imm_scale = 1, .syntax = 19 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 23 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memw(+) ; memh(+) = ",
	},
	{
		// 1101IIIISSSSddddEE000iiisssstttt | Rd = memub(RS+II) ; memh(Rs+Ii) = Rt
		.encoding = { .mask = 0xf000f800, .op = 0xd0000000 },
		.id = HEX_INS_X2_AUTOJOIN_SL1_LOADRUB_IO_SS2_STOREH_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 24 } }, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 19 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 8 } }, .imm_scale = 1, .syntax = 20 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 24 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memub(+) ; memh(+) = ",
	},
	{
		// 1100IIIIssssddddEE00100iiiiitttt | Rd = memw(Rs+II) ; memw(r29+Ii) = Rt
		.encoding = { .mask = 0xf000fe00, .op = 0xc0000800 },
		.id = HEX_INS_X2_AUTOJOIN_SL1_LOADRI_IO_SS2_STOREW_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 24 } }, .imm_scale = 2, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 4 } }, .imm_scale = 2, .syntax = 22 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 26 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memw(+) ; memw(R29+) = ",
	},
	{
		// 1101IIIIssssddddEE00100iiiiitttt | Rd = memub(Rs+II) ; memw(r29+Ii) = Rt
		.encoding = { .mask = 0xf000fe00, .op = 0xd0000800 },
		.id = HEX_INS_X2_AUTOJOIN_SL1_LOADRUB_IO_SS2_STOREW_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 24 } }, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 4 } }, .imm_scale = 2, .syntax = 23 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 27 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memub(+) ; memw(R29+) = ",
	},
	{
		// 1100IIIISSSSddddEE010000ssssiiii | Rd = memw(RS+II) ; memw(Rs+Ii) = #0
		.encoding = { .mask = 0xf000ff00, .op = 0xc0001000 },
		.id = HEX_INS_X2_AUTOJOIN_SL1_LOADRI_IO_SS2_STOREWI0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 24 } }, .imm_scale = 2, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 0 } }, .imm_scale = 2, .syntax = 19 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memw(+) ; memw(+) = #0",
	},
	{
		// 1101IIIISSSSddddEE010000ssssiiii | Rd = memub(RS+II) ; memw(Rs+Ii) = #0
		.encoding = { .mask = 0xf000ff00, .op = 0xd0001000 },
		.id = HEX_INS_X2_AUTOJOIN_SL1_LOADRUB_IO_SS2_STOREWI0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 24 } }, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 19 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 0 } }, .imm_scale = 2, .syntax = 20 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memub(+) ; memw(+) = #0",
	},
	{
		// 1100IIIISSSSddddEE010001ssssiiii | Rd = memw(RS+II) ; memw(Rs+Ii) = #1
		.encoding = { .mask = 0xf000ff00, .op = 0xc0001100 },
		.id = HEX_INS_X2_AUTOJOIN_SL1_LOADRI_IO_SS2_STOREWI1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 24 } }, .imm_scale = 2, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 0 } }, .imm_scale = 2, .syntax = 19 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memw(+) ; memw(+) = #1",
	},
	{
		// 1101IIIISSSSddddEE010001ssssiiii | Rd = memub(RS+II) ; memw(Rs+Ii) = #1
		.encoding = { .mask = 0xf000ff00, .op = 0xd0001100 },
		.id = HEX_INS_X2_AUTOJOIN_SL1_LOADRUB_IO_SS2_STOREWI1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 24 } }, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 19 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 0 } }, .imm_scale = 2, .syntax = 20 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memub(+) ; memw(+) = #1",
	},
	{ { 0 } },
};

static const HexInsnTemplate templates_duplex_0xd[] = {
	{
		// 1101111100000000EE11110iiiii0000 | deallocframe ; allocframe(Ii)
		.encoding = { .mask = 0xfffffe0f, .op = 0xdf003c00 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_DEALLOCFRAME_SS2_ALLOCFRAME,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 4 } }, .imm_scale = 3, .syntax = 26 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "deallocframe ; allocframe()",
	},
	{
		// 11010IIIssssddddEE11110iiiii0000 | Rd = memb(Rs+II) ; allocframe(Ii)
		.encoding = { .mask = 0xf800fe0f, .op = 0xd0003c00 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_LOADRB_IO_SS2_ALLOCFRAME,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 24 } }, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 4 } }, .imm_scale = 3, .syntax = 24 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memb(+) ; allocframe()",
	},
	{
		// 11011110IIIIIdddEE11110iiiii0000 | Rdd = memd(r29+II) ; allocframe(Ii)
		.encoding = { .mask = 0xff00fe0f, .op = 0xde003c00 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_LOADRD_SP_SS2_ALLOCFRAME,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 19 } }, .imm_scale = 3, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 4 } }, .imm_scale = 3, .syntax = 27 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memd(R29+) ; allocframe()",
	},
	{
		// 11000IIIssssddddEE11110iiiii0000 | Rd = memh(Rs+II) ; allocframe(Ii)
		.encoding = { .mask = 0xf800fe0f, .op = 0xc0003c00 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_LOADRH_IO_SS2_ALLOCFRAME,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 24 } }, .imm_scale = 1, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 4 } }, .imm_scale = 3, .syntax = 24 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memh(+) ; allocframe()",
	},
	{
		// 1101110IIIIIddddEE11110iiiii0000 | Rd = memw(r29+II) ; allocframe(Ii)
		.encoding = { .mask = 0xfe00fe0f, .op = 0xdc003c00 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_LOADRI_SP_SS2_ALLOCFRAME,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 20 } }, .imm_scale = 2, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 4 } }, .imm_scale = 3, .syntax = 27 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memw(R29+) ; allocframe()",
	},
	{
		// 11001IIIssssddddEE11110iiiii0000 | Rd = memuh(Rs+II) ; allocframe(Ii)
		.encoding = { .mask = 0xf800fe0f, .op = 0xc8003c00 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_LOADRUH_IO_SS2_ALLOCFRAME,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 24 } }, .imm_scale = 1, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 4 } }, .imm_scale = 3, .syntax = 25 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memuh(+) ; allocframe()",
	},
	{
		// 1101111101000000EE11110iiiii0000 | dealloc_return ; allocframe(Ii)
		.encoding = { .mask = 0xfffffe0f, .op = 0xdf403c00 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_RETURN_SS2_ALLOCFRAME,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 4 } }, .imm_scale = 3, .syntax = 28 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_RET,
		.syntax = "dealloc_return ; allocframe()",
	},
	{
		// 1101111101000101EE11110iiiii0000 | if (!p0) dealloc_return ; allocframe(Ii)
		.encoding = { .mask = 0xfffffe0f, .op = 0xdf453c00 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_RETURN_F_SS2_ALLOCFRAME,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 4 } }, .imm_scale = 3, .syntax = 37 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "if (!P0) dealloc_return ; allocframe()",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 1101111101000111EE11110iiiii0000 | if (!p0.new) dealloc_return:nt ; allocframe(Ii)
		.encoding = { .mask = 0xfffffe0f, .op = 0xdf473c00 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_RETURN_FNEW_SS2_ALLOCFRAME,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 4 } }, .imm_scale = 3, .syntax = 44 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "if (!P0.new) dealloc_return:nt ; allocframe()",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 1101111101000100EE11110iiiii0000 | if (p0) dealloc_return ; allocframe(Ii)
		.encoding = { .mask = 0xfffffe0f, .op = 0xdf443c00 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_RETURN_T_SS2_ALLOCFRAME,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 4 } }, .imm_scale = 3, .syntax = 36 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "if (P0) dealloc_return ; allocframe()",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 1101111101000110EE11110iiiii0000 | if (p0.new) dealloc_return:nt ; allocframe(Ii)
		.encoding = { .mask = 0xfffffe0f, .op = 0xdf463c00 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_RETURN_TNEW_SS2_ALLOCFRAME,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 4 } }, .imm_scale = 3, .syntax = 43 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "if (P0.new) dealloc_return:nt ; allocframe()",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 1101111100000000EE110010ssssiiii | deallocframe ; memb(Rs+Ii) = #0
		.encoding = { .mask = 0xffffff00, .op = 0xdf003200 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_DEALLOCFRAME_SS2_STOREBI0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 20 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 0 } }, .syntax = 21 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "deallocframe ; memb(+) = #0",
	},
	{
		// 11010IIISSSSddddEE110010ssssiiii | Rd = memb(RS+II) ; memb(Rs+Ii) = #0
		.encoding = { .mask = 0xf800ff00, .op = 0xd0003200 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_LOADRB_IO_SS2_STOREBI0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 24 } }, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 0 } }, .syntax = 19 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memb(+) ; memb(+) = #0",
	},
	{
		// 11011110IIIIIdddEE110010ssssiiii | Rdd = memd(r29+II) ; memb(Rs+Ii) = #0
		.encoding = { .mask = 0xff00ff00, .op = 0xde003200 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_LOADRD_SP_SS2_STOREBI0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 19 } }, .imm_scale = 3, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 21 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 0 } }, .syntax = 22 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memd(R29+) ; memb(+) = #0",
	},
	{
		// 11000IIISSSSddddEE110010ssssiiii | Rd = memh(RS+II) ; memb(Rs+Ii) = #0
		.encoding = { .mask = 0xf800ff00, .op = 0xc0003200 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_LOADRH_IO_SS2_STOREBI0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 24 } }, .imm_scale = 1, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 0 } }, .syntax = 19 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memh(+) ; memb(+) = #0",
	},
	{
		// 1101110IIIIIddddEE110010ssssiiii | Rd = memw(r29+II) ; memb(Rs+Ii) = #0
		.encoding = { .mask = 0xfe00ff00, .op = 0xdc003200 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_LOADRI_SP_SS2_STOREBI0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 20 } }, .imm_scale = 2, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 21 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 0 } }, .syntax = 22 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memw(R29+) ; memb(+) = #0",
	},
	{
		// 11001IIISSSSddddEE110010ssssiiii | Rd = memuh(RS+II) ; memb(Rs+Ii) = #0
		.encoding = { .mask = 0xf800ff00, .op = 0xc8003200 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_LOADRUH_IO_SS2_STOREBI0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 24 } }, .imm_scale = 1, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 19 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 0 } }, .syntax = 20 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memuh(+) ; memb(+) = #0",
	},
	{
		// 1101111101000000EE110010ssssiiii | dealloc_return ; memb(Rs+Ii) = #0
		.encoding = { .mask = 0xffffff00, .op = 0xdf403200 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_RETURN_SS2_STOREBI0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 22 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 0 } }, .syntax = 23 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_RET,
		.syntax = "dealloc_return ; memb(+) = #0",
	},
	{
		// 1101111101000101EE110010ssssiiii | if (!p0) dealloc_return ; memb(Rs+Ii) = #0
		.encoding = { .mask = 0xffffff00, .op = 0xdf453200 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_RETURN_F_SS2_STOREBI0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 31 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 0 } }, .syntax = 32 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "if (!P0) dealloc_return ; memb(+) = #0",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 1101111101000111EE110010ssssiiii | if (!p0.new) dealloc_return:nt ; memb(Rs+Ii) = #0
		.encoding = { .mask = 0xffffff00, .op = 0xdf473200 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_RETURN_FNEW_SS2_STOREBI0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 38 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 0 } }, .syntax = 39 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "if (!P0.new) dealloc_return:nt ; memb(+) = #0",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 1101111101000100EE110010ssssiiii | if (p0) dealloc_return ; memb(Rs+Ii) = #0
		.encoding = { .mask = 0xffffff00, .op = 0xdf443200 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_RETURN_T_SS2_STOREBI0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 30 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 0 } }, .syntax = 31 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "if (P0) dealloc_return ; memb(+) = #0",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 1101111101000110EE110010ssssiiii | if (p0.new) dealloc_return:nt ; memb(Rs+Ii) = #0
		.encoding = { .mask = 0xffffff00, .op = 0xdf463200 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_RETURN_TNEW_SS2_STOREBI0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 37 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 0 } }, .syntax = 38 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "if (P0.new) dealloc_return:nt ; memb(+) = #0",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 1101111100000000EE110011ssssiiii | deallocframe ; memb(Rs+Ii) = #1
		.encoding = { .mask = 0xffffff00, .op = 0xdf003300 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_DEALLOCFRAME_SS2_STOREBI1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 20 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 0 } }, .syntax = 21 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "deallocframe ; memb(+) = #1",
	},
	{
		// 11010IIISSSSddddEE110011ssssiiii | Rd = memb(RS+II) ; memb(Rs+Ii) = #1
		.encoding = { .mask = 0xf800ff00, .op = 0xd0003300 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_LOADRB_IO_SS2_STOREBI1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 24 } }, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 0 } }, .syntax = 19 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memb(+) ; memb(+) = #1",
	},
	{
		// 11011110IIIIIdddEE110011ssssiiii | Rdd = memd(r29+II) ; memb(Rs+Ii) = #1
		.encoding = { .mask = 0xff00ff00, .op = 0xde003300 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_LOADRD_SP_SS2_STOREBI1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 19 } }, .imm_scale = 3, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 21 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 0 } }, .syntax = 22 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memd(R29+) ; memb(+) = #1",
	},
	{
		// 11000IIISSSSddddEE110011ssssiiii | Rd = memh(RS+II) ; memb(Rs+Ii) = #1
		.encoding = { .mask = 0xf800ff00, .op = 0xc0003300 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_LOADRH_IO_SS2_STOREBI1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 24 } }, .imm_scale = 1, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 0 } }, .syntax = 19 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memh(+) ; memb(+) = #1",
	},
	{
		// 1101110IIIIIddddEE110011ssssiiii | Rd = memw(r29+II) ; memb(Rs+Ii) = #1
		.encoding = { .mask = 0xfe00ff00, .op = 0xdc003300 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_LOADRI_SP_SS2_STOREBI1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 20 } }, .imm_scale = 2, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 21 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 0 } }, .syntax = 22 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memw(R29+) ; memb(+) = #1",
	},
	{
		// 11001IIISSSSddddEE110011ssssiiii | Rd = memuh(RS+II) ; memb(Rs+Ii) = #1
		.encoding = { .mask = 0xf800ff00, .op = 0xc8003300 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_LOADRUH_IO_SS2_STOREBI1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 24 } }, .imm_scale = 1, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 19 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 0 } }, .syntax = 20 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memuh(+) ; memb(+) = #1",
	},
	{
		// 1101111101000000EE110011ssssiiii | dealloc_return ; memb(Rs+Ii) = #1
		.encoding = { .mask = 0xffffff00, .op = 0xdf403300 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_RETURN_SS2_STOREBI1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 22 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 0 } }, .syntax = 23 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_RET,
		.syntax = "dealloc_return ; memb(+) = #1",
	},
	{
		// 1101111101000101EE110011ssssiiii | if (!p0) dealloc_return ; memb(Rs+Ii) = #1
		.encoding = { .mask = 0xffffff00, .op = 0xdf453300 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_RETURN_F_SS2_STOREBI1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 31 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 0 } }, .syntax = 32 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "if (!P0) dealloc_return ; memb(+) = #1",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 1101111101000111EE110011ssssiiii | if (!p0.new) dealloc_return:nt ; memb(Rs+Ii) = #1
		.encoding = { .mask = 0xffffff00, .op = 0xdf473300 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_RETURN_FNEW_SS2_STOREBI1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 38 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 0 } }, .syntax = 39 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "if (!P0.new) dealloc_return:nt ; memb(+) = #1",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 1101111101000100EE110011ssssiiii | if (p0) dealloc_return ; memb(Rs+Ii) = #1
		.encoding = { .mask = 0xffffff00, .op = 0xdf443300 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_RETURN_T_SS2_STOREBI1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 30 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 0 } }, .syntax = 31 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "if (P0) dealloc_return ; memb(+) = #1",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 1101111101000110EE110011ssssiiii | if (p0.new) dealloc_return:nt ; memb(Rs+Ii) = #1
		.encoding = { .mask = 0xffffff00, .op = 0xdf463300 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_RETURN_TNEW_SS2_STOREBI1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 37 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 0 } }, .syntax = 38 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "if (P0.new) dealloc_return:nt ; memb(+) = #1",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 1101111100000000EE10101iiiiiittt | deallocframe ; memd(r29+Ii) = Rtt
		.encoding = { .mask = 0xfffffe00, .op = 0xdf002a00 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_DEALLOCFRAME_SS2_STORED_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x6, 3 } }, .imm_scale = 3, .syntax = 24 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 28 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "deallocframe ; memd(R29+) = ",
	},
	{
		// 11010IIIssssddddEE10101iiiiiittt | Rd = memb(Rs+II) ; memd(r29+Ii) = Rtt
		.encoding = { .mask = 0xf800fe00, .op = 0xd0002a00 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_LOADRB_IO_SS2_STORED_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 24 } }, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED, .masks = { { 0x6, 3 } }, .imm_scale = 3, .syntax = 22 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 26 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memb(+) ; memd(R29+) = ",
	},
	{
		// 11011110IIIIIdddEE10101iiiiiittt | Rdd = memd(r29+II) ; memd(r29+Ii) = Rtt
		.encoding = { .mask = 0xff00fe00, .op = 0xde002a00 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_LOADRD_SP_SS2_STORED_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 19 } }, .imm_scale = 3, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED, .masks = { { 0x6, 3 } }, .imm_scale = 3, .syntax = 25 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 29 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memd(R29+) ; memd(R29+) = ",
	},
	{
		// 11000IIIssssddddEE10101iiiiiittt | Rd = memh(Rs+II) ; memd(r29+Ii) = Rtt
		.encoding = { .mask = 0xf800fe00, .op = 0xc0002a00 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_LOADRH_IO_SS2_STORED_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 24 } }, .imm_scale = 1, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED, .masks = { { 0x6, 3 } }, .imm_scale = 3, .syntax = 22 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 26 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memh(+) ; memd(R29+) = ",
	},
	{
		// 1101110IIIIIddddEE10101iiiiiittt | Rd = memw(r29+II) ; memd(r29+Ii) = Rtt
		.encoding = { .mask = 0xfe00fe00, .op = 0xdc002a00 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_LOADRI_SP_SS2_STORED_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 20 } }, .imm_scale = 2, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED, .masks = { { 0x6, 3 } }, .imm_scale = 3, .syntax = 25 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 29 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memw(R29+) ; memd(R29+) = ",
	},
	{
		// 11001IIIssssddddEE10101iiiiiittt | Rd = memuh(Rs+II) ; memd(r29+Ii) = Rtt
		.encoding = { .mask = 0xf800fe00, .op = 0xc8002a00 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_LOADRUH_IO_SS2_STORED_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 24 } }, .imm_scale = 1, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED, .masks = { { 0x6, 3 } }, .imm_scale = 3, .syntax = 23 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 27 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memuh(+) ; memd(R29+) = ",
	},
	{
		// 1101111101000000EE10101iiiiiittt | dealloc_return ; memd(r29+Ii) = Rtt
		.encoding = { .mask = 0xfffffe00, .op = 0xdf402a00 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_RETURN_SS2_STORED_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x6, 3 } }, .imm_scale = 3, .syntax = 26 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 30 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_RET,
		.syntax = "dealloc_return ; memd(R29+) = ",
	},
	{
		// 1101111101000101EE10101iiiiiittt | if (!p0) dealloc_return ; memd(r29+Ii) = Rtt
		.encoding = { .mask = 0xfffffe00, .op = 0xdf452a00 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_RETURN_F_SS2_STORED_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x6, 3 } }, .imm_scale = 3, .syntax = 35 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 39 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "if (!P0) dealloc_return ; memd(R29+) = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 1101111101000111EE10101iiiiiittt | if (!p0.new) dealloc_return:nt ; memd(r29+Ii) = Rtt
		.encoding = { .mask = 0xfffffe00, .op = 0xdf472a00 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_RETURN_FNEW_SS2_STORED_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x6, 3 } }, .imm_scale = 3, .syntax = 42 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 46 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "if (!P0.new) dealloc_return:nt ; memd(R29+) = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 1101111101000100EE10101iiiiiittt | if (p0) dealloc_return ; memd(r29+Ii) = Rtt
		.encoding = { .mask = 0xfffffe00, .op = 0xdf442a00 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_RETURN_T_SS2_STORED_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x6, 3 } }, .imm_scale = 3, .syntax = 34 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 38 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "if (P0) dealloc_return ; memd(R29+) = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 1101111101000110EE10101iiiiiittt | if (p0.new) dealloc_return:nt ; memd(r29+Ii) = Rtt
		.encoding = { .mask = 0xfffffe00, .op = 0xdf462a00 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_RETURN_TNEW_SS2_STORED_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x6, 3 } }, .imm_scale = 3, .syntax = 41 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 45 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "if (P0.new) dealloc_return:nt ; memd(R29+) = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 1101111100000000EE100iiisssstttt | deallocframe ; memh(Rs+Ii) = Rt
		.encoding = { .mask = 0xfffff800, .op = 0xdf002000 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_DEALLOCFRAME_SS2_STOREH_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 20 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 } }, .imm_scale = 1, .syntax = 21 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 25 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "deallocframe ; memh(+) = ",
	},
	{
		// 11010IIISSSSddddEE100iiisssstttt | Rd = memb(RS+II) ; memh(Rs+Ii) = Rt
		.encoding = { .mask = 0xf800f800, .op = 0xd0002000 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_LOADRB_IO_SS2_STOREH_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 24 } }, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 8 } }, .imm_scale = 1, .syntax = 19 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 23 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memb(+) ; memh(+) = ",
	},
	{
		// 11011110IIIIIdddEE100iiisssstttt | Rdd = memd(r29+II) ; memh(Rs+Ii) = Rt
		.encoding = { .mask = 0xff00f800, .op = 0xde002000 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_LOADRD_SP_SS2_STOREH_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 19 } }, .imm_scale = 3, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 21 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 8 } }, .imm_scale = 1, .syntax = 22 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 26 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memd(R29+) ; memh(+) = ",
	},
	{
		// 11000IIISSSSddddEE100iiisssstttt | Rd = memh(RS+II) ; memh(Rs+Ii) = Rt
		.encoding = { .mask = 0xf800f800, .op = 0xc0002000 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_LOADRH_IO_SS2_STOREH_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 24 } }, .imm_scale = 1, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 8 } }, .imm_scale = 1, .syntax = 19 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 23 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memh(+) ; memh(+) = ",
	},
	{
		// 1101110IIIIIddddEE100iiisssstttt | Rd = memw(r29+II) ; memh(Rs+Ii) = Rt
		.encoding = { .mask = 0xfe00f800, .op = 0xdc002000 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_LOADRI_SP_SS2_STOREH_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 20 } }, .imm_scale = 2, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 21 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 8 } }, .imm_scale = 1, .syntax = 22 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 26 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memw(R29+) ; memh(+) = ",
	},
	{
		// 11001IIISSSSddddEE100iiisssstttt | Rd = memuh(RS+II) ; memh(Rs+Ii) = Rt
		.encoding = { .mask = 0xf800f800, .op = 0xc8002000 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_LOADRUH_IO_SS2_STOREH_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 24 } }, .imm_scale = 1, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 19 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 8 } }, .imm_scale = 1, .syntax = 20 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 24 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memuh(+) ; memh(+) = ",
	},
	{
		// 1101111101000000EE100iiisssstttt | dealloc_return ; memh(Rs+Ii) = Rt
		.encoding = { .mask = 0xfffff800, .op = 0xdf402000 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_RETURN_SS2_STOREH_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 22 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 } }, .imm_scale = 1, .syntax = 23 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 27 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_RET,
		.syntax = "dealloc_return ; memh(+) = ",
	},
	{
		// 1101111101000101EE100iiisssstttt | if (!p0) dealloc_return ; memh(Rs+Ii) = Rt
		.encoding = { .mask = 0xfffff800, .op = 0xdf452000 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_RETURN_F_SS2_STOREH_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 31 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 } }, .imm_scale = 1, .syntax = 32 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 36 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "if (!P0) dealloc_return ; memh(+) = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 1101111101000111EE100iiisssstttt | if (!p0.new) dealloc_return:nt ; memh(Rs+Ii) = Rt
		.encoding = { .mask = 0xfffff800, .op = 0xdf472000 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_RETURN_FNEW_SS2_STOREH_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 38 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 } }, .imm_scale = 1, .syntax = 39 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 43 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "if (!P0.new) dealloc_return:nt ; memh(+) = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 1101111101000100EE100iiisssstttt | if (p0) dealloc_return ; memh(Rs+Ii) = Rt
		.encoding = { .mask = 0xfffff800, .op = 0xdf442000 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_RETURN_T_SS2_STOREH_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 30 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 } }, .imm_scale = 1, .syntax = 31 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 35 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "if (P0) dealloc_return ; memh(+) = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 1101111101000110EE100iiisssstttt | if (p0.new) dealloc_return:nt ; memh(Rs+Ii) = Rt
		.encoding = { .mask = 0xfffff800, .op = 0xdf462000 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_RETURN_TNEW_SS2_STOREH_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 37 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 } }, .imm_scale = 1, .syntax = 38 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 42 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "if (P0.new) dealloc_return:nt ; memh(+) = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 1101111100000000EE10100iiiiitttt | deallocframe ; memw(r29+Ii) = Rt
		.encoding = { .mask = 0xfffffe00, .op = 0xdf002800 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_DEALLOCFRAME_SS2_STOREW_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 4 } }, .imm_scale = 2, .syntax = 24 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 28 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "deallocframe ; memw(R29+) = ",
	},
	{
		// 11010IIIssssddddEE10100iiiiitttt | Rd = memb(Rs+II) ; memw(r29+Ii) = Rt
		.encoding = { .mask = 0xf800fe00, .op = 0xd0002800 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_LOADRB_IO_SS2_STOREW_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 24 } }, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 4 } }, .imm_scale = 2, .syntax = 22 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 26 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memb(+) ; memw(R29+) = ",
	},
	{
		// 11011110IIIIIdddEE10100iiiiitttt | Rdd = memd(r29+II) ; memw(r29+Ii) = Rt
		.encoding = { .mask = 0xff00fe00, .op = 0xde002800 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_LOADRD_SP_SS2_STOREW_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 19 } }, .imm_scale = 3, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 4 } }, .imm_scale = 2, .syntax = 25 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 29 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memd(R29+) ; memw(R29+) = ",
	},
	{
		// 11000IIIssssddddEE10100iiiiitttt | Rd = memh(Rs+II) ; memw(r29+Ii) = Rt
		.encoding = { .mask = 0xf800fe00, .op = 0xc0002800 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_LOADRH_IO_SS2_STOREW_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 24 } }, .imm_scale = 1, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 4 } }, .imm_scale = 2, .syntax = 22 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 26 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memh(+) ; memw(R29+) = ",
	},
	{
		// 1101110IIIIIddddEE10100iiiiitttt | Rd = memw(r29+II) ; memw(r29+Ii) = Rt
		.encoding = { .mask = 0xfe00fe00, .op = 0xdc002800 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_LOADRI_SP_SS2_STOREW_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 20 } }, .imm_scale = 2, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 4 } }, .imm_scale = 2, .syntax = 25 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 29 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memw(R29+) ; memw(R29+) = ",
	},
	{
		// 11001IIIssssddddEE10100iiiiitttt | Rd = memuh(Rs+II) ; memw(r29+Ii) = Rt
		.encoding = { .mask = 0xf800fe00, .op = 0xc8002800 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_LOADRUH_IO_SS2_STOREW_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 24 } }, .imm_scale = 1, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 4 } }, .imm_scale = 2, .syntax = 23 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 27 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memuh(+) ; memw(R29+) = ",
	},
	{
		// 1101111101000000EE10100iiiiitttt | dealloc_return ; memw(r29+Ii) = Rt
		.encoding = { .mask = 0xfffffe00, .op = 0xdf402800 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_RETURN_SS2_STOREW_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 4 } }, .imm_scale = 2, .syntax = 26 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 30 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_RET,
		.syntax = "dealloc_return ; memw(R29+) = ",
	},
	{
		// 1101111101000101EE10100iiiiitttt | if (!p0) dealloc_return ; memw(r29+Ii) = Rt
		.encoding = { .mask = 0xfffffe00, .op = 0xdf452800 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_RETURN_F_SS2_STOREW_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 4 } }, .imm_scale = 2, .syntax = 35 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 39 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "if (!P0) dealloc_return ; memw(R29+) = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 1101111101000111EE10100iiiiitttt | if (!p0.new) dealloc_return:nt ; memw(r29+Ii) = Rt
		.encoding = { .mask = 0xfffffe00, .op = 0xdf472800 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_RETURN_FNEW_SS2_STOREW_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 4 } }, .imm_scale = 2, .syntax = 42 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 46 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "if (!P0.new) dealloc_return:nt ; memw(R29+) = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 1101111101000100EE10100iiiiitttt | if (p0) dealloc_return ; memw(r29+Ii) = Rt
		.encoding = { .mask = 0xfffffe00, .op = 0xdf442800 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_RETURN_T_SS2_STOREW_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 4 } }, .imm_scale = 2, .syntax = 34 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 38 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "if (P0) dealloc_return ; memw(R29+) = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 1101111101000110EE10100iiiiitttt | if (p0.new) dealloc_return:nt ; memw(r29+Ii) = Rt
		.encoding = { .mask = 0xfffffe00, .op = 0xdf462800 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_RETURN_TNEW_SS2_STOREW_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 4 } }, .imm_scale = 2, .syntax = 41 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 45 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "if (P0.new) dealloc_return:nt ; memw(R29+) = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 1101111100000000EE110000ssssiiii | deallocframe ; memw(Rs+Ii) = #0
		.encoding = { .mask = 0xffffff00, .op = 0xdf003000 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_DEALLOCFRAME_SS2_STOREWI0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 20 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 0 } }, .imm_scale = 2, .syntax = 21 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "deallocframe ; memw(+) = #0",
	},
	{
		// 11010IIISSSSddddEE110000ssssiiii | Rd = memb(RS+II) ; memw(Rs+Ii) = #0
		.encoding = { .mask = 0xf800ff00, .op = 0xd0003000 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_LOADRB_IO_SS2_STOREWI0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 24 } }, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 0 } }, .imm_scale = 2, .syntax = 19 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memb(+) ; memw(+) = #0",
	},
	{
		// 11011110IIIIIdddEE110000ssssiiii | Rdd = memd(r29+II) ; memw(Rs+Ii) = #0
		.encoding = { .mask = 0xff00ff00, .op = 0xde003000 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_LOADRD_SP_SS2_STOREWI0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 19 } }, .imm_scale = 3, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 21 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 0 } }, .imm_scale = 2, .syntax = 22 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memd(R29+) ; memw(+) = #0",
	},
	{
		// 11000IIISSSSddddEE110000ssssiiii | Rd = memh(RS+II) ; memw(Rs+Ii) = #0
		.encoding = { .mask = 0xf800ff00, .op = 0xc0003000 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_LOADRH_IO_SS2_STOREWI0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 24 } }, .imm_scale = 1, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 0 } }, .imm_scale = 2, .syntax = 19 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memh(+) ; memw(+) = #0",
	},
	{
		// 1101110IIIIIddddEE110000ssssiiii | Rd = memw(r29+II) ; memw(Rs+Ii) = #0
		.encoding = { .mask = 0xfe00ff00, .op = 0xdc003000 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_LOADRI_SP_SS2_STOREWI0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 20 } }, .imm_scale = 2, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 21 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 0 } }, .imm_scale = 2, .syntax = 22 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memw(R29+) ; memw(+) = #0",
	},
	{
		// 11001IIISSSSddddEE110000ssssiiii | Rd = memuh(RS+II) ; memw(Rs+Ii) = #0
		.encoding = { .mask = 0xf800ff00, .op = 0xc8003000 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_LOADRUH_IO_SS2_STOREWI0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 24 } }, .imm_scale = 1, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 19 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 0 } }, .imm_scale = 2, .syntax = 20 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memuh(+) ; memw(+) = #0",
	},
	{
		// 1101111101000000EE110000ssssiiii | dealloc_return ; memw(Rs+Ii) = #0
		.encoding = { .mask = 0xffffff00, .op = 0xdf403000 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_RETURN_SS2_STOREWI0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 22 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 0 } }, .imm_scale = 2, .syntax = 23 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_RET,
		.syntax = "dealloc_return ; memw(+) = #0",
	},
	{
		// 1101111101000101EE110000ssssiiii | if (!p0) dealloc_return ; memw(Rs+Ii) = #0
		.encoding = { .mask = 0xffffff00, .op = 0xdf453000 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_RETURN_F_SS2_STOREWI0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 31 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 0 } }, .imm_scale = 2, .syntax = 32 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "if (!P0) dealloc_return ; memw(+) = #0",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 1101111101000111EE110000ssssiiii | if (!p0.new) dealloc_return:nt ; memw(Rs+Ii) = #0
		.encoding = { .mask = 0xffffff00, .op = 0xdf473000 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_RETURN_FNEW_SS2_STOREWI0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 38 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 0 } }, .imm_scale = 2, .syntax = 39 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "if (!P0.new) dealloc_return:nt ; memw(+) = #0",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 1101111101000100EE110000ssssiiii | if (p0) dealloc_return ; memw(Rs+Ii) = #0
		.encoding = { .mask = 0xffffff00, .op = 0xdf443000 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_RETURN_T_SS2_STOREWI0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 30 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 0 } }, .imm_scale = 2, .syntax = 31 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "if (P0) dealloc_return ; memw(+) = #0",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 1101111101000110EE110000ssssiiii | if (p0.new) dealloc_return:nt ; memw(Rs+Ii) = #0
		.encoding = { .mask = 0xffffff00, .op = 0xdf463000 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_RETURN_TNEW_SS2_STOREWI0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 37 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 0 } }, .imm_scale = 2, .syntax = 38 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "if (P0.new) dealloc_return:nt ; memw(+) = #0",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 1101111100000000EE110001ssssiiii | deallocframe ; memw(Rs+Ii) = #1
		.encoding = { .mask = 0xffffff00, .op = 0xdf003100 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_DEALLOCFRAME_SS2_STOREWI1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 20 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 0 } }, .imm_scale = 2, .syntax = 21 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "deallocframe ; memw(+) = #1",
	},
	{
		// 11010IIISSSSddddEE110001ssssiiii | Rd = memb(RS+II) ; memw(Rs+Ii) = #1
		.encoding = { .mask = 0xf800ff00, .op = 0xd0003100 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_LOADRB_IO_SS2_STOREWI1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 24 } }, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 0 } }, .imm_scale = 2, .syntax = 19 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memb(+) ; memw(+) = #1",
	},
	{
		// 11011110IIIIIdddEE110001ssssiiii | Rdd = memd(r29+II) ; memw(Rs+Ii) = #1
		.encoding = { .mask = 0xff00ff00, .op = 0xde003100 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_LOADRD_SP_SS2_STOREWI1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 19 } }, .imm_scale = 3, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 21 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 0 } }, .imm_scale = 2, .syntax = 22 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memd(R29+) ; memw(+) = #1",
	},
	{
		// 11000IIISSSSddddEE110001ssssiiii | Rd = memh(RS+II) ; memw(Rs+Ii) = #1
		.encoding = { .mask = 0xf800ff00, .op = 0xc0003100 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_LOADRH_IO_SS2_STOREWI1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 24 } }, .imm_scale = 1, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 0 } }, .imm_scale = 2, .syntax = 19 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memh(+) ; memw(+) = #1",
	},
	{
		// 1101110IIIIIddddEE110001ssssiiii | Rd = memw(r29+II) ; memw(Rs+Ii) = #1
		.encoding = { .mask = 0xfe00ff00, .op = 0xdc003100 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_LOADRI_SP_SS2_STOREWI1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 20 } }, .imm_scale = 2, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 21 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 0 } }, .imm_scale = 2, .syntax = 22 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memw(R29+) ; memw(+) = #1",
	},
	{
		// 11001IIISSSSddddEE110001ssssiiii | Rd = memuh(RS+II) ; memw(Rs+Ii) = #1
		.encoding = { .mask = 0xf800ff00, .op = 0xc8003100 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_LOADRUH_IO_SS2_STOREWI1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 24 } }, .imm_scale = 1, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 19 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 0 } }, .imm_scale = 2, .syntax = 20 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memuh(+) ; memw(+) = #1",
	},
	{
		// 1101111101000000EE110001ssssiiii | dealloc_return ; memw(Rs+Ii) = #1
		.encoding = { .mask = 0xffffff00, .op = 0xdf403100 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_RETURN_SS2_STOREWI1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 22 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 0 } }, .imm_scale = 2, .syntax = 23 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_RET,
		.syntax = "dealloc_return ; memw(+) = #1",
	},
	{
		// 1101111101000101EE110001ssssiiii | if (!p0) dealloc_return ; memw(Rs+Ii) = #1
		.encoding = { .mask = 0xffffff00, .op = 0xdf453100 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_RETURN_F_SS2_STOREWI1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 31 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 0 } }, .imm_scale = 2, .syntax = 32 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "if (!P0) dealloc_return ; memw(+) = #1",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 1101111101000111EE110001ssssiiii | if (!p0.new) dealloc_return:nt ; memw(Rs+Ii) = #1
		.encoding = { .mask = 0xffffff00, .op = 0xdf473100 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_RETURN_FNEW_SS2_STOREWI1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 38 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 0 } }, .imm_scale = 2, .syntax = 39 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "if (!P0.new) dealloc_return:nt ; memw(+) = #1",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 1101111101000100EE110001ssssiiii | if (p0) dealloc_return ; memw(Rs+Ii) = #1
		.encoding = { .mask = 0xffffff00, .op = 0xdf443100 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_RETURN_T_SS2_STOREWI1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 30 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 0 } }, .imm_scale = 2, .syntax = 31 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "if (P0) dealloc_return ; memw(+) = #1",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 1101111101000110EE110001ssssiiii | if (p0.new) dealloc_return:nt ; memw(Rs+Ii) = #1
		.encoding = { .mask = 0xffffff00, .op = 0xdf463100 },
		.id = HEX_INS_X2_AUTOJOIN_SL2_RETURN_TNEW_SS2_STOREWI1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 37 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 0 } }, .imm_scale = 2, .syntax = 38 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "if (P0.new) dealloc_return:nt ; memw(+) = #1",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{ { 0 } },
};

static const HexInsnTemplate templates_duplex_0xe[] = {
	{
		// 11110010ssssIIIIEE01110iiiii0000 | memb(Rs+II) = #0 ; allocframe(Ii)
		.encoding = { .mask = 0xff00fe0f, .op = 0xf2001c00 },
		.id = HEX_INS_X2_AUTOJOIN_SS2_STOREBI0_SS2_ALLOCFRAME,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 16 } }, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 4 } }, .imm_scale = 3, .syntax = 26 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memb(+) = #0 ; allocframe()",
	},
	{
		// 11110011ssssIIIIEE01110iiiii0000 | memb(Rs+II) = #1 ; allocframe(Ii)
		.encoding = { .mask = 0xff00fe0f, .op = 0xf3001c00 },
		.id = HEX_INS_X2_AUTOJOIN_SS2_STOREBI1_SS2_ALLOCFRAME,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 16 } }, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 4 } }, .imm_scale = 3, .syntax = 26 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memb(+) = #1 ; allocframe()",
	},
	{
		// 1110101IIIIIItttEE01110iiiii0000 | memd(r29+II) = Rtt ; allocframe(Ii)
		.encoding = { .mask = 0xfe00fe0f, .op = 0xea001c00 },
		.id = HEX_INS_X2_AUTOJOIN_SS2_STORED_SP_SS2_ALLOCFRAME,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED, .masks = { { 0x6, 19 } }, .imm_scale = 3, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 4 } }, .imm_scale = 3, .syntax = 27 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memd(R29+) =  ; allocframe()",
	},
	{
		// 11100IIIssssttttEE01110iiiii0000 | memh(Rs+II) = Rt ; allocframe(Ii)
		.encoding = { .mask = 0xf800fe0f, .op = 0xe0001c00 },
		.id = HEX_INS_X2_AUTOJOIN_SS2_STOREH_IO_SS2_ALLOCFRAME,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 24 } }, .imm_scale = 1, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 4 } }, .imm_scale = 3, .syntax = 24 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memh(+) =  ; allocframe()",
	},
	{
		// 1110100IIIIIttttEE01110iiiii0000 | memw(r29+II) = Rt ; allocframe(Ii)
		.encoding = { .mask = 0xfe00fe0f, .op = 0xe8001c00 },
		.id = HEX_INS_X2_AUTOJOIN_SS2_STOREW_SP_SS2_ALLOCFRAME,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 20 } }, .imm_scale = 2, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 4 } }, .imm_scale = 3, .syntax = 27 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memw(R29+) =  ; allocframe()",
	},
	{
		// 11110000ssssIIIIEE01110iiiii0000 | memw(Rs+II) = #0 ; allocframe(Ii)
		.encoding = { .mask = 0xff00fe0f, .op = 0xf0001c00 },
		.id = HEX_INS_X2_AUTOJOIN_SS2_STOREWI0_SS2_ALLOCFRAME,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 16 } }, .imm_scale = 2, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 4 } }, .imm_scale = 3, .syntax = 26 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memw(+) = #0 ; allocframe()",
	},
	{
		// 11110001ssssIIIIEE01110iiiii0000 | memw(Rs+II) = #1 ; allocframe(Ii)
		.encoding = { .mask = 0xff00fe0f, .op = 0xf1001c00 },
		.id = HEX_INS_X2_AUTOJOIN_SS2_STOREWI1_SS2_ALLOCFRAME,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 16 } }, .imm_scale = 2, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 4 } }, .imm_scale = 3, .syntax = 26 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memw(+) = #1 ; allocframe()",
	},
	{
		// 11110010SSSSIIIIEE010010ssssiiii | memb(RS+II) = #0 ; memb(Rs+Ii) = #0
		.encoding = { .mask = 0xff00ff00, .op = 0xf2001200 },
		.id = HEX_INS_X2_AUTOJOIN_SS2_STOREBI0_SS2_STOREBI0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 16 } }, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 20 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 0 } }, .syntax = 21 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memb(+) = #0 ; memb(+) = #0",
	},
	{
		// 1110101IIIIIItttEE010010ssssiiii | memd(r29+II) = Rtt ; memb(Rs+Ii) = #0
		.encoding = { .mask = 0xfe00ff00, .op = 0xea001200 },
		.id = HEX_INS_X2_AUTOJOIN_SS2_STORED_SP_SS2_STOREBI0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED, .masks = { { 0x6, 19 } }, .imm_scale = 3, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 21 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 0 } }, .syntax = 22 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memd(R29+) =  ; memb(+) = #0",
	},
	{
		// 11100IIISSSSttttEE010010ssssiiii | memh(RS+II) = Rt ; memb(Rs+Ii) = #0
		.encoding = { .mask = 0xf800ff00, .op = 0xe0001200 },
		.id = HEX_INS_X2_AUTOJOIN_SS2_STOREH_IO_SS2_STOREBI0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 24 } }, .imm_scale = 1, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 0 } }, .syntax = 19 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memh(+) =  ; memb(+) = #0",
	},
	{
		// 1110100IIIIIttttEE010010ssssiiii | memw(r29+II) = Rt ; memb(Rs+Ii) = #0
		.encoding = { .mask = 0xfe00ff00, .op = 0xe8001200 },
		.id = HEX_INS_X2_AUTOJOIN_SS2_STOREW_SP_SS2_STOREBI0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 20 } }, .imm_scale = 2, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 21 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 0 } }, .syntax = 22 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memw(R29+) =  ; memb(+) = #0",
	},
	{
		// 11110000SSSSIIIIEE010010ssssiiii | memw(RS+II) = #0 ; memb(Rs+Ii) = #0
		.encoding = { .mask = 0xff00ff00, .op = 0xf0001200 },
		.id = HEX_INS_X2_AUTOJOIN_SS2_STOREWI0_SS2_STOREBI0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 16 } }, .imm_scale = 2, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 20 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 0 } }, .syntax = 21 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memw(+) = #0 ; memb(+) = #0",
	},
	{
		// 11110001SSSSIIIIEE010010ssssiiii | memw(RS+II) = #1 ; memb(Rs+Ii) = #0
		.encoding = { .mask = 0xff00ff00, .op = 0xf1001200 },
		.id = HEX_INS_X2_AUTOJOIN_SS2_STOREWI1_SS2_STOREBI0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 16 } }, .imm_scale = 2, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 20 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 0 } }, .syntax = 21 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memw(+) = #1 ; memb(+) = #0",
	},
	{
		// 11110010SSSSIIIIEE010011ssssiiii | memb(RS+II) = #0 ; memb(Rs+Ii) = #1
		.encoding = { .mask = 0xff00ff00, .op = 0xf2001300 },
		.id = HEX_INS_X2_AUTOJOIN_SS2_STOREBI0_SS2_STOREBI1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 16 } }, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 20 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 0 } }, .syntax = 21 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memb(+) = #0 ; memb(+) = #1",
	},
	{
		// 11110011SSSSIIIIEE010011ssssiiii | memb(RS+II) = #1 ; memb(Rs+Ii) = #1
		.encoding = { .mask = 0xff00ff00, .op = 0xf3001300 },
		.id = HEX_INS_X2_AUTOJOIN_SS2_STOREBI1_SS2_STOREBI1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 16 } }, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 20 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 0 } }, .syntax = 21 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memb(+) = #1 ; memb(+) = #1",
	},
	{
		// 1110101IIIIIItttEE010011ssssiiii | memd(r29+II) = Rtt ; memb(Rs+Ii) = #1
		.encoding = { .mask = 0xfe00ff00, .op = 0xea001300 },
		.id = HEX_INS_X2_AUTOJOIN_SS2_STORED_SP_SS2_STOREBI1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED, .masks = { { 0x6, 19 } }, .imm_scale = 3, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 21 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 0 } }, .syntax = 22 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memd(R29+) =  ; memb(+) = #1",
	},
	{
		// 11100IIISSSSttttEE010011ssssiiii | memh(RS+II) = Rt ; memb(Rs+Ii) = #1
		.encoding = { .mask = 0xf800ff00, .op = 0xe0001300 },
		.id = HEX_INS_X2_AUTOJOIN_SS2_STOREH_IO_SS2_STOREBI1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 24 } }, .imm_scale = 1, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 0 } }, .syntax = 19 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memh(+) =  ; memb(+) = #1",
	},
	{
		// 1110100IIIIIttttEE010011ssssiiii | memw(r29+II) = Rt ; memb(Rs+Ii) = #1
		.encoding = { .mask = 0xfe00ff00, .op = 0xe8001300 },
		.id = HEX_INS_X2_AUTOJOIN_SS2_STOREW_SP_SS2_STOREBI1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 20 } }, .imm_scale = 2, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 21 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 0 } }, .syntax = 22 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memw(R29+) =  ; memb(+) = #1",
	},
	{
		// 11110000SSSSIIIIEE010011ssssiiii | memw(RS+II) = #0 ; memb(Rs+Ii) = #1
		.encoding = { .mask = 0xff00ff00, .op = 0xf0001300 },
		.id = HEX_INS_X2_AUTOJOIN_SS2_STOREWI0_SS2_STOREBI1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 16 } }, .imm_scale = 2, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 20 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 0 } }, .syntax = 21 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memw(+) = #0 ; memb(+) = #1",
	},
	{
		// 11110001SSSSIIIIEE010011ssssiiii | memw(RS+II) = #1 ; memb(Rs+Ii) = #1
		.encoding = { .mask = 0xff00ff00, .op = 0xf1001300 },
		.id = HEX_INS_X2_AUTOJOIN_SS2_STOREWI1_SS2_STOREBI1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 16 } }, .imm_scale = 2, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 20 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 0 } }, .syntax = 21 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memw(+) = #1 ; memb(+) = #1",
	},
	{
		// 1110101IIIIIITTTEE00101iiiiiittt | memd(r29+II) = RTT ; memd(r29+Ii) = Rtt
		.encoding = { .mask = 0xfe00fe00, .op = 0xea000a00 },
		.id = HEX_INS_X2_AUTOJOIN_SS2_STORED_SP_SS2_STORED_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED, .masks = { { 0x6, 19 } }, .imm_scale = 3, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED, .masks = { { 0x6, 3 } }, .imm_scale = 3, .syntax = 25 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 29 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memd(R29+) =  ; memd(R29+) = ",
	},
	{
		// 11100IIIssssTTTTEE00101iiiiiittt | memh(Rs+II) = RT ; memd(r29+Ii) = Rtt
		.encoding = { .mask = 0xf800fe00, .op = 0xe0000a00 },
		.id = HEX_INS_X2_AUTOJOIN_SS2_STOREH_IO_SS2_STORED_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 24 } }, .imm_scale = 1, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED, .masks = { { 0x6, 3 } }, .imm_scale = 3, .syntax = 22 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 26 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memh(+) =  ; memd(R29+) = ",
	},
	{
		// 1110100IIIIITTTTEE00101iiiiiittt | memw(r29+II) = RT ; memd(r29+Ii) = Rtt
		.encoding = { .mask = 0xfe00fe00, .op = 0xe8000a00 },
		.id = HEX_INS_X2_AUTOJOIN_SS2_STOREW_SP_SS2_STORED_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 20 } }, .imm_scale = 2, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED, .masks = { { 0x6, 3 } }, .imm_scale = 3, .syntax = 25 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 29 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memw(R29+) =  ; memd(R29+) = ",
	},
	{
		// 11100IIISSSSTTTTEE000iiisssstttt | memh(RS+II) = RT ; memh(Rs+Ii) = Rt
		.encoding = { .mask = 0xf800f800, .op = 0xe0000000 },
		.id = HEX_INS_X2_AUTOJOIN_SS2_STOREH_IO_SS2_STOREH_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 24 } }, .imm_scale = 1, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 8 } }, .imm_scale = 1, .syntax = 19 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 23 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memh(+) =  ; memh(+) = ",
	},
	{
		// 11100IIIssssTTTTEE00100iiiiitttt | memh(Rs+II) = RT ; memw(r29+Ii) = Rt
		.encoding = { .mask = 0xf800fe00, .op = 0xe0000800 },
		.id = HEX_INS_X2_AUTOJOIN_SS2_STOREH_IO_SS2_STOREW_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 24 } }, .imm_scale = 1, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 4 } }, .imm_scale = 2, .syntax = 22 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 26 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memh(+) =  ; memw(R29+) = ",
	},
	{
		// 1110100IIIIITTTTEE00100iiiiitttt | memw(r29+II) = RT ; memw(r29+Ii) = Rt
		.encoding = { .mask = 0xfe00fe00, .op = 0xe8000800 },
		.id = HEX_INS_X2_AUTOJOIN_SS2_STOREW_SP_SS2_STOREW_SP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 20 } }, .imm_scale = 2, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 4 } }, .imm_scale = 2, .syntax = 25 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 0 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 29 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memw(R29+) =  ; memw(R29+) = ",
	},
	{
		// 1110101IIIIIItttEE010000ssssiiii | memd(r29+II) = Rtt ; memw(Rs+Ii) = #0
		.encoding = { .mask = 0xfe00ff00, .op = 0xea001000 },
		.id = HEX_INS_X2_AUTOJOIN_SS2_STORED_SP_SS2_STOREWI0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED, .masks = { { 0x6, 19 } }, .imm_scale = 3, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 21 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 0 } }, .imm_scale = 2, .syntax = 22 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memd(R29+) =  ; memw(+) = #0",
	},
	{
		// 11100IIISSSSttttEE010000ssssiiii | memh(RS+II) = Rt ; memw(Rs+Ii) = #0
		.encoding = { .mask = 0xf800ff00, .op = 0xe0001000 },
		.id = HEX_INS_X2_AUTOJOIN_SS2_STOREH_IO_SS2_STOREWI0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 24 } }, .imm_scale = 1, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 0 } }, .imm_scale = 2, .syntax = 19 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memh(+) =  ; memw(+) = #0",
	},
	{
		// 1110100IIIIIttttEE010000ssssiiii | memw(r29+II) = Rt ; memw(Rs+Ii) = #0
		.encoding = { .mask = 0xfe00ff00, .op = 0xe8001000 },
		.id = HEX_INS_X2_AUTOJOIN_SS2_STOREW_SP_SS2_STOREWI0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 20 } }, .imm_scale = 2, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 21 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 0 } }, .imm_scale = 2, .syntax = 22 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memw(R29+) =  ; memw(+) = #0",
	},
	{
		// 11110000SSSSIIIIEE010000ssssiiii | memw(RS+II) = #0 ; memw(Rs+Ii) = #0
		.encoding = { .mask = 0xff00ff00, .op = 0xf0001000 },
		.id = HEX_INS_X2_AUTOJOIN_SS2_STOREWI0_SS2_STOREWI0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 16 } }, .imm_scale = 2, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 20 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 0 } }, .imm_scale = 2, .syntax = 21 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memw(+) = #0 ; memw(+) = #0",
	},
	{
		// 1110101IIIIIItttEE010001ssssiiii | memd(r29+II) = Rtt ; memw(Rs+Ii) = #1
		.encoding = { .mask = 0xfe00ff00, .op = 0xea001100 },
		.id = HEX_INS_X2_AUTOJOIN_SS2_STORED_SP_SS2_STOREWI1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED, .masks = { { 0x6, 19 } }, .imm_scale = 3, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 21 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 0 } }, .imm_scale = 2, .syntax = 22 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memd(R29+) =  ; memw(+) = #1",
	},
	{
		// 11100IIISSSSttttEE010001ssssiiii | memh(RS+II) = Rt ; memw(Rs+Ii) = #1
		.encoding = { .mask = 0xf800ff00, .op = 0xe0001100 },
		.id = HEX_INS_X2_AUTOJOIN_SS2_STOREH_IO_SS2_STOREWI1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 24 } }, .imm_scale = 1, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 0 } }, .imm_scale = 2, .syntax = 19 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memh(+) =  ; memw(+) = #1",
	},
	{
		// 1110100IIIIIttttEE010001ssssiiii | memw(r29+II) = Rt ; memw(Rs+Ii) = #1
		.encoding = { .mask = 0xfe00ff00, .op = 0xe8001100 },
		.id = HEX_INS_X2_AUTOJOIN_SS2_STOREW_SP_SS2_STOREWI1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 20 } }, .imm_scale = 2, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 21 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 0 } }, .imm_scale = 2, .syntax = 22 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memw(R29+) =  ; memw(+) = #1",
	},
	{
		// 11110000SSSSIIIIEE010001ssssiiii | memw(RS+II) = #0 ; memw(Rs+Ii) = #1
		.encoding = { .mask = 0xff00ff00, .op = 0xf0001100 },
		.id = HEX_INS_X2_AUTOJOIN_SS2_STOREWI0_SS2_STOREWI1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 16 } }, .imm_scale = 2, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 20 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 0 } }, .imm_scale = 2, .syntax = 21 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memw(+) = #0 ; memw(+) = #1",
	},
	{
		// 11110001SSSSIIIIEE010001ssssiiii | memw(RS+II) = #1 ; memw(Rs+Ii) = #1
		.encoding = { .mask = 0xff00ff00, .op = 0xf1001100 },
		.id = HEX_INS_X2_AUTOJOIN_SS2_STOREWI1_SS2_STOREWI1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 20 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 16 } }, .imm_scale = 2, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 4 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 20 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x4, 0 } }, .imm_scale = 2, .syntax = 21 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memw(+) = #1 ; memw(+) = #1",
	},
	{ { 0 } },
};

static const HexInsnTemplate *templates_duplex[] = {
	templates_duplex_0x0,
	templates_duplex_0x1,
	templates_duplex_0x2,
	templates_duplex_0x3,
	templates_duplex_0x4,
	templates_duplex_0x5,
	templates_duplex_0x6,
	templates_duplex_0x7,
	templates_duplex_0x8,
	templates_duplex_0x9,
	templates_duplex_0xa,
	templates_duplex_0xb,
	templates_duplex_0xc,
	templates_duplex_0xd,
	templates_duplex_0xe
};

static const HexInsnTemplate templates_normal_0x0[] = {
	{
		// 0000iiiiiiiiiiiiPPiiiiiiiiiiiiii | immext(Ii)
		.encoding = { .mask = 0xf0000000, .op = 0x0 },
		.id = HEX_INS_A4_EXT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0xe, 0 }, { 0xc, 16 } }, .imm_scale = 6, .syntax = 7 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "immext()",
	},
	{
		// 0000000000000000PP00000000000000 | <invalid>
		.encoding = { .mask = 0xffff3fff, .op = 0x0 },
		.id = HEX_INS_INVALID_DECODE,
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_ILL,
		.syntax = "<invalid>",
	},
	{ { 0 } },
};

static const HexInsnTemplate templates_normal_0x1[] = {
	{
		// 0001010001iissssPP00ttttiiiiiii0 | p0 = cmp.eq(Rs,Rt); if (!p0.new) jump:nt Ii
		.encoding = { .mask = 0xffc03001, .op = 0x14400000 },
		.id = HEX_INS_J4_CMPEQ_FP0_JUMP_NT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 8 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x2, 20 } }, .imm_scale = 2, .syntax = 37 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "P0 = cmp.eq(,); if (!P0.new) jump:nt ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0001010001iissssPP10ttttiiiiiii0 | p0 = cmp.eq(Rs,Rt); if (!p0.new) jump:t Ii
		.encoding = { .mask = 0xffc03001, .op = 0x14402000 },
		.id = HEX_INS_J4_CMPEQ_FP0_JUMP_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 8 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x2, 20 } }, .imm_scale = 2, .syntax = 36 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "P0 = cmp.eq(,); if (!P0.new) jump:t ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0001010001iissssPP01ttttiiiiiii0 | p1 = cmp.eq(Rs,Rt); if (!p1.new) jump:nt Ii
		.encoding = { .mask = 0xffc03001, .op = 0x14401000 },
		.id = HEX_INS_J4_CMPEQ_FP1_JUMP_NT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 8 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x2, 20 } }, .imm_scale = 2, .syntax = 37 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "P1 = cmp.eq(,); if (!P1.new) jump:nt ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0001010001iissssPP11ttttiiiiiii0 | p1 = cmp.eq(Rs,Rt); if (!p1.new) jump:t Ii
		.encoding = { .mask = 0xffc03001, .op = 0x14403000 },
		.id = HEX_INS_J4_CMPEQ_FP1_JUMP_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 8 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x2, 20 } }, .imm_scale = 2, .syntax = 36 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "P1 = cmp.eq(,); if (!P1.new) jump:t ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0001010000iissssPP00ttttiiiiiii0 | p0 = cmp.eq(Rs,Rt); if (p0.new) jump:nt Ii
		.encoding = { .mask = 0xffc03001, .op = 0x14000000 },
		.id = HEX_INS_J4_CMPEQ_TP0_JUMP_NT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 8 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x2, 20 } }, .imm_scale = 2, .syntax = 36 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "P0 = cmp.eq(,); if (P0.new) jump:nt ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0001010000iissssPP10ttttiiiiiii0 | p0 = cmp.eq(Rs,Rt); if (p0.new) jump:t Ii
		.encoding = { .mask = 0xffc03001, .op = 0x14002000 },
		.id = HEX_INS_J4_CMPEQ_TP0_JUMP_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 8 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x2, 20 } }, .imm_scale = 2, .syntax = 35 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "P0 = cmp.eq(,); if (P0.new) jump:t ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0001010000iissssPP01ttttiiiiiii0 | p1 = cmp.eq(Rs,Rt); if (p1.new) jump:nt Ii
		.encoding = { .mask = 0xffc03001, .op = 0x14001000 },
		.id = HEX_INS_J4_CMPEQ_TP1_JUMP_NT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 8 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x2, 20 } }, .imm_scale = 2, .syntax = 36 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "P1 = cmp.eq(,); if (P1.new) jump:nt ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0001010000iissssPP11ttttiiiiiii0 | p1 = cmp.eq(Rs,Rt); if (p1.new) jump:t Ii
		.encoding = { .mask = 0xffc03001, .op = 0x14003000 },
		.id = HEX_INS_J4_CMPEQ_TP1_JUMP_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 8 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x2, 20 } }, .imm_scale = 2, .syntax = 35 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "P1 = cmp.eq(,); if (P1.new) jump:t ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0001000001iissssPP0IIIIIiiiiiii0 | p0 = cmp.eq(Rs,II); if (!p0.new) jump:nt Ii
		.encoding = { .mask = 0xffc02001, .op = 0x10400000 },
		.id = HEX_INS_J4_CMPEQI_FP0_JUMP_NT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 8 } }, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x2, 20 } }, .imm_scale = 2, .syntax = 37 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "P0 = cmp.eq(,); if (!P0.new) jump:nt ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0001000001iissssPP1IIIIIiiiiiii0 | p0 = cmp.eq(Rs,II); if (!p0.new) jump:t Ii
		.encoding = { .mask = 0xffc02001, .op = 0x10402000 },
		.id = HEX_INS_J4_CMPEQI_FP0_JUMP_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 8 } }, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x2, 20 } }, .imm_scale = 2, .syntax = 36 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "P0 = cmp.eq(,); if (!P0.new) jump:t ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0001001001iissssPP0IIIIIiiiiiii0 | p1 = cmp.eq(Rs,II); if (!p1.new) jump:nt Ii
		.encoding = { .mask = 0xffc02001, .op = 0x12400000 },
		.id = HEX_INS_J4_CMPEQI_FP1_JUMP_NT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 8 } }, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x2, 20 } }, .imm_scale = 2, .syntax = 37 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "P1 = cmp.eq(,); if (!P1.new) jump:nt ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0001001001iissssPP1IIIIIiiiiiii0 | p1 = cmp.eq(Rs,II); if (!p1.new) jump:t Ii
		.encoding = { .mask = 0xffc02001, .op = 0x12402000 },
		.id = HEX_INS_J4_CMPEQI_FP1_JUMP_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 8 } }, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x2, 20 } }, .imm_scale = 2, .syntax = 36 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "P1 = cmp.eq(,); if (!P1.new) jump:t ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0001000000iissssPP0IIIIIiiiiiii0 | p0 = cmp.eq(Rs,II); if (p0.new) jump:nt Ii
		.encoding = { .mask = 0xffc02001, .op = 0x10000000 },
		.id = HEX_INS_J4_CMPEQI_TP0_JUMP_NT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 8 } }, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x2, 20 } }, .imm_scale = 2, .syntax = 36 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "P0 = cmp.eq(,); if (P0.new) jump:nt ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0001000000iissssPP1IIIIIiiiiiii0 | p0 = cmp.eq(Rs,II); if (p0.new) jump:t Ii
		.encoding = { .mask = 0xffc02001, .op = 0x10002000 },
		.id = HEX_INS_J4_CMPEQI_TP0_JUMP_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 8 } }, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x2, 20 } }, .imm_scale = 2, .syntax = 35 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "P0 = cmp.eq(,); if (P0.new) jump:t ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0001001000iissssPP0IIIIIiiiiiii0 | p1 = cmp.eq(Rs,II); if (p1.new) jump:nt Ii
		.encoding = { .mask = 0xffc02001, .op = 0x12000000 },
		.id = HEX_INS_J4_CMPEQI_TP1_JUMP_NT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 8 } }, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x2, 20 } }, .imm_scale = 2, .syntax = 36 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "P1 = cmp.eq(,); if (P1.new) jump:nt ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0001001000iissssPP1IIIIIiiiiiii0 | p1 = cmp.eq(Rs,II); if (p1.new) jump:t Ii
		.encoding = { .mask = 0xffc02001, .op = 0x12002000 },
		.id = HEX_INS_J4_CMPEQI_TP1_JUMP_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 8 } }, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x2, 20 } }, .imm_scale = 2, .syntax = 35 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "P1 = cmp.eq(,); if (P1.new) jump:t ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0001000111iissssPP000000iiiiiii0 | p0 = cmp.eq(Rs,n1); if (!p0.new) jump:nt Ii
		.encoding = { .mask = 0xffc03f01, .op = 0x11c00000 },
		.id = HEX_INS_J4_CMPEQN1_FP0_JUMP_NT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x2, 20 } }, .imm_scale = 2, .syntax = 37 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "P0 = cmp.eq(,); if (!P0.new) jump:nt ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0001000111iissssPP100000iiiiiii0 | p0 = cmp.eq(Rs,n1); if (!p0.new) jump:t Ii
		.encoding = { .mask = 0xffc03f01, .op = 0x11c02000 },
		.id = HEX_INS_J4_CMPEQN1_FP0_JUMP_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x2, 20 } }, .imm_scale = 2, .syntax = 36 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "P0 = cmp.eq(,); if (!P0.new) jump:t ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0001001111iissssPP000000iiiiiii0 | p1 = cmp.eq(Rs,n1); if (!p1.new) jump:nt Ii
		.encoding = { .mask = 0xffc03f01, .op = 0x13c00000 },
		.id = HEX_INS_J4_CMPEQN1_FP1_JUMP_NT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x2, 20 } }, .imm_scale = 2, .syntax = 37 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "P1 = cmp.eq(,); if (!P1.new) jump:nt ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0001001111iissssPP100000iiiiiii0 | p1 = cmp.eq(Rs,n1); if (!p1.new) jump:t Ii
		.encoding = { .mask = 0xffc03f01, .op = 0x13c02000 },
		.id = HEX_INS_J4_CMPEQN1_FP1_JUMP_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x2, 20 } }, .imm_scale = 2, .syntax = 36 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "P1 = cmp.eq(,); if (!P1.new) jump:t ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0001000110iissssPP000000iiiiiii0 | p0 = cmp.eq(Rs,n1); if (p0.new) jump:nt Ii
		.encoding = { .mask = 0xffc03f01, .op = 0x11800000 },
		.id = HEX_INS_J4_CMPEQN1_TP0_JUMP_NT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x2, 20 } }, .imm_scale = 2, .syntax = 36 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "P0 = cmp.eq(,); if (P0.new) jump:nt ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0001000110iissssPP100000iiiiiii0 | p0 = cmp.eq(Rs,n1); if (p0.new) jump:t Ii
		.encoding = { .mask = 0xffc03f01, .op = 0x11802000 },
		.id = HEX_INS_J4_CMPEQN1_TP0_JUMP_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x2, 20 } }, .imm_scale = 2, .syntax = 35 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "P0 = cmp.eq(,); if (P0.new) jump:t ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0001001110iissssPP000000iiiiiii0 | p1 = cmp.eq(Rs,n1); if (p1.new) jump:nt Ii
		.encoding = { .mask = 0xffc03f01, .op = 0x13800000 },
		.id = HEX_INS_J4_CMPEQN1_TP1_JUMP_NT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x2, 20 } }, .imm_scale = 2, .syntax = 36 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "P1 = cmp.eq(,); if (P1.new) jump:nt ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0001001110iissssPP100000iiiiiii0 | p1 = cmp.eq(Rs,n1); if (p1.new) jump:t Ii
		.encoding = { .mask = 0xffc03f01, .op = 0x13802000 },
		.id = HEX_INS_J4_CMPEQN1_TP1_JUMP_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x2, 20 } }, .imm_scale = 2, .syntax = 35 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "P1 = cmp.eq(,); if (P1.new) jump:t ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0001010011iissssPP00ttttiiiiiii0 | p0 = cmp.gt(Rs,Rt); if (!p0.new) jump:nt Ii
		.encoding = { .mask = 0xffc03001, .op = 0x14c00000 },
		.id = HEX_INS_J4_CMPGT_FP0_JUMP_NT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 8 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x2, 20 } }, .imm_scale = 2, .syntax = 37 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "P0 = cmp.gt(,); if (!P0.new) jump:nt ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0001010011iissssPP10ttttiiiiiii0 | p0 = cmp.gt(Rs,Rt); if (!p0.new) jump:t Ii
		.encoding = { .mask = 0xffc03001, .op = 0x14c02000 },
		.id = HEX_INS_J4_CMPGT_FP0_JUMP_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 8 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x2, 20 } }, .imm_scale = 2, .syntax = 36 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "P0 = cmp.gt(,); if (!P0.new) jump:t ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0001010011iissssPP01ttttiiiiiii0 | p1 = cmp.gt(Rs,Rt); if (!p1.new) jump:nt Ii
		.encoding = { .mask = 0xffc03001, .op = 0x14c01000 },
		.id = HEX_INS_J4_CMPGT_FP1_JUMP_NT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 8 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x2, 20 } }, .imm_scale = 2, .syntax = 37 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "P1 = cmp.gt(,); if (!P1.new) jump:nt ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0001010011iissssPP11ttttiiiiiii0 | p1 = cmp.gt(Rs,Rt); if (!p1.new) jump:t Ii
		.encoding = { .mask = 0xffc03001, .op = 0x14c03000 },
		.id = HEX_INS_J4_CMPGT_FP1_JUMP_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 8 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x2, 20 } }, .imm_scale = 2, .syntax = 36 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "P1 = cmp.gt(,); if (!P1.new) jump:t ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0001010010iissssPP00ttttiiiiiii0 | p0 = cmp.gt(Rs,Rt); if (p0.new) jump:nt Ii
		.encoding = { .mask = 0xffc03001, .op = 0x14800000 },
		.id = HEX_INS_J4_CMPGT_TP0_JUMP_NT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 8 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x2, 20 } }, .imm_scale = 2, .syntax = 36 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "P0 = cmp.gt(,); if (P0.new) jump:nt ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0001010010iissssPP10ttttiiiiiii0 | p0 = cmp.gt(Rs,Rt); if (p0.new) jump:t Ii
		.encoding = { .mask = 0xffc03001, .op = 0x14802000 },
		.id = HEX_INS_J4_CMPGT_TP0_JUMP_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 8 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x2, 20 } }, .imm_scale = 2, .syntax = 35 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "P0 = cmp.gt(,); if (P0.new) jump:t ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0001010010iissssPP01ttttiiiiiii0 | p1 = cmp.gt(Rs,Rt); if (p1.new) jump:nt Ii
		.encoding = { .mask = 0xffc03001, .op = 0x14801000 },
		.id = HEX_INS_J4_CMPGT_TP1_JUMP_NT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 8 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x2, 20 } }, .imm_scale = 2, .syntax = 36 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "P1 = cmp.gt(,); if (P1.new) jump:nt ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0001010010iissssPP11ttttiiiiiii0 | p1 = cmp.gt(Rs,Rt); if (p1.new) jump:t Ii
		.encoding = { .mask = 0xffc03001, .op = 0x14803000 },
		.id = HEX_INS_J4_CMPGT_TP1_JUMP_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 8 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x2, 20 } }, .imm_scale = 2, .syntax = 35 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "P1 = cmp.gt(,); if (P1.new) jump:t ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0001000011iissssPP0IIIIIiiiiiii0 | p0 = cmp.gt(Rs,II); if (!p0.new) jump:nt Ii
		.encoding = { .mask = 0xffc02001, .op = 0x10c00000 },
		.id = HEX_INS_J4_CMPGTI_FP0_JUMP_NT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 8 } }, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x2, 20 } }, .imm_scale = 2, .syntax = 37 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "P0 = cmp.gt(,); if (!P0.new) jump:nt ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0001000011iissssPP1IIIIIiiiiiii0 | p0 = cmp.gt(Rs,II); if (!p0.new) jump:t Ii
		.encoding = { .mask = 0xffc02001, .op = 0x10c02000 },
		.id = HEX_INS_J4_CMPGTI_FP0_JUMP_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 8 } }, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x2, 20 } }, .imm_scale = 2, .syntax = 36 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "P0 = cmp.gt(,); if (!P0.new) jump:t ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0001001011iissssPP0IIIIIiiiiiii0 | p1 = cmp.gt(Rs,II); if (!p1.new) jump:nt Ii
		.encoding = { .mask = 0xffc02001, .op = 0x12c00000 },
		.id = HEX_INS_J4_CMPGTI_FP1_JUMP_NT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 8 } }, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x2, 20 } }, .imm_scale = 2, .syntax = 37 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "P1 = cmp.gt(,); if (!P1.new) jump:nt ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0001001011iissssPP1IIIIIiiiiiii0 | p1 = cmp.gt(Rs,II); if (!p1.new) jump:t Ii
		.encoding = { .mask = 0xffc02001, .op = 0x12c02000 },
		.id = HEX_INS_J4_CMPGTI_FP1_JUMP_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 8 } }, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x2, 20 } }, .imm_scale = 2, .syntax = 36 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "P1 = cmp.gt(,); if (!P1.new) jump:t ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0001000010iissssPP0IIIIIiiiiiii0 | p0 = cmp.gt(Rs,II); if (p0.new) jump:nt Ii
		.encoding = { .mask = 0xffc02001, .op = 0x10800000 },
		.id = HEX_INS_J4_CMPGTI_TP0_JUMP_NT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 8 } }, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x2, 20 } }, .imm_scale = 2, .syntax = 36 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "P0 = cmp.gt(,); if (P0.new) jump:nt ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0001000010iissssPP1IIIIIiiiiiii0 | p0 = cmp.gt(Rs,II); if (p0.new) jump:t Ii
		.encoding = { .mask = 0xffc02001, .op = 0x10802000 },
		.id = HEX_INS_J4_CMPGTI_TP0_JUMP_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 8 } }, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x2, 20 } }, .imm_scale = 2, .syntax = 35 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "P0 = cmp.gt(,); if (P0.new) jump:t ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0001001010iissssPP0IIIIIiiiiiii0 | p1 = cmp.gt(Rs,II); if (p1.new) jump:nt Ii
		.encoding = { .mask = 0xffc02001, .op = 0x12800000 },
		.id = HEX_INS_J4_CMPGTI_TP1_JUMP_NT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 8 } }, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x2, 20 } }, .imm_scale = 2, .syntax = 36 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "P1 = cmp.gt(,); if (P1.new) jump:nt ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0001001010iissssPP1IIIIIiiiiiii0 | p1 = cmp.gt(Rs,II); if (p1.new) jump:t Ii
		.encoding = { .mask = 0xffc02001, .op = 0x12802000 },
		.id = HEX_INS_J4_CMPGTI_TP1_JUMP_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 8 } }, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x2, 20 } }, .imm_scale = 2, .syntax = 35 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "P1 = cmp.gt(,); if (P1.new) jump:t ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0001000111iissssPP000001iiiiiii0 | p0 = cmp.gt(Rs,n1); if (!p0.new) jump:nt Ii
		.encoding = { .mask = 0xffc03f01, .op = 0x11c00100 },
		.id = HEX_INS_J4_CMPGTN1_FP0_JUMP_NT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x2, 20 } }, .imm_scale = 2, .syntax = 37 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "P0 = cmp.gt(,); if (!P0.new) jump:nt ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0001000111iissssPP100001iiiiiii0 | p0 = cmp.gt(Rs,n1); if (!p0.new) jump:t Ii
		.encoding = { .mask = 0xffc03f01, .op = 0x11c02100 },
		.id = HEX_INS_J4_CMPGTN1_FP0_JUMP_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x2, 20 } }, .imm_scale = 2, .syntax = 36 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "P0 = cmp.gt(,); if (!P0.new) jump:t ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0001001111iissssPP000001iiiiiii0 | p1 = cmp.gt(Rs,n1); if (!p1.new) jump:nt Ii
		.encoding = { .mask = 0xffc03f01, .op = 0x13c00100 },
		.id = HEX_INS_J4_CMPGTN1_FP1_JUMP_NT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x2, 20 } }, .imm_scale = 2, .syntax = 37 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "P1 = cmp.gt(,); if (!P1.new) jump:nt ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0001001111iissssPP100001iiiiiii0 | p1 = cmp.gt(Rs,n1); if (!p1.new) jump:t Ii
		.encoding = { .mask = 0xffc03f01, .op = 0x13c02100 },
		.id = HEX_INS_J4_CMPGTN1_FP1_JUMP_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x2, 20 } }, .imm_scale = 2, .syntax = 36 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "P1 = cmp.gt(,); if (!P1.new) jump:t ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0001000110iissssPP000001iiiiiii0 | p0 = cmp.gt(Rs,n1); if (p0.new) jump:nt Ii
		.encoding = { .mask = 0xffc03f01, .op = 0x11800100 },
		.id = HEX_INS_J4_CMPGTN1_TP0_JUMP_NT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x2, 20 } }, .imm_scale = 2, .syntax = 36 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "P0 = cmp.gt(,); if (P0.new) jump:nt ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0001000110iissssPP100001iiiiiii0 | p0 = cmp.gt(Rs,n1); if (p0.new) jump:t Ii
		.encoding = { .mask = 0xffc03f01, .op = 0x11802100 },
		.id = HEX_INS_J4_CMPGTN1_TP0_JUMP_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x2, 20 } }, .imm_scale = 2, .syntax = 35 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "P0 = cmp.gt(,); if (P0.new) jump:t ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0001001110iissssPP000001iiiiiii0 | p1 = cmp.gt(Rs,n1); if (p1.new) jump:nt Ii
		.encoding = { .mask = 0xffc03f01, .op = 0x13800100 },
		.id = HEX_INS_J4_CMPGTN1_TP1_JUMP_NT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x2, 20 } }, .imm_scale = 2, .syntax = 36 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "P1 = cmp.gt(,); if (P1.new) jump:nt ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0001001110iissssPP100001iiiiiii0 | p1 = cmp.gt(Rs,n1); if (p1.new) jump:t Ii
		.encoding = { .mask = 0xffc03f01, .op = 0x13802100 },
		.id = HEX_INS_J4_CMPGTN1_TP1_JUMP_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x2, 20 } }, .imm_scale = 2, .syntax = 35 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "P1 = cmp.gt(,); if (P1.new) jump:t ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0001010101iissssPP00ttttiiiiiii0 | p0 = cmp.gtu(Rs,Rt); if (!p0.new) jump:nt Ii
		.encoding = { .mask = 0xffc03001, .op = 0x15400000 },
		.id = HEX_INS_J4_CMPGTU_FP0_JUMP_NT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 8 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x2, 20 } }, .imm_scale = 2, .syntax = 38 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "P0 = cmp.gtu(,); if (!P0.new) jump:nt ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0001010101iissssPP10ttttiiiiiii0 | p0 = cmp.gtu(Rs,Rt); if (!p0.new) jump:t Ii
		.encoding = { .mask = 0xffc03001, .op = 0x15402000 },
		.id = HEX_INS_J4_CMPGTU_FP0_JUMP_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 8 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x2, 20 } }, .imm_scale = 2, .syntax = 37 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "P0 = cmp.gtu(,); if (!P0.new) jump:t ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0001010101iissssPP01ttttiiiiiii0 | p1 = cmp.gtu(Rs,Rt); if (!p1.new) jump:nt Ii
		.encoding = { .mask = 0xffc03001, .op = 0x15401000 },
		.id = HEX_INS_J4_CMPGTU_FP1_JUMP_NT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 8 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x2, 20 } }, .imm_scale = 2, .syntax = 38 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "P1 = cmp.gtu(,); if (!P1.new) jump:nt ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0001010101iissssPP11ttttiiiiiii0 | p1 = cmp.gtu(Rs,Rt); if (!p1.new) jump:t Ii
		.encoding = { .mask = 0xffc03001, .op = 0x15403000 },
		.id = HEX_INS_J4_CMPGTU_FP1_JUMP_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 8 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x2, 20 } }, .imm_scale = 2, .syntax = 37 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "P1 = cmp.gtu(,); if (!P1.new) jump:t ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0001010100iissssPP00ttttiiiiiii0 | p0 = cmp.gtu(Rs,Rt); if (p0.new) jump:nt Ii
		.encoding = { .mask = 0xffc03001, .op = 0x15000000 },
		.id = HEX_INS_J4_CMPGTU_TP0_JUMP_NT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 8 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x2, 20 } }, .imm_scale = 2, .syntax = 37 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "P0 = cmp.gtu(,); if (P0.new) jump:nt ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0001010100iissssPP10ttttiiiiiii0 | p0 = cmp.gtu(Rs,Rt); if (p0.new) jump:t Ii
		.encoding = { .mask = 0xffc03001, .op = 0x15002000 },
		.id = HEX_INS_J4_CMPGTU_TP0_JUMP_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 8 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x2, 20 } }, .imm_scale = 2, .syntax = 36 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "P0 = cmp.gtu(,); if (P0.new) jump:t ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0001010100iissssPP01ttttiiiiiii0 | p1 = cmp.gtu(Rs,Rt); if (p1.new) jump:nt Ii
		.encoding = { .mask = 0xffc03001, .op = 0x15001000 },
		.id = HEX_INS_J4_CMPGTU_TP1_JUMP_NT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 8 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x2, 20 } }, .imm_scale = 2, .syntax = 37 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "P1 = cmp.gtu(,); if (P1.new) jump:nt ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0001010100iissssPP11ttttiiiiiii0 | p1 = cmp.gtu(Rs,Rt); if (p1.new) jump:t Ii
		.encoding = { .mask = 0xffc03001, .op = 0x15003000 },
		.id = HEX_INS_J4_CMPGTU_TP1_JUMP_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 8 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x2, 20 } }, .imm_scale = 2, .syntax = 36 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "P1 = cmp.gtu(,); if (P1.new) jump:t ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0001000101iissssPP0IIIIIiiiiiii0 | p0 = cmp.gtu(Rs,II); if (!p0.new) jump:nt Ii
		.encoding = { .mask = 0xffc02001, .op = 0x11400000 },
		.id = HEX_INS_J4_CMPGTUI_FP0_JUMP_NT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 8 } }, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x2, 20 } }, .imm_scale = 2, .syntax = 38 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "P0 = cmp.gtu(,); if (!P0.new) jump:nt ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0001000101iissssPP1IIIIIiiiiiii0 | p0 = cmp.gtu(Rs,II); if (!p0.new) jump:t Ii
		.encoding = { .mask = 0xffc02001, .op = 0x11402000 },
		.id = HEX_INS_J4_CMPGTUI_FP0_JUMP_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 8 } }, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x2, 20 } }, .imm_scale = 2, .syntax = 37 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "P0 = cmp.gtu(,); if (!P0.new) jump:t ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0001001101iissssPP0IIIIIiiiiiii0 | p1 = cmp.gtu(Rs,II); if (!p1.new) jump:nt Ii
		.encoding = { .mask = 0xffc02001, .op = 0x13400000 },
		.id = HEX_INS_J4_CMPGTUI_FP1_JUMP_NT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 8 } }, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x2, 20 } }, .imm_scale = 2, .syntax = 38 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "P1 = cmp.gtu(,); if (!P1.new) jump:nt ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0001001101iissssPP1IIIIIiiiiiii0 | p1 = cmp.gtu(Rs,II); if (!p1.new) jump:t Ii
		.encoding = { .mask = 0xffc02001, .op = 0x13402000 },
		.id = HEX_INS_J4_CMPGTUI_FP1_JUMP_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 8 } }, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x2, 20 } }, .imm_scale = 2, .syntax = 37 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "P1 = cmp.gtu(,); if (!P1.new) jump:t ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0001000100iissssPP0IIIIIiiiiiii0 | p0 = cmp.gtu(Rs,II); if (p0.new) jump:nt Ii
		.encoding = { .mask = 0xffc02001, .op = 0x11000000 },
		.id = HEX_INS_J4_CMPGTUI_TP0_JUMP_NT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 8 } }, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x2, 20 } }, .imm_scale = 2, .syntax = 37 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "P0 = cmp.gtu(,); if (P0.new) jump:nt ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0001000100iissssPP1IIIIIiiiiiii0 | p0 = cmp.gtu(Rs,II); if (p0.new) jump:t Ii
		.encoding = { .mask = 0xffc02001, .op = 0x11002000 },
		.id = HEX_INS_J4_CMPGTUI_TP0_JUMP_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 8 } }, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x2, 20 } }, .imm_scale = 2, .syntax = 36 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "P0 = cmp.gtu(,); if (P0.new) jump:t ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0001001100iissssPP0IIIIIiiiiiii0 | p1 = cmp.gtu(Rs,II); if (p1.new) jump:nt Ii
		.encoding = { .mask = 0xffc02001, .op = 0x13000000 },
		.id = HEX_INS_J4_CMPGTUI_TP1_JUMP_NT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 8 } }, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x2, 20 } }, .imm_scale = 2, .syntax = 37 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "P1 = cmp.gtu(,); if (P1.new) jump:nt ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0001001100iissssPP1IIIIIiiiiiii0 | p1 = cmp.gtu(Rs,II); if (p1.new) jump:t Ii
		.encoding = { .mask = 0xffc02001, .op = 0x13002000 },
		.id = HEX_INS_J4_CMPGTUI_TP1_JUMP_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 8 } }, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x2, 20 } }, .imm_scale = 2, .syntax = 36 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "P1 = cmp.gtu(,); if (P1.new) jump:t ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0001011000iiddddPPIIIIIIiiiiiii0 | Rd = II ; jump Ii
		.encoding = { .mask = 0xffc00001, .op = 0x16000000 },
		.id = HEX_INS_J4_JUMPSETI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x6, 8 } }, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x2, 20 } }, .imm_scale = 2, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_JMP,
		.syntax = " =  ; jump ",
		.flags = HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0001011100iissssPP00ddddiiiiiii0 | Rd = Rs ; jump Ii
		.encoding = { .mask = 0xffc03001, .op = 0x17000000 },
		.id = HEX_INS_J4_JUMPSETR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x4, 8 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x2, 20 } }, .imm_scale = 2, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_JMP,
		.syntax = " =  ; jump ",
		.flags = HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0001000111iissssPP000011iiiiiii0 | p0 = tstbit(Rs,#0); if (!p0.new) jump:nt Ii
		.encoding = { .mask = 0xffc03f01, .op = 0x11c00300 },
		.id = HEX_INS_J4_TSTBIT0_FP0_JUMP_NT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x2, 20 } }, .imm_scale = 2, .syntax = 39 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "P0 = tstbit(,#0); if (!P0.new) jump:nt ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0001000111iissssPP100011iiiiiii0 | p0 = tstbit(Rs,#0); if (!p0.new) jump:t Ii
		.encoding = { .mask = 0xffc03f01, .op = 0x11c02300 },
		.id = HEX_INS_J4_TSTBIT0_FP0_JUMP_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x2, 20 } }, .imm_scale = 2, .syntax = 38 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "P0 = tstbit(,#0); if (!P0.new) jump:t ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0001001111iissssPP000011iiiiiii0 | p1 = tstbit(Rs,#0); if (!p1.new) jump:nt Ii
		.encoding = { .mask = 0xffc03f01, .op = 0x13c00300 },
		.id = HEX_INS_J4_TSTBIT0_FP1_JUMP_NT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x2, 20 } }, .imm_scale = 2, .syntax = 39 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "P1 = tstbit(,#0); if (!P1.new) jump:nt ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0001001111iissssPP100011iiiiiii0 | p1 = tstbit(Rs,#0); if (!p1.new) jump:t Ii
		.encoding = { .mask = 0xffc03f01, .op = 0x13c02300 },
		.id = HEX_INS_J4_TSTBIT0_FP1_JUMP_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x2, 20 } }, .imm_scale = 2, .syntax = 38 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "P1 = tstbit(,#0); if (!P1.new) jump:t ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0001000110iissssPP000011iiiiiii0 | p0 = tstbit(Rs,#0); if (p0.new) jump:nt Ii
		.encoding = { .mask = 0xffc03f01, .op = 0x11800300 },
		.id = HEX_INS_J4_TSTBIT0_TP0_JUMP_NT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x2, 20 } }, .imm_scale = 2, .syntax = 38 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "P0 = tstbit(,#0); if (P0.new) jump:nt ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0001000110iissssPP100011iiiiiii0 | p0 = tstbit(Rs,#0); if (p0.new) jump:t Ii
		.encoding = { .mask = 0xffc03f01, .op = 0x11802300 },
		.id = HEX_INS_J4_TSTBIT0_TP0_JUMP_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x2, 20 } }, .imm_scale = 2, .syntax = 37 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "P0 = tstbit(,#0); if (P0.new) jump:t ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0001001110iissssPP000011iiiiiii0 | p1 = tstbit(Rs,#0); if (p1.new) jump:nt Ii
		.encoding = { .mask = 0xffc03f01, .op = 0x13800300 },
		.id = HEX_INS_J4_TSTBIT0_TP1_JUMP_NT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x2, 20 } }, .imm_scale = 2, .syntax = 38 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "P1 = tstbit(,#0); if (P1.new) jump:nt ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0001001110iissssPP100011iiiiiii0 | p1 = tstbit(Rs,#0); if (p1.new) jump:t Ii
		.encoding = { .mask = 0xffc03f01, .op = 0x13802300 },
		.id = HEX_INS_J4_TSTBIT0_TP1_JUMP_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x4, 16 } }, .reg_cls = HEX_REG_CLASS_GENERAL_SUB_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x2, 20 } }, .imm_scale = 2, .syntax = 37 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "P1 = tstbit(,#0); if (P1.new) jump:t ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 00011001110tttttPP000000010ddddd | Vd.b = vsplat(Rt)
		.encoding = { .mask = 0xffe03fe0, .op = 0x19c00040 },
		.id = HEX_INS_V6_LVSPLATB,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".b = vsplat()",
	},
	{
		// 00011001110tttttPP000000001ddddd | Vd.h = vsplat(Rt)
		.encoding = { .mask = 0xffe03fe0, .op = 0x19c00020 },
		.id = HEX_INS_V6_LVSPLATH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".h = vsplat()",
	},
	{
		// 00011001101tttttPP000000001ddddd | Vd = vsplat(Rt)
		.encoding = { .mask = 0xffe03fe0, .op = 0x19a00020 },
		.id = HEX_INS_V6_LVSPLATW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vsplat()",
	},
	{
		// 00011110tt000011PP0000ss000000dd | Qd = and(Qs,Qt)
		.encoding = { .mask = 0xff3f3cfc, .op = 0x1e030000 },
		.id = HEX_INS_V6_PRED_AND,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_QR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_QR, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 22 } }, .reg_cls = HEX_REG_CLASS_HVX_QR, .syntax = 8 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = and(,)",
	},
	{
		// 00011110tt000011PP0000ss000101dd | Qd = and(Qs,!Qt)
		.encoding = { .mask = 0xff3f3cfc, .op = 0x1e030014 },
		.id = HEX_INS_V6_PRED_AND_N,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_QR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_QR, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 22 } }, .reg_cls = HEX_REG_CLASS_HVX_QR, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = and(,!)",
	},
	{
		// 0001111000000011PP0000ss000010dd | Qd = not(Qs)
		.encoding = { .mask = 0xffff3cfc, .op = 0x1e030008 },
		.id = HEX_INS_V6_PRED_NOT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_QR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_QR, .syntax = 7 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = not()",
	},
	{
		// 00011110tt000011PP0000ss000001dd | Qd = or(Qs,Qt)
		.encoding = { .mask = 0xff3f3cfc, .op = 0x1e030004 },
		.id = HEX_INS_V6_PRED_OR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_QR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_QR, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 22 } }, .reg_cls = HEX_REG_CLASS_HVX_QR, .syntax = 7 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = or(,)",
	},
	{
		// 00011110tt000011PP0000ss000100dd | Qd = or(Qs,!Qt)
		.encoding = { .mask = 0xff3f3cfc, .op = 0x1e030010 },
		.id = HEX_INS_V6_PRED_OR_N,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_QR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_QR, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 22 } }, .reg_cls = HEX_REG_CLASS_HVX_QR, .syntax = 8 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = or(,!)",
	},
	{
		// 00011001101tttttPP000000010001dd | Qd = vsetq(Rt)
		.encoding = { .mask = 0xffe03ffc, .op = 0x19a00044 },
		.id = HEX_INS_V6_PRED_SCALAR2,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_QR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vsetq()",
	},
	{
		// 00011001101tttttPP000000010011dd | Qd = vsetq2(Rt)
		.encoding = { .mask = 0xffe03ffc, .op = 0x19a0004c },
		.id = HEX_INS_V6_PRED_SCALAR2V2,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_QR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vsetq2()",
	},
	{
		// 00011110tt000011PP0000ss000011dd | Qd = xor(Qs,Qt)
		.encoding = { .mask = 0xff3f3cfc, .op = 0x1e03000c },
		.id = HEX_INS_V6_PRED_XOR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_QR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_QR, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 22 } }, .reg_cls = HEX_REG_CLASS_HVX_QR, .syntax = 8 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = xor(,)",
	},
	{
		// 00011110tt000011PP0000ss000110dd | Qd.b = vshuffe(Qs.h,Qt.h)
		.encoding = { .mask = 0xff3f3cfc, .op = 0x1e030018 },
		.id = HEX_INS_V6_SHUFFEQH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_QR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_QR, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 22 } }, .reg_cls = HEX_REG_CLASS_HVX_QR, .syntax = 16 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".b = vshuffe(.h,.h)",
	},
	{
		// 00011110tt000011PP0000ss000111dd | Qd.h = vshuffe(Qs.w,Qt.w)
		.encoding = { .mask = 0xff3f3cfc, .op = 0x1e03001c },
		.id = HEX_INS_V6_SHUFFEQW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_QR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_QR, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 22 } }, .reg_cls = HEX_REG_CLASS_HVX_QR, .syntax = 16 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".h = vshuffe(.w,.w)",
	},
	{
		// 00011111010vvvvvPP1uuuuu1iiddddd | Vdd.w = v6mpy(Vuu.ub,Vvv.b,Ii):h
		.encoding = { .mask = 0xffe02080, .op = 0x1f402080 },
		.id = HEX_INS_V6_V6MPYHUBS10,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 5 } }, .syntax = 18 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".w = V6mpy(.ub,.b,):h",
	},
	{
		// 00011111001vvvvvPP1uuuuu1iixxxxx | Vxx.w += v6mpy(Vuu.ub,Vvv.b,Ii):h
		.encoding = { .mask = 0xffe02080, .op = 0x1f202080 },
		.id = HEX_INS_V6_V6MPYHUBS10_VXX,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 5 } }, .syntax = 19 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".w += V6mpy(.ub,.b,):h",
	},
	{
		// 00011111010vvvvvPP1uuuuu0iiddddd | Vdd.w = v6mpy(Vuu.ub,Vvv.b,Ii):v
		.encoding = { .mask = 0xffe02080, .op = 0x1f402000 },
		.id = HEX_INS_V6_V6MPYVUBS10,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 5 } }, .syntax = 18 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".w = V6mpy(.ub,.b,):v",
	},
	{
		// 00011111001vvvvvPP1uuuuu0iixxxxx | Vxx.w += v6mpy(Vuu.ub,Vvv.b,Ii):v
		.encoding = { .mask = 0xffe02080, .op = 0x1f202000 },
		.id = HEX_INS_V6_V6MPYVUBS10_VXX,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x2, 5 } }, .syntax = 19 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".w += V6mpy(.ub,.b,):v",
	},
	{
		// 0001111000000110PP1uuuuu100ddddd | Vd.hf = vabs(Vu.hf)
		.encoding = { .mask = 0xffff20e0, .op = 0x1e062080 },
		.id = HEX_INS_V6_VABS_HF,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".hf = vabs(.hf)",
	},
	{
		// 0001111000000110PP1uuuuu101ddddd | Vd.sf = vabs(Vu.sf)
		.encoding = { .mask = 0xffff20e0, .op = 0x1e0620a0 },
		.id = HEX_INS_V6_VABS_SF,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".sf = vabs(.sf)",
	},
	{
		// 0001111000000001PP0uuuuu100ddddd | Vd.b = vabs(Vu.b)
		.encoding = { .mask = 0xffff20e0, .op = 0x1e010080 },
		.id = HEX_INS_V6_VABSB,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".b = vabs(.b)",
	},
	{
		// 0001111000000001PP0uuuuu101ddddd | Vd.b = vabs(Vu.b):sat
		.encoding = { .mask = 0xffff20e0, .op = 0x1e0100a0 },
		.id = HEX_INS_V6_VABSB_SAT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".b = vabs(.b):sat",
	},
	{
		// 00011100110vvvvvPP0uuuuu001ddddd | Vd.uh = vabsdiff(Vu.h,Vv.h)
		.encoding = { .mask = 0xffe020e0, .op = 0x1cc00020 },
		.id = HEX_INS_V6_VABSDIFFH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 18 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".uh = vabsdiff(.h,.h)",
	},
	{
		// 00011100110vvvvvPP0uuuuu000ddddd | Vd.ub = vabsdiff(Vu.ub,Vv.ub)
		.encoding = { .mask = 0xffe020e0, .op = 0x1cc00000 },
		.id = HEX_INS_V6_VABSDIFFUB,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 19 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".ub = vabsdiff(.ub,.ub)",
	},
	{
		// 00011100110vvvvvPP0uuuuu010ddddd | Vd.uh = vabsdiff(Vu.uh,Vv.uh)
		.encoding = { .mask = 0xffe020e0, .op = 0x1cc00040 },
		.id = HEX_INS_V6_VABSDIFFUH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 19 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".uh = vabsdiff(.uh,.uh)",
	},
	{
		// 00011100110vvvvvPP0uuuuu011ddddd | Vd.uw = vabsdiff(Vu.w,Vv.w)
		.encoding = { .mask = 0xffe020e0, .op = 0x1cc00060 },
		.id = HEX_INS_V6_VABSDIFFW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 18 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".uw = vabsdiff(.w,.w)",
	},
	{
		// 0001111000000000PP0uuuuu000ddddd | Vd.h = vabs(Vu.h)
		.encoding = { .mask = 0xffff20e0, .op = 0x1e000000 },
		.id = HEX_INS_V6_VABSH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".h = vabs(.h)",
	},
	{
		// 0001111000000000PP0uuuuu001ddddd | Vd.h = vabs(Vu.h):sat
		.encoding = { .mask = 0xffff20e0, .op = 0x1e000020 },
		.id = HEX_INS_V6_VABSH_SAT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".h = vabs(.h):sat",
	},
	{
		// 0001111000000000PP0uuuuu010ddddd | Vd.w = vabs(Vu.w)
		.encoding = { .mask = 0xffff20e0, .op = 0x1e000040 },
		.id = HEX_INS_V6_VABSW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".w = vabs(.w)",
	},
	{
		// 0001111000000000PP0uuuuu011ddddd | Vd.w = vabs(Vu.w):sat
		.encoding = { .mask = 0xffff20e0, .op = 0x1e000060 },
		.id = HEX_INS_V6_VABSW_SAT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".w = vabs(.w):sat",
	},
	{
		// 00011111011vvvvvPP1uuuuu011ddddd | Vd.qf16 = vadd(Vu.hf,Vv.hf)
		.encoding = { .mask = 0xffe020e0, .op = 0x1f602060 },
		.id = HEX_INS_V6_VADD_HF,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 17 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".qf16 = vadd(.hf,.hf)",
	},
	{
		// 00011111101vvvvvPP1uuuuu111ddddd | Vd.hf = vadd(Vu.hf,Vv.hf)
		.encoding = { .mask = 0xffe020e0, .op = 0x1fa020e0 },
		.id = HEX_INS_V6_VADD_HF_HF,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".hf = vadd(.hf,.hf)",
	},
	{
		// 00011111011vvvvvPP1uuuuu010ddddd | Vd.qf16 = vadd(Vu.qf16,Vv.qf16)
		.encoding = { .mask = 0xffe020e0, .op = 0x1f602040 },
		.id = HEX_INS_V6_VADD_QF16,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 19 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".qf16 = vadd(.qf16,.qf16)",
	},
	{
		// 00011111011vvvvvPP1uuuuu100ddddd | Vd.qf16 = vadd(Vu.qf16,Vv.hf)
		.encoding = { .mask = 0xffe020e0, .op = 0x1f602080 },
		.id = HEX_INS_V6_VADD_QF16_MIX,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 19 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".qf16 = vadd(.qf16,.hf)",
	},
	{
		// 00011111101vvvvvPP1uuuuu000ddddd | Vd.qf32 = vadd(Vu.qf32,Vv.qf32)
		.encoding = { .mask = 0xffe020e0, .op = 0x1fa02000 },
		.id = HEX_INS_V6_VADD_QF32,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 19 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".qf32 = vadd(.qf32,.qf32)",
	},
	{
		// 00011111101vvvvvPP1uuuuu010ddddd | Vd.qf32 = vadd(Vu.qf32,Vv.sf)
		.encoding = { .mask = 0xffe020e0, .op = 0x1fa02040 },
		.id = HEX_INS_V6_VADD_QF32_MIX,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 19 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".qf32 = vadd(.qf32,.sf)",
	},
	{
		// 00011111101vvvvvPP1uuuuu001ddddd | Vd.qf32 = vadd(Vu.sf,Vv.sf)
		.encoding = { .mask = 0xffe020e0, .op = 0x1fa02020 },
		.id = HEX_INS_V6_VADD_SF,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 17 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".qf32 = vadd(.sf,.sf)",
	},
	{
		// 00011111100vvvvvPP1uuuuu100ddddd | Vdd.sf = vadd(Vu.hf,Vv.hf)
		.encoding = { .mask = 0xffe020e0, .op = 0x1f802080 },
		.id = HEX_INS_V6_VADD_SF_HF,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".sf = vadd(.hf,.hf)",
	},
	{
		// 00011111100vvvvvPP1uuuuu110ddddd | Vd.sf = vadd(Vu.sf,Vv.sf)
		.encoding = { .mask = 0xffe020e0, .op = 0x1f8020c0 },
		.id = HEX_INS_V6_VADD_SF_SF,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".sf = vadd(.sf,.sf)",
	},
	{
		// 00011111101vvvvvPP0uuuuu110ddddd | Vd.b = vadd(Vu.b,Vv.b)
		.encoding = { .mask = 0xffe020e0, .op = 0x1fa000c0 },
		.id = HEX_INS_V6_VADDB,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".b = vadd(.b,.b)",
	},
	{
		// 00011100011vvvvvPP0uuuuu100ddddd | Vdd.b = vadd(Vuu.b,Vvv.b)
		.encoding = { .mask = 0xffe020e0, .op = 0x1c600080 },
		.id = HEX_INS_V6_VADDB_DV,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".b = vadd(.b,.b)",
	},
	{
		// 00011110vv000001PP1uuuuu011xxxxx | if (!Qv) Vx.b += Vu.b
		.encoding = { .mask = 0xff3f20e0, .op = 0x1e012060 },
		.id = HEX_INS_V6_VADDBNQ,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 22 } }, .reg_cls = HEX_REG_CLASS_HVX_QR, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "if (!) .b += .b",
	},
	{
		// 00011110vv000001PP1uuuuu000xxxxx | if (Qv) Vx.b += Vu.b
		.encoding = { .mask = 0xff3f20e0, .op = 0x1e012000 },
		.id = HEX_INS_V6_VADDBQ,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 22 } }, .reg_cls = HEX_REG_CLASS_HVX_QR, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "if () .b += .b",
	},
	{
		// 00011111000vvvvvPP0uuuuu000ddddd | Vd.b = vadd(Vu.b,Vv.b):sat
		.encoding = { .mask = 0xffe020e0, .op = 0x1f000000 },
		.id = HEX_INS_V6_VADDBSAT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".b = vadd(.b,.b):sat",
	},
	{
		// 00011110101vvvvvPP0uuuuu000ddddd | Vdd.b = vadd(Vuu.b,Vvv.b):sat
		.encoding = { .mask = 0xffe020e0, .op = 0x1ea00000 },
		.id = HEX_INS_V6_VADDBSAT_DV,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".b = vadd(.b,.b):sat",
	},
	{
		// 00011100101vvvvvPP1uuuuu0xxddddd | Vd.w = vadd(Vu.w,Vv.w,Qx):carry
		.encoding = { .mask = 0xffe02080, .op = 0x1ca02000 },
		.id = HEX_INS_V6_VADDCARRY,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 5 } }, .reg_cls = HEX_REG_CLASS_HVX_QR, .syntax = 16 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".w = vadd(.w,.w,):carry",
	},
	{
		// 00011101101vvvvvPP1uuuuu0eeddddd | Vd.w,Qe = vadd(Vu.w,Vv.w):carry
		.encoding = { .mask = 0xffe02080, .op = 0x1da02000 },
		.id = HEX_INS_V6_VADDCARRYO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 5 } }, .reg_cls = HEX_REG_CLASS_HVX_QR, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".w, = vadd(.w,.w):carry",
	},
	{
		// 00011101100vvvvvPP1uuuuu0ssddddd | Vd.w = vadd(Vu.w,Vv.w,Qs):carry:sat
		.encoding = { .mask = 0xffe02080, .op = 0x1d802000 },
		.id = HEX_INS_V6_VADDCARRYSAT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 5 } }, .reg_cls = HEX_REG_CLASS_HVX_QR, .syntax = 16 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".w = vadd(.w,.w,):carry:sat",
	},
	{
		// 00011111000vvvvvPP1uuuuu000ddddd | Vd.h = vadd(vclb(Vu.h),Vv.h)
		.encoding = { .mask = 0xffe020e0, .op = 0x1f002000 },
		.id = HEX_INS_V6_VADDCLBH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 19 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".h = vadd(vclb(.h),.h)",
	},
	{
		// 00011111000vvvvvPP1uuuuu001ddddd | Vd.w = vadd(vclb(Vu.w),Vv.w)
		.encoding = { .mask = 0xffe020e0, .op = 0x1f002020 },
		.id = HEX_INS_V6_VADDCLBW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 19 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".w = vadd(vclb(.w),.w)",
	},
	{
		// 00011111101vvvvvPP0uuuuu111ddddd | Vd.h = vadd(Vu.h,Vv.h)
		.encoding = { .mask = 0xffe020e0, .op = 0x1fa000e0 },
		.id = HEX_INS_V6_VADDH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".h = vadd(.h,.h)",
	},
	{
		// 00011100011vvvvvPP0uuuuu101ddddd | Vdd.h = vadd(Vuu.h,Vvv.h)
		.encoding = { .mask = 0xffe020e0, .op = 0x1c6000a0 },
		.id = HEX_INS_V6_VADDH_DV,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".h = vadd(.h,.h)",
	},
	{
		// 00011110vv000001PP1uuuuu100xxxxx | if (!Qv) Vx.h += Vu.h
		.encoding = { .mask = 0xff3f20e0, .op = 0x1e012080 },
		.id = HEX_INS_V6_VADDHNQ,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 22 } }, .reg_cls = HEX_REG_CLASS_HVX_QR, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "if (!) .h += .h",
	},
	{
		// 00011110vv000001PP1uuuuu001xxxxx | if (Qv) Vx.h += Vu.h
		.encoding = { .mask = 0xff3f20e0, .op = 0x1e012020 },
		.id = HEX_INS_V6_VADDHQ,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 22 } }, .reg_cls = HEX_REG_CLASS_HVX_QR, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "if () .h += .h",
	},
	{
		// 00011100010vvvvvPP0uuuuu011ddddd | Vd.h = vadd(Vu.h,Vv.h):sat
		.encoding = { .mask = 0xffe020e0, .op = 0x1c400060 },
		.id = HEX_INS_V6_VADDHSAT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".h = vadd(.h,.h):sat",
	},
	{
		// 00011100100vvvvvPP0uuuuu001ddddd | Vdd.h = vadd(Vuu.h,Vvv.h):sat
		.encoding = { .mask = 0xffe020e0, .op = 0x1c800020 },
		.id = HEX_INS_V6_VADDHSAT_DV,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".h = vadd(.h,.h):sat",
	},
	{
		// 00011100101vvvvvPP0uuuuu100ddddd | Vdd.w = vadd(Vu.h,Vv.h)
		.encoding = { .mask = 0xffe020e0, .op = 0x1ca00080 },
		.id = HEX_INS_V6_VADDHW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".w = vadd(.h,.h)",
	},
	{
		// 00011100001vvvvvPP1uuuuu010xxxxx | Vxx.w += vadd(Vu.h,Vv.h)
		.encoding = { .mask = 0xffe020e0, .op = 0x1c202040 },
		.id = HEX_INS_V6_VADDHW_ACC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".w += vadd(.h,.h)",
	},
	{
		// 00011100101vvvvvPP0uuuuu010ddddd | Vdd.h = vadd(Vu.ub,Vv.ub)
		.encoding = { .mask = 0xffe020e0, .op = 0x1ca00040 },
		.id = HEX_INS_V6_VADDUBH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".h = vadd(.ub,.ub)",
	},
	{
		// 00011100010vvvvvPP1uuuuu101xxxxx | Vxx.h += vadd(Vu.ub,Vv.ub)
		.encoding = { .mask = 0xffe020e0, .op = 0x1c4020a0 },
		.id = HEX_INS_V6_VADDUBH_ACC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".h += vadd(.ub,.ub)",
	},
	{
		// 00011100010vvvvvPP0uuuuu001ddddd | Vd.ub = vadd(Vu.ub,Vv.ub):sat
		.encoding = { .mask = 0xffe020e0, .op = 0x1c400020 },
		.id = HEX_INS_V6_VADDUBSAT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".ub = vadd(.ub,.ub):sat",
	},
	{
		// 00011100011vvvvvPP0uuuuu111ddddd | Vdd.ub = vadd(Vuu.ub,Vvv.ub):sat
		.encoding = { .mask = 0xffe020e0, .op = 0x1c6000e0 },
		.id = HEX_INS_V6_VADDUBSAT_DV,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".ub = vadd(.ub,.ub):sat",
	},
	{
		// 00011110101vvvvvPP0uuuuu100ddddd | Vd.ub = vadd(Vu.ub,Vv.b):sat
		.encoding = { .mask = 0xffe020e0, .op = 0x1ea00080 },
		.id = HEX_INS_V6_VADDUBUBB_SAT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".ub = vadd(.ub,.b):sat",
	},
	{
		// 00011100010vvvvvPP0uuuuu010ddddd | Vd.uh = vadd(Vu.uh,Vv.uh):sat
		.encoding = { .mask = 0xffe020e0, .op = 0x1c400040 },
		.id = HEX_INS_V6_VADDUHSAT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".uh = vadd(.uh,.uh):sat",
	},
	{
		// 00011100100vvvvvPP0uuuuu000ddddd | Vdd.uh = vadd(Vuu.uh,Vvv.uh):sat
		.encoding = { .mask = 0xffe020e0, .op = 0x1c800000 },
		.id = HEX_INS_V6_VADDUHSAT_DV,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".uh = vadd(.uh,.uh):sat",
	},
	{
		// 00011100101vvvvvPP0uuuuu011ddddd | Vdd.w = vadd(Vu.uh,Vv.uh)
		.encoding = { .mask = 0xffe020e0, .op = 0x1ca00060 },
		.id = HEX_INS_V6_VADDUHW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".w = vadd(.uh,.uh)",
	},
	{
		// 00011100010vvvvvPP1uuuuu100xxxxx | Vxx.w += vadd(Vu.uh,Vv.uh)
		.encoding = { .mask = 0xffe020e0, .op = 0x1c402080 },
		.id = HEX_INS_V6_VADDUHW_ACC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".w += vadd(.uh,.uh)",
	},
	{
		// 00011111011vvvvvPP0uuuuu001ddddd | Vd.uw = vadd(Vu.uw,Vv.uw):sat
		.encoding = { .mask = 0xffe020e0, .op = 0x1f600020 },
		.id = HEX_INS_V6_VADDUWSAT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".uw = vadd(.uw,.uw):sat",
	},
	{
		// 00011110101vvvvvPP0uuuuu010ddddd | Vdd.uw = vadd(Vuu.uw,Vvv.uw):sat
		.encoding = { .mask = 0xffe020e0, .op = 0x1ea00040 },
		.id = HEX_INS_V6_VADDUWSAT_DV,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".uw = vadd(.uw,.uw):sat",
	},
	{
		// 00011100010vvvvvPP0uuuuu000ddddd | Vd.w = vadd(Vu.w,Vv.w)
		.encoding = { .mask = 0xffe020e0, .op = 0x1c400000 },
		.id = HEX_INS_V6_VADDW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".w = vadd(.w,.w)",
	},
	{
		// 00011100011vvvvvPP0uuuuu110ddddd | Vdd.w = vadd(Vuu.w,Vvv.w)
		.encoding = { .mask = 0xffe020e0, .op = 0x1c6000c0 },
		.id = HEX_INS_V6_VADDW_DV,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".w = vadd(.w,.w)",
	},
	{
		// 00011110vv000001PP1uuuuu101xxxxx | if (!Qv) Vx.w += Vu.w
		.encoding = { .mask = 0xff3f20e0, .op = 0x1e0120a0 },
		.id = HEX_INS_V6_VADDWNQ,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 22 } }, .reg_cls = HEX_REG_CLASS_HVX_QR, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "if (!) .w += .w",
	},
	{
		// 00011110vv000001PP1uuuuu010xxxxx | if (Qv) Vx.w += Vu.w
		.encoding = { .mask = 0xff3f20e0, .op = 0x1e012040 },
		.id = HEX_INS_V6_VADDWQ,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 22 } }, .reg_cls = HEX_REG_CLASS_HVX_QR, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "if () .w += .w",
	},
	{
		// 00011100010vvvvvPP0uuuuu100ddddd | Vd.w = vadd(Vu.w,Vv.w):sat
		.encoding = { .mask = 0xffe020e0, .op = 0x1c400080 },
		.id = HEX_INS_V6_VADDWSAT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".w = vadd(.w,.w):sat",
	},
	{
		// 00011100100vvvvvPP0uuuuu010ddddd | Vdd.w = vadd(Vuu.w,Vvv.w):sat
		.encoding = { .mask = 0xffe020e0, .op = 0x1c800040 },
		.id = HEX_INS_V6_VADDWSAT_DV,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".w = vadd(.w,.w):sat",
	},
	{
		// 00011011vvvvvtttPP0uuuuu000ddddd | Vd = valign(Vu,Vv,Rt)
		.encoding = { .mask = 0xff0020e0, .op = 0x1b000000 },
		.id = HEX_INS_V6_VALIGNB,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 19 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS_LOW8, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = valign(,,)",
	},
	{
		// 00011110001vvvvvPP1uuuuuiiiddddd | Vd = valign(Vu,Vv,Ii)
		.encoding = { .mask = 0xffe02000, .op = 0x1e202000 },
		.id = HEX_INS_V6_VALIGNBI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 5 } }, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = valign(,,)",
	},
	{
		// 00011100001vvvvvPP0uuuuu101ddddd | Vd = vand(Vu,Vv)
		.encoding = { .mask = 0xffe020e0, .op = 0x1c2000a0 },
		.id = HEX_INS_V6_VAND,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vand(,)",
	},
	{
		// 00011001101tttttPP0001uu101ddddd | Vd = vand(!Qu,Rt)
		.encoding = { .mask = 0xffe03ce0, .op = 0x19a004a0 },
		.id = HEX_INS_V6_VANDNQRT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_QR, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vand(!,)",
	},
	{
		// 00011001011tttttPP1001uu011xxxxx | Vx |= vand(!Qu,Rt)
		.encoding = { .mask = 0xffe03ce0, .op = 0x19602460 },
		.id = HEX_INS_V6_VANDNQRT_ACC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_QR, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " |= vand(!,)",
	},
	{
		// 00011001101tttttPP0000uu101ddddd | Vd = vand(Qu,Rt)
		.encoding = { .mask = 0xffe03ce0, .op = 0x19a000a0 },
		.id = HEX_INS_V6_VANDQRT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_QR, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vand(,)",
	},
	{
		// 00011001011tttttPP1000uu011xxxxx | Vx |= vand(Qu,Rt)
		.encoding = { .mask = 0xffe03ce0, .op = 0x19602060 },
		.id = HEX_INS_V6_VANDQRT_ACC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_QR, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " |= vand(,)",
	},
	{
		// 00011110vv000011PP1uuuuu001ddddd | Vd = vand(!Qv,Vu)
		.encoding = { .mask = 0xff3f20e0, .op = 0x1e032020 },
		.id = HEX_INS_V6_VANDVNQV,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 22 } }, .reg_cls = HEX_REG_CLASS_HVX_QR, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vand(!,)",
	},
	{
		// 00011110vv000011PP1uuuuu000ddddd | Vd = vand(Qv,Vu)
		.encoding = { .mask = 0xff3f20e0, .op = 0x1e032000 },
		.id = HEX_INS_V6_VANDVQV,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 22 } }, .reg_cls = HEX_REG_CLASS_HVX_QR, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vand(,)",
	},
	{
		// 00011001101tttttPP0uuuuu010010dd | Qd = vand(Vu,Rt)
		.encoding = { .mask = 0xffe020fc, .op = 0x19a00048 },
		.id = HEX_INS_V6_VANDVRT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_QR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vand(,)",
	},
	{
		// 00011001011tttttPP1uuuuu100000xx | Qx |= vand(Vu,Rt)
		.encoding = { .mask = 0xffe020fc, .op = 0x19602080 },
		.id = HEX_INS_V6_VANDVRT_ACC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_QR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " |= vand(,)",
	},
	{
		// 00011001100tttttPP0uuuuu000ddddd | Vd.h = vasl(Vu.h,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0x19800000 },
		.id = HEX_INS_V6_VASLH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".h = vasl(.h,)",
	},
	{
		// 00011001101tttttPP1uuuuu101xxxxx | Vx.h += vasl(Vu.h,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0x19a020a0 },
		.id = HEX_INS_V6_VASLH_ACC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".h += vasl(.h,)",
	},
	{
		// 00011111101vvvvvPP0uuuuu101ddddd | Vd.h = vasl(Vu.h,Vv.h)
		.encoding = { .mask = 0xffe020e0, .op = 0x1fa000a0 },
		.id = HEX_INS_V6_VASLHV,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".h = vasl(.h,.h)",
	},
	{
		// 00011001011tttttPP0uuuuu111ddddd | Vd.w = vasl(Vu.w,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0x196000e0 },
		.id = HEX_INS_V6_VASLW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".w = vasl(.w,)",
	},
	{
		// 00011001011tttttPP1uuuuu010xxxxx | Vx.w += vasl(Vu.w,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0x19602040 },
		.id = HEX_INS_V6_VASLW_ACC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".w += vasl(.w,)",
	},
	{
		// 00011111101vvvvvPP0uuuuu100ddddd | Vd.w = vasl(Vu.w,Vv.w)
		.encoding = { .mask = 0xffe020e0, .op = 0x1fa00080 },
		.id = HEX_INS_V6_VASLWV,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".w = vasl(.w,.w)",
	},
	{
		// 00011010101vvvvvPP1uuuuu111xxxxx | Vxx.w = vasrinto(Vu.w,Vv.w)
		.encoding = { .mask = 0xffe020e0, .op = 0x1aa020e0 },
		.id = HEX_INS_V6_VASR_INTO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 17 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".w = vasrinto(.w,.w)",
	},
	{
		// 00011001011tttttPP0uuuuu110ddddd | Vd.h = vasr(Vu.h,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0x196000c0 },
		.id = HEX_INS_V6_VASRH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".h = vasr(.h,)",
	},
	{
		// 00011001100tttttPP1uuuuu111xxxxx | Vx.h += vasr(Vu.h,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0x198020e0 },
		.id = HEX_INS_V6_VASRH_ACC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".h += vasr(.h,)",
	},
	{
		// 00011011vvvvvtttPP1uuuuu000ddddd | Vd.b = vasr(Vu.h,Vv.h,Rt):rnd:sat
		.encoding = { .mask = 0xff0020e0, .op = 0x1b002000 },
		.id = HEX_INS_V6_VASRHBRNDSAT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 19 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS_LOW8, .syntax = 16 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".b = vasr(.h,.h,):rnd:sat",
	},
	{
		// 00011000vvvvvtttPP0uuuuu000ddddd | Vd.b = vasr(Vu.h,Vv.h,Rt):sat
		.encoding = { .mask = 0xff0020e0, .op = 0x18000000 },
		.id = HEX_INS_V6_VASRHBSAT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 19 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS_LOW8, .syntax = 16 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".b = vasr(.h,.h,):sat",
	},
	{
		// 00011011vvvvvtttPP0uuuuu111ddddd | Vd.ub = vasr(Vu.h,Vv.h,Rt):rnd:sat
		.encoding = { .mask = 0xff0020e0, .op = 0x1b0000e0 },
		.id = HEX_INS_V6_VASRHUBRNDSAT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 19 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS_LOW8, .syntax = 17 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".ub = vasr(.h,.h,):rnd:sat",
	},
	{
		// 00011011vvvvvtttPP0uuuuu110ddddd | Vd.ub = vasr(Vu.h,Vv.h,Rt):sat
		.encoding = { .mask = 0xff0020e0, .op = 0x1b0000c0 },
		.id = HEX_INS_V6_VASRHUBSAT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 19 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS_LOW8, .syntax = 17 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".ub = vasr(.h,.h,):sat",
	},
	{
		// 00011111101vvvvvPP0uuuuu011ddddd | Vd.h = vasr(Vu.h,Vv.h)
		.encoding = { .mask = 0xffe020e0, .op = 0x1fa00060 },
		.id = HEX_INS_V6_VASRHV,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".h = vasr(.h,.h)",
	},
	{
		// 00011000vvvvvtttPP0uuuuu111ddddd | Vd.ub = vasr(Vu.uh,Vv.uh,Rt):rnd:sat
		.encoding = { .mask = 0xff0020e0, .op = 0x180000e0 },
		.id = HEX_INS_V6_VASRUHUBRNDSAT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 19 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS_LOW8, .syntax = 19 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".ub = vasr(.uh,.uh,):rnd:sat",
	},
	{
		// 00011000vvvvvtttPP1uuuuu101ddddd | Vd.ub = vasr(Vu.uh,Vv.uh,Rt):sat
		.encoding = { .mask = 0xff0020e0, .op = 0x180020a0 },
		.id = HEX_INS_V6_VASRUHUBSAT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 19 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS_LOW8, .syntax = 19 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".ub = vasr(.uh,.uh,):sat",
	},
	{
		// 00011000vvvvvtttPP0uuuuu001ddddd | Vd.uh = vasr(Vu.uw,Vv.uw,Rt):rnd:sat
		.encoding = { .mask = 0xff0020e0, .op = 0x18000020 },
		.id = HEX_INS_V6_VASRUWUHRNDSAT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 19 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS_LOW8, .syntax = 19 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".uh = vasr(.uw,.uw,):rnd:sat",
	},
	{
		// 00011000vvvvvtttPP1uuuuu100ddddd | Vd.uh = vasr(Vu.uw,Vv.uw,Rt):sat
		.encoding = { .mask = 0xff0020e0, .op = 0x18002080 },
		.id = HEX_INS_V6_VASRUWUHSAT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 19 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS_LOW8, .syntax = 19 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".uh = vasr(.uw,.uw,):sat",
	},
	{
		// 00011101000vvvvvPP0uuuuu011ddddd | Vd.ub = vasr(Vuu.uh,Vv.ub):rnd:sat
		.encoding = { .mask = 0xffe020e0, .op = 0x1d000060 },
		.id = HEX_INS_V6_VASRVUHUBRNDSAT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".ub = vasr(.uh,.ub):rnd:sat",
	},
	{
		// 00011101000vvvvvPP0uuuuu010ddddd | Vd.ub = vasr(Vuu.uh,Vv.ub):sat
		.encoding = { .mask = 0xffe020e0, .op = 0x1d000040 },
		.id = HEX_INS_V6_VASRVUHUBSAT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".ub = vasr(.uh,.ub):sat",
	},
	{
		// 00011101000vvvvvPP0uuuuu001ddddd | Vd.uh = vasr(Vuu.w,Vv.uh):rnd:sat
		.encoding = { .mask = 0xffe020e0, .op = 0x1d000020 },
		.id = HEX_INS_V6_VASRVWUHRNDSAT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".uh = vasr(.w,.uh):rnd:sat",
	},
	{
		// 00011101000vvvvvPP0uuuuu000ddddd | Vd.uh = vasr(Vuu.w,Vv.uh):sat
		.encoding = { .mask = 0xffe020e0, .op = 0x1d000000 },
		.id = HEX_INS_V6_VASRVWUHSAT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".uh = vasr(.w,.uh):sat",
	},
	{
		// 00011001011tttttPP0uuuuu101ddddd | Vd.w = vasr(Vu.w,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0x196000a0 },
		.id = HEX_INS_V6_VASRW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".w = vasr(.w,)",
	},
	{
		// 00011001011tttttPP1uuuuu101xxxxx | Vx.w += vasr(Vu.w,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0x196020a0 },
		.id = HEX_INS_V6_VASRW_ACC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".w += vasr(.w,)",
	},
	{
		// 00011011vvvvvtttPP0uuuuu010ddddd | Vd.h = vasr(Vu.w,Vv.w,Rt)
		.encoding = { .mask = 0xff0020e0, .op = 0x1b000040 },
		.id = HEX_INS_V6_VASRWH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 19 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS_LOW8, .syntax = 16 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".h = vasr(.w,.w,)",
	},
	{
		// 00011011vvvvvtttPP0uuuuu100ddddd | Vd.h = vasr(Vu.w,Vv.w,Rt):rnd:sat
		.encoding = { .mask = 0xff0020e0, .op = 0x1b000080 },
		.id = HEX_INS_V6_VASRWHRNDSAT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 19 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS_LOW8, .syntax = 16 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".h = vasr(.w,.w,):rnd:sat",
	},
	{
		// 00011011vvvvvtttPP0uuuuu011ddddd | Vd.h = vasr(Vu.w,Vv.w,Rt):sat
		.encoding = { .mask = 0xff0020e0, .op = 0x1b000060 },
		.id = HEX_INS_V6_VASRWHSAT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 19 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS_LOW8, .syntax = 16 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".h = vasr(.w,.w,):sat",
	},
	{
		// 00011000vvvvvtttPP0uuuuu010ddddd | Vd.uh = vasr(Vu.w,Vv.w,Rt):rnd:sat
		.encoding = { .mask = 0xff0020e0, .op = 0x18000040 },
		.id = HEX_INS_V6_VASRWUHRNDSAT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 19 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS_LOW8, .syntax = 17 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".uh = vasr(.w,.w,):rnd:sat",
	},
	{
		// 00011011vvvvvtttPP0uuuuu101ddddd | Vd.uh = vasr(Vu.w,Vv.w,Rt):sat
		.encoding = { .mask = 0xff0020e0, .op = 0x1b0000a0 },
		.id = HEX_INS_V6_VASRWUHSAT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 19 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS_LOW8, .syntax = 17 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".uh = vasr(.w,.w,):sat",
	},
	{
		// 00011111101vvvvvPP0uuuuu000ddddd | Vd.w = vasr(Vu.w,Vv.w)
		.encoding = { .mask = 0xffe020e0, .op = 0x1fa00000 },
		.id = HEX_INS_V6_VASRWV,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".w = vasr(.w,.w)",
	},
	{
		// 0001111000000011PP1uuuuu111ddddd | Vd = Vu
		.encoding = { .mask = 0xffff20e0, .op = 0x1e0320e0 },
		.id = HEX_INS_V6_VASSIGN,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 3 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = ",
	},
	{
		// 0001111000000110PP1uuuuu001ddddd | Vd.w = vfmv(Vu.w)
		.encoding = { .mask = 0xffff20e0, .op = 0x1e062020 },
		.id = HEX_INS_V6_VASSIGN_FP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".w = vfmv(.w)",
	},
	{
		// 0001111000000001PP0uuuuu110ddddd | Vd.tmp = Vu
		.encoding = { .mask = 0xffff20e0, .op = 0x1e0100c0 },
		.id = HEX_INS_V6_VASSIGN_TMP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 7 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".tmp = ",
	},
	{
		// 00011111000vvvvvPP1uuuuu100ddddd | Vd.b = vavg(Vu.b,Vv.b)
		.encoding = { .mask = 0xffe020e0, .op = 0x1f002080 },
		.id = HEX_INS_V6_VAVGB,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".b = vavg(.b,.b)",
	},
	{
		// 00011111000vvvvvPP1uuuuu101ddddd | Vd.b = vavg(Vu.b,Vv.b):rnd
		.encoding = { .mask = 0xffe020e0, .op = 0x1f0020a0 },
		.id = HEX_INS_V6_VAVGBRND,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".b = vavg(.b,.b):rnd",
	},
	{
		// 00011100110vvvvvPP0uuuuu110ddddd | Vd.h = vavg(Vu.h,Vv.h)
		.encoding = { .mask = 0xffe020e0, .op = 0x1cc000c0 },
		.id = HEX_INS_V6_VAVGH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".h = vavg(.h,.h)",
	},
	{
		// 00011100111vvvvvPP0uuuuu101ddddd | Vd.h = vavg(Vu.h,Vv.h):rnd
		.encoding = { .mask = 0xffe020e0, .op = 0x1ce000a0 },
		.id = HEX_INS_V6_VAVGHRND,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".h = vavg(.h,.h):rnd",
	},
	{
		// 00011100110vvvvvPP0uuuuu100ddddd | Vd.ub = vavg(Vu.ub,Vv.ub)
		.encoding = { .mask = 0xffe020e0, .op = 0x1cc00080 },
		.id = HEX_INS_V6_VAVGUB,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".ub = vavg(.ub,.ub)",
	},
	{
		// 00011100111vvvvvPP0uuuuu011ddddd | Vd.ub = vavg(Vu.ub,Vv.ub):rnd
		.encoding = { .mask = 0xffe020e0, .op = 0x1ce00060 },
		.id = HEX_INS_V6_VAVGUBRND,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".ub = vavg(.ub,.ub):rnd",
	},
	{
		// 00011100110vvvvvPP0uuuuu101ddddd | Vd.uh = vavg(Vu.uh,Vv.uh)
		.encoding = { .mask = 0xffe020e0, .op = 0x1cc000a0 },
		.id = HEX_INS_V6_VAVGUH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".uh = vavg(.uh,.uh)",
	},
	{
		// 00011100111vvvvvPP0uuuuu100ddddd | Vd.uh = vavg(Vu.uh,Vv.uh):rnd
		.encoding = { .mask = 0xffe020e0, .op = 0x1ce00080 },
		.id = HEX_INS_V6_VAVGUHRND,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".uh = vavg(.uh,.uh):rnd",
	},
	{
		// 00011111000vvvvvPP1uuuuu010ddddd | Vd.uw = vavg(Vu.uw,Vv.uw)
		.encoding = { .mask = 0xffe020e0, .op = 0x1f002040 },
		.id = HEX_INS_V6_VAVGUW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".uw = vavg(.uw,.uw)",
	},
	{
		// 00011111000vvvvvPP1uuuuu011ddddd | Vd.uw = vavg(Vu.uw,Vv.uw):rnd
		.encoding = { .mask = 0xffe020e0, .op = 0x1f002060 },
		.id = HEX_INS_V6_VAVGUWRND,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".uw = vavg(.uw,.uw):rnd",
	},
	{
		// 00011100110vvvvvPP0uuuuu111ddddd | Vd.w = vavg(Vu.w,Vv.w)
		.encoding = { .mask = 0xffe020e0, .op = 0x1cc000e0 },
		.id = HEX_INS_V6_VAVGW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".w = vavg(.w,.w)",
	},
	{
		// 00011100111vvvvvPP0uuuuu110ddddd | Vd.w = vavg(Vu.w,Vv.w):rnd
		.encoding = { .mask = 0xffe020e0, .op = 0x1ce000c0 },
		.id = HEX_INS_V6_VAVGWRND,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".w = vavg(.w,.w):rnd",
	},
	{
		// 00011010011vvvvvPP0uuuuu0ssddddd | if (Ps) Vdd = vcombine(Vu,Vv)
		.encoding = { .mask = 0xffe02080, .op = 0x1a600000 },
		.id = HEX_INS_V6_VCCOMBINE,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 5 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 19 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_VEC_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if ()  = vcombine(,)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 0001111000000010PP0uuuuu111ddddd | Vd.uh = vcl0(Vu.uh)
		.encoding = { .mask = 0xffff20e0, .op = 0x1e0200e0 },
		.id = HEX_INS_V6_VCL0H,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".uh = vcl0(.uh)",
	},
	{
		// 0001111000000010PP0uuuuu101ddddd | Vd.uw = vcl0(Vu.uw)
		.encoding = { .mask = 0xffff20e0, .op = 0x1e0200a0 },
		.id = HEX_INS_V6_VCL0W,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".uw = vcl0(.uw)",
	},
	{
		// 0001101000000000PP0uuuuu0ssddddd | if (Ps) Vd = Vu
		.encoding = { .mask = 0xffff2080, .op = 0x1a000000 },
		.id = HEX_INS_V6_VCMOV,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 5 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 9 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_VEC_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if ()  = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00011111010vvvvvPP0uuuuu111ddddd | Vdd = vcombine(Vu,Vv)
		.encoding = { .mask = 0xffe020e0, .op = 0x1f4000e0 },
		.id = HEX_INS_V6_VCOMBINE,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vcombine(,)",
	},
	{
		// 00011110101vvvvvPP0uuuuu111ddddd | Vdd.tmp = vcombine(Vu,Vv)
		.encoding = { .mask = 0xffe020e0, .op = 0x1ea000e0 },
		.id = HEX_INS_V6_VCOMBINE_TMP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 17 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".tmp = vcombine(,)",
	},
	{
		// 0001111000000100PP1uuuuu011ddddd | Vd.hf = Vu.qf16
		.encoding = { .mask = 0xffff20e0, .op = 0x1e042060 },
		.id = HEX_INS_V6_VCONV_HF_QF16,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 6 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".hf = .qf16",
	},
	{
		// 0001111000000100PP1uuuuu110ddddd | Vd.hf = Vuu.qf32
		.encoding = { .mask = 0xffff20e0, .op = 0x1e0420c0 },
		.id = HEX_INS_V6_VCONV_HF_QF32,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 6 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".hf = .qf32",
	},
	{
		// 0001111000000100PP1uuuuu000ddddd | Vd.sf = Vu.qf32
		.encoding = { .mask = 0xffff20e0, .op = 0x1e042000 },
		.id = HEX_INS_V6_VCONV_SF_QF32,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 6 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".sf = .qf32",
	},
	{
		// 00011111110vvvvvPP1uuuuu110ddddd | Vd.b = vcvt(Vu.hf,Vv.hf)
		.encoding = { .mask = 0xffe020e0, .op = 0x1fc020c0 },
		.id = HEX_INS_V6_VCVT_B_HF,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".b = vcvt(.hf,.hf)",
	},
	{
		// 0001111000000110PP1uuuuu000ddddd | Vd.h = vcvt(Vu.hf)
		.encoding = { .mask = 0xffff20e0, .op = 0x1e062000 },
		.id = HEX_INS_V6_VCVT_H_HF,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".h = vcvt(.hf)",
	},
	{
		// 0001111000000100PP1uuuuu010ddddd | Vdd.hf = vcvt(Vu.b)
		.encoding = { .mask = 0xffff20e0, .op = 0x1e042040 },
		.id = HEX_INS_V6_VCVT_HF_B,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".hf = vcvt(.b)",
	},
	{
		// 0001111000000100PP1uuuuu111ddddd | Vd.hf = vcvt(Vu.h)
		.encoding = { .mask = 0xffff20e0, .op = 0x1e0420e0 },
		.id = HEX_INS_V6_VCVT_HF_H,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".hf = vcvt(.h)",
	},
	{
		// 00011111011vvvvvPP1uuuuu001ddddd | Vd.hf = vcvt(Vu.sf,Vv.sf)
		.encoding = { .mask = 0xffe020e0, .op = 0x1f602020 },
		.id = HEX_INS_V6_VCVT_HF_SF,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".hf = vcvt(.sf,.sf)",
	},
	{
		// 0001111000000100PP1uuuuu001ddddd | Vdd.hf = vcvt(Vu.ub)
		.encoding = { .mask = 0xffff20e0, .op = 0x1e042020 },
		.id = HEX_INS_V6_VCVT_HF_UB,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".hf = vcvt(.ub)",
	},
	{
		// 0001111000000100PP1uuuuu101ddddd | Vd.hf = vcvt(Vu.uh)
		.encoding = { .mask = 0xffff20e0, .op = 0x1e0420a0 },
		.id = HEX_INS_V6_VCVT_HF_UH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".hf = vcvt(.uh)",
	},
	{
		// 0001111000000100PP1uuuuu100ddddd | Vdd.sf = vcvt(Vu.hf)
		.encoding = { .mask = 0xffff20e0, .op = 0x1e042080 },
		.id = HEX_INS_V6_VCVT_SF_HF,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".sf = vcvt(.hf)",
	},
	{
		// 00011111110vvvvvPP1uuuuu101ddddd | Vd.ub = vcvt(Vu.hf,Vv.hf)
		.encoding = { .mask = 0xffe020e0, .op = 0x1fc020a0 },
		.id = HEX_INS_V6_VCVT_UB_HF,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".ub = vcvt(.hf,.hf)",
	},
	{
		// 0001111000000101PP1uuuuu000ddddd | Vd.uh = vcvt(Vu.hf)
		.encoding = { .mask = 0xffff20e0, .op = 0x1e052000 },
		.id = HEX_INS_V6_VCVT_UH_HF,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".uh = vcvt(.hf)",
	},
	{
		// 00011001111tttttPP1yyyyy010xxxxx | vdeal(Vy,Vx,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0x19e02040 },
		.id = HEX_INS_V6_VDEAL,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "vdeal(,,)",
	},
	{
		// 0001111000000000PP0uuuuu111ddddd | Vd.b = vdeal(Vu.b)
		.encoding = { .mask = 0xffff20e0, .op = 0x1e0000e0 },
		.id = HEX_INS_V6_VDEALB,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".b = vdeal(.b)",
	},
	{
		// 00011111001vvvvvPP0uuuuu111ddddd | Vd.b = vdeale(Vu.b,Vv.b)
		.encoding = { .mask = 0xffe020e0, .op = 0x1f2000e0 },
		.id = HEX_INS_V6_VDEALB4W,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".b = vdeale(.b,.b)",
	},
	{
		// 0001111000000000PP0uuuuu110ddddd | Vd.h = vdeal(Vu.h)
		.encoding = { .mask = 0xffff20e0, .op = 0x1e0000c0 },
		.id = HEX_INS_V6_VDEALH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".h = vdeal(.h)",
	},
	{
		// 00011011vvvvvtttPP1uuuuu100ddddd | Vdd = vdeal(Vu,Vv,Rt)
		.encoding = { .mask = 0xff0020e0, .op = 0x1b002080 },
		.id = HEX_INS_V6_VDEALVDD,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 19 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS_LOW8, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vdeal(,,)",
	},
	{
		// 00011111001vvvvvPP0uuuuu001ddddd | Vd = vdelta(Vu,Vv)
		.encoding = { .mask = 0xffe020e0, .op = 0x1f200020 },
		.id = HEX_INS_V6_VDELTA,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vdelta(,)",
	},
	{
		// 00011111101vvvvvPP1uuuuu110ddddd | Vd.sf = vdmpy(Vu.hf,Vv.hf)
		.encoding = { .mask = 0xffe020e0, .op = 0x1fa020c0 },
		.id = HEX_INS_V6_VDMPY_SF_HF,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 16 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".sf = vdmpy(.hf,.hf)",
	},
	{
		// 00011100010vvvvvPP1uuuuu011xxxxx | Vx.sf += vdmpy(Vu.hf,Vv.hf)
		.encoding = { .mask = 0xffe020e0, .op = 0x1c402060 },
		.id = HEX_INS_V6_VDMPY_SF_HF_ACC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 17 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".sf += vdmpy(.hf,.hf)",
	},
	{
		// 00011001000tttttPP0uuuuu110ddddd | Vd.h = vdmpy(Vu.ub,Rt.b)
		.encoding = { .mask = 0xffe020e0, .op = 0x190000c0 },
		.id = HEX_INS_V6_VDMPYBUS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".h = vdmpy(.ub,.b)",
	},
	{
		// 00011001000tttttPP1uuuuu110xxxxx | Vx.h += vdmpy(Vu.ub,Rt.b)
		.encoding = { .mask = 0xffe020e0, .op = 0x190020c0 },
		.id = HEX_INS_V6_VDMPYBUS_ACC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 16 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".h += vdmpy(.ub,.b)",
	},
	{
		// 00011001000tttttPP0uuuuu111ddddd | Vdd.h = vdmpy(Vuu.ub,Rt.b)
		.encoding = { .mask = 0xffe020e0, .op = 0x190000e0 },
		.id = HEX_INS_V6_VDMPYBUS_DV,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".h = vdmpy(.ub,.b)",
	},
	{
		// 00011001000tttttPP1uuuuu111xxxxx | Vxx.h += vdmpy(Vuu.ub,Rt.b)
		.encoding = { .mask = 0xffe020e0, .op = 0x190020e0 },
		.id = HEX_INS_V6_VDMPYBUS_DV_ACC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 16 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".h += vdmpy(.ub,.b)",
	},
	{
		// 00011001000tttttPP0uuuuu010ddddd | Vd.w = vdmpy(Vu.h,Rt.b)
		.encoding = { .mask = 0xffe020e0, .op = 0x19000040 },
		.id = HEX_INS_V6_VDMPYHB,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".w = vdmpy(.h,.b)",
	},
	{
		// 00011001000tttttPP1uuuuu011xxxxx | Vx.w += vdmpy(Vu.h,Rt.b)
		.encoding = { .mask = 0xffe020e0, .op = 0x19002060 },
		.id = HEX_INS_V6_VDMPYHB_ACC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".w += vdmpy(.h,.b)",
	},
	{
		// 00011001001tttttPP0uuuuu100ddddd | Vdd.w = vdmpy(Vuu.h,Rt.b)
		.encoding = { .mask = 0xffe020e0, .op = 0x19200080 },
		.id = HEX_INS_V6_VDMPYHB_DV,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".w = vdmpy(.h,.b)",
	},
	{
		// 00011001001tttttPP1uuuuu100xxxxx | Vxx.w += vdmpy(Vuu.h,Rt.b)
		.encoding = { .mask = 0xffe020e0, .op = 0x19202080 },
		.id = HEX_INS_V6_VDMPYHB_DV_ACC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".w += vdmpy(.h,.b)",
	},
	{
		// 00011001001tttttPP0uuuuu011ddddd | Vd.w = vdmpy(Vuu.h,Rt.h):sat
		.encoding = { .mask = 0xffe020e0, .op = 0x19200060 },
		.id = HEX_INS_V6_VDMPYHISAT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".w = vdmpy(.h,.h):sat",
	},
	{
		// 00011001001tttttPP1uuuuu010xxxxx | Vx.w += vdmpy(Vuu.h,Rt.h):sat
		.encoding = { .mask = 0xffe020e0, .op = 0x19202040 },
		.id = HEX_INS_V6_VDMPYHISAT_ACC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".w += vdmpy(.h,.h):sat",
	},
	{
		// 00011001001tttttPP0uuuuu010ddddd | Vd.w = vdmpy(Vu.h,Rt.h):sat
		.encoding = { .mask = 0xffe020e0, .op = 0x19200040 },
		.id = HEX_INS_V6_VDMPYHSAT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".w = vdmpy(.h,.h):sat",
	},
	{
		// 00011001001tttttPP1uuuuu011xxxxx | Vx.w += vdmpy(Vu.h,Rt.h):sat
		.encoding = { .mask = 0xffe020e0, .op = 0x19202060 },
		.id = HEX_INS_V6_VDMPYHSAT_ACC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".w += vdmpy(.h,.h):sat",
	},
	{
		// 00011001001tttttPP0uuuuu001ddddd | Vd.w = vdmpy(Vuu.h,Rt.uh,#1):sat
		.encoding = { .mask = 0xffe020e0, .op = 0x19200020 },
		.id = HEX_INS_V6_VDMPYHSUISAT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".w = vdmpy(.h,.uh,#1):sat",
	},
	{
		// 00011001001tttttPP1uuuuu001xxxxx | Vx.w += vdmpy(Vuu.h,Rt.uh,#1):sat
		.encoding = { .mask = 0xffe020e0, .op = 0x19202020 },
		.id = HEX_INS_V6_VDMPYHSUISAT_ACC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".w += vdmpy(.h,.uh,#1):sat",
	},
	{
		// 00011001001tttttPP0uuuuu000ddddd | Vd.w = vdmpy(Vu.h,Rt.uh):sat
		.encoding = { .mask = 0xffe020e0, .op = 0x19200000 },
		.id = HEX_INS_V6_VDMPYHSUSAT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".w = vdmpy(.h,.uh):sat",
	},
	{
		// 00011001001tttttPP1uuuuu000xxxxx | Vx.w += vdmpy(Vu.h,Rt.uh):sat
		.encoding = { .mask = 0xffe020e0, .op = 0x19202000 },
		.id = HEX_INS_V6_VDMPYHSUSAT_ACC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".w += vdmpy(.h,.uh):sat",
	},
	{
		// 00011100000vvvvvPP0uuuuu011ddddd | Vd.w = vdmpy(Vu.h,Vv.h):sat
		.encoding = { .mask = 0xffe020e0, .op = 0x1c000060 },
		.id = HEX_INS_V6_VDMPYHVSAT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".w = vdmpy(.h,.h):sat",
	},
	{
		// 00011100000vvvvvPP1uuuuu011xxxxx | Vx.w += vdmpy(Vu.h,Vv.h):sat
		.encoding = { .mask = 0xffe020e0, .op = 0x1c002060 },
		.id = HEX_INS_V6_VDMPYHVSAT_ACC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".w += vdmpy(.h,.h):sat",
	},
	{
		// 00011001000tttttPP0uuuuu101ddddd | Vdd.uw = vdsad(Vuu.uh,Rt.uh)
		.encoding = { .mask = 0xffe020e0, .op = 0x190000a0 },
		.id = HEX_INS_V6_VDSADUH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 16 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".uw = vdsad(.uh,.uh)",
	},
	{
		// 00011001011tttttPP1uuuuu000xxxxx | Vxx.uw += vdsad(Vuu.uh,Rt.uh)
		.encoding = { .mask = 0xffe020e0, .op = 0x19602000 },
		.id = HEX_INS_V6_VDSADUH_ACC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 17 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".uw += vdsad(.uh,.uh)",
	},
	{
		// 00011111100vvvvvPP0uuuuu000000dd | Qd = vcmp.eq(Vu.b,Vv.b)
		.encoding = { .mask = 0xffe020fc, .op = 0x1f800000 },
		.id = HEX_INS_V6_VEQB,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_QR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vcmp.eq(.b,.b)",
	},
	{
		// 00011100100vvvvvPP1uuuuu000000xx | Qx &= vcmp.eq(Vu.b,Vv.b)
		.encoding = { .mask = 0xffe020fc, .op = 0x1c802000 },
		.id = HEX_INS_V6_VEQB_AND,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_QR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " &= vcmp.eq(.b,.b)",
	},
	{
		// 00011100100vvvvvPP1uuuuu010000xx | Qx |= vcmp.eq(Vu.b,Vv.b)
		.encoding = { .mask = 0xffe020fc, .op = 0x1c802040 },
		.id = HEX_INS_V6_VEQB_OR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_QR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " |= vcmp.eq(.b,.b)",
	},
	{
		// 00011100100vvvvvPP1uuuuu100000xx | Qx ^= vcmp.eq(Vu.b,Vv.b)
		.encoding = { .mask = 0xffe020fc, .op = 0x1c802080 },
		.id = HEX_INS_V6_VEQB_XOR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_QR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " ^= vcmp.eq(.b,.b)",
	},
	{
		// 00011111100vvvvvPP0uuuuu000001dd | Qd = vcmp.eq(Vu.h,Vv.h)
		.encoding = { .mask = 0xffe020fc, .op = 0x1f800004 },
		.id = HEX_INS_V6_VEQH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_QR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vcmp.eq(.h,.h)",
	},
	{
		// 00011100100vvvvvPP1uuuuu000001xx | Qx &= vcmp.eq(Vu.h,Vv.h)
		.encoding = { .mask = 0xffe020fc, .op = 0x1c802004 },
		.id = HEX_INS_V6_VEQH_AND,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_QR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " &= vcmp.eq(.h,.h)",
	},
	{
		// 00011100100vvvvvPP1uuuuu010001xx | Qx |= vcmp.eq(Vu.h,Vv.h)
		.encoding = { .mask = 0xffe020fc, .op = 0x1c802044 },
		.id = HEX_INS_V6_VEQH_OR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_QR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " |= vcmp.eq(.h,.h)",
	},
	{
		// 00011100100vvvvvPP1uuuuu100001xx | Qx ^= vcmp.eq(Vu.h,Vv.h)
		.encoding = { .mask = 0xffe020fc, .op = 0x1c802084 },
		.id = HEX_INS_V6_VEQH_XOR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_QR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " ^= vcmp.eq(.h,.h)",
	},
	{
		// 00011111100vvvvvPP0uuuuu000010dd | Qd = vcmp.eq(Vu.w,Vv.w)
		.encoding = { .mask = 0xffe020fc, .op = 0x1f800008 },
		.id = HEX_INS_V6_VEQW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_QR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vcmp.eq(.w,.w)",
	},
	{
		// 00011100100vvvvvPP1uuuuu000010xx | Qx &= vcmp.eq(Vu.w,Vv.w)
		.encoding = { .mask = 0xffe020fc, .op = 0x1c802008 },
		.id = HEX_INS_V6_VEQW_AND,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_QR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " &= vcmp.eq(.w,.w)",
	},
	{
		// 00011100100vvvvvPP1uuuuu010010xx | Qx |= vcmp.eq(Vu.w,Vv.w)
		.encoding = { .mask = 0xffe020fc, .op = 0x1c802048 },
		.id = HEX_INS_V6_VEQW_OR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_QR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " |= vcmp.eq(.w,.w)",
	},
	{
		// 00011100100vvvvvPP1uuuuu100010xx | Qx ^= vcmp.eq(Vu.w,Vv.w)
		.encoding = { .mask = 0xffe020fc, .op = 0x1c802088 },
		.id = HEX_INS_V6_VEQW_XOR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_QR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " ^= vcmp.eq(.w,.w)",
	},
	{
		// 00011100011vvvvvPP1uuuuu010ddddd | Vd.hf = vfmax(Vu.hf,Vv.hf)
		.encoding = { .mask = 0xffe020e0, .op = 0x1c602040 },
		.id = HEX_INS_V6_VFMAX_HF,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 16 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".hf = vfmax(.hf,.hf)",
	},
	{
		// 00011100011vvvvvPP1uuuuu011ddddd | Vd.sf = vfmax(Vu.sf,Vv.sf)
		.encoding = { .mask = 0xffe020e0, .op = 0x1c602060 },
		.id = HEX_INS_V6_VFMAX_SF,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 16 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".sf = vfmax(.sf,.sf)",
	},
	{
		// 00011100011vvvvvPP1uuuuu000ddddd | Vd.hf = vfmin(Vu.hf,Vv.hf)
		.encoding = { .mask = 0xffe020e0, .op = 0x1c602000 },
		.id = HEX_INS_V6_VFMIN_HF,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 16 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".hf = vfmin(.hf,.hf)",
	},
	{
		// 00011100011vvvvvPP1uuuuu001ddddd | Vd.sf = vfmin(Vu.sf,Vv.sf)
		.encoding = { .mask = 0xffe020e0, .op = 0x1c602020 },
		.id = HEX_INS_V6_VFMIN_SF,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 16 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".sf = vfmin(.sf,.sf)",
	},
	{
		// 0001111000000110PP1uuuuu010ddddd | Vd.hf = vfneg(Vu.hf)
		.encoding = { .mask = 0xffff20e0, .op = 0x1e062040 },
		.id = HEX_INS_V6_VFNEG_HF,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".hf = vfneg(.hf)",
	},
	{
		// 0001111000000110PP1uuuuu011ddddd | Vd.sf = vfneg(Vu.sf)
		.encoding = { .mask = 0xffff20e0, .op = 0x1e062060 },
		.id = HEX_INS_V6_VFNEG_SF,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".sf = vfneg(.sf)",
	},
	{
		// 00011111100vvvvvPP0uuuuu000100dd | Qd = vcmp.gt(Vu.b,Vv.b)
		.encoding = { .mask = 0xffe020fc, .op = 0x1f800010 },
		.id = HEX_INS_V6_VGTB,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_QR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vcmp.gt(.b,.b)",
	},
	{
		// 00011100100vvvvvPP1uuuuu000100xx | Qx &= vcmp.gt(Vu.b,Vv.b)
		.encoding = { .mask = 0xffe020fc, .op = 0x1c802010 },
		.id = HEX_INS_V6_VGTB_AND,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_QR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " &= vcmp.gt(.b,.b)",
	},
	{
		// 00011100100vvvvvPP1uuuuu010100xx | Qx |= vcmp.gt(Vu.b,Vv.b)
		.encoding = { .mask = 0xffe020fc, .op = 0x1c802050 },
		.id = HEX_INS_V6_VGTB_OR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_QR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " |= vcmp.gt(.b,.b)",
	},
	{
		// 00011100100vvvvvPP1uuuuu100100xx | Qx ^= vcmp.gt(Vu.b,Vv.b)
		.encoding = { .mask = 0xffe020fc, .op = 0x1c802090 },
		.id = HEX_INS_V6_VGTB_XOR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_QR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " ^= vcmp.gt(.b,.b)",
	},
	{
		// 00011111100vvvvvPP0uuuuu000101dd | Qd = vcmp.gt(Vu.h,Vv.h)
		.encoding = { .mask = 0xffe020fc, .op = 0x1f800014 },
		.id = HEX_INS_V6_VGTH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_QR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vcmp.gt(.h,.h)",
	},
	{
		// 00011100100vvvvvPP1uuuuu000101xx | Qx &= vcmp.gt(Vu.h,Vv.h)
		.encoding = { .mask = 0xffe020fc, .op = 0x1c802014 },
		.id = HEX_INS_V6_VGTH_AND,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_QR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " &= vcmp.gt(.h,.h)",
	},
	{
		// 00011100100vvvvvPP1uuuuu010101xx | Qx |= vcmp.gt(Vu.h,Vv.h)
		.encoding = { .mask = 0xffe020fc, .op = 0x1c802054 },
		.id = HEX_INS_V6_VGTH_OR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_QR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " |= vcmp.gt(.h,.h)",
	},
	{
		// 00011100100vvvvvPP1uuuuu100101xx | Qx ^= vcmp.gt(Vu.h,Vv.h)
		.encoding = { .mask = 0xffe020fc, .op = 0x1c802094 },
		.id = HEX_INS_V6_VGTH_XOR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_QR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " ^= vcmp.gt(.h,.h)",
	},
	{
		// 00011100100vvvvvPP1uuuuu011101dd | Qd = vcmp.gt(Vu.hf,Vv.hf)
		.encoding = { .mask = 0xffe020fc, .op = 0x1c802074 },
		.id = HEX_INS_V6_VGTHF,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_QR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vcmp.gt(.hf,.hf)",
	},
	{
		// 00011100100vvvvvPP1uuuuu110011xx | Qx &= vcmp.gt(Vu.hf,Vv.hf)
		.encoding = { .mask = 0xffe020fc, .op = 0x1c8020cc },
		.id = HEX_INS_V6_VGTHF_AND,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_QR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 16 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " &= vcmp.gt(.hf,.hf)",
	},
	{
		// 00011100100vvvvvPP1uuuuu001101xx | Qx |= vcmp.gt(Vu.hf,Vv.hf)
		.encoding = { .mask = 0xffe020fc, .op = 0x1c802034 },
		.id = HEX_INS_V6_VGTHF_OR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_QR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 16 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " |= vcmp.gt(.hf,.hf)",
	},
	{
		// 00011100100vvvvvPP1uuuuu111011xx | Qx ^= vcmp.gt(Vu.hf,Vv.hf)
		.encoding = { .mask = 0xffe020fc, .op = 0x1c8020ec },
		.id = HEX_INS_V6_VGTHF_XOR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_QR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 16 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " ^= vcmp.gt(.hf,.hf)",
	},
	{
		// 00011100100vvvvvPP1uuuuu011100dd | Qd = vcmp.gt(Vu.sf,Vv.sf)
		.encoding = { .mask = 0xffe020fc, .op = 0x1c802070 },
		.id = HEX_INS_V6_VGTSF,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_QR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vcmp.gt(.sf,.sf)",
	},
	{
		// 00011100100vvvvvPP1uuuuu110010xx | Qx &= vcmp.gt(Vu.sf,Vv.sf)
		.encoding = { .mask = 0xffe020fc, .op = 0x1c8020c8 },
		.id = HEX_INS_V6_VGTSF_AND,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_QR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 16 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " &= vcmp.gt(.sf,.sf)",
	},
	{
		// 00011100100vvvvvPP1uuuuu001100xx | Qx |= vcmp.gt(Vu.sf,Vv.sf)
		.encoding = { .mask = 0xffe020fc, .op = 0x1c802030 },
		.id = HEX_INS_V6_VGTSF_OR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_QR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 16 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " |= vcmp.gt(.sf,.sf)",
	},
	{
		// 00011100100vvvvvPP1uuuuu111010xx | Qx ^= vcmp.gt(Vu.sf,Vv.sf)
		.encoding = { .mask = 0xffe020fc, .op = 0x1c8020e8 },
		.id = HEX_INS_V6_VGTSF_XOR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_QR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 16 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " ^= vcmp.gt(.sf,.sf)",
	},
	{
		// 00011111100vvvvvPP0uuuuu001000dd | Qd = vcmp.gt(Vu.ub,Vv.ub)
		.encoding = { .mask = 0xffe020fc, .op = 0x1f800020 },
		.id = HEX_INS_V6_VGTUB,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_QR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vcmp.gt(.ub,.ub)",
	},
	{
		// 00011100100vvvvvPP1uuuuu001000xx | Qx &= vcmp.gt(Vu.ub,Vv.ub)
		.encoding = { .mask = 0xffe020fc, .op = 0x1c802020 },
		.id = HEX_INS_V6_VGTUB_AND,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_QR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 16 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " &= vcmp.gt(.ub,.ub)",
	},
	{
		// 00011100100vvvvvPP1uuuuu011000xx | Qx |= vcmp.gt(Vu.ub,Vv.ub)
		.encoding = { .mask = 0xffe020fc, .op = 0x1c802060 },
		.id = HEX_INS_V6_VGTUB_OR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_QR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 16 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " |= vcmp.gt(.ub,.ub)",
	},
	{
		// 00011100100vvvvvPP1uuuuu101000xx | Qx ^= vcmp.gt(Vu.ub,Vv.ub)
		.encoding = { .mask = 0xffe020fc, .op = 0x1c8020a0 },
		.id = HEX_INS_V6_VGTUB_XOR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_QR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 16 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " ^= vcmp.gt(.ub,.ub)",
	},
	{
		// 00011111100vvvvvPP0uuuuu001001dd | Qd = vcmp.gt(Vu.uh,Vv.uh)
		.encoding = { .mask = 0xffe020fc, .op = 0x1f800024 },
		.id = HEX_INS_V6_VGTUH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_QR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vcmp.gt(.uh,.uh)",
	},
	{
		// 00011100100vvvvvPP1uuuuu001001xx | Qx &= vcmp.gt(Vu.uh,Vv.uh)
		.encoding = { .mask = 0xffe020fc, .op = 0x1c802024 },
		.id = HEX_INS_V6_VGTUH_AND,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_QR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 16 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " &= vcmp.gt(.uh,.uh)",
	},
	{
		// 00011100100vvvvvPP1uuuuu011001xx | Qx |= vcmp.gt(Vu.uh,Vv.uh)
		.encoding = { .mask = 0xffe020fc, .op = 0x1c802064 },
		.id = HEX_INS_V6_VGTUH_OR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_QR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 16 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " |= vcmp.gt(.uh,.uh)",
	},
	{
		// 00011100100vvvvvPP1uuuuu101001xx | Qx ^= vcmp.gt(Vu.uh,Vv.uh)
		.encoding = { .mask = 0xffe020fc, .op = 0x1c8020a4 },
		.id = HEX_INS_V6_VGTUH_XOR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_QR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 16 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " ^= vcmp.gt(.uh,.uh)",
	},
	{
		// 00011111100vvvvvPP0uuuuu001010dd | Qd = vcmp.gt(Vu.uw,Vv.uw)
		.encoding = { .mask = 0xffe020fc, .op = 0x1f800028 },
		.id = HEX_INS_V6_VGTUW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_QR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vcmp.gt(.uw,.uw)",
	},
	{
		// 00011100100vvvvvPP1uuuuu001010xx | Qx &= vcmp.gt(Vu.uw,Vv.uw)
		.encoding = { .mask = 0xffe020fc, .op = 0x1c802028 },
		.id = HEX_INS_V6_VGTUW_AND,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_QR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 16 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " &= vcmp.gt(.uw,.uw)",
	},
	{
		// 00011100100vvvvvPP1uuuuu011010xx | Qx |= vcmp.gt(Vu.uw,Vv.uw)
		.encoding = { .mask = 0xffe020fc, .op = 0x1c802068 },
		.id = HEX_INS_V6_VGTUW_OR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_QR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 16 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " |= vcmp.gt(.uw,.uw)",
	},
	{
		// 00011100100vvvvvPP1uuuuu101010xx | Qx ^= vcmp.gt(Vu.uw,Vv.uw)
		.encoding = { .mask = 0xffe020fc, .op = 0x1c8020a8 },
		.id = HEX_INS_V6_VGTUW_XOR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_QR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 16 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " ^= vcmp.gt(.uw,.uw)",
	},
	{
		// 00011111100vvvvvPP0uuuuu000110dd | Qd = vcmp.gt(Vu.w,Vv.w)
		.encoding = { .mask = 0xffe020fc, .op = 0x1f800018 },
		.id = HEX_INS_V6_VGTW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_QR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vcmp.gt(.w,.w)",
	},
	{
		// 00011100100vvvvvPP1uuuuu000110xx | Qx &= vcmp.gt(Vu.w,Vv.w)
		.encoding = { .mask = 0xffe020fc, .op = 0x1c802018 },
		.id = HEX_INS_V6_VGTW_AND,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_QR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " &= vcmp.gt(.w,.w)",
	},
	{
		// 00011100100vvvvvPP1uuuuu010110xx | Qx |= vcmp.gt(Vu.w,Vv.w)
		.encoding = { .mask = 0xffe020fc, .op = 0x1c802058 },
		.id = HEX_INS_V6_VGTW_OR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_QR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " |= vcmp.gt(.w,.w)",
	},
	{
		// 00011100100vvvvvPP1uuuuu100110xx | Qx ^= vcmp.gt(Vu.w,Vv.w)
		.encoding = { .mask = 0xffe020fc, .op = 0x1c802098 },
		.id = HEX_INS_V6_VGTW_XOR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_QR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " ^= vcmp.gt(.w,.w)",
	},
	{
		// 0001111000000000PP10000010000000 | vhist
		.encoding = { .mask = 0xffff3fff, .op = 0x1e002080 },
		.id = HEX_INS_V6_VHIST,
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "vhist",
	},
	{
		// 00011110vv000010PP10000010000000 | vhist(Qv)
		.encoding = { .mask = 0xff3f3fff, .op = 0x1e022080 },
		.id = HEX_INS_V6_VHISTQ,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 22 } }, .reg_cls = HEX_REG_CLASS_HVX_QR, .syntax = 6 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "vhist()",
	},
	{
		// 00011001101tttttPP100000001xxxxx | Vx.w = vinsert(Rt)
		.encoding = { .mask = 0xffe03fe0, .op = 0x19a02020 },
		.id = HEX_INS_V6_VINSERTWR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".w = vinsert()",
	},
	{
		// 00011011vvvvvtttPP0uuuuu001ddddd | Vd = vlalign(Vu,Vv,Rt)
		.encoding = { .mask = 0xff0020e0, .op = 0x1b000020 },
		.id = HEX_INS_V6_VLALIGNB,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 19 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS_LOW8, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vlalign(,,)",
	},
	{
		// 00011110011vvvvvPP1uuuuuiiiddddd | Vd = vlalign(Vu,Vv,Ii)
		.encoding = { .mask = 0xffe02000, .op = 0x1e602000 },
		.id = HEX_INS_V6_VLALIGNBI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 5 } }, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vlalign(,,)",
	},
	{
		// 00011001100tttttPP0uuuuu011ddddd | Vd.ub = vlsr(Vu.ub,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0x19800060 },
		.id = HEX_INS_V6_VLSRB,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".ub = vlsr(.ub,)",
	},
	{
		// 00011001100tttttPP0uuuuu010ddddd | Vd.uh = vlsr(Vu.uh,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0x19800040 },
		.id = HEX_INS_V6_VLSRH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".uh = vlsr(.uh,)",
	},
	{
		// 00011111101vvvvvPP0uuuuu010ddddd | Vd.h = vlsr(Vu.h,Vv.h)
		.encoding = { .mask = 0xffe020e0, .op = 0x1fa00040 },
		.id = HEX_INS_V6_VLSRHV,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".h = vlsr(.h,.h)",
	},
	{
		// 00011001100tttttPP0uuuuu001ddddd | Vd.uw = vlsr(Vu.uw,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0x19800020 },
		.id = HEX_INS_V6_VLSRW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".uw = vlsr(.uw,)",
	},
	{
		// 00011111101vvvvvPP0uuuuu001ddddd | Vd.w = vlsr(Vu.w,Vv.w)
		.encoding = { .mask = 0xffe020e0, .op = 0x1fa00020 },
		.id = HEX_INS_V6_VLSRWV,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".w = vlsr(.w,.w)",
	},
	{
		// 00011001011tttttPP0uuuuu100ddddd | Vd.h = vlut4(Vu.uh,Rtt.h)
		.encoding = { .mask = 0xffe020e0, .op = 0x19600080 },
		.id = HEX_INS_V6_VLUT4,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".h = vlut4(.uh,.h)",
	},
	{
		// 00011011vvvvvtttPP1uuuuu001ddddd | Vd.b = vlut32(Vu.b,Vv.b,Rt)
		.encoding = { .mask = 0xff0020e0, .op = 0x1b002020 },
		.id = HEX_INS_V6_VLUTVVB,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 19 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS_LOW8, .syntax = 18 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".b = vlut32(.b,.b,)",
	},
	{
		// 00011000vvvvvtttPP0uuuuu011ddddd | Vd.b = vlut32(Vu.b,Vv.b,Rt):nomatch
		.encoding = { .mask = 0xff0020e0, .op = 0x18000060 },
		.id = HEX_INS_V6_VLUTVVB_NM,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 19 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS_LOW8, .syntax = 18 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".b = vlut32(.b,.b,):nomatch",
	},
	{
		// 00011011vvvvvtttPP1uuuuu101xxxxx | Vx.b |= vlut32(Vu.b,Vv.b,Rt)
		.encoding = { .mask = 0xff0020e0, .op = 0x1b0020a0 },
		.id = HEX_INS_V6_VLUTVVB_ORACC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 19 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS_LOW8, .syntax = 19 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".b |= vlut32(.b,.b,)",
	},
	{
		// 00011100110vvvvvPP1uuuuuiiixxxxx | Vx.b |= vlut32(Vu.b,Vv.b,Ii)
		.encoding = { .mask = 0xffe02000, .op = 0x1cc02000 },
		.id = HEX_INS_V6_VLUTVVB_ORACCI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 5 } }, .syntax = 19 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".b |= vlut32(.b,.b,)",
	},
	{
		// 00011110001vvvvvPP0uuuuuiiiddddd | Vd.b = vlut32(Vu.b,Vv.b,Ii)
		.encoding = { .mask = 0xffe02000, .op = 0x1e200000 },
		.id = HEX_INS_V6_VLUTVVBI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 5 } }, .syntax = 18 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".b = vlut32(.b,.b,)",
	},
	{
		// 00011011vvvvvtttPP1uuuuu110ddddd | Vdd.h = vlut16(Vu.b,Vv.h,Rt)
		.encoding = { .mask = 0xff0020e0, .op = 0x1b0020c0 },
		.id = HEX_INS_V6_VLUTVWH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 19 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS_LOW8, .syntax = 18 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".h = vlut16(.b,.h,)",
	},
	{
		// 00011000vvvvvtttPP0uuuuu100ddddd | Vdd.h = vlut16(Vu.b,Vv.h,Rt):nomatch
		.encoding = { .mask = 0xff0020e0, .op = 0x18000080 },
		.id = HEX_INS_V6_VLUTVWH_NM,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 19 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS_LOW8, .syntax = 18 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".h = vlut16(.b,.h,):nomatch",
	},
	{
		// 00011011vvvvvtttPP1uuuuu111xxxxx | Vxx.h |= vlut16(Vu.b,Vv.h,Rt)
		.encoding = { .mask = 0xff0020e0, .op = 0x1b0020e0 },
		.id = HEX_INS_V6_VLUTVWH_ORACC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 19 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS_LOW8, .syntax = 19 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".h |= vlut16(.b,.h,)",
	},
	{
		// 00011100111vvvvvPP1uuuuuiiixxxxx | Vxx.h |= vlut16(Vu.b,Vv.h,Ii)
		.encoding = { .mask = 0xffe02000, .op = 0x1ce02000 },
		.id = HEX_INS_V6_VLUTVWH_ORACCI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 5 } }, .syntax = 19 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".h |= vlut16(.b,.h,)",
	},
	{
		// 00011110011vvvvvPP0uuuuuiiiddddd | Vdd.h = vlut16(Vu.b,Vv.h,Ii)
		.encoding = { .mask = 0xffe02000, .op = 0x1e600000 },
		.id = HEX_INS_V6_VLUTVWHI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 5 } }, .syntax = 18 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".h = vlut16(.b,.h,)",
	},
	{
		// 00011111110vvvvvPP1uuuuu011ddddd | Vd.hf = vmax(Vu.hf,Vv.hf)
		.encoding = { .mask = 0xffe020e0, .op = 0x1fc02060 },
		.id = HEX_INS_V6_VMAX_HF,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".hf = vmax(.hf,.hf)",
	},
	{
		// 00011111110vvvvvPP1uuuuu001ddddd | Vd.sf = vmax(Vu.sf,Vv.sf)
		.encoding = { .mask = 0xffe020e0, .op = 0x1fc02020 },
		.id = HEX_INS_V6_VMAX_SF,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".sf = vmax(.sf,.sf)",
	},
	{
		// 00011111001vvvvvPP0uuuuu101ddddd | Vd.b = vmax(Vu.b,Vv.b)
		.encoding = { .mask = 0xffe020e0, .op = 0x1f2000a0 },
		.id = HEX_INS_V6_VMAXB,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".b = vmax(.b,.b)",
	},
	{
		// 00011111000vvvvvPP0uuuuu111ddddd | Vd.h = vmax(Vu.h,Vv.h)
		.encoding = { .mask = 0xffe020e0, .op = 0x1f0000e0 },
		.id = HEX_INS_V6_VMAXH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".h = vmax(.h,.h)",
	},
	{
		// 00011111000vvvvvPP0uuuuu101ddddd | Vd.ub = vmax(Vu.ub,Vv.ub)
		.encoding = { .mask = 0xffe020e0, .op = 0x1f0000a0 },
		.id = HEX_INS_V6_VMAXUB,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".ub = vmax(.ub,.ub)",
	},
	{
		// 00011111000vvvvvPP0uuuuu110ddddd | Vd.uh = vmax(Vu.uh,Vv.uh)
		.encoding = { .mask = 0xffe020e0, .op = 0x1f0000c0 },
		.id = HEX_INS_V6_VMAXUH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".uh = vmax(.uh,.uh)",
	},
	{
		// 00011111001vvvvvPP0uuuuu000ddddd | Vd.w = vmax(Vu.w,Vv.w)
		.encoding = { .mask = 0xffe020e0, .op = 0x1f200000 },
		.id = HEX_INS_V6_VMAXW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".w = vmax(.w,.w)",
	},
	{
		// 00011111110vvvvvPP1uuuuu100ddddd | Vd.hf = vmin(Vu.hf,Vv.hf)
		.encoding = { .mask = 0xffe020e0, .op = 0x1fc02080 },
		.id = HEX_INS_V6_VMIN_HF,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".hf = vmin(.hf,.hf)",
	},
	{
		// 00011111110vvvvvPP1uuuuu010ddddd | Vd.sf = vmin(Vu.sf,Vv.sf)
		.encoding = { .mask = 0xffe020e0, .op = 0x1fc02040 },
		.id = HEX_INS_V6_VMIN_SF,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".sf = vmin(.sf,.sf)",
	},
	{
		// 00011111001vvvvvPP0uuuuu100ddddd | Vd.b = vmin(Vu.b,Vv.b)
		.encoding = { .mask = 0xffe020e0, .op = 0x1f200080 },
		.id = HEX_INS_V6_VMINB,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".b = vmin(.b,.b)",
	},
	{
		// 00011111000vvvvvPP0uuuuu011ddddd | Vd.h = vmin(Vu.h,Vv.h)
		.encoding = { .mask = 0xffe020e0, .op = 0x1f000060 },
		.id = HEX_INS_V6_VMINH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".h = vmin(.h,.h)",
	},
	{
		// 00011111000vvvvvPP0uuuuu001ddddd | Vd.ub = vmin(Vu.ub,Vv.ub)
		.encoding = { .mask = 0xffe020e0, .op = 0x1f000020 },
		.id = HEX_INS_V6_VMINUB,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".ub = vmin(.ub,.ub)",
	},
	{
		// 00011111000vvvvvPP0uuuuu010ddddd | Vd.uh = vmin(Vu.uh,Vv.uh)
		.encoding = { .mask = 0xffe020e0, .op = 0x1f000040 },
		.id = HEX_INS_V6_VMINUH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".uh = vmin(.uh,.uh)",
	},
	{
		// 00011111000vvvvvPP0uuuuu100ddddd | Vd.w = vmin(Vu.w,Vv.w)
		.encoding = { .mask = 0xffe020e0, .op = 0x1f000080 },
		.id = HEX_INS_V6_VMINW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".w = vmin(.w,.w)",
	},
	{
		// 00011001001tttttPP0uuuuu110ddddd | Vdd.h = vmpa(Vuu.ub,Rt.b)
		.encoding = { .mask = 0xffe020e0, .op = 0x192000c0 },
		.id = HEX_INS_V6_VMPABUS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".h = vmpa(.ub,.b)",
	},
	{
		// 00011001001tttttPP1uuuuu110xxxxx | Vxx.h += vmpa(Vuu.ub,Rt.b)
		.encoding = { .mask = 0xffe020e0, .op = 0x192020c0 },
		.id = HEX_INS_V6_VMPABUS_ACC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".h += vmpa(.ub,.b)",
	},
	{
		// 00011100001vvvvvPP0uuuuu011ddddd | Vdd.h = vmpa(Vuu.ub,Vvv.b)
		.encoding = { .mask = 0xffe020e0, .op = 0x1c200060 },
		.id = HEX_INS_V6_VMPABUSV,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".h = vmpa(.ub,.b)",
	},
	{
		// 00011001011tttttPP0uuuuu011ddddd | Vdd.h = vmpa(Vuu.ub,Rt.ub)
		.encoding = { .mask = 0xffe020e0, .op = 0x19600060 },
		.id = HEX_INS_V6_VMPABUU,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".h = vmpa(.ub,.ub)",
	},
	{
		// 00011001101tttttPP1uuuuu100xxxxx | Vxx.h += vmpa(Vuu.ub,Rt.ub)
		.encoding = { .mask = 0xffe020e0, .op = 0x19a02080 },
		.id = HEX_INS_V6_VMPABUU_ACC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".h += vmpa(.ub,.ub)",
	},
	{
		// 00011100111vvvvvPP0uuuuu111ddddd | Vdd.h = vmpa(Vuu.ub,Vvv.ub)
		.encoding = { .mask = 0xffe020e0, .op = 0x1ce000e0 },
		.id = HEX_INS_V6_VMPABUUV,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".h = vmpa(.ub,.ub)",
	},
	{
		// 00011001001tttttPP0uuuuu111ddddd | Vdd.w = vmpa(Vuu.h,Rt.b)
		.encoding = { .mask = 0xffe020e0, .op = 0x192000e0 },
		.id = HEX_INS_V6_VMPAHB,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".w = vmpa(.h,.b)",
	},
	{
		// 00011001001tttttPP1uuuuu111xxxxx | Vxx.w += vmpa(Vuu.h,Rt.b)
		.encoding = { .mask = 0xffe020e0, .op = 0x192020e0 },
		.id = HEX_INS_V6_VMPAHB_ACC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".w += vmpa(.h,.b)",
	},
	{
		// 00011001100tttttPP1uuuuu100xxxxx | Vx.h = vmpa(Vxin.h,Vu.h,Rtt.h):sat
		.encoding = { .mask = 0xffe020e0, .op = 0x19802080 },
		.id = HEX_INS_V6_VMPAHHSAT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 16 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".h = vmpa(.h,.h,.h):sat",
	},
	{
		// 00011001100tttttPP0uuuuu101ddddd | Vdd.w = vmpa(Vuu.uh,Rt.b)
		.encoding = { .mask = 0xffe020e0, .op = 0x198000a0 },
		.id = HEX_INS_V6_VMPAUHB,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".w = vmpa(.uh,.b)",
	},
	{
		// 00011001100tttttPP1uuuuu010xxxxx | Vxx.w += vmpa(Vuu.uh,Rt.b)
		.encoding = { .mask = 0xffe020e0, .op = 0x19802040 },
		.id = HEX_INS_V6_VMPAUHB_ACC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".w += vmpa(.uh,.b)",
	},
	{
		// 00011001100tttttPP1uuuuu101xxxxx | Vx.h = vmpa(Vxin.h,Vu.uh,Rtt.uh):sat
		.encoding = { .mask = 0xffe020e0, .op = 0x198020a0 },
		.id = HEX_INS_V6_VMPAUHUHSAT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 17 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".h = vmpa(.h,.uh,.uh):sat",
	},
	{
		// 00011001100tttttPP1uuuuu110xxxxx | Vx.h = vmps(Vxin.h,Vu.uh,Rtt.uh):sat
		.encoding = { .mask = 0xffe020e0, .op = 0x198020c0 },
		.id = HEX_INS_V6_VMPSUHUHSAT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 17 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".h = vmps(.h,.uh,.uh):sat",
	},
	{
		// 00011111100vvvvvPP1uuuuu011ddddd | Vd.hf = vmpy(Vu.hf,Vv.hf)
		.encoding = { .mask = 0xffe020e0, .op = 0x1f802060 },
		.id = HEX_INS_V6_VMPY_HF_HF,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".hf = vmpy(.hf,.hf)",
	},
	{
		// 00011100010vvvvvPP1uuuuu010xxxxx | Vx.hf += vmpy(Vu.hf,Vv.hf)
		.encoding = { .mask = 0xffe020e0, .op = 0x1c402040 },
		.id = HEX_INS_V6_VMPY_HF_HF_ACC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 16 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".hf += vmpy(.hf,.hf)",
	},
	{
		// 00011111111vvvvvPP1uuuuu011ddddd | Vd.qf16 = vmpy(Vu.qf16,Vv.qf16)
		.encoding = { .mask = 0xffe020e0, .op = 0x1fe02060 },
		.id = HEX_INS_V6_VMPY_QF16,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 19 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".qf16 = vmpy(.qf16,.qf16)",
	},
	{
		// 00011111111vvvvvPP1uuuuu100ddddd | Vd.qf16 = vmpy(Vu.hf,Vv.hf)
		.encoding = { .mask = 0xffe020e0, .op = 0x1fe02080 },
		.id = HEX_INS_V6_VMPY_QF16_HF,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 17 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".qf16 = vmpy(.hf,.hf)",
	},
	{
		// 00011111111vvvvvPP1uuuuu101ddddd | Vd.qf16 = vmpy(Vu.qf16,Vv.hf)
		.encoding = { .mask = 0xffe020e0, .op = 0x1fe020a0 },
		.id = HEX_INS_V6_VMPY_QF16_MIX_HF,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 19 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".qf16 = vmpy(.qf16,.hf)",
	},
	{
		// 00011111111vvvvvPP1uuuuu000ddddd | Vd.qf32 = vmpy(Vu.qf32,Vv.qf32)
		.encoding = { .mask = 0xffe020e0, .op = 0x1fe02000 },
		.id = HEX_INS_V6_VMPY_QF32,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 19 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".qf32 = vmpy(.qf32,.qf32)",
	},
	{
		// 00011111111vvvvvPP1uuuuu111ddddd | Vdd.qf32 = vmpy(Vu.hf,Vv.hf)
		.encoding = { .mask = 0xffe020e0, .op = 0x1fe020e0 },
		.id = HEX_INS_V6_VMPY_QF32_HF,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 17 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".qf32 = vmpy(.hf,.hf)",
	},
	{
		// 00011111100vvvvvPP1uuuuu000ddddd | Vdd.qf32 = vmpy(Vu.qf16,Vv.hf)
		.encoding = { .mask = 0xffe020e0, .op = 0x1f802000 },
		.id = HEX_INS_V6_VMPY_QF32_MIX_HF,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 19 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".qf32 = vmpy(.qf16,.hf)",
	},
	{
		// 00011111111vvvvvPP1uuuuu110ddddd | Vdd.qf32 = vmpy(Vu.qf16,Vv.qf16)
		.encoding = { .mask = 0xffe020e0, .op = 0x1fe020c0 },
		.id = HEX_INS_V6_VMPY_QF32_QF16,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 19 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".qf32 = vmpy(.qf16,.qf16)",
	},
	{
		// 00011111111vvvvvPP1uuuuu001ddddd | Vd.qf32 = vmpy(Vu.sf,Vv.sf)
		.encoding = { .mask = 0xffe020e0, .op = 0x1fe02020 },
		.id = HEX_INS_V6_VMPY_QF32_SF,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 17 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".qf32 = vmpy(.sf,.sf)",
	},
	{
		// 00011111100vvvvvPP1uuuuu010ddddd | Vdd.sf = vmpy(Vu.hf,Vv.hf)
		.encoding = { .mask = 0xffe020e0, .op = 0x1f802040 },
		.id = HEX_INS_V6_VMPY_SF_HF,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".sf = vmpy(.hf,.hf)",
	},
	{
		// 00011100010vvvvvPP1uuuuu001xxxxx | Vxx.sf += vmpy(Vu.hf,Vv.hf)
		.encoding = { .mask = 0xffe020e0, .op = 0x1c402020 },
		.id = HEX_INS_V6_VMPY_SF_HF_ACC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 16 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".sf += vmpy(.hf,.hf)",
	},
	{
		// 00011111100vvvvvPP1uuuuu001ddddd | Vd.sf = vmpy(Vu.sf,Vv.sf)
		.encoding = { .mask = 0xffe020e0, .op = 0x1f802020 },
		.id = HEX_INS_V6_VMPY_SF_SF,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".sf = vmpy(.sf,.sf)",
	},
	{
		// 00011001001tttttPP0uuuuu101ddddd | Vdd.h = vmpy(Vu.ub,Rt.b)
		.encoding = { .mask = 0xffe020e0, .op = 0x192000a0 },
		.id = HEX_INS_V6_VMPYBUS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".h = vmpy(.ub,.b)",
	},
	{
		// 00011001001tttttPP1uuuuu101xxxxx | Vxx.h += vmpy(Vu.ub,Rt.b)
		.encoding = { .mask = 0xffe020e0, .op = 0x192020a0 },
		.id = HEX_INS_V6_VMPYBUS_ACC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".h += vmpy(.ub,.b)",
	},
	{
		// 00011100000vvvvvPP0uuuuu110ddddd | Vdd.h = vmpy(Vu.ub,Vv.b)
		.encoding = { .mask = 0xffe020e0, .op = 0x1c0000c0 },
		.id = HEX_INS_V6_VMPYBUSV,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".h = vmpy(.ub,.b)",
	},
	{
		// 00011100000vvvvvPP1uuuuu110xxxxx | Vxx.h += vmpy(Vu.ub,Vv.b)
		.encoding = { .mask = 0xffe020e0, .op = 0x1c0020c0 },
		.id = HEX_INS_V6_VMPYBUSV_ACC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".h += vmpy(.ub,.b)",
	},
	{
		// 00011100000vvvvvPP0uuuuu100ddddd | Vdd.h = vmpy(Vu.b,Vv.b)
		.encoding = { .mask = 0xffe020e0, .op = 0x1c000080 },
		.id = HEX_INS_V6_VMPYBV,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".h = vmpy(.b,.b)",
	},
	{
		// 00011100000vvvvvPP1uuuuu100xxxxx | Vxx.h += vmpy(Vu.b,Vv.b)
		.encoding = { .mask = 0xffe020e0, .op = 0x1c002080 },
		.id = HEX_INS_V6_VMPYBV_ACC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".h += vmpy(.b,.b)",
	},
	{
		// 00011111111vvvvvPP0uuuuu101ddddd | Vd.w = vmpye(Vu.w,Vv.uh)
		.encoding = { .mask = 0xffe020e0, .op = 0x1fe000a0 },
		.id = HEX_INS_V6_VMPYEWUH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".w = vmpye(.w,.uh)",
	},
	{
		// 00011110101vvvvvPP0uuuuu110ddddd | Vdd = vmpye(Vu.w,Vv.uh)
		.encoding = { .mask = 0xffe020e0, .op = 0x1ea000c0 },
		.id = HEX_INS_V6_VMPYEWUH_64,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vmpye(.w,.uh)",
	},
	{
		// 00011001010tttttPP0uuuuu000ddddd | Vdd.w = vmpy(Vu.h,Rt.h)
		.encoding = { .mask = 0xffe020e0, .op = 0x19400000 },
		.id = HEX_INS_V6_VMPYH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".w = vmpy(.h,.h)",
	},
	{
		// 00011001101tttttPP1uuuuu110xxxxx | Vxx.w += vmpy(Vu.h,Rt.h)
		.encoding = { .mask = 0xffe020e0, .op = 0x19a020c0 },
		.id = HEX_INS_V6_VMPYH_ACC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".w += vmpy(.h,.h)",
	},
	{
		// 00011001010tttttPP1uuuuu000xxxxx | Vxx.w += vmpy(Vu.h,Rt.h):sat
		.encoding = { .mask = 0xffe020e0, .op = 0x19402000 },
		.id = HEX_INS_V6_VMPYHSAT_ACC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".w += vmpy(.h,.h):sat",
	},
	{
		// 00011001010tttttPP0uuuuu010ddddd | Vd.h = vmpy(Vu.h,Rt.h):<<1:rnd:sat
		.encoding = { .mask = 0xffe020e0, .op = 0x19400040 },
		.id = HEX_INS_V6_VMPYHSRS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".h = vmpy(.h,.h):<<1:rnd:sat",
	},
	{
		// 00011001010tttttPP0uuuuu001ddddd | Vd.h = vmpy(Vu.h,Rt.h):<<1:sat
		.encoding = { .mask = 0xffe020e0, .op = 0x19400020 },
		.id = HEX_INS_V6_VMPYHSS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".h = vmpy(.h,.h):<<1:sat",
	},
	{
		// 00011100001vvvvvPP0uuuuu010ddddd | Vdd.w = vmpy(Vu.h,Vv.uh)
		.encoding = { .mask = 0xffe020e0, .op = 0x1c200040 },
		.id = HEX_INS_V6_VMPYHUS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".w = vmpy(.h,.uh)",
	},
	{
		// 00011100001vvvvvPP1uuuuu001xxxxx | Vxx.w += vmpy(Vu.h,Vv.uh)
		.encoding = { .mask = 0xffe020e0, .op = 0x1c202020 },
		.id = HEX_INS_V6_VMPYHUS_ACC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".w += vmpy(.h,.uh)",
	},
	{
		// 00011100000vvvvvPP0uuuuu111ddddd | Vdd.w = vmpy(Vu.h,Vv.h)
		.encoding = { .mask = 0xffe020e0, .op = 0x1c0000e0 },
		.id = HEX_INS_V6_VMPYHV,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".w = vmpy(.h,.h)",
	},
	{
		// 00011100000vvvvvPP1uuuuu111xxxxx | Vxx.w += vmpy(Vu.h,Vv.h)
		.encoding = { .mask = 0xffe020e0, .op = 0x1c0020e0 },
		.id = HEX_INS_V6_VMPYHV_ACC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".w += vmpy(.h,.h)",
	},
	{
		// 00011100001vvvvvPP0uuuuu001ddddd | Vd.h = vmpy(Vu.h,Vv.h):<<1:rnd:sat
		.encoding = { .mask = 0xffe020e0, .op = 0x1c200020 },
		.id = HEX_INS_V6_VMPYHVSRS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".h = vmpy(.h,.h):<<1:rnd:sat",
	},
	{
		// 00011111011vvvvvPP0uuuuu000ddddd | Vd.w = vmpyieo(Vu.h,Vv.h)
		.encoding = { .mask = 0xffe020e0, .op = 0x1f600000 },
		.id = HEX_INS_V6_VMPYIEOH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 16 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".w = vmpyieo(.h,.h)",
	},
	{
		// 00011100010vvvvvPP1uuuuu000xxxxx | Vx.w += vmpyie(Vu.w,Vv.h)
		.encoding = { .mask = 0xffe020e0, .op = 0x1c402000 },
		.id = HEX_INS_V6_VMPYIEWH_ACC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 16 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".w += vmpyie(.w,.h)",
	},
	{
		// 00011111110vvvvvPP0uuuuu000ddddd | Vd.w = vmpyie(Vu.w,Vv.uh)
		.encoding = { .mask = 0xffe020e0, .op = 0x1fc00000 },
		.id = HEX_INS_V6_VMPYIEWUH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".w = vmpyie(.w,.uh)",
	},
	{
		// 00011100001vvvvvPP1uuuuu101xxxxx | Vx.w += vmpyie(Vu.w,Vv.uh)
		.encoding = { .mask = 0xffe020e0, .op = 0x1c2020a0 },
		.id = HEX_INS_V6_VMPYIEWUH_ACC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 16 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".w += vmpyie(.w,.uh)",
	},
	{
		// 00011100001vvvvvPP0uuuuu100ddddd | Vd.h = vmpyi(Vu.h,Vv.h)
		.encoding = { .mask = 0xffe020e0, .op = 0x1c200080 },
		.id = HEX_INS_V6_VMPYIH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".h = vmpyi(.h,.h)",
	},
	{
		// 00011100001vvvvvPP1uuuuu100xxxxx | Vx.h += vmpyi(Vu.h,Vv.h)
		.encoding = { .mask = 0xffe020e0, .op = 0x1c202080 },
		.id = HEX_INS_V6_VMPYIH_ACC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".h += vmpyi(.h,.h)",
	},
	{
		// 00011001011tttttPP0uuuuu000ddddd | Vd.h = vmpyi(Vu.h,Rt.b)
		.encoding = { .mask = 0xffe020e0, .op = 0x19600000 },
		.id = HEX_INS_V6_VMPYIHB,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".h = vmpyi(.h,.b)",
	},
	{
		// 00011001011tttttPP1uuuuu001xxxxx | Vx.h += vmpyi(Vu.h,Rt.b)
		.encoding = { .mask = 0xffe020e0, .op = 0x19602020 },
		.id = HEX_INS_V6_VMPYIHB_ACC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".h += vmpyi(.h,.b)",
	},
	{
		// 00011111110vvvvvPP0uuuuu001ddddd | Vd.w = vmpyio(Vu.w,Vv.h)
		.encoding = { .mask = 0xffe020e0, .op = 0x1fc00020 },
		.id = HEX_INS_V6_VMPYIOWH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".w = vmpyio(.w,.h)",
	},
	{
		// 00011001101tttttPP0uuuuu000ddddd | Vd.w = vmpyi(Vu.w,Rt.b)
		.encoding = { .mask = 0xffe020e0, .op = 0x19a00000 },
		.id = HEX_INS_V6_VMPYIWB,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".w = vmpyi(.w,.b)",
	},
	{
		// 00011001010tttttPP1uuuuu010xxxxx | Vx.w += vmpyi(Vu.w,Rt.b)
		.encoding = { .mask = 0xffe020e0, .op = 0x19402040 },
		.id = HEX_INS_V6_VMPYIWB_ACC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".w += vmpyi(.w,.b)",
	},
	{
		// 00011001100tttttPP0uuuuu111ddddd | Vd.w = vmpyi(Vu.w,Rt.h)
		.encoding = { .mask = 0xffe020e0, .op = 0x198000e0 },
		.id = HEX_INS_V6_VMPYIWH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".w = vmpyi(.w,.h)",
	},
	{
		// 00011001010tttttPP1uuuuu011xxxxx | Vx.w += vmpyi(Vu.w,Rt.h)
		.encoding = { .mask = 0xffe020e0, .op = 0x19402060 },
		.id = HEX_INS_V6_VMPYIWH_ACC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".w += vmpyi(.w,.h)",
	},
	{
		// 00011001100tttttPP0uuuuu110ddddd | Vd.w = vmpyi(Vu.w,Rt.ub)
		.encoding = { .mask = 0xffe020e0, .op = 0x198000c0 },
		.id = HEX_INS_V6_VMPYIWUB,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".w = vmpyi(.w,.ub)",
	},
	{
		// 00011001100tttttPP1uuuuu001xxxxx | Vx.w += vmpyi(Vu.w,Rt.ub)
		.encoding = { .mask = 0xffe020e0, .op = 0x19802020 },
		.id = HEX_INS_V6_VMPYIWUB_ACC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".w += vmpyi(.w,.ub)",
	},
	{
		// 00011111111vvvvvPP0uuuuu111ddddd | Vd.w = vmpyo(Vu.w,Vv.h):<<1:sat
		.encoding = { .mask = 0xffe020e0, .op = 0x1fe000e0 },
		.id = HEX_INS_V6_VMPYOWH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".w = vmpyo(.w,.h):<<1:sat",
	},
	{
		// 00011100001vvvvvPP1uuuuu011xxxxx | Vxx += vmpyo(Vu.w,Vv.h)
		.encoding = { .mask = 0xffe020e0, .op = 0x1c202060 },
		.id = HEX_INS_V6_VMPYOWH_64_ACC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += vmpyo(.w,.h)",
	},
	{
		// 00011111010vvvvvPP0uuuuu000ddddd | Vd.w = vmpyo(Vu.w,Vv.h):<<1:rnd:sat
		.encoding = { .mask = 0xffe020e0, .op = 0x1f400000 },
		.id = HEX_INS_V6_VMPYOWH_RND,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".w = vmpyo(.w,.h):<<1:rnd:sat",
	},
	{
		// 00011100001vvvvvPP1uuuuu111xxxxx | Vx.w += vmpyo(Vu.w,Vv.h):<<1:rnd:sat:shift
		.encoding = { .mask = 0xffe020e0, .op = 0x1c2020e0 },
		.id = HEX_INS_V6_VMPYOWH_RND_SACC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".w += vmpyo(.w,.h):<<1:rnd:sat:shift",
	},
	{
		// 00011100001vvvvvPP1uuuuu110xxxxx | Vx.w += vmpyo(Vu.w,Vv.h):<<1:sat:shift
		.encoding = { .mask = 0xffe020e0, .op = 0x1c2020c0 },
		.id = HEX_INS_V6_VMPYOWH_SACC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".w += vmpyo(.w,.h):<<1:sat:shift",
	},
	{
		// 00011001110tttttPP0uuuuu000ddddd | Vdd.uh = vmpy(Vu.ub,Rt.ub)
		.encoding = { .mask = 0xffe020e0, .op = 0x19c00000 },
		.id = HEX_INS_V6_VMPYUB,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".uh = vmpy(.ub,.ub)",
	},
	{
		// 00011001100tttttPP1uuuuu000xxxxx | Vxx.uh += vmpy(Vu.ub,Rt.ub)
		.encoding = { .mask = 0xffe020e0, .op = 0x19802000 },
		.id = HEX_INS_V6_VMPYUB_ACC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 16 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".uh += vmpy(.ub,.ub)",
	},
	{
		// 00011100000vvvvvPP0uuuuu101ddddd | Vdd.uh = vmpy(Vu.ub,Vv.ub)
		.encoding = { .mask = 0xffe020e0, .op = 0x1c0000a0 },
		.id = HEX_INS_V6_VMPYUBV,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".uh = vmpy(.ub,.ub)",
	},
	{
		// 00011100000vvvvvPP1uuuuu101xxxxx | Vxx.uh += vmpy(Vu.ub,Vv.ub)
		.encoding = { .mask = 0xffe020e0, .op = 0x1c0020a0 },
		.id = HEX_INS_V6_VMPYUBV_ACC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 16 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".uh += vmpy(.ub,.ub)",
	},
	{
		// 00011001010tttttPP0uuuuu011ddddd | Vdd.uw = vmpy(Vu.uh,Rt.uh)
		.encoding = { .mask = 0xffe020e0, .op = 0x19400060 },
		.id = HEX_INS_V6_VMPYUH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".uw = vmpy(.uh,.uh)",
	},
	{
		// 00011001010tttttPP1uuuuu001xxxxx | Vxx.uw += vmpy(Vu.uh,Rt.uh)
		.encoding = { .mask = 0xffe020e0, .op = 0x19402020 },
		.id = HEX_INS_V6_VMPYUH_ACC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 16 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".uw += vmpy(.uh,.uh)",
	},
	{
		// 00011001011tttttPP0uuuuu010ddddd | Vd.uw = vmpye(Vu.uh,Rt.uh)
		.encoding = { .mask = 0xffe020e0, .op = 0x19600040 },
		.id = HEX_INS_V6_VMPYUHE,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 16 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".uw = vmpye(.uh,.uh)",
	},
	{
		// 00011001100tttttPP1uuuuu011xxxxx | Vx.uw += vmpye(Vu.uh,Rt.uh)
		.encoding = { .mask = 0xffe020e0, .op = 0x19802060 },
		.id = HEX_INS_V6_VMPYUHE_ACC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 17 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".uw += vmpye(.uh,.uh)",
	},
	{
		// 00011100001vvvvvPP0uuuuu000ddddd | Vdd.uw = vmpy(Vu.uh,Vv.uh)
		.encoding = { .mask = 0xffe020e0, .op = 0x1c200000 },
		.id = HEX_INS_V6_VMPYUHV,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".uw = vmpy(.uh,.uh)",
	},
	{
		// 00011100001vvvvvPP1uuuuu000xxxxx | Vxx.uw += vmpy(Vu.uh,Vv.uh)
		.encoding = { .mask = 0xffe020e0, .op = 0x1c202000 },
		.id = HEX_INS_V6_VMPYUHV_ACC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 16 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".uw += vmpy(.uh,.uh)",
	},
	{
		// 00011111110vvvvvPP1uuuuu111ddddd | Vd.uh = vmpy(Vu.uh,Vv.uh):>>16
		.encoding = { .mask = 0xffe020e0, .op = 0x1fc020e0 },
		.id = HEX_INS_V6_VMPYUHVS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".uh = vmpy(.uh,.uh):>>16",
	},
	{
		// 00011110111vvvvvPP1uuuuu0ttddddd | Vd = vmux(Qt,Vu,Vv)
		.encoding = { .mask = 0xffe02080, .op = 0x1ee02000 },
		.id = HEX_INS_V6_VMUX,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 5 } }, .reg_cls = HEX_REG_CLASS_HVX_QR, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vmux(,,)",
	},
	{
		// 00011111000vvvvvPP1uuuuu110ddddd | Vd.b = vnavg(Vu.b,Vv.b)
		.encoding = { .mask = 0xffe020e0, .op = 0x1f0020c0 },
		.id = HEX_INS_V6_VNAVGB,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".b = vnavg(.b,.b)",
	},
	{
		// 00011100111vvvvvPP0uuuuu001ddddd | Vd.h = vnavg(Vu.h,Vv.h)
		.encoding = { .mask = 0xffe020e0, .op = 0x1ce00020 },
		.id = HEX_INS_V6_VNAVGH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".h = vnavg(.h,.h)",
	},
	{
		// 00011100111vvvvvPP0uuuuu000ddddd | Vd.b = vnavg(Vu.ub,Vv.ub)
		.encoding = { .mask = 0xffe020e0, .op = 0x1ce00000 },
		.id = HEX_INS_V6_VNAVGUB,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".b = vnavg(.ub,.ub)",
	},
	{
		// 00011100111vvvvvPP0uuuuu010ddddd | Vd.w = vnavg(Vu.w,Vv.w)
		.encoding = { .mask = 0xffe020e0, .op = 0x1ce00040 },
		.id = HEX_INS_V6_VNAVGW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".w = vnavg(.w,.w)",
	},
	{
		// 00011010010vvvvvPP0uuuuu0ssddddd | if (!Ps) Vdd = vcombine(Vu,Vv)
		.encoding = { .mask = 0xffe02080, .op = 0x1a400000 },
		.id = HEX_INS_V6_VNCCOMBINE,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 5 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 19 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 20 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_VEC_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!)  = vcombine(,)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 0001101000100000PP0uuuuu0ssddddd | if (!Ps) Vd = Vu
		.encoding = { .mask = 0xffff2080, .op = 0x1a200000 },
		.id = HEX_INS_V6_VNCMOV,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 5 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 10 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_VEC_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!)  = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 0001111000000011PP0uuuuu101ddddd | Vd.h = vnormamt(Vu.h)
		.encoding = { .mask = 0xffff20e0, .op = 0x1e0300a0 },
		.id = HEX_INS_V6_VNORMAMTH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".h = vnormamt(.h)",
	},
	{
		// 0001111000000011PP0uuuuu100ddddd | Vd.w = vnormamt(Vu.w)
		.encoding = { .mask = 0xffff20e0, .op = 0x1e030080 },
		.id = HEX_INS_V6_VNORMAMTW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".w = vnormamt(.w)",
	},
	{
		// 0001111000000000PP0uuuuu100ddddd | Vd = vnot(Vu)
		.encoding = { .mask = 0xffff20e0, .op = 0x1e000080 },
		.id = HEX_INS_V6_VNOT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 8 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vnot()",
	},
	{
		// 00011100001vvvvvPP0uuuuu110ddddd | Vd = vor(Vu,Vv)
		.encoding = { .mask = 0xffe020e0, .op = 0x1c2000c0 },
		.id = HEX_INS_V6_VOR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 8 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vor(,)",
	},
	{
		// 00011111110vvvvvPP0uuuuu010ddddd | Vd.b = vpacke(Vu.h,Vv.h)
		.encoding = { .mask = 0xffe020e0, .op = 0x1fc00040 },
		.id = HEX_INS_V6_VPACKEB,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".b = vpacke(.h,.h)",
	},
	{
		// 00011111110vvvvvPP0uuuuu011ddddd | Vd.h = vpacke(Vu.w,Vv.w)
		.encoding = { .mask = 0xffe020e0, .op = 0x1fc00060 },
		.id = HEX_INS_V6_VPACKEH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".h = vpacke(.w,.w)",
	},
	{
		// 00011111110vvvvvPP0uuuuu110ddddd | Vd.b = vpack(Vu.h,Vv.h):sat
		.encoding = { .mask = 0xffe020e0, .op = 0x1fc000c0 },
		.id = HEX_INS_V6_VPACKHB_SAT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".b = vpack(.h,.h):sat",
	},
	{
		// 00011111110vvvvvPP0uuuuu101ddddd | Vd.ub = vpack(Vu.h,Vv.h):sat
		.encoding = { .mask = 0xffe020e0, .op = 0x1fc000a0 },
		.id = HEX_INS_V6_VPACKHUB_SAT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".ub = vpack(.h,.h):sat",
	},
	{
		// 00011111111vvvvvPP0uuuuu001ddddd | Vd.b = vpacko(Vu.h,Vv.h)
		.encoding = { .mask = 0xffe020e0, .op = 0x1fe00020 },
		.id = HEX_INS_V6_VPACKOB,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".b = vpacko(.h,.h)",
	},
	{
		// 00011111111vvvvvPP0uuuuu010ddddd | Vd.h = vpacko(Vu.w,Vv.w)
		.encoding = { .mask = 0xffe020e0, .op = 0x1fe00040 },
		.id = HEX_INS_V6_VPACKOH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".h = vpacko(.w,.w)",
	},
	{
		// 00011111111vvvvvPP0uuuuu000ddddd | Vd.h = vpack(Vu.w,Vv.w):sat
		.encoding = { .mask = 0xffe020e0, .op = 0x1fe00000 },
		.id = HEX_INS_V6_VPACKWH_SAT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".h = vpack(.w,.w):sat",
	},
	{
		// 00011111110vvvvvPP0uuuuu111ddddd | Vd.uh = vpack(Vu.w,Vv.w):sat
		.encoding = { .mask = 0xffe020e0, .op = 0x1fc000e0 },
		.id = HEX_INS_V6_VPACKWUH_SAT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".uh = vpack(.w,.w):sat",
	},
	{
		// 0001111000000010PP0uuuuu110ddddd | Vd.h = vpopcount(Vu.h)
		.encoding = { .mask = 0xffff20e0, .op = 0x1e0200c0 },
		.id = HEX_INS_V6_VPOPCOUNTH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".h = vpopcount(.h)",
	},
	{
		// 00011110vv000011PP100000010ddddd | Vd.b = prefixsum(Qv)
		.encoding = { .mask = 0xff3f3fe0, .op = 0x1e032040 },
		.id = HEX_INS_V6_VPREFIXQB,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 22 } }, .reg_cls = HEX_REG_CLASS_HVX_QR, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".b = prefixsum()",
	},
	{
		// 00011110vv000011PP100001010ddddd | Vd.h = prefixsum(Qv)
		.encoding = { .mask = 0xff3f3fe0, .op = 0x1e032140 },
		.id = HEX_INS_V6_VPREFIXQH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 22 } }, .reg_cls = HEX_REG_CLASS_HVX_QR, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".h = prefixsum()",
	},
	{
		// 00011110vv000011PP100010010ddddd | Vd.w = prefixsum(Qv)
		.encoding = { .mask = 0xff3f3fe0, .op = 0x1e032240 },
		.id = HEX_INS_V6_VPREFIXQW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 22 } }, .reg_cls = HEX_REG_CLASS_HVX_QR, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".w = prefixsum()",
	},
	{
		// 00011111001vvvvvPP0uuuuu011ddddd | Vd = vrdelta(Vu,Vv)
		.encoding = { .mask = 0xffe020e0, .op = 0x1f200060 },
		.id = HEX_INS_V6_VRDELTA,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vrdelta(,)",
	},
	{
		// 00011001110tttttPP0uuuuu101ddddd | Vdd.w = vrmpy(Vu.b,Rtt.ub)
		.encoding = { .mask = 0xffe020e0, .op = 0x19c000a0 },
		.id = HEX_INS_V6_VRMPYBUB_RTT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".w = vrmpy(.b,.ub)",
	},
	{
		// 00011001101tttttPP1uuuuu000xxxxx | Vxx.w += vrmpy(Vu.b,Rtt.ub)
		.encoding = { .mask = 0xffe020e0, .op = 0x19a02000 },
		.id = HEX_INS_V6_VRMPYBUB_RTT_ACC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".w += vrmpy(.b,.ub)",
	},
	{
		// 00011001000tttttPP0uuuuu100ddddd | Vd.w = vrmpy(Vu.ub,Rt.b)
		.encoding = { .mask = 0xffe020e0, .op = 0x19000080 },
		.id = HEX_INS_V6_VRMPYBUS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".w = vrmpy(.ub,.b)",
	},
	{
		// 00011001000tttttPP1uuuuu101xxxxx | Vx.w += vrmpy(Vu.ub,Rt.b)
		.encoding = { .mask = 0xffe020e0, .op = 0x190020a0 },
		.id = HEX_INS_V6_VRMPYBUS_ACC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 16 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".w += vrmpy(.ub,.b)",
	},
	{
		// 00011001010tttttPP0uuuuu10iddddd | Vdd.w = vrmpy(Vuu.ub,Rt.b,Ii)
		.encoding = { .mask = 0xffe020c0, .op = 0x19400080 },
		.id = HEX_INS_V6_VRMPYBUSI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x1, 5 } }, .syntax = 18 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".w = vrmpy(.ub,.b,)",
	},
	{
		// 00011001010tttttPP1uuuuu10ixxxxx | Vxx.w += vrmpy(Vuu.ub,Rt.b,Ii)
		.encoding = { .mask = 0xffe020c0, .op = 0x19402080 },
		.id = HEX_INS_V6_VRMPYBUSI_ACC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x1, 5 } }, .syntax = 19 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".w += vrmpy(.ub,.b,)",
	},
	{
		// 00011100000vvvvvPP0uuuuu010ddddd | Vd.w = vrmpy(Vu.ub,Vv.b)
		.encoding = { .mask = 0xffe020e0, .op = 0x1c000040 },
		.id = HEX_INS_V6_VRMPYBUSV,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".w = vrmpy(.ub,.b)",
	},
	{
		// 00011100000vvvvvPP1uuuuu010xxxxx | Vx.w += vrmpy(Vu.ub,Vv.b)
		.encoding = { .mask = 0xffe020e0, .op = 0x1c002040 },
		.id = HEX_INS_V6_VRMPYBUSV_ACC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 16 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".w += vrmpy(.ub,.b)",
	},
	{
		// 00011100000vvvvvPP0uuuuu001ddddd | Vd.w = vrmpy(Vu.b,Vv.b)
		.encoding = { .mask = 0xffe020e0, .op = 0x1c000020 },
		.id = HEX_INS_V6_VRMPYBV,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".w = vrmpy(.b,.b)",
	},
	{
		// 00011100000vvvvvPP1uuuuu001xxxxx | Vx.w += vrmpy(Vu.b,Vv.b)
		.encoding = { .mask = 0xffe020e0, .op = 0x1c002020 },
		.id = HEX_INS_V6_VRMPYBV_ACC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".w += vrmpy(.b,.b)",
	},
	{
		// 00011001000tttttPP0uuuuu011ddddd | Vd.uw = vrmpy(Vu.ub,Rt.ub)
		.encoding = { .mask = 0xffe020e0, .op = 0x19000060 },
		.id = HEX_INS_V6_VRMPYUB,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 16 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".uw = vrmpy(.ub,.ub)",
	},
	{
		// 00011001000tttttPP1uuuuu100xxxxx | Vx.uw += vrmpy(Vu.ub,Rt.ub)
		.encoding = { .mask = 0xffe020e0, .op = 0x19002080 },
		.id = HEX_INS_V6_VRMPYUB_ACC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 17 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".uw += vrmpy(.ub,.ub)",
	},
	{
		// 00011001110tttttPP0uuuuu100ddddd | Vdd.uw = vrmpy(Vu.ub,Rtt.ub)
		.encoding = { .mask = 0xffe020e0, .op = 0x19c00080 },
		.id = HEX_INS_V6_VRMPYUB_RTT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 16 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".uw = vrmpy(.ub,.ub)",
	},
	{
		// 00011001101tttttPP1uuuuu111xxxxx | Vxx.uw += vrmpy(Vu.ub,Rtt.ub)
		.encoding = { .mask = 0xffe020e0, .op = 0x19a020e0 },
		.id = HEX_INS_V6_VRMPYUB_RTT_ACC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 17 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".uw += vrmpy(.ub,.ub)",
	},
	{
		// 00011001101tttttPP0uuuuu11iddddd | Vdd.uw = vrmpy(Vuu.ub,Rt.ub,Ii)
		.encoding = { .mask = 0xffe020c0, .op = 0x19a000c0 },
		.id = HEX_INS_V6_VRMPYUBI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x1, 5 } }, .syntax = 20 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".uw = vrmpy(.ub,.ub,)",
	},
	{
		// 00011001011tttttPP1uuuuu11ixxxxx | Vxx.uw += vrmpy(Vuu.ub,Rt.ub,Ii)
		.encoding = { .mask = 0xffe020c0, .op = 0x196020c0 },
		.id = HEX_INS_V6_VRMPYUBI_ACC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x1, 5 } }, .syntax = 21 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".uw += vrmpy(.ub,.ub,)",
	},
	{
		// 00011100000vvvvvPP0uuuuu000ddddd | Vd.uw = vrmpy(Vu.ub,Vv.ub)
		.encoding = { .mask = 0xffe020e0, .op = 0x1c000000 },
		.id = HEX_INS_V6_VRMPYUBV,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 16 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".uw = vrmpy(.ub,.ub)",
	},
	{
		// 00011100000vvvvvPP1uuuuu000xxxxx | Vx.uw += vrmpy(Vu.ub,Vv.ub)
		.encoding = { .mask = 0xffe020e0, .op = 0x1c002000 },
		.id = HEX_INS_V6_VRMPYUBV_ACC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 17 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".uw += vrmpy(.ub,.ub)",
	},
	{
		// 0001100111101tttPP0uuuuu000ddddd | Vdddd.w = vrmpyz(Vu.b,Rt.b)
		.encoding = { .mask = 0xfff820e0, .op = 0x19e80000 },
		.id = HEX_INS_V6_VRMPYZBB_RT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_QUADRUPLE, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VQR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS_LOW8, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".w = vrmpyz(.b,.b)",
	},
	{
		// 0001100111000tttPP1uuuuu010yyyyy | Vyyyy.w += vrmpyz(Vu.b,Rt.b)
		.encoding = { .mask = 0xfff820e0, .op = 0x19c02040 },
		.id = HEX_INS_V6_VRMPYZBB_RT_ACC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_QUADRUPLE, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VQR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS_LOW8, .syntax = 16 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".w += vrmpyz(.b,.b)",
	},
	{
		// 0001100111100xxxPP0uuuuu000ddddd | Vdddd.w = vrmpyz(Vu.b,Rx.b++)
		.encoding = { .mask = 0xfff820e0, .op = 0x19e00000 },
		.id = HEX_INS_V6_VRMPYZBB_RX,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_QUADRUPLE, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VQR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS_LOW8, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".w = vrmpyz(.b,.b++)",
	},
	{
		// 0001100111001xxxPP1uuuuu010yyyyy | Vyyyy.w += vrmpyz(Vu.b,Rx.b++)
		.encoding = { .mask = 0xfff820e0, .op = 0x19c82040 },
		.id = HEX_INS_V6_VRMPYZBB_RX_ACC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_QUADRUPLE, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VQR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS_LOW8, .syntax = 16 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".w += vrmpyz(.b,.b++)",
	},
	{
		// 0001100111111tttPP0uuuuu010ddddd | Vdddd.w = vrmpyz(Vu.b,Rt.ub)
		.encoding = { .mask = 0xfff820e0, .op = 0x19f80040 },
		.id = HEX_INS_V6_VRMPYZBUB_RT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_QUADRUPLE, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VQR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS_LOW8, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".w = vrmpyz(.b,.ub)",
	},
	{
		// 0001100111010tttPP1uuuuu001yyyyy | Vyyyy.w += vrmpyz(Vu.b,Rt.ub)
		.encoding = { .mask = 0xfff820e0, .op = 0x19d02020 },
		.id = HEX_INS_V6_VRMPYZBUB_RT_ACC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_QUADRUPLE, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VQR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS_LOW8, .syntax = 16 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".w += vrmpyz(.b,.ub)",
	},
	{
		// 0001100111110xxxPP0uuuuu010ddddd | Vdddd.w = vrmpyz(Vu.b,Rx.ub++)
		.encoding = { .mask = 0xfff820e0, .op = 0x19f00040 },
		.id = HEX_INS_V6_VRMPYZBUB_RX,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_QUADRUPLE, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VQR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS_LOW8, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".w = vrmpyz(.b,.ub++)",
	},
	{
		// 0001100111011xxxPP1uuuuu001yyyyy | Vyyyy.w += vrmpyz(Vu.b,Rx.ub++)
		.encoding = { .mask = 0xfff820e0, .op = 0x19d82020 },
		.id = HEX_INS_V6_VRMPYZBUB_RX_ACC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_QUADRUPLE, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VQR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS_LOW8, .syntax = 16 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".w += vrmpyz(.b,.ub++)",
	},
	{
		// 0001100111101tttPP0uuuuu001ddddd | Vdddd.w = vr16mpyz(Vu.c,Rt.b)
		.encoding = { .mask = 0xfff820e0, .op = 0x19e80020 },
		.id = HEX_INS_V6_VRMPYZCB_RT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_QUADRUPLE, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VQR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS_LOW8, .syntax = 17 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".w = vr16mpyz(.c,.b)",
	},
	{
		// 0001100111000tttPP1uuuuu011yyyyy | Vyyyy.w += vr16mpyz(Vu.c,Rt.b)
		.encoding = { .mask = 0xfff820e0, .op = 0x19c02060 },
		.id = HEX_INS_V6_VRMPYZCB_RT_ACC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_QUADRUPLE, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VQR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS_LOW8, .syntax = 18 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".w += vr16mpyz(.c,.b)",
	},
	{
		// 0001100111100xxxPP0uuuuu001ddddd | Vdddd.w = vr16mpyz(Vu.c,Rx.b++)
		.encoding = { .mask = 0xfff820e0, .op = 0x19e00020 },
		.id = HEX_INS_V6_VRMPYZCB_RX,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_QUADRUPLE, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VQR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS_LOW8, .syntax = 17 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".w = vr16mpyz(.c,.b++)",
	},
	{
		// 0001100111001xxxPP1uuuuu011yyyyy | Vyyyy.w += vr16mpyz(Vu.c,Rx.b++)
		.encoding = { .mask = 0xfff820e0, .op = 0x19c82060 },
		.id = HEX_INS_V6_VRMPYZCB_RX_ACC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_QUADRUPLE, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VQR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS_LOW8, .syntax = 18 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".w += vr16mpyz(.c,.b++)",
	},
	{
		// 0001100111101tttPP0uuuuu010ddddd | Vdddd.w = vr16mpyzs(Vu.c,Rt.b)
		.encoding = { .mask = 0xfff820e0, .op = 0x19e80040 },
		.id = HEX_INS_V6_VRMPYZCBS_RT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_QUADRUPLE, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VQR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS_LOW8, .syntax = 18 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".w = vr16mpyzs(.c,.b)",
	},
	{
		// 0001100111000tttPP1uuuuu001yyyyy | Vyyyy.w += vr16mpyzs(Vu.c,Rt.b)
		.encoding = { .mask = 0xfff820e0, .op = 0x19c02020 },
		.id = HEX_INS_V6_VRMPYZCBS_RT_ACC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_QUADRUPLE, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VQR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS_LOW8, .syntax = 19 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".w += vr16mpyzs(.c,.b)",
	},
	{
		// 0001100111100xxxPP0uuuuu010ddddd | Vdddd.w = vr16mpyzs(Vu.c,Rx.b++)
		.encoding = { .mask = 0xfff820e0, .op = 0x19e00040 },
		.id = HEX_INS_V6_VRMPYZCBS_RX,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_QUADRUPLE, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VQR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS_LOW8, .syntax = 18 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".w = vr16mpyzs(.c,.b++)",
	},
	{
		// 0001100111001xxxPP1uuuuu001yyyyy | Vyyyy.w += vr16mpyzs(Vu.c,Rx.b++)
		.encoding = { .mask = 0xfff820e0, .op = 0x19c82020 },
		.id = HEX_INS_V6_VRMPYZCBS_RX_ACC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_QUADRUPLE, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VQR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS_LOW8, .syntax = 19 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".w += vr16mpyzs(.c,.b++)",
	},
	{
		// 0001100111111tttPP0uuuuu000ddddd | Vdddd.w = vr8mpyz(Vu.n,Rt.b)
		.encoding = { .mask = 0xfff820e0, .op = 0x19f80000 },
		.id = HEX_INS_V6_VRMPYZNB_RT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_QUADRUPLE, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VQR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS_LOW8, .syntax = 16 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".w = vr8mpyz(.n,.b)",
	},
	{
		// 0001100111010tttPP1uuuuu010yyyyy | Vyyyy.w += vr8mpyz(Vu.n,Rt.b)
		.encoding = { .mask = 0xfff820e0, .op = 0x19d02040 },
		.id = HEX_INS_V6_VRMPYZNB_RT_ACC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_QUADRUPLE, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VQR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS_LOW8, .syntax = 17 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".w += vr8mpyz(.n,.b)",
	},
	{
		// 0001100111110xxxPP0uuuuu000ddddd | Vdddd.w = vr8mpyz(Vu.n,Rx.b++)
		.encoding = { .mask = 0xfff820e0, .op = 0x19f00000 },
		.id = HEX_INS_V6_VRMPYZNB_RX,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_QUADRUPLE, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VQR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS_LOW8, .syntax = 16 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".w = vr8mpyz(.n,.b++)",
	},
	{
		// 0001100111011xxxPP1uuuuu010yyyyy | Vyyyy.w += vr8mpyz(Vu.n,Rx.b++)
		.encoding = { .mask = 0xfff820e0, .op = 0x19d82040 },
		.id = HEX_INS_V6_VRMPYZNB_RX_ACC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_QUADRUPLE, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VQR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS_LOW8, .syntax = 17 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".w += vr8mpyz(.n,.b++)",
	},
	{
		// 00011001011tttttPP0uuuuu001ddddd | Vd = vror(Vu,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0x19600020 },
		.id = HEX_INS_V6_VROR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vror(,)",
	},
	{
		// 00011010100vvvvvPP1uuuuu111ddddd | Vd.uw = vrotr(Vu.uw,Vv.uw)
		.encoding = { .mask = 0xffe020e0, .op = 0x1a8020e0 },
		.id = HEX_INS_V6_VROTR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 16 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".uw = vrotr(.uw,.uw)",
	},
	{
		// 00011111011vvvvvPP0uuuuu110ddddd | Vd.b = vround(Vu.h,Vv.h):sat
		.encoding = { .mask = 0xffe020e0, .op = 0x1f6000c0 },
		.id = HEX_INS_V6_VROUNDHB,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".b = vround(.h,.h):sat",
	},
	{
		// 00011111011vvvvvPP0uuuuu111ddddd | Vd.ub = vround(Vu.h,Vv.h):sat
		.encoding = { .mask = 0xffe020e0, .op = 0x1f6000e0 },
		.id = HEX_INS_V6_VROUNDHUB,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 16 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".ub = vround(.h,.h):sat",
	},
	{
		// 00011111111vvvvvPP0uuuuu011ddddd | Vd.ub = vround(Vu.uh,Vv.uh):sat
		.encoding = { .mask = 0xffe020e0, .op = 0x1fe00060 },
		.id = HEX_INS_V6_VROUNDUHUB,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 17 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".ub = vround(.uh,.uh):sat",
	},
	{
		// 00011111111vvvvvPP0uuuuu100ddddd | Vd.uh = vround(Vu.uw,Vv.uw):sat
		.encoding = { .mask = 0xffe020e0, .op = 0x1fe00080 },
		.id = HEX_INS_V6_VROUNDUWUH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 17 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".uh = vround(.uw,.uw):sat",
	},
	{
		// 00011111011vvvvvPP0uuuuu100ddddd | Vd.h = vround(Vu.w,Vv.w):sat
		.encoding = { .mask = 0xffe020e0, .op = 0x1f600080 },
		.id = HEX_INS_V6_VROUNDWH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".h = vround(.w,.w):sat",
	},
	{
		// 00011111011vvvvvPP0uuuuu101ddddd | Vd.uh = vround(Vu.w,Vv.w):sat
		.encoding = { .mask = 0xffe020e0, .op = 0x1f6000a0 },
		.id = HEX_INS_V6_VROUNDWUH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 16 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".uh = vround(.w,.w):sat",
	},
	{
		// 00011001010tttttPP0uuuuu11iddddd | Vdd.uw = vrsad(Vuu.ub,Rt.ub,Ii)
		.encoding = { .mask = 0xffe020c0, .op = 0x194000c0 },
		.id = HEX_INS_V6_VRSADUBI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x1, 5 } }, .syntax = 20 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".uw = vrsad(.ub,.ub,)",
	},
	{
		// 00011001010tttttPP1uuuuu11ixxxxx | Vxx.uw += vrsad(Vuu.ub,Rt.ub,Ii)
		.encoding = { .mask = 0xffe020c0, .op = 0x194020c0 },
		.id = HEX_INS_V6_VRSADUBI_ACC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x1, 5 } }, .syntax = 21 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".uw += vrsad(.ub,.ub,)",
	},
	{
		// 00011101100vvvvvPP1uuuuu111ddddd | Vd.w = vsatdw(Vu.w,Vv.w)
		.encoding = { .mask = 0xffe020e0, .op = 0x1d8020e0 },
		.id = HEX_INS_V6_VSATDW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".w = vsatdw(.w,.w)",
	},
	{
		// 00011111011vvvvvPP0uuuuu010ddddd | Vd.ub = vsat(Vu.h,Vv.h)
		.encoding = { .mask = 0xffe020e0, .op = 0x1f600040 },
		.id = HEX_INS_V6_VSATHUB,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".ub = vsat(.h,.h)",
	},
	{
		// 00011111001vvvvvPP0uuuuu110ddddd | Vd.uh = vsat(Vu.uw,Vv.uw)
		.encoding = { .mask = 0xffe020e0, .op = 0x1f2000c0 },
		.id = HEX_INS_V6_VSATUWUH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".uh = vsat(.uw,.uw)",
	},
	{
		// 00011111011vvvvvPP0uuuuu011ddddd | Vd.h = vsat(Vu.w,Vv.w)
		.encoding = { .mask = 0xffe020e0, .op = 0x1f600060 },
		.id = HEX_INS_V6_VSATWH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".h = vsat(.w,.w)",
	},
	{
		// 0001111000000010PP0uuuuu011ddddd | Vdd.h = vsxt(Vu.b)
		.encoding = { .mask = 0xffff20e0, .op = 0x1e020060 },
		.id = HEX_INS_V6_VSB,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".h = vsxt(.b)",
	},
	{
		// 0001111000000010PP0uuuuu100ddddd | Vdd.w = vsxt(Vu.h)
		.encoding = { .mask = 0xffff20e0, .op = 0x1e020080 },
		.id = HEX_INS_V6_VSH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".w = vsxt(.h)",
	},
	{
		// 00011111010vvvvvPP0uuuuu011ddddd | Vd.h = vshuffe(Vu.h,Vv.h)
		.encoding = { .mask = 0xffe020e0, .op = 0x1f400060 },
		.id = HEX_INS_V6_VSHUFEH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 16 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".h = vshuffe(.h,.h)",
	},
	{
		// 00011001111tttttPP1yyyyy001xxxxx | vshuff(Vy,Vx,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0x19e02020 },
		.id = HEX_INS_V6_VSHUFF,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "vshuff(,,)",
	},
	{
		// 0001111000000010PP0uuuuu000ddddd | Vd.b = vshuff(Vu.b)
		.encoding = { .mask = 0xffff20e0, .op = 0x1e020000 },
		.id = HEX_INS_V6_VSHUFFB,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".b = vshuff(.b)",
	},
	{
		// 00011111010vvvvvPP0uuuuu001ddddd | Vd.b = vshuffe(Vu.b,Vv.b)
		.encoding = { .mask = 0xffe020e0, .op = 0x1f400020 },
		.id = HEX_INS_V6_VSHUFFEB,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 16 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".b = vshuffe(.b,.b)",
	},
	{
		// 0001111000000001PP0uuuuu111ddddd | Vd.h = vshuff(Vu.h)
		.encoding = { .mask = 0xffff20e0, .op = 0x1e0100e0 },
		.id = HEX_INS_V6_VSHUFFH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".h = vshuff(.h)",
	},
	{
		// 00011111010vvvvvPP0uuuuu010ddddd | Vd.b = vshuffo(Vu.b,Vv.b)
		.encoding = { .mask = 0xffe020e0, .op = 0x1f400040 },
		.id = HEX_INS_V6_VSHUFFOB,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 16 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".b = vshuffo(.b,.b)",
	},
	{
		// 00011011vvvvvtttPP1uuuuu011ddddd | Vdd = vshuff(Vu,Vv,Rt)
		.encoding = { .mask = 0xff0020e0, .op = 0x1b002060 },
		.id = HEX_INS_V6_VSHUFFVDD,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 19 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS_LOW8, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vshuff(,,)",
	},
	{
		// 00011111010vvvvvPP0uuuuu110ddddd | Vdd.b = vshuffoe(Vu.b,Vv.b)
		.encoding = { .mask = 0xffe020e0, .op = 0x1f4000c0 },
		.id = HEX_INS_V6_VSHUFOEB,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 17 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".b = vshuffoe(.b,.b)",
	},
	{
		// 00011111010vvvvvPP0uuuuu101ddddd | Vdd.h = vshuffoe(Vu.h,Vv.h)
		.encoding = { .mask = 0xffe020e0, .op = 0x1f4000a0 },
		.id = HEX_INS_V6_VSHUFOEH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 17 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".h = vshuffoe(.h,.h)",
	},
	{
		// 00011111010vvvvvPP0uuuuu100ddddd | Vd.h = vshuffo(Vu.h,Vv.h)
		.encoding = { .mask = 0xffe020e0, .op = 0x1f400080 },
		.id = HEX_INS_V6_VSHUFOH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 16 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".h = vshuffo(.h,.h)",
	},
	{
		// 00011111011vvvvvPP1uuuuu110ddddd | Vd.qf16 = vsub(Vu.hf,Vv.hf)
		.encoding = { .mask = 0xffe020e0, .op = 0x1f6020c0 },
		.id = HEX_INS_V6_VSUB_HF,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 17 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".qf16 = vsub(.hf,.hf)",
	},
	{
		// 00011111011vvvvvPP1uuuuu000ddddd | Vd.hf = vsub(Vu.hf,Vv.hf)
		.encoding = { .mask = 0xffe020e0, .op = 0x1f602000 },
		.id = HEX_INS_V6_VSUB_HF_HF,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".hf = vsub(.hf,.hf)",
	},
	{
		// 00011111011vvvvvPP1uuuuu101ddddd | Vd.qf16 = vsub(Vu.qf16,Vv.qf16)
		.encoding = { .mask = 0xffe020e0, .op = 0x1f6020a0 },
		.id = HEX_INS_V6_VSUB_QF16,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 19 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".qf16 = vsub(.qf16,.qf16)",
	},
	{
		// 00011111011vvvvvPP1uuuuu111ddddd | Vd.qf16 = vsub(Vu.qf16,Vv.hf)
		.encoding = { .mask = 0xffe020e0, .op = 0x1f6020e0 },
		.id = HEX_INS_V6_VSUB_QF16_MIX,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 19 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".qf16 = vsub(.qf16,.hf)",
	},
	{
		// 00011111101vvvvvPP1uuuuu011ddddd | Vd.qf32 = vsub(Vu.qf32,Vv.qf32)
		.encoding = { .mask = 0xffe020e0, .op = 0x1fa02060 },
		.id = HEX_INS_V6_VSUB_QF32,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 19 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".qf32 = vsub(.qf32,.qf32)",
	},
	{
		// 00011111101vvvvvPP1uuuuu101ddddd | Vd.qf32 = vsub(Vu.qf32,Vv.sf)
		.encoding = { .mask = 0xffe020e0, .op = 0x1fa020a0 },
		.id = HEX_INS_V6_VSUB_QF32_MIX,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 19 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".qf32 = vsub(.qf32,.sf)",
	},
	{
		// 00011111101vvvvvPP1uuuuu100ddddd | Vd.qf32 = vsub(Vu.sf,Vv.sf)
		.encoding = { .mask = 0xffe020e0, .op = 0x1fa02080 },
		.id = HEX_INS_V6_VSUB_SF,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 17 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".qf32 = vsub(.sf,.sf)",
	},
	{
		// 00011111100vvvvvPP1uuuuu101ddddd | Vdd.sf = vsub(Vu.hf,Vv.hf)
		.encoding = { .mask = 0xffe020e0, .op = 0x1f8020a0 },
		.id = HEX_INS_V6_VSUB_SF_HF,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".sf = vsub(.hf,.hf)",
	},
	{
		// 00011111100vvvvvPP1uuuuu111ddddd | Vd.sf = vsub(Vu.sf,Vv.sf)
		.encoding = { .mask = 0xffe020e0, .op = 0x1f8020e0 },
		.id = HEX_INS_V6_VSUB_SF_SF,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".sf = vsub(.sf,.sf)",
	},
	{
		// 00011100010vvvvvPP0uuuuu101ddddd | Vd.b = vsub(Vu.b,Vv.b)
		.encoding = { .mask = 0xffe020e0, .op = 0x1c4000a0 },
		.id = HEX_INS_V6_VSUBB,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".b = vsub(.b,.b)",
	},
	{
		// 00011100100vvvvvPP0uuuuu011ddddd | Vdd.b = vsub(Vuu.b,Vvv.b)
		.encoding = { .mask = 0xffe020e0, .op = 0x1c800060 },
		.id = HEX_INS_V6_VSUBB_DV,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".b = vsub(.b,.b)",
	},
	{
		// 00011110vv000010PP1uuuuu001xxxxx | if (!Qv) Vx.b -= Vu.b
		.encoding = { .mask = 0xff3f20e0, .op = 0x1e022020 },
		.id = HEX_INS_V6_VSUBBNQ,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 22 } }, .reg_cls = HEX_REG_CLASS_HVX_QR, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "if (!) .b -= .b",
	},
	{
		// 00011110vv000001PP1uuuuu110xxxxx | if (Qv) Vx.b -= Vu.b
		.encoding = { .mask = 0xff3f20e0, .op = 0x1e0120c0 },
		.id = HEX_INS_V6_VSUBBQ,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 22 } }, .reg_cls = HEX_REG_CLASS_HVX_QR, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "if () .b -= .b",
	},
	{
		// 00011111001vvvvvPP0uuuuu010ddddd | Vd.b = vsub(Vu.b,Vv.b):sat
		.encoding = { .mask = 0xffe020e0, .op = 0x1f200040 },
		.id = HEX_INS_V6_VSUBBSAT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".b = vsub(.b,.b):sat",
	},
	{
		// 00011110101vvvvvPP0uuuuu001ddddd | Vdd.b = vsub(Vuu.b,Vvv.b):sat
		.encoding = { .mask = 0xffe020e0, .op = 0x1ea00020 },
		.id = HEX_INS_V6_VSUBBSAT_DV,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".b = vsub(.b,.b):sat",
	},
	{
		// 00011100101vvvvvPP1uuuuu1xxddddd | Vd.w = vsub(Vu.w,Vv.w,Qx):carry
		.encoding = { .mask = 0xffe02080, .op = 0x1ca02080 },
		.id = HEX_INS_V6_VSUBCARRY,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 5 } }, .reg_cls = HEX_REG_CLASS_HVX_QR, .syntax = 16 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".w = vsub(.w,.w,):carry",
	},
	{
		// 00011101101vvvvvPP1uuuuu1eeddddd | Vd.w,Qe = vsub(Vu.w,Vv.w):carry
		.encoding = { .mask = 0xffe02080, .op = 0x1da02080 },
		.id = HEX_INS_V6_VSUBCARRYO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 5 } }, .reg_cls = HEX_REG_CLASS_HVX_QR, .syntax = 3 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".w, = vsub(.w,.w):carry",
	},
	{
		// 00011100010vvvvvPP0uuuuu110ddddd | Vd.h = vsub(Vu.h,Vv.h)
		.encoding = { .mask = 0xffe020e0, .op = 0x1c4000c0 },
		.id = HEX_INS_V6_VSUBH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".h = vsub(.h,.h)",
	},
	{
		// 00011100100vvvvvPP0uuuuu100ddddd | Vdd.h = vsub(Vuu.h,Vvv.h)
		.encoding = { .mask = 0xffe020e0, .op = 0x1c800080 },
		.id = HEX_INS_V6_VSUBH_DV,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".h = vsub(.h,.h)",
	},
	{
		// 00011110vv000010PP1uuuuu010xxxxx | if (!Qv) Vx.h -= Vu.h
		.encoding = { .mask = 0xff3f20e0, .op = 0x1e022040 },
		.id = HEX_INS_V6_VSUBHNQ,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 22 } }, .reg_cls = HEX_REG_CLASS_HVX_QR, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "if (!) .h -= .h",
	},
	{
		// 00011110vv000001PP1uuuuu111xxxxx | if (Qv) Vx.h -= Vu.h
		.encoding = { .mask = 0xff3f20e0, .op = 0x1e0120e0 },
		.id = HEX_INS_V6_VSUBHQ,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 22 } }, .reg_cls = HEX_REG_CLASS_HVX_QR, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "if () .h -= .h",
	},
	{
		// 00011100011vvvvvPP0uuuuu010ddddd | Vd.h = vsub(Vu.h,Vv.h):sat
		.encoding = { .mask = 0xffe020e0, .op = 0x1c600040 },
		.id = HEX_INS_V6_VSUBHSAT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".h = vsub(.h,.h):sat",
	},
	{
		// 00011100101vvvvvPP0uuuuu000ddddd | Vdd.h = vsub(Vuu.h,Vvv.h):sat
		.encoding = { .mask = 0xffe020e0, .op = 0x1ca00000 },
		.id = HEX_INS_V6_VSUBHSAT_DV,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".h = vsub(.h,.h):sat",
	},
	{
		// 00011100101vvvvvPP0uuuuu111ddddd | Vdd.w = vsub(Vu.h,Vv.h)
		.encoding = { .mask = 0xffe020e0, .op = 0x1ca000e0 },
		.id = HEX_INS_V6_VSUBHW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".w = vsub(.h,.h)",
	},
	{
		// 00011100101vvvvvPP0uuuuu101ddddd | Vdd.h = vsub(Vu.ub,Vv.ub)
		.encoding = { .mask = 0xffe020e0, .op = 0x1ca000a0 },
		.id = HEX_INS_V6_VSUBUBH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".h = vsub(.ub,.ub)",
	},
	{
		// 00011100011vvvvvPP0uuuuu000ddddd | Vd.ub = vsub(Vu.ub,Vv.ub):sat
		.encoding = { .mask = 0xffe020e0, .op = 0x1c600000 },
		.id = HEX_INS_V6_VSUBUBSAT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".ub = vsub(.ub,.ub):sat",
	},
	{
		// 00011100100vvvvvPP0uuuuu110ddddd | Vdd.ub = vsub(Vuu.ub,Vvv.ub):sat
		.encoding = { .mask = 0xffe020e0, .op = 0x1c8000c0 },
		.id = HEX_INS_V6_VSUBUBSAT_DV,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".ub = vsub(.ub,.ub):sat",
	},
	{
		// 00011110101vvvvvPP0uuuuu101ddddd | Vd.ub = vsub(Vu.ub,Vv.b):sat
		.encoding = { .mask = 0xffe020e0, .op = 0x1ea000a0 },
		.id = HEX_INS_V6_VSUBUBUBB_SAT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".ub = vsub(.ub,.b):sat",
	},
	{
		// 00011100011vvvvvPP0uuuuu001ddddd | Vd.uh = vsub(Vu.uh,Vv.uh):sat
		.encoding = { .mask = 0xffe020e0, .op = 0x1c600020 },
		.id = HEX_INS_V6_VSUBUHSAT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".uh = vsub(.uh,.uh):sat",
	},
	{
		// 00011100100vvvvvPP0uuuuu111ddddd | Vdd.uh = vsub(Vuu.uh,Vvv.uh):sat
		.encoding = { .mask = 0xffe020e0, .op = 0x1c8000e0 },
		.id = HEX_INS_V6_VSUBUHSAT_DV,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".uh = vsub(.uh,.uh):sat",
	},
	{
		// 00011100101vvvvvPP0uuuuu110ddddd | Vdd.w = vsub(Vu.uh,Vv.uh)
		.encoding = { .mask = 0xffe020e0, .op = 0x1ca000c0 },
		.id = HEX_INS_V6_VSUBUHW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".w = vsub(.uh,.uh)",
	},
	{
		// 00011111110vvvvvPP0uuuuu100ddddd | Vd.uw = vsub(Vu.uw,Vv.uw):sat
		.encoding = { .mask = 0xffe020e0, .op = 0x1fc00080 },
		.id = HEX_INS_V6_VSUBUWSAT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".uw = vsub(.uw,.uw):sat",
	},
	{
		// 00011110101vvvvvPP0uuuuu011ddddd | Vdd.uw = vsub(Vuu.uw,Vvv.uw):sat
		.encoding = { .mask = 0xffe020e0, .op = 0x1ea00060 },
		.id = HEX_INS_V6_VSUBUWSAT_DV,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".uw = vsub(.uw,.uw):sat",
	},
	{
		// 00011100010vvvvvPP0uuuuu111ddddd | Vd.w = vsub(Vu.w,Vv.w)
		.encoding = { .mask = 0xffe020e0, .op = 0x1c4000e0 },
		.id = HEX_INS_V6_VSUBW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".w = vsub(.w,.w)",
	},
	{
		// 00011100100vvvvvPP0uuuuu101ddddd | Vdd.w = vsub(Vuu.w,Vvv.w)
		.encoding = { .mask = 0xffe020e0, .op = 0x1c8000a0 },
		.id = HEX_INS_V6_VSUBW_DV,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".w = vsub(.w,.w)",
	},
	{
		// 00011110vv000010PP1uuuuu011xxxxx | if (!Qv) Vx.w -= Vu.w
		.encoding = { .mask = 0xff3f20e0, .op = 0x1e022060 },
		.id = HEX_INS_V6_VSUBWNQ,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 22 } }, .reg_cls = HEX_REG_CLASS_HVX_QR, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "if (!) .w -= .w",
	},
	{
		// 00011110vv000010PP1uuuuu000xxxxx | if (Qv) Vx.w -= Vu.w
		.encoding = { .mask = 0xff3f20e0, .op = 0x1e022000 },
		.id = HEX_INS_V6_VSUBWQ,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 22 } }, .reg_cls = HEX_REG_CLASS_HVX_QR, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "if () .w -= .w",
	},
	{
		// 00011100011vvvvvPP0uuuuu011ddddd | Vd.w = vsub(Vu.w,Vv.w):sat
		.encoding = { .mask = 0xffe020e0, .op = 0x1c600060 },
		.id = HEX_INS_V6_VSUBWSAT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".w = vsub(.w,.w):sat",
	},
	{
		// 00011100101vvvvvPP0uuuuu001ddddd | Vdd.w = vsub(Vuu.w,Vvv.w):sat
		.encoding = { .mask = 0xffe020e0, .op = 0x1ca00020 },
		.id = HEX_INS_V6_VSUBWSAT_DV,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".w = vsub(.w,.w):sat",
	},
	{
		// 00011110101vvvvvPP1uuuuu0ttddddd | Vdd = vswap(Qt,Vu,Vv)
		.encoding = { .mask = 0xffe02080, .op = 0x1ea02000 },
		.id = HEX_INS_V6_VSWAP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 5 } }, .reg_cls = HEX_REG_CLASS_HVX_QR, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vswap(,,)",
	},
	{
		// 00011001000tttttPP0uuuuu000ddddd | Vdd.h = vtmpy(Vuu.b,Rt.b)
		.encoding = { .mask = 0xffe020e0, .op = 0x19000000 },
		.id = HEX_INS_V6_VTMPYB,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".h = VTMPy(.b,.b)",
	},
	{
		// 00011001000tttttPP1uuuuu000xxxxx | Vxx.h += vtmpy(Vuu.b,Rt.b)
		.encoding = { .mask = 0xffe020e0, .op = 0x19002000 },
		.id = HEX_INS_V6_VTMPYB_ACC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".h += VTMPy(.b,.b)",
	},
	{
		// 00011001000tttttPP0uuuuu001ddddd | Vdd.h = vtmpy(Vuu.ub,Rt.b)
		.encoding = { .mask = 0xffe020e0, .op = 0x19000020 },
		.id = HEX_INS_V6_VTMPYBUS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".h = VTMPy(.ub,.b)",
	},
	{
		// 00011001000tttttPP1uuuuu001xxxxx | Vxx.h += vtmpy(Vuu.ub,Rt.b)
		.encoding = { .mask = 0xffe020e0, .op = 0x19002020 },
		.id = HEX_INS_V6_VTMPYBUS_ACC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 16 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".h += VTMPy(.ub,.b)",
	},
	{
		// 00011001101tttttPP0uuuuu100ddddd | Vdd.w = vtmpy(Vuu.h,Rt.b)
		.encoding = { .mask = 0xffe020e0, .op = 0x19a00080 },
		.id = HEX_INS_V6_VTMPYHB,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".w = VTMPy(.h,.b)",
	},
	{
		// 00011001000tttttPP1uuuuu010xxxxx | Vxx.w += vtmpy(Vuu.h,Rt.b)
		.encoding = { .mask = 0xffe020e0, .op = 0x19002040 },
		.id = HEX_INS_V6_VTMPYHB_ACC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".w += VTMPy(.h,.b)",
	},
	{
		// 0001111000000001PP0uuuuu010ddddd | Vdd.h = vunpack(Vu.b)
		.encoding = { .mask = 0xffff20e0, .op = 0x1e010040 },
		.id = HEX_INS_V6_VUNPACKB,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".h = vunpack(.b)",
	},
	{
		// 0001111000000001PP0uuuuu011ddddd | Vdd.w = vunpack(Vu.h)
		.encoding = { .mask = 0xffff20e0, .op = 0x1e010060 },
		.id = HEX_INS_V6_VUNPACKH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".w = vunpack(.h)",
	},
	{
		// 0001111000000000PP1uuuuu000xxxxx | Vxx.h |= vunpacko(Vu.b)
		.encoding = { .mask = 0xffff20e0, .op = 0x1e002000 },
		.id = HEX_INS_V6_VUNPACKOB,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".h |= vunpacko(.b)",
	},
	{
		// 0001111000000000PP1uuuuu001xxxxx | Vxx.w |= vunpacko(Vu.h)
		.encoding = { .mask = 0xffff20e0, .op = 0x1e002020 },
		.id = HEX_INS_V6_VUNPACKOH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".w |= vunpacko(.h)",
	},
	{
		// 0001111000000001PP0uuuuu000ddddd | Vdd.uh = vunpack(Vu.ub)
		.encoding = { .mask = 0xffff20e0, .op = 0x1e010000 },
		.id = HEX_INS_V6_VUNPACKUB,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".uh = vunpack(.ub)",
	},
	{
		// 0001111000000001PP0uuuuu001ddddd | Vdd.uw = vunpack(Vu.uh)
		.encoding = { .mask = 0xffff20e0, .op = 0x1e010020 },
		.id = HEX_INS_V6_VUNPACKUH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".uw = vunpack(.uh)",
	},
	{
		// 0001111000000000PP10010010000000 | vwhist128
		.encoding = { .mask = 0xffff3fff, .op = 0x1e002480 },
		.id = HEX_INS_V6_VWHIST128,
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "vwhist128",
	},
	{
		// 0001111000000000PP10011i10000000 | vwhist128(Ii)
		.encoding = { .mask = 0xffff3eff, .op = 0x1e002680 },
		.id = HEX_INS_V6_VWHIST128M,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x1, 8 } }, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "vwhist128()",
	},
	{
		// 00011110vv000010PP10010010000000 | vwhist128(Qv)
		.encoding = { .mask = 0xff3f3fff, .op = 0x1e022480 },
		.id = HEX_INS_V6_VWHIST128Q,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 22 } }, .reg_cls = HEX_REG_CLASS_HVX_QR, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "vwhist128()",
	},
	{
		// 00011110vv000010PP10011i10000000 | vwhist128(Qv,Ii)
		.encoding = { .mask = 0xff3f3eff, .op = 0x1e022680 },
		.id = HEX_INS_V6_VWHIST128QM,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 22 } }, .reg_cls = HEX_REG_CLASS_HVX_QR, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x1, 8 } }, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "vwhist128(,)",
	},
	{
		// 0001111000000000PP10001010000000 | vwhist256
		.encoding = { .mask = 0xffff3fff, .op = 0x1e002280 },
		.id = HEX_INS_V6_VWHIST256,
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "vwhist256",
	},
	{
		// 0001111000000000PP10001110000000 | vwhist256:sat
		.encoding = { .mask = 0xffff3fff, .op = 0x1e002380 },
		.id = HEX_INS_V6_VWHIST256_SAT,
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "vwhist256:sat",
	},
	{
		// 00011110vv000010PP10001010000000 | vwhist256(Qv)
		.encoding = { .mask = 0xff3f3fff, .op = 0x1e022280 },
		.id = HEX_INS_V6_VWHIST256Q,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 22 } }, .reg_cls = HEX_REG_CLASS_HVX_QR, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "vwhist256()",
	},
	{
		// 00011110vv000010PP10001110000000 | vwhist256(Qv):sat
		.encoding = { .mask = 0xff3f3fff, .op = 0x1e022380 },
		.id = HEX_INS_V6_VWHIST256Q_SAT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 22 } }, .reg_cls = HEX_REG_CLASS_HVX_QR, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "vwhist256():sat",
	},
	{
		// 00011100001vvvvvPP0uuuuu111ddddd | Vd = vxor(Vu,Vv)
		.encoding = { .mask = 0xffe020e0, .op = 0x1c2000e0 },
		.id = HEX_INS_V6_VXOR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vxor(,)",
	},
	{
		// 0001111000000010PP0uuuuu001ddddd | Vdd.uh = vzxt(Vu.ub)
		.encoding = { .mask = 0xffff20e0, .op = 0x1e020020 },
		.id = HEX_INS_V6_VZB,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".uh = vzxt(.ub)",
	},
	{
		// 0001111000000010PP0uuuuu010ddddd | Vdd.uw = vzxt(Vu.uh)
		.encoding = { .mask = 0xffff20e0, .op = 0x1e020040 },
		.id = HEX_INS_V6_VZH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".uw = vzxt(.uh)",
	},
	{
		// 00011001101tttttPP000001001ddddd | Vd = zextract(Rt)
		.encoding = { .mask = 0xffe03fe0, .op = 0x19a00120 },
		.id = HEX_INS_V6_ZEXTRACT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = zextract()",
	},
	{ { 0 } },
};

static const HexInsnTemplate templates_normal_0x2[] = {
	{
		// 0010000001ii0sssPP0tttttiiiiiii0 | if (!cmp.eq(Ns.new,Rt)) jump:nt Ii
		.encoding = { .mask = 0xffc82001, .op = 0x20400000 },
		.id = HEX_INS_J4_CMPEQ_F_JUMPNV_NT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x2, 20 } }, .imm_scale = 2, .syntax = 28 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "if (!cmp.eq(.new,)) jump:nt ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0010000001ii0sssPP1tttttiiiiiii0 | if (!cmp.eq(Ns.new,Rt)) jump:t Ii
		.encoding = { .mask = 0xffc82001, .op = 0x20402000 },
		.id = HEX_INS_J4_CMPEQ_F_JUMPNV_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x2, 20 } }, .imm_scale = 2, .syntax = 27 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "if (!cmp.eq(.new,)) jump:t ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0010000000ii0sssPP0tttttiiiiiii0 | if (cmp.eq(Ns.new,Rt)) jump:nt Ii
		.encoding = { .mask = 0xffc82001, .op = 0x20000000 },
		.id = HEX_INS_J4_CMPEQ_T_JUMPNV_NT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x2, 20 } }, .imm_scale = 2, .syntax = 27 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "if (cmp.eq(.new,)) jump:nt ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0010000000ii0sssPP1tttttiiiiiii0 | if (cmp.eq(Ns.new,Rt)) jump:t Ii
		.encoding = { .mask = 0xffc82001, .op = 0x20002000 },
		.id = HEX_INS_J4_CMPEQ_T_JUMPNV_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x2, 20 } }, .imm_scale = 2, .syntax = 26 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "if (cmp.eq(.new,)) jump:t ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0010010001ii0sssPP0IIIIIiiiiiii0 | if (!cmp.eq(Ns.new,II)) jump:nt Ii
		.encoding = { .mask = 0xffc82001, .op = 0x24400000 },
		.id = HEX_INS_J4_CMPEQI_F_JUMPNV_NT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 8 } }, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x2, 20 } }, .imm_scale = 2, .syntax = 28 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "if (!cmp.eq(.new,)) jump:nt ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0010010001ii0sssPP1IIIIIiiiiiii0 | if (!cmp.eq(Ns.new,II)) jump:t Ii
		.encoding = { .mask = 0xffc82001, .op = 0x24402000 },
		.id = HEX_INS_J4_CMPEQI_F_JUMPNV_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 8 } }, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x2, 20 } }, .imm_scale = 2, .syntax = 27 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "if (!cmp.eq(.new,)) jump:t ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0010010000ii0sssPP0IIIIIiiiiiii0 | if (cmp.eq(Ns.new,II)) jump:nt Ii
		.encoding = { .mask = 0xffc82001, .op = 0x24000000 },
		.id = HEX_INS_J4_CMPEQI_T_JUMPNV_NT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 8 } }, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x2, 20 } }, .imm_scale = 2, .syntax = 27 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "if (cmp.eq(.new,)) jump:nt ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0010010000ii0sssPP1IIIIIiiiiiii0 | if (cmp.eq(Ns.new,II)) jump:t Ii
		.encoding = { .mask = 0xffc82001, .op = 0x24002000 },
		.id = HEX_INS_J4_CMPEQI_T_JUMPNV_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 8 } }, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x2, 20 } }, .imm_scale = 2, .syntax = 26 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "if (cmp.eq(.new,)) jump:t ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0010011001ii0sssPP000000iiiiiii0 | if (!cmp.eq(Ns.new,n1)) jump:nt Ii
		.encoding = { .mask = 0xffc83f01, .op = 0x26400000 },
		.id = HEX_INS_J4_CMPEQN1_F_JUMPNV_NT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x2, 20 } }, .imm_scale = 2, .syntax = 28 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "if (!cmp.eq(.new,)) jump:nt ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0010011001ii0sssPP100000iiiiiii0 | if (!cmp.eq(Ns.new,n1)) jump:t Ii
		.encoding = { .mask = 0xffc83f01, .op = 0x26402000 },
		.id = HEX_INS_J4_CMPEQN1_F_JUMPNV_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x2, 20 } }, .imm_scale = 2, .syntax = 27 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "if (!cmp.eq(.new,)) jump:t ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0010011000ii0sssPP000000iiiiiii0 | if (cmp.eq(Ns.new,n1)) jump:nt Ii
		.encoding = { .mask = 0xffc83f01, .op = 0x26000000 },
		.id = HEX_INS_J4_CMPEQN1_T_JUMPNV_NT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x2, 20 } }, .imm_scale = 2, .syntax = 27 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "if (cmp.eq(.new,)) jump:nt ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0010011000ii0sssPP100000iiiiiii0 | if (cmp.eq(Ns.new,n1)) jump:t Ii
		.encoding = { .mask = 0xffc83f01, .op = 0x26002000 },
		.id = HEX_INS_J4_CMPEQN1_T_JUMPNV_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x2, 20 } }, .imm_scale = 2, .syntax = 26 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "if (cmp.eq(.new,)) jump:t ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0010000011ii0sssPP0tttttiiiiiii0 | if (!cmp.gt(Ns.new,Rt)) jump:nt Ii
		.encoding = { .mask = 0xffc82001, .op = 0x20c00000 },
		.id = HEX_INS_J4_CMPGT_F_JUMPNV_NT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x2, 20 } }, .imm_scale = 2, .syntax = 28 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "if (!cmp.gt(.new,)) jump:nt ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0010000011ii0sssPP1tttttiiiiiii0 | if (!cmp.gt(Ns.new,Rt)) jump:t Ii
		.encoding = { .mask = 0xffc82001, .op = 0x20c02000 },
		.id = HEX_INS_J4_CMPGT_F_JUMPNV_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x2, 20 } }, .imm_scale = 2, .syntax = 27 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "if (!cmp.gt(.new,)) jump:t ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0010000010ii0sssPP0tttttiiiiiii0 | if (cmp.gt(Ns.new,Rt)) jump:nt Ii
		.encoding = { .mask = 0xffc82001, .op = 0x20800000 },
		.id = HEX_INS_J4_CMPGT_T_JUMPNV_NT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x2, 20 } }, .imm_scale = 2, .syntax = 27 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "if (cmp.gt(.new,)) jump:nt ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0010000010ii0sssPP1tttttiiiiiii0 | if (cmp.gt(Ns.new,Rt)) jump:t Ii
		.encoding = { .mask = 0xffc82001, .op = 0x20802000 },
		.id = HEX_INS_J4_CMPGT_T_JUMPNV_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x2, 20 } }, .imm_scale = 2, .syntax = 26 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "if (cmp.gt(.new,)) jump:t ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0010010011ii0sssPP0IIIIIiiiiiii0 | if (!cmp.gt(Ns.new,II)) jump:nt Ii
		.encoding = { .mask = 0xffc82001, .op = 0x24c00000 },
		.id = HEX_INS_J4_CMPGTI_F_JUMPNV_NT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 8 } }, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x2, 20 } }, .imm_scale = 2, .syntax = 28 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "if (!cmp.gt(.new,)) jump:nt ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0010010011ii0sssPP1IIIIIiiiiiii0 | if (!cmp.gt(Ns.new,II)) jump:t Ii
		.encoding = { .mask = 0xffc82001, .op = 0x24c02000 },
		.id = HEX_INS_J4_CMPGTI_F_JUMPNV_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 8 } }, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x2, 20 } }, .imm_scale = 2, .syntax = 27 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "if (!cmp.gt(.new,)) jump:t ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0010010010ii0sssPP0IIIIIiiiiiii0 | if (cmp.gt(Ns.new,II)) jump:nt Ii
		.encoding = { .mask = 0xffc82001, .op = 0x24800000 },
		.id = HEX_INS_J4_CMPGTI_T_JUMPNV_NT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 8 } }, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x2, 20 } }, .imm_scale = 2, .syntax = 27 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "if (cmp.gt(.new,)) jump:nt ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0010010010ii0sssPP1IIIIIiiiiiii0 | if (cmp.gt(Ns.new,II)) jump:t Ii
		.encoding = { .mask = 0xffc82001, .op = 0x24802000 },
		.id = HEX_INS_J4_CMPGTI_T_JUMPNV_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 8 } }, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x2, 20 } }, .imm_scale = 2, .syntax = 26 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "if (cmp.gt(.new,)) jump:t ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0010011011ii0sssPP000000iiiiiii0 | if (!cmp.gt(Ns.new,n1)) jump:nt Ii
		.encoding = { .mask = 0xffc83f01, .op = 0x26c00000 },
		.id = HEX_INS_J4_CMPGTN1_F_JUMPNV_NT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x2, 20 } }, .imm_scale = 2, .syntax = 28 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "if (!cmp.gt(.new,)) jump:nt ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0010011011ii0sssPP100000iiiiiii0 | if (!cmp.gt(Ns.new,n1)) jump:t Ii
		.encoding = { .mask = 0xffc83f01, .op = 0x26c02000 },
		.id = HEX_INS_J4_CMPGTN1_F_JUMPNV_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x2, 20 } }, .imm_scale = 2, .syntax = 27 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "if (!cmp.gt(.new,)) jump:t ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0010011010ii0sssPP000000iiiiiii0 | if (cmp.gt(Ns.new,n1)) jump:nt Ii
		.encoding = { .mask = 0xffc83f01, .op = 0x26800000 },
		.id = HEX_INS_J4_CMPGTN1_T_JUMPNV_NT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x2, 20 } }, .imm_scale = 2, .syntax = 27 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "if (cmp.gt(.new,)) jump:nt ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0010011010ii0sssPP100000iiiiiii0 | if (cmp.gt(Ns.new,n1)) jump:t Ii
		.encoding = { .mask = 0xffc83f01, .op = 0x26802000 },
		.id = HEX_INS_J4_CMPGTN1_T_JUMPNV_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM_CONST, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x2, 20 } }, .imm_scale = 2, .syntax = 26 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "if (cmp.gt(.new,)) jump:t ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0010000101ii0sssPP0tttttiiiiiii0 | if (!cmp.gtu(Ns.new,Rt)) jump:nt Ii
		.encoding = { .mask = 0xffc82001, .op = 0x21400000 },
		.id = HEX_INS_J4_CMPGTU_F_JUMPNV_NT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x2, 20 } }, .imm_scale = 2, .syntax = 29 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "if (!cmp.gtu(.new,)) jump:nt ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0010000101ii0sssPP1tttttiiiiiii0 | if (!cmp.gtu(Ns.new,Rt)) jump:t Ii
		.encoding = { .mask = 0xffc82001, .op = 0x21402000 },
		.id = HEX_INS_J4_CMPGTU_F_JUMPNV_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x2, 20 } }, .imm_scale = 2, .syntax = 28 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "if (!cmp.gtu(.new,)) jump:t ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0010000100ii0sssPP0tttttiiiiiii0 | if (cmp.gtu(Ns.new,Rt)) jump:nt Ii
		.encoding = { .mask = 0xffc82001, .op = 0x21000000 },
		.id = HEX_INS_J4_CMPGTU_T_JUMPNV_NT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x2, 20 } }, .imm_scale = 2, .syntax = 28 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "if (cmp.gtu(.new,)) jump:nt ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0010000100ii0sssPP1tttttiiiiiii0 | if (cmp.gtu(Ns.new,Rt)) jump:t Ii
		.encoding = { .mask = 0xffc82001, .op = 0x21002000 },
		.id = HEX_INS_J4_CMPGTU_T_JUMPNV_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x2, 20 } }, .imm_scale = 2, .syntax = 27 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "if (cmp.gtu(.new,)) jump:t ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0010010101ii0sssPP0IIIIIiiiiiii0 | if (!cmp.gtu(Ns.new,II)) jump:nt Ii
		.encoding = { .mask = 0xffc82001, .op = 0x25400000 },
		.id = HEX_INS_J4_CMPGTUI_F_JUMPNV_NT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 8 } }, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x2, 20 } }, .imm_scale = 2, .syntax = 29 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "if (!cmp.gtu(.new,)) jump:nt ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0010010101ii0sssPP1IIIIIiiiiiii0 | if (!cmp.gtu(Ns.new,II)) jump:t Ii
		.encoding = { .mask = 0xffc82001, .op = 0x25402000 },
		.id = HEX_INS_J4_CMPGTUI_F_JUMPNV_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 8 } }, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x2, 20 } }, .imm_scale = 2, .syntax = 28 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "if (!cmp.gtu(.new,)) jump:t ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0010010100ii0sssPP0IIIIIiiiiiii0 | if (cmp.gtu(Ns.new,II)) jump:nt Ii
		.encoding = { .mask = 0xffc82001, .op = 0x25000000 },
		.id = HEX_INS_J4_CMPGTUI_T_JUMPNV_NT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 8 } }, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x2, 20 } }, .imm_scale = 2, .syntax = 28 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "if (cmp.gtu(.new,)) jump:nt ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0010010100ii0sssPP1IIIIIiiiiiii0 | if (cmp.gtu(Ns.new,II)) jump:t Ii
		.encoding = { .mask = 0xffc82001, .op = 0x25002000 },
		.id = HEX_INS_J4_CMPGTUI_T_JUMPNV_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 8 } }, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x2, 20 } }, .imm_scale = 2, .syntax = 27 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "if (cmp.gtu(.new,)) jump:t ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0010000111ii0sssPP0tttttiiiiiii0 | if (!cmp.gt(Rt,Ns.new)) jump:nt Ii
		.encoding = { .mask = 0xffc82001, .op = 0x21c00000 },
		.id = HEX_INS_J4_CMPLT_F_JUMPNV_NT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x2, 20 } }, .imm_scale = 2, .syntax = 28 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "if (!cmp.gt(,.new)) jump:nt ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0010000111ii0sssPP1tttttiiiiiii0 | if (!cmp.gt(Rt,Ns.new)) jump:t Ii
		.encoding = { .mask = 0xffc82001, .op = 0x21c02000 },
		.id = HEX_INS_J4_CMPLT_F_JUMPNV_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x2, 20 } }, .imm_scale = 2, .syntax = 27 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "if (!cmp.gt(,.new)) jump:t ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0010000110ii0sssPP0tttttiiiiiii0 | if (cmp.gt(Rt,Ns.new)) jump:nt Ii
		.encoding = { .mask = 0xffc82001, .op = 0x21800000 },
		.id = HEX_INS_J4_CMPLT_T_JUMPNV_NT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x2, 20 } }, .imm_scale = 2, .syntax = 27 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "if (cmp.gt(,.new)) jump:nt ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0010000110ii0sssPP1tttttiiiiiii0 | if (cmp.gt(Rt,Ns.new)) jump:t Ii
		.encoding = { .mask = 0xffc82001, .op = 0x21802000 },
		.id = HEX_INS_J4_CMPLT_T_JUMPNV_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x2, 20 } }, .imm_scale = 2, .syntax = 26 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "if (cmp.gt(,.new)) jump:t ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0010001001ii0sssPP0tttttiiiiiii0 | if (!cmp.gtu(Rt,Ns.new)) jump:nt Ii
		.encoding = { .mask = 0xffc82001, .op = 0x22400000 },
		.id = HEX_INS_J4_CMPLTU_F_JUMPNV_NT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x2, 20 } }, .imm_scale = 2, .syntax = 29 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "if (!cmp.gtu(,.new)) jump:nt ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0010001001ii0sssPP1tttttiiiiiii0 | if (!cmp.gtu(Rt,Ns.new)) jump:t Ii
		.encoding = { .mask = 0xffc82001, .op = 0x22402000 },
		.id = HEX_INS_J4_CMPLTU_F_JUMPNV_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x2, 20 } }, .imm_scale = 2, .syntax = 28 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "if (!cmp.gtu(,.new)) jump:t ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0010001000ii0sssPP0tttttiiiiiii0 | if (cmp.gtu(Rt,Ns.new)) jump:nt Ii
		.encoding = { .mask = 0xffc82001, .op = 0x22000000 },
		.id = HEX_INS_J4_CMPLTU_T_JUMPNV_NT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x2, 20 } }, .imm_scale = 2, .syntax = 28 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "if (cmp.gtu(,.new)) jump:nt ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0010001000ii0sssPP1tttttiiiiiii0 | if (cmp.gtu(Rt,Ns.new)) jump:t Ii
		.encoding = { .mask = 0xffc82001, .op = 0x22002000 },
		.id = HEX_INS_J4_CMPLTU_T_JUMPNV_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x2, 20 } }, .imm_scale = 2, .syntax = 27 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "if (cmp.gtu(,.new)) jump:t ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0010010111ii0sssPP000000iiiiiii0 | if (!tstbit(Ns.new,#0)) jump:nt Ii
		.encoding = { .mask = 0xffc83f01, .op = 0x25c00000 },
		.id = HEX_INS_J4_TSTBIT0_F_JUMPNV_NT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x2, 20 } }, .imm_scale = 2, .syntax = 30 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "if (!tstbit(.new,#0)) jump:nt ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0010010111ii0sssPP100000iiiiiii0 | if (!tstbit(Ns.new,#0)) jump:t Ii
		.encoding = { .mask = 0xffc83f01, .op = 0x25c02000 },
		.id = HEX_INS_J4_TSTBIT0_F_JUMPNV_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x2, 20 } }, .imm_scale = 2, .syntax = 29 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "if (!tstbit(.new,#0)) jump:t ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0010010110ii0sssPP000000iiiiiii0 | if (tstbit(Ns.new,#0)) jump:nt Ii
		.encoding = { .mask = 0xffc83f01, .op = 0x25800000 },
		.id = HEX_INS_J4_TSTBIT0_T_JUMPNV_NT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x2, 20 } }, .imm_scale = 2, .syntax = 29 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "if (tstbit(.new,#0)) jump:nt ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0010010110ii0sssPP100000iiiiiii0 | if (tstbit(Ns.new,#0)) jump:t Ii
		.encoding = { .mask = 0xffc83f01, .op = 0x25802000 },
		.id = HEX_INS_J4_TSTBIT0_T_JUMPNV_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x2, 20 } }, .imm_scale = 2, .syntax = 28 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "if (tstbit(.new,#0)) jump:t ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 00101000000tttttPPi00iii111ddddd | Vd = vmemu(Rt+Ii)
		.encoding = { .mask = 0xffe018e0, .op = 0x280000e0 },
		.id = HEX_INS_V6_VL32UB_AI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 }, { 0x1, 13 } }, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vmemu(+)",
	},
	{
		// 00101001000xxxxxPP000iii111ddddd | Vd = vmemu(Rx++Ii)
		.encoding = { .mask = 0xffe038e0, .op = 0x290000e0 },
		.id = HEX_INS_V6_VL32UB_PI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 } }, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vmemu(++)",
	},
	{
		// 00101011000xxxxxPPu00000111ddddd | Vd = vmemu(Rx++Mu)
		.encoding = { .mask = 0xffe01fe0, .op = 0x2b0000e0 },
		.id = HEX_INS_V6_VL32UB_PPU,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vmemu(++)",
	},
	{
		// 00101000000tttttPPi00iii000ddddd | Vd = vmem(Rt+Ii)
		.encoding = { .mask = 0xffe018e0, .op = 0x28000000 },
		.id = HEX_INS_V6_VL32B_AI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 }, { 0x1, 13 } }, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vmem(+)",
	},
	{
		// 00101000000tttttPPi00iii001ddddd | Vd.cur = vmem(Rt+Ii)
		.encoding = { .mask = 0xffe018e0, .op = 0x28000020 },
		.id = HEX_INS_V6_VL32B_CUR_AI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 }, { 0x1, 13 } }, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".cur = vmem(+)",
	},
	{
		// 00101000100tttttPPivviii101ddddd | if (!Pv) Vd.cur = vmem(Rt+Ii)
		.encoding = { .mask = 0xffe000e0, .op = 0x288000a0 },
		.id = HEX_INS_V6_VL32B_CUR_NPRED_AI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 11 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 19 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 }, { 0x1, 13 } }, .syntax = 20 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_VEC_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!) .cur = vmem(+)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00101001100xxxxxPP0vviii101ddddd | if (!Pv) Vd.cur = vmem(Rx++Ii)
		.encoding = { .mask = 0xffe020e0, .op = 0x298000a0 },
		.id = HEX_INS_V6_VL32B_CUR_NPRED_PI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 11 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 19 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 } }, .syntax = 21 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_VEC_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!) .cur = vmem(++)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00101011100xxxxxPPuvv000101ddddd | if (!Pv) Vd.cur = vmem(Rx++Mu)
		.encoding = { .mask = 0xffe007e0, .op = 0x2b8000a0 },
		.id = HEX_INS_V6_VL32B_CUR_NPRED_PPU,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 11 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 19 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 21 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_VEC_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!) .cur = vmem(++)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00101001000xxxxxPP000iii001ddddd | Vd.cur = vmem(Rx++Ii)
		.encoding = { .mask = 0xffe038e0, .op = 0x29000020 },
		.id = HEX_INS_V6_VL32B_CUR_PI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 } }, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".cur = vmem(++)",
	},
	{
		// 00101011000xxxxxPPu00000001ddddd | Vd.cur = vmem(Rx++Mu)
		.encoding = { .mask = 0xffe01fe0, .op = 0x2b000020 },
		.id = HEX_INS_V6_VL32B_CUR_PPU,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".cur = vmem(++)",
	},
	{
		// 00101000100tttttPPivviii100ddddd | if (Pv) Vd.cur = vmem(Rt+Ii)
		.encoding = { .mask = 0xffe000e0, .op = 0x28800080 },
		.id = HEX_INS_V6_VL32B_CUR_PRED_AI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 11 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 }, { 0x1, 13 } }, .syntax = 19 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_VEC_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if () .cur = vmem(+)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00101001100xxxxxPP0vviii100ddddd | if (Pv) Vd.cur = vmem(Rx++Ii)
		.encoding = { .mask = 0xffe020e0, .op = 0x29800080 },
		.id = HEX_INS_V6_VL32B_CUR_PRED_PI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 11 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 } }, .syntax = 20 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_VEC_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if () .cur = vmem(++)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00101011100xxxxxPPuvv000100ddddd | if (Pv) Vd.cur = vmem(Rx++Mu)
		.encoding = { .mask = 0xffe007e0, .op = 0x2b800080 },
		.id = HEX_INS_V6_VL32B_CUR_PRED_PPU,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 11 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 20 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_VEC_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if () .cur = vmem(++)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00101000100tttttPPivviii011ddddd | if (!Pv) Vd = vmem(Rt+Ii)
		.encoding = { .mask = 0xffe000e0, .op = 0x28800060 },
		.id = HEX_INS_V6_VL32B_NPRED_AI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 11 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 }, { 0x1, 13 } }, .syntax = 16 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_VEC_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!)  = vmem(+)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00101001100xxxxxPP0vviii011ddddd | if (!Pv) Vd = vmem(Rx++Ii)
		.encoding = { .mask = 0xffe020e0, .op = 0x29800060 },
		.id = HEX_INS_V6_VL32B_NPRED_PI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 11 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 } }, .syntax = 17 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_VEC_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!)  = vmem(++)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00101011100xxxxxPPuvv000011ddddd | if (!Pv) Vd = vmem(Rx++Mu)
		.encoding = { .mask = 0xffe007e0, .op = 0x2b800060 },
		.id = HEX_INS_V6_VL32B_NPRED_PPU,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 11 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 17 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_VEC_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!)  = vmem(++)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00101000010tttttPPi00iii000ddddd | Vd = vmem(Rt+Ii):nt
		.encoding = { .mask = 0xffe018e0, .op = 0x28400000 },
		.id = HEX_INS_V6_VL32B_NT_AI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 }, { 0x1, 13 } }, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vmem(+):nt",
	},
	{
		// 00101000010tttttPPi00iii001ddddd | Vd.cur = vmem(Rt+Ii):nt
		.encoding = { .mask = 0xffe018e0, .op = 0x28400020 },
		.id = HEX_INS_V6_VL32B_NT_CUR_AI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 }, { 0x1, 13 } }, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".cur = vmem(+):nt",
	},
	{
		// 00101000110tttttPPivviii101ddddd | if (!Pv) Vd.cur = vmem(Rt+Ii):nt
		.encoding = { .mask = 0xffe000e0, .op = 0x28c000a0 },
		.id = HEX_INS_V6_VL32B_NT_CUR_NPRED_AI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 11 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 19 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 }, { 0x1, 13 } }, .syntax = 20 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_VEC_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!) .cur = vmem(+):nt",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00101001110xxxxxPP0vviii101ddddd | if (!Pv) Vd.cur = vmem(Rx++Ii):nt
		.encoding = { .mask = 0xffe020e0, .op = 0x29c000a0 },
		.id = HEX_INS_V6_VL32B_NT_CUR_NPRED_PI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 11 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 19 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 } }, .syntax = 21 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_VEC_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!) .cur = vmem(++):nt",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00101011110xxxxxPPuvv000101ddddd | if (!Pv) Vd.cur = vmem(Rx++Mu):nt
		.encoding = { .mask = 0xffe007e0, .op = 0x2bc000a0 },
		.id = HEX_INS_V6_VL32B_NT_CUR_NPRED_PPU,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 11 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 19 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 21 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_VEC_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!) .cur = vmem(++):nt",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00101001010xxxxxPP000iii001ddddd | Vd.cur = vmem(Rx++Ii):nt
		.encoding = { .mask = 0xffe038e0, .op = 0x29400020 },
		.id = HEX_INS_V6_VL32B_NT_CUR_PI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 } }, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".cur = vmem(++):nt",
	},
	{
		// 00101011010xxxxxPPu00000001ddddd | Vd.cur = vmem(Rx++Mu):nt
		.encoding = { .mask = 0xffe01fe0, .op = 0x2b400020 },
		.id = HEX_INS_V6_VL32B_NT_CUR_PPU,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".cur = vmem(++):nt",
	},
	{
		// 00101000110tttttPPivviii100ddddd | if (Pv) Vd.cur = vmem(Rt+Ii):nt
		.encoding = { .mask = 0xffe000e0, .op = 0x28c00080 },
		.id = HEX_INS_V6_VL32B_NT_CUR_PRED_AI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 11 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 }, { 0x1, 13 } }, .syntax = 19 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_VEC_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if () .cur = vmem(+):nt",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00101001110xxxxxPP0vviii100ddddd | if (Pv) Vd.cur = vmem(Rx++Ii):nt
		.encoding = { .mask = 0xffe020e0, .op = 0x29c00080 },
		.id = HEX_INS_V6_VL32B_NT_CUR_PRED_PI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 11 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 } }, .syntax = 20 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_VEC_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if () .cur = vmem(++):nt",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00101011110xxxxxPPuvv000100ddddd | if (Pv) Vd.cur = vmem(Rx++Mu):nt
		.encoding = { .mask = 0xffe007e0, .op = 0x2bc00080 },
		.id = HEX_INS_V6_VL32B_NT_CUR_PRED_PPU,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 11 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 20 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_VEC_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if () .cur = vmem(++):nt",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00101000110tttttPPivviii011ddddd | if (!Pv) Vd = vmem(Rt+Ii):nt
		.encoding = { .mask = 0xffe000e0, .op = 0x28c00060 },
		.id = HEX_INS_V6_VL32B_NT_NPRED_AI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 11 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 }, { 0x1, 13 } }, .syntax = 16 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_VEC_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!)  = vmem(+):nt",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00101001110xxxxxPP0vviii011ddddd | if (!Pv) Vd = vmem(Rx++Ii):nt
		.encoding = { .mask = 0xffe020e0, .op = 0x29c00060 },
		.id = HEX_INS_V6_VL32B_NT_NPRED_PI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 11 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 } }, .syntax = 17 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_VEC_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!)  = vmem(++):nt",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00101011110xxxxxPPuvv000011ddddd | if (!Pv) Vd = vmem(Rx++Mu):nt
		.encoding = { .mask = 0xffe007e0, .op = 0x2bc00060 },
		.id = HEX_INS_V6_VL32B_NT_NPRED_PPU,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 11 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 17 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_VEC_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!)  = vmem(++):nt",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00101001010xxxxxPP000iii000ddddd | Vd = vmem(Rx++Ii):nt
		.encoding = { .mask = 0xffe038e0, .op = 0x29400000 },
		.id = HEX_INS_V6_VL32B_NT_PI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 } }, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vmem(++):nt",
	},
	{
		// 00101011010xxxxxPPu00000000ddddd | Vd = vmem(Rx++Mu):nt
		.encoding = { .mask = 0xffe01fe0, .op = 0x2b400000 },
		.id = HEX_INS_V6_VL32B_NT_PPU,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vmem(++):nt",
	},
	{
		// 00101000110tttttPPivviii010ddddd | if (Pv) Vd = vmem(Rt+Ii):nt
		.encoding = { .mask = 0xffe000e0, .op = 0x28c00040 },
		.id = HEX_INS_V6_VL32B_NT_PRED_AI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 11 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 }, { 0x1, 13 } }, .syntax = 15 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_VEC_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if ()  = vmem(+):nt",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00101001110xxxxxPP0vviii010ddddd | if (Pv) Vd = vmem(Rx++Ii):nt
		.encoding = { .mask = 0xffe020e0, .op = 0x29c00040 },
		.id = HEX_INS_V6_VL32B_NT_PRED_PI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 11 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 } }, .syntax = 16 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_VEC_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if ()  = vmem(++):nt",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00101011110xxxxxPPuvv000010ddddd | if (Pv) Vd = vmem(Rx++Mu):nt
		.encoding = { .mask = 0xffe007e0, .op = 0x2bc00040 },
		.id = HEX_INS_V6_VL32B_NT_PRED_PPU,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 11 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 16 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_VEC_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if ()  = vmem(++):nt",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00101000010tttttPPi00iii010ddddd | Vd.tmp = vmem(Rt+Ii):nt
		.encoding = { .mask = 0xffe018e0, .op = 0x28400040 },
		.id = HEX_INS_V6_VL32B_NT_TMP_AI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 }, { 0x1, 13 } }, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".tmp = vmem(+):nt",
	},
	{
		// 00101000110tttttPPivviii111ddddd | if (!Pv) Vd.tmp = vmem(Rt+Ii):nt
		.encoding = { .mask = 0xffe000e0, .op = 0x28c000e0 },
		.id = HEX_INS_V6_VL32B_NT_TMP_NPRED_AI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 11 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 19 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 }, { 0x1, 13 } }, .syntax = 20 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_VEC_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!) .tmp = vmem(+):nt",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00101001110xxxxxPP0vviii111ddddd | if (!Pv) Vd.tmp = vmem(Rx++Ii):nt
		.encoding = { .mask = 0xffe020e0, .op = 0x29c000e0 },
		.id = HEX_INS_V6_VL32B_NT_TMP_NPRED_PI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 11 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 19 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 } }, .syntax = 21 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_VEC_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!) .tmp = vmem(++):nt",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00101011110xxxxxPPuvv000111ddddd | if (!Pv) Vd.tmp = vmem(Rx++Mu):nt
		.encoding = { .mask = 0xffe007e0, .op = 0x2bc000e0 },
		.id = HEX_INS_V6_VL32B_NT_TMP_NPRED_PPU,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 11 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 19 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 21 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_VEC_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!) .tmp = vmem(++):nt",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00101001010xxxxxPP000iii010ddddd | Vd.tmp = vmem(Rx++Ii):nt
		.encoding = { .mask = 0xffe038e0, .op = 0x29400040 },
		.id = HEX_INS_V6_VL32B_NT_TMP_PI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 } }, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".tmp = vmem(++):nt",
	},
	{
		// 00101011010xxxxxPPu00000010ddddd | Vd.tmp = vmem(Rx++Mu):nt
		.encoding = { .mask = 0xffe01fe0, .op = 0x2b400040 },
		.id = HEX_INS_V6_VL32B_NT_TMP_PPU,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".tmp = vmem(++):nt",
	},
	{
		// 00101000110tttttPPivviii110ddddd | if (Pv) Vd.tmp = vmem(Rt+Ii):nt
		.encoding = { .mask = 0xffe000e0, .op = 0x28c000c0 },
		.id = HEX_INS_V6_VL32B_NT_TMP_PRED_AI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 11 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 }, { 0x1, 13 } }, .syntax = 19 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_VEC_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if () .tmp = vmem(+):nt",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00101001110xxxxxPP0vviii110ddddd | if (Pv) Vd.tmp = vmem(Rx++Ii):nt
		.encoding = { .mask = 0xffe020e0, .op = 0x29c000c0 },
		.id = HEX_INS_V6_VL32B_NT_TMP_PRED_PI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 11 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 } }, .syntax = 20 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_VEC_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if () .tmp = vmem(++):nt",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00101011110xxxxxPPuvv000110ddddd | if (Pv) Vd.tmp = vmem(Rx++Mu):nt
		.encoding = { .mask = 0xffe007e0, .op = 0x2bc000c0 },
		.id = HEX_INS_V6_VL32B_NT_TMP_PRED_PPU,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 11 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 20 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_VEC_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if () .tmp = vmem(++):nt",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00101001000xxxxxPP000iii000ddddd | Vd = vmem(Rx++Ii)
		.encoding = { .mask = 0xffe038e0, .op = 0x29000000 },
		.id = HEX_INS_V6_VL32B_PI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 } }, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vmem(++)",
	},
	{
		// 00101011000xxxxxPPu00000000ddddd | Vd = vmem(Rx++Mu)
		.encoding = { .mask = 0xffe01fe0, .op = 0x2b000000 },
		.id = HEX_INS_V6_VL32B_PPU,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vmem(++)",
	},
	{
		// 00101000100tttttPPivviii010ddddd | if (Pv) Vd = vmem(Rt+Ii)
		.encoding = { .mask = 0xffe000e0, .op = 0x28800040 },
		.id = HEX_INS_V6_VL32B_PRED_AI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 11 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 }, { 0x1, 13 } }, .syntax = 15 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_VEC_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if ()  = vmem(+)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00101001100xxxxxPP0vviii010ddddd | if (Pv) Vd = vmem(Rx++Ii)
		.encoding = { .mask = 0xffe020e0, .op = 0x29800040 },
		.id = HEX_INS_V6_VL32B_PRED_PI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 11 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 } }, .syntax = 16 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_VEC_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if ()  = vmem(++)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00101011100xxxxxPPuvv000010ddddd | if (Pv) Vd = vmem(Rx++Mu)
		.encoding = { .mask = 0xffe007e0, .op = 0x2b800040 },
		.id = HEX_INS_V6_VL32B_PRED_PPU,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 11 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 16 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_VEC_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if ()  = vmem(++)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00101000000tttttPPi00iii010ddddd | Vd.tmp = vmem(Rt+Ii)
		.encoding = { .mask = 0xffe018e0, .op = 0x28000040 },
		.id = HEX_INS_V6_VL32B_TMP_AI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 }, { 0x1, 13 } }, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".tmp = vmem(+)",
	},
	{
		// 00101000100tttttPPivviii111ddddd | if (!Pv) Vd.tmp = vmem(Rt+Ii)
		.encoding = { .mask = 0xffe000e0, .op = 0x288000e0 },
		.id = HEX_INS_V6_VL32B_TMP_NPRED_AI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 11 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 19 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 }, { 0x1, 13 } }, .syntax = 20 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_VEC_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!) .tmp = vmem(+)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00101001100xxxxxPP0vviii111ddddd | if (!Pv) Vd.tmp = vmem(Rx++Ii)
		.encoding = { .mask = 0xffe020e0, .op = 0x298000e0 },
		.id = HEX_INS_V6_VL32B_TMP_NPRED_PI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 11 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 19 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 } }, .syntax = 21 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_VEC_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!) .tmp = vmem(++)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00101011100xxxxxPPuvv000111ddddd | if (!Pv) Vd.tmp = vmem(Rx++Mu)
		.encoding = { .mask = 0xffe007e0, .op = 0x2b8000e0 },
		.id = HEX_INS_V6_VL32B_TMP_NPRED_PPU,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 11 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 19 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 21 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_VEC_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!) .tmp = vmem(++)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00101001000xxxxxPP000iii010ddddd | Vd.tmp = vmem(Rx++Ii)
		.encoding = { .mask = 0xffe038e0, .op = 0x29000040 },
		.id = HEX_INS_V6_VL32B_TMP_PI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 } }, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".tmp = vmem(++)",
	},
	{
		// 00101011000xxxxxPPu00000010ddddd | Vd.tmp = vmem(Rx++Mu)
		.encoding = { .mask = 0xffe01fe0, .op = 0x2b000040 },
		.id = HEX_INS_V6_VL32B_TMP_PPU,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".tmp = vmem(++)",
	},
	{
		// 00101000100tttttPPivviii110ddddd | if (Pv) Vd.tmp = vmem(Rt+Ii)
		.encoding = { .mask = 0xffe000e0, .op = 0x288000c0 },
		.id = HEX_INS_V6_VL32B_TMP_PRED_AI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 11 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 }, { 0x1, 13 } }, .syntax = 19 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_VEC_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if () .tmp = vmem(+)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00101001100xxxxxPP0vviii110ddddd | if (Pv) Vd.tmp = vmem(Rx++Ii)
		.encoding = { .mask = 0xffe020e0, .op = 0x298000c0 },
		.id = HEX_INS_V6_VL32B_TMP_PRED_PI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 11 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 } }, .syntax = 20 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_VEC_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if () .tmp = vmem(++)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00101011100xxxxxPPuvv000110ddddd | if (Pv) Vd.tmp = vmem(Rx++Mu)
		.encoding = { .mask = 0xffe007e0, .op = 0x2b8000c0 },
		.id = HEX_INS_V6_VL32B_TMP_PRED_PPU,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 11 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 20 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_VEC_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if () .tmp = vmem(++)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00101000001tttttPPi00iii111sssss | vmemu(Rt+Ii) = Vs
		.encoding = { .mask = 0xffe018e0, .op = 0x282000e0 },
		.id = HEX_INS_V6_VS32UB_AI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 }, { 0x1, 13 } }, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "vmemu(+) = ",
	},
	{
		// 00101000101tttttPPivviii111sssss | if (!Pv) vmemu(Rt+Ii) = Vs
		.encoding = { .mask = 0xffe000e0, .op = 0x28a000e0 },
		.id = HEX_INS_V6_VS32UB_NPRED_AI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 11 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 }, { 0x1, 13 } }, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 18 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_VEC_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!) vmemu(+) = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00101001101xxxxxPP0vviii111sssss | if (!Pv) vmemu(Rx++Ii) = Vs
		.encoding = { .mask = 0xffe020e0, .op = 0x29a000e0 },
		.id = HEX_INS_V6_VS32UB_NPRED_PI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 11 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 } }, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 19 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_VEC_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!) vmemu(++) = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00101011101xxxxxPPuvv000111sssss | if (!Pv) vmemu(Rx++Mu) = Vs
		.encoding = { .mask = 0xffe007e0, .op = 0x2ba000e0 },
		.id = HEX_INS_V6_VS32UB_NPRED_PPU,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 11 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 19 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_VEC_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!) vmemu(++) = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00101001001xxxxxPP000iii111sssss | vmemu(Rx++Ii) = Vs
		.encoding = { .mask = 0xffe038e0, .op = 0x292000e0 },
		.id = HEX_INS_V6_VS32UB_PI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 } }, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "vmemu(++) = ",
	},
	{
		// 00101011001xxxxxPPu00000111sssss | vmemu(Rx++Mu) = Vs
		.encoding = { .mask = 0xffe01fe0, .op = 0x2b2000e0 },
		.id = HEX_INS_V6_VS32UB_PPU,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "vmemu(++) = ",
	},
	{
		// 00101000101tttttPPivviii110sssss | if (Pv) vmemu(Rt+Ii) = Vs
		.encoding = { .mask = 0xffe000e0, .op = 0x28a000c0 },
		.id = HEX_INS_V6_VS32UB_PRED_AI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 11 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 }, { 0x1, 13 } }, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 17 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_VEC_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if () vmemu(+) = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00101001101xxxxxPP0vviii110sssss | if (Pv) vmemu(Rx++Ii) = Vs
		.encoding = { .mask = 0xffe020e0, .op = 0x29a000c0 },
		.id = HEX_INS_V6_VS32UB_PRED_PI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 11 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 } }, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 18 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_VEC_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if () vmemu(++) = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00101011101xxxxxPPuvv000110sssss | if (Pv) vmemu(Rx++Mu) = Vs
		.encoding = { .mask = 0xffe007e0, .op = 0x2ba000c0 },
		.id = HEX_INS_V6_VS32UB_PRED_PPU,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 11 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 18 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_VEC_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if () vmemu(++) = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00101000001tttttPPi00iii000sssss | vmem(Rt+Ii) = Vs
		.encoding = { .mask = 0xffe018e0, .op = 0x28200000 },
		.id = HEX_INS_V6_VS32B_AI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 }, { 0x1, 13 } }, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "vmem(+) = ",
	},
	{
		// 00101000001tttttPPi00iii00100sss | vmem(Rt+Ii) = Os.new
		.encoding = { .mask = 0xffe018f8, .op = 0x28200020 },
		.id = HEX_INS_V6_VS32B_NEW_AI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 }, { 0x1, 13 } }, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "vmem(+) = .new",
	},
	{
		// 00101000101tttttPPivviii01101sss | if (!Pv) vmem(Rt+Ii) = Os.new
		.encoding = { .mask = 0xffe000f8, .op = 0x28a00068 },
		.id = HEX_INS_V6_VS32B_NEW_NPRED_AI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 11 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 }, { 0x1, 13 } }, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 17 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_VEC_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!) vmem(+) = .new",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00101001101xxxxxPP0vviii01101sss | if (!Pv) vmem(Rx++Ii) = Os.new
		.encoding = { .mask = 0xffe020f8, .op = 0x29a00068 },
		.id = HEX_INS_V6_VS32B_NEW_NPRED_PI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 11 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 } }, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 18 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_VEC_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!) vmem(++) = .new",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00101011101xxxxxPPuvv00001101sss | if (!Pv) vmem(Rx++Mu) = Os.new
		.encoding = { .mask = 0xffe007f8, .op = 0x2ba00068 },
		.id = HEX_INS_V6_VS32B_NEW_NPRED_PPU,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 11 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 18 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_VEC_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!) vmem(++) = .new",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00101001001xxxxxPP000iii00100sss | vmem(Rx++Ii) = Os.new
		.encoding = { .mask = 0xffe038f8, .op = 0x29200020 },
		.id = HEX_INS_V6_VS32B_NEW_PI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 } }, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "vmem(++) = .new",
	},
	{
		// 00101011001xxxxxPPu0000000100sss | vmem(Rx++Mu) = Os.new
		.encoding = { .mask = 0xffe01ff8, .op = 0x2b200020 },
		.id = HEX_INS_V6_VS32B_NEW_PPU,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "vmem(++) = .new",
	},
	{
		// 00101000101tttttPPivviii01000sss | if (Pv) vmem(Rt+Ii) = Os.new
		.encoding = { .mask = 0xffe000f8, .op = 0x28a00040 },
		.id = HEX_INS_V6_VS32B_NEW_PRED_AI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 11 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 }, { 0x1, 13 } }, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 16 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_VEC_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if () vmem(+) = .new",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00101001101xxxxxPP0vviii01000sss | if (Pv) vmem(Rx++Ii) = Os.new
		.encoding = { .mask = 0xffe020f8, .op = 0x29a00040 },
		.id = HEX_INS_V6_VS32B_NEW_PRED_PI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 11 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 } }, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 17 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_VEC_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if () vmem(++) = .new",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00101011101xxxxxPPuvv00001000sss | if (Pv) vmem(Rx++Mu) = Os.new
		.encoding = { .mask = 0xffe007f8, .op = 0x2ba00040 },
		.id = HEX_INS_V6_VS32B_NEW_PRED_PPU,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 11 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 17 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_VEC_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if () vmem(++) = .new",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00101000101tttttPPivviii001sssss | if (!Pv) vmem(Rt+Ii) = Vs
		.encoding = { .mask = 0xffe000e0, .op = 0x28a00020 },
		.id = HEX_INS_V6_VS32B_NPRED_AI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 11 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 }, { 0x1, 13 } }, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 17 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_VEC_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!) vmem(+) = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00101001101xxxxxPP0vviii001sssss | if (!Pv) vmem(Rx++Ii) = Vs
		.encoding = { .mask = 0xffe020e0, .op = 0x29a00020 },
		.id = HEX_INS_V6_VS32B_NPRED_PI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 11 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 } }, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 18 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_VEC_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!) vmem(++) = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00101011101xxxxxPPuvv000001sssss | if (!Pv) vmem(Rx++Mu) = Vs
		.encoding = { .mask = 0xffe007e0, .op = 0x2ba00020 },
		.id = HEX_INS_V6_VS32B_NPRED_PPU,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 11 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 18 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_VEC_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!) vmem(++) = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00101000100tttttPPivviii001sssss | if (!Qv) vmem(Rt+Ii) = Vs
		.encoding = { .mask = 0xffe000e0, .op = 0x28800020 },
		.id = HEX_INS_V6_VS32B_NQPRED_AI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 11 } }, .reg_cls = HEX_REG_CLASS_HVX_QR, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 }, { 0x1, 13 } }, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 17 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "if (!) vmem(+) = ",
	},
	{
		// 00101001100xxxxxPP0vviii001sssss | if (!Qv) vmem(Rx++Ii) = Vs
		.encoding = { .mask = 0xffe020e0, .op = 0x29800020 },
		.id = HEX_INS_V6_VS32B_NQPRED_PI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 11 } }, .reg_cls = HEX_REG_CLASS_HVX_QR, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 } }, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 18 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "if (!) vmem(++) = ",
	},
	{
		// 00101011100xxxxxPPuvv000001sssss | if (!Qv) vmem(Rx++Mu) = Vs
		.encoding = { .mask = 0xffe007e0, .op = 0x2b800020 },
		.id = HEX_INS_V6_VS32B_NQPRED_PPU,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 11 } }, .reg_cls = HEX_REG_CLASS_HVX_QR, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 18 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "if (!) vmem(++) = ",
	},
	{
		// 00101000011tttttPPi00iii000sssss | vmem(Rt+Ii):nt = Vs
		.encoding = { .mask = 0xffe018e0, .op = 0x28600000 },
		.id = HEX_INS_V6_VS32B_NT_AI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 }, { 0x1, 13 } }, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "vmem(+):nt = ",
	},
	{
		// 00101000011tttttPPi00iii00100sss | vmem(Rt+Ii):nt = Os.new
		.encoding = { .mask = 0xffe018f8, .op = 0x28600020 },
		.id = HEX_INS_V6_VS32B_NT_NEW_AI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 }, { 0x1, 13 } }, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "vmem(+):nt = .new",
	},
	{
		// 00101000111tttttPPivviii01111sss | if (!Pv) vmem(Rt+Ii):nt = Os.new
		.encoding = { .mask = 0xffe000f8, .op = 0x28e00078 },
		.id = HEX_INS_V6_VS32B_NT_NEW_NPRED_AI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 11 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 }, { 0x1, 13 } }, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 20 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_VEC_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!) vmem(+):nt = .new",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00101001111xxxxxPP0vviii01111sss | if (!Pv) vmem(Rx++Ii):nt = Os.new
		.encoding = { .mask = 0xffe020f8, .op = 0x29e00078 },
		.id = HEX_INS_V6_VS32B_NT_NEW_NPRED_PI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 11 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 } }, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 21 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_VEC_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!) vmem(++):nt = .new",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00101011111xxxxxPPuvv00001111sss | if (!Pv) vmem(Rx++Mu):nt = Os.new
		.encoding = { .mask = 0xffe007f8, .op = 0x2be00078 },
		.id = HEX_INS_V6_VS32B_NT_NEW_NPRED_PPU,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 11 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 21 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_VEC_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!) vmem(++):nt = .new",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00101001011xxxxxPP000iii00100sss | vmem(Rx++Ii):nt = Os.new
		.encoding = { .mask = 0xffe038f8, .op = 0x29600020 },
		.id = HEX_INS_V6_VS32B_NT_NEW_PI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 } }, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "vmem(++):nt = .new",
	},
	{
		// 00101011011xxxxxPPu0000000100sss | vmem(Rx++Mu):nt = Os.new
		.encoding = { .mask = 0xffe01ff8, .op = 0x2b600020 },
		.id = HEX_INS_V6_VS32B_NT_NEW_PPU,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "vmem(++):nt = .new",
	},
	{
		// 00101000111tttttPPivviii01010sss | if (Pv) vmem(Rt+Ii):nt = Os.new
		.encoding = { .mask = 0xffe000f8, .op = 0x28e00050 },
		.id = HEX_INS_V6_VS32B_NT_NEW_PRED_AI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 11 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 }, { 0x1, 13 } }, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 19 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_VEC_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if () vmem(+):nt = .new",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00101001111xxxxxPP0vviii01010sss | if (Pv) vmem(Rx++Ii):nt = Os.new
		.encoding = { .mask = 0xffe020f8, .op = 0x29e00050 },
		.id = HEX_INS_V6_VS32B_NT_NEW_PRED_PI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 11 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 } }, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 20 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_VEC_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if () vmem(++):nt = .new",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00101011111xxxxxPPuvv00001010sss | if (Pv) vmem(Rx++Mu):nt = Os.new
		.encoding = { .mask = 0xffe007f8, .op = 0x2be00050 },
		.id = HEX_INS_V6_VS32B_NT_NEW_PRED_PPU,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 11 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 20 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_VEC_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if () vmem(++):nt = .new",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00101000111tttttPPivviii001sssss | if (!Pv) vmem(Rt+Ii):nt = Vs
		.encoding = { .mask = 0xffe000e0, .op = 0x28e00020 },
		.id = HEX_INS_V6_VS32B_NT_NPRED_AI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 11 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 }, { 0x1, 13 } }, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 20 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_VEC_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!) vmem(+):nt = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00101001111xxxxxPP0vviii001sssss | if (!Pv) vmem(Rx++Ii):nt = Vs
		.encoding = { .mask = 0xffe020e0, .op = 0x29e00020 },
		.id = HEX_INS_V6_VS32B_NT_NPRED_PI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 11 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 } }, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 21 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_VEC_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!) vmem(++):nt = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00101011111xxxxxPPuvv000001sssss | if (!Pv) vmem(Rx++Mu):nt = Vs
		.encoding = { .mask = 0xffe007e0, .op = 0x2be00020 },
		.id = HEX_INS_V6_VS32B_NT_NPRED_PPU,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 11 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 21 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_VEC_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!) vmem(++):nt = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00101000110tttttPPivviii001sssss | if (!Qv) vmem(Rt+Ii):nt = Vs
		.encoding = { .mask = 0xffe000e0, .op = 0x28c00020 },
		.id = HEX_INS_V6_VS32B_NT_NQPRED_AI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 11 } }, .reg_cls = HEX_REG_CLASS_HVX_QR, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 }, { 0x1, 13 } }, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 20 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "if (!) vmem(+):nt = ",
	},
	{
		// 00101001110xxxxxPP0vviii001sssss | if (!Qv) vmem(Rx++Ii):nt = Vs
		.encoding = { .mask = 0xffe020e0, .op = 0x29c00020 },
		.id = HEX_INS_V6_VS32B_NT_NQPRED_PI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 11 } }, .reg_cls = HEX_REG_CLASS_HVX_QR, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 } }, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 21 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "if (!) vmem(++):nt = ",
	},
	{
		// 00101011110xxxxxPPuvv000001sssss | if (!Qv) vmem(Rx++Mu):nt = Vs
		.encoding = { .mask = 0xffe007e0, .op = 0x2bc00020 },
		.id = HEX_INS_V6_VS32B_NT_NQPRED_PPU,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 11 } }, .reg_cls = HEX_REG_CLASS_HVX_QR, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 21 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "if (!) vmem(++):nt = ",
	},
	{
		// 00101001011xxxxxPP000iii000sssss | vmem(Rx++Ii):nt = Vs
		.encoding = { .mask = 0xffe038e0, .op = 0x29600000 },
		.id = HEX_INS_V6_VS32B_NT_PI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 } }, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "vmem(++):nt = ",
	},
	{
		// 00101011011xxxxxPPu00000000sssss | vmem(Rx++Mu):nt = Vs
		.encoding = { .mask = 0xffe01fe0, .op = 0x2b600000 },
		.id = HEX_INS_V6_VS32B_NT_PPU,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "vmem(++):nt = ",
	},
	{
		// 00101000111tttttPPivviii000sssss | if (Pv) vmem(Rt+Ii):nt = Vs
		.encoding = { .mask = 0xffe000e0, .op = 0x28e00000 },
		.id = HEX_INS_V6_VS32B_NT_PRED_AI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 11 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 }, { 0x1, 13 } }, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 19 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_VEC_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if () vmem(+):nt = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00101001111xxxxxPP0vviii000sssss | if (Pv) vmem(Rx++Ii):nt = Vs
		.encoding = { .mask = 0xffe020e0, .op = 0x29e00000 },
		.id = HEX_INS_V6_VS32B_NT_PRED_PI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 11 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 } }, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 20 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_VEC_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if () vmem(++):nt = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00101011111xxxxxPPuvv000000sssss | if (Pv) vmem(Rx++Mu):nt = Vs
		.encoding = { .mask = 0xffe007e0, .op = 0x2be00000 },
		.id = HEX_INS_V6_VS32B_NT_PRED_PPU,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 11 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 20 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_VEC_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if () vmem(++):nt = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00101000110tttttPPivviii000sssss | if (Qv) vmem(Rt+Ii):nt = Vs
		.encoding = { .mask = 0xffe000e0, .op = 0x28c00000 },
		.id = HEX_INS_V6_VS32B_NT_QPRED_AI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 11 } }, .reg_cls = HEX_REG_CLASS_HVX_QR, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 }, { 0x1, 13 } }, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 19 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "if () vmem(+):nt = ",
	},
	{
		// 00101001110xxxxxPP0vviii000sssss | if (Qv) vmem(Rx++Ii):nt = Vs
		.encoding = { .mask = 0xffe020e0, .op = 0x29c00000 },
		.id = HEX_INS_V6_VS32B_NT_QPRED_PI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 11 } }, .reg_cls = HEX_REG_CLASS_HVX_QR, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 } }, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 20 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "if () vmem(++):nt = ",
	},
	{
		// 00101011110xxxxxPPuvv000000sssss | if (Qv) vmem(Rx++Mu):nt = Vs
		.encoding = { .mask = 0xffe007e0, .op = 0x2bc00000 },
		.id = HEX_INS_V6_VS32B_NT_QPRED_PPU,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 11 } }, .reg_cls = HEX_REG_CLASS_HVX_QR, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 20 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "if () vmem(++):nt = ",
	},
	{
		// 00101001001xxxxxPP000iii000sssss | vmem(Rx++Ii) = Vs
		.encoding = { .mask = 0xffe038e0, .op = 0x29200000 },
		.id = HEX_INS_V6_VS32B_PI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 } }, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "vmem(++) = ",
	},
	{
		// 00101011001xxxxxPPu00000000sssss | vmem(Rx++Mu) = Vs
		.encoding = { .mask = 0xffe01fe0, .op = 0x2b200000 },
		.id = HEX_INS_V6_VS32B_PPU,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "vmem(++) = ",
	},
	{
		// 00101000101tttttPPivviii000sssss | if (Pv) vmem(Rt+Ii) = Vs
		.encoding = { .mask = 0xffe000e0, .op = 0x28a00000 },
		.id = HEX_INS_V6_VS32B_PRED_AI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 11 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 }, { 0x1, 13 } }, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 16 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_VEC_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if () vmem(+) = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00101001101xxxxxPP0vviii000sssss | if (Pv) vmem(Rx++Ii) = Vs
		.encoding = { .mask = 0xffe020e0, .op = 0x29a00000 },
		.id = HEX_INS_V6_VS32B_PRED_PI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 11 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 } }, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 17 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_VEC_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if () vmem(++) = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00101011101xxxxxPPuvv000000sssss | if (Pv) vmem(Rx++Mu) = Vs
		.encoding = { .mask = 0xffe007e0, .op = 0x2ba00000 },
		.id = HEX_INS_V6_VS32B_PRED_PPU,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 11 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 17 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_VEC_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if () vmem(++) = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00101000100tttttPPivviii000sssss | if (Qv) vmem(Rt+Ii) = Vs
		.encoding = { .mask = 0xffe000e0, .op = 0x28800000 },
		.id = HEX_INS_V6_VS32B_QPRED_AI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 11 } }, .reg_cls = HEX_REG_CLASS_HVX_QR, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 }, { 0x1, 13 } }, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 16 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "if () vmem(+) = ",
	},
	{
		// 00101001100xxxxxPP0vviii000sssss | if (Qv) vmem(Rx++Ii) = Vs
		.encoding = { .mask = 0xffe020e0, .op = 0x29800000 },
		.id = HEX_INS_V6_VS32B_QPRED_PI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 11 } }, .reg_cls = HEX_REG_CLASS_HVX_QR, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 } }, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 17 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "if () vmem(++) = ",
	},
	{
		// 00101011100xxxxxPPuvv000000sssss | if (Qv) vmem(Rx++Mu) = Vs
		.encoding = { .mask = 0xffe007e0, .op = 0x2b800000 },
		.id = HEX_INS_V6_VS32B_QPRED_PPU,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 11 } }, .reg_cls = HEX_REG_CLASS_HVX_QR, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 17 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "if () vmem(++) = ",
	},
	{
		// 00101000001tttttPPi00iii00101000 | vmem(Rt+Ii):scatter_release
		.encoding = { .mask = 0xffe018ff, .op = 0x28200028 },
		.id = HEX_INS_V6_VS32B_SRLS_AI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 }, { 0x1, 13 } }, .syntax = 6 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "vmem(+):scatter_release",
	},
	{
		// 00101001001xxxxxPP000iii00101000 | vmem(Rx++Ii):scatter_release
		.encoding = { .mask = 0xffe038ff, .op = 0x29200028 },
		.id = HEX_INS_V6_VS32B_SRLS_PI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 } }, .syntax = 7 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "vmem(++):scatter_release",
	},
	{
		// 00101011001xxxxxPPu0000000101000 | vmem(Rx++Mu):scatter_release
		.encoding = { .mask = 0xffe01fff, .op = 0x2b200028 },
		.id = HEX_INS_V6_VS32B_SRLS_PPU,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 7 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "vmem(++):scatter_release",
	},
	{
		// 00101111000tttttPPu00001000vvvvv | vtmp.h = vgather(Rt,Mu,Vv.h).h
		.encoding = { .mask = 0xffe01fe0, .op = 0x2f000100 },
		.id = HEX_INS_V6_VGATHERMH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 19 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "VTMP.h = vgather(,,.h).h",
	},
	{
		// 00101111000tttttPPu001010ssvvvvv | if (Qs) vtmp.h = vgather(Rt,Mu,Vv.h).h
		.encoding = { .mask = 0xffe01f80, .op = 0x2f000500 },
		.id = HEX_INS_V6_VGATHERMHQ,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 5 } }, .reg_cls = HEX_REG_CLASS_HVX_QR, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 23 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 24 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 25 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "if () VTMP.h = vgather(,,.h).h",
	},
	{
		// 00101111000tttttPPu00010000vvvvv | vtmp.h = vgather(Rt,Mu,Vvv.w).h
		.encoding = { .mask = 0xffe01fe0, .op = 0x2f000200 },
		.id = HEX_INS_V6_VGATHERMHW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 19 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "VTMP.h = vgather(,,.w).h",
	},
	{
		// 00101111000tttttPPu001100ssvvvvv | if (Qs) vtmp.h = vgather(Rt,Mu,Vvv.w).h
		.encoding = { .mask = 0xffe01f80, .op = 0x2f000600 },
		.id = HEX_INS_V6_VGATHERMHWQ,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 5 } }, .reg_cls = HEX_REG_CLASS_HVX_QR, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 23 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 24 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 25 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "if () VTMP.h = vgather(,,.w).h",
	},
	{
		// 00101111000tttttPPu00000000vvvvv | vtmp.w = vgather(Rt,Mu,Vv.w).w
		.encoding = { .mask = 0xffe01fe0, .op = 0x2f000000 },
		.id = HEX_INS_V6_VGATHERMW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 19 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "VTMP.w = vgather(,,.w).w",
	},
	{
		// 00101111000tttttPPu001000ssvvvvv | if (Qs) vtmp.w = vgather(Rt,Mu,Vv.w).w
		.encoding = { .mask = 0xffe01f80, .op = 0x2f000400 },
		.id = HEX_INS_V6_VGATHERMWQ,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 5 } }, .reg_cls = HEX_REG_CLASS_HVX_QR, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 23 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 24 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 25 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "if () VTMP.w = vgather(,,.w).w",
	},
	{
		// 00101111001tttttPPuvvvvv001wwwww | vscatter(Rt,Mu,Vv.h).h = Vw
		.encoding = { .mask = 0xffe000e0, .op = 0x2f200020 },
		.id = HEX_INS_V6_VSCATTERMH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 19 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "vscatter(,,.h).h = ",
	},
	{
		// 00101111001tttttPPuvvvvv101wwwww | vscatter(Rt,Mu,Vv.h).h += Vw
		.encoding = { .mask = 0xffe000e0, .op = 0x2f2000a0 },
		.id = HEX_INS_V6_VSCATTERMH_ADD,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 20 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "vscatter(,,.h).h += ",
	},
	{
		// 00101111100tttttPPuvvvvv1sswwwww | if (Qs) vscatter(Rt,Mu,Vv.h).h = Vw
		.encoding = { .mask = 0xffe00080, .op = 0x2f800080 },
		.id = HEX_INS_V6_VSCATTERMHQ,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 5 } }, .reg_cls = HEX_REG_CLASS_HVX_QR, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 25 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "if () vscatter(,,.h).h = ",
	},
	{
		// 00101111001tttttPPuvvvvv010wwwww | vscatter(Rt,Mu,Vvv.w).h = Vw
		.encoding = { .mask = 0xffe000e0, .op = 0x2f200040 },
		.id = HEX_INS_V6_VSCATTERMHW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 19 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "vscatter(,,.w).h = ",
	},
	{
		// 00101111001tttttPPuvvvvv110wwwww | vscatter(Rt,Mu,Vvv.w).h += Vw
		.encoding = { .mask = 0xffe000e0, .op = 0x2f2000c0 },
		.id = HEX_INS_V6_VSCATTERMHW_ADD,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 20 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "vscatter(,,.w).h += ",
	},
	{
		// 00101111101tttttPPuvvvvv0sswwwww | if (Qs) vscatter(Rt,Mu,Vvv.w).h = Vw
		.encoding = { .mask = 0xffe00080, .op = 0x2fa00000 },
		.id = HEX_INS_V6_VSCATTERMHWQ,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 5 } }, .reg_cls = HEX_REG_CLASS_HVX_QR, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_WR, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 25 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "if () vscatter(,,.w).h = ",
	},
	{
		// 00101111001tttttPPuvvvvv000wwwww | vscatter(Rt,Mu,Vv.w).w = Vw
		.encoding = { .mask = 0xffe000e0, .op = 0x2f200000 },
		.id = HEX_INS_V6_VSCATTERMW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 19 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "vscatter(,,.w).w = ",
	},
	{
		// 00101111001tttttPPuvvvvv100wwwww | vscatter(Rt,Mu,Vv.w).w += Vw
		.encoding = { .mask = 0xffe000e0, .op = 0x2f200080 },
		.id = HEX_INS_V6_VSCATTERMW_ADD,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 20 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "vscatter(,,.w).w += ",
	},
	{
		// 00101111100tttttPPuvvvvv0sswwwww | if (Qs) vscatter(Rt,Mu,Vv.w).w = Vw
		.encoding = { .mask = 0xffe00080, .op = 0x2f800000 },
		.id = HEX_INS_V6_VSCATTERMWQ,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 5 } }, .reg_cls = HEX_REG_CLASS_HVX_QR, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 25 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "if () vscatter(,,.w).w = ",
	},
	{
		// 00101100000tttttPPi00iii00000000 | z = vmem(Rt+Ii)
		.encoding = { .mask = 0xffe018ff, .op = 0x2c000000 },
		.id = HEX_INS_V6_ZLD_AI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 }, { 0x1, 13 } }, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "z = vmem(+)",
	},
	{
		// 00101101000xxxxxPP000iii00000000 | z = vmem(Rx++Ii)
		.encoding = { .mask = 0xffe038ff, .op = 0x2d000000 },
		.id = HEX_INS_V6_ZLD_PI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 } }, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "z = vmem(++)",
	},
	{
		// 00101101000xxxxxPPu0000000000001 | z = vmem(Rx++Mu)
		.encoding = { .mask = 0xffe01fff, .op = 0x2d000001 },
		.id = HEX_INS_V6_ZLD_PPU,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "z = vmem(++)",
	},
	{
		// 00101100100tttttPPivviii00000000 | if (Pv) z = vmem(Rt+Ii)
		.encoding = { .mask = 0xffe000ff, .op = 0x2c800000 },
		.id = HEX_INS_V6_ZLD_PRED_AI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 11 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 }, { 0x1, 13 } }, .syntax = 16 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_VEC_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if () z = vmem(+)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00101101100xxxxxPP0vviii00000000 | if (Pv) z = vmem(Rx++Ii)
		.encoding = { .mask = 0xffe020ff, .op = 0x2d800000 },
		.id = HEX_INS_V6_ZLD_PRED_PI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 11 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 8 } }, .syntax = 17 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_VEC_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if () z = vmem(++)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00101101100xxxxxPPuvv00000000001 | if (Pv) z = vmem(Rx++Mu)
		.encoding = { .mask = 0xffe007ff, .op = 0x2d800001 },
		.id = HEX_INS_V6_ZLD_PRED_PPU,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 11 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 17 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_VEC_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if () z = vmem(++)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{ { 0 } },
};

static const HexInsnTemplate templates_normal_0x3[] = {
	{
		// 00111110000sssssPP0iiiiii00ttttt | memb(Rs+Ii) += Rt
		.encoding = { .mask = 0xffe02060, .op = 0x3e000000 },
		.id = HEX_INS_L4_ADD_MEMOPB_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x6, 7 } }, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memb(+) += ",
	},
	{
		// 00111110001sssssPP0iiiiii00ttttt | memh(Rs+Ii) += Rt
		.encoding = { .mask = 0xffe02060, .op = 0x3e200000 },
		.id = HEX_INS_L4_ADD_MEMOPH_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x6, 7 } }, .imm_scale = 1, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memh(+) += ",
	},
	{
		// 00111110010sssssPP0iiiiii00ttttt | memw(Rs+Ii) += Rt
		.encoding = { .mask = 0xffe02060, .op = 0x3e400000 },
		.id = HEX_INS_L4_ADD_MEMOPW_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x6, 7 } }, .imm_scale = 2, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memw(+) += ",
	},
	{
		// 00111110000sssssPP0iiiiii10ttttt | memb(Rs+Ii) &= Rt
		.encoding = { .mask = 0xffe02060, .op = 0x3e000040 },
		.id = HEX_INS_L4_AND_MEMOPB_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x6, 7 } }, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memb(+) &= ",
	},
	{
		// 00111110001sssssPP0iiiiii10ttttt | memh(Rs+Ii) &= Rt
		.encoding = { .mask = 0xffe02060, .op = 0x3e200040 },
		.id = HEX_INS_L4_AND_MEMOPH_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x6, 7 } }, .imm_scale = 1, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memh(+) &= ",
	},
	{
		// 00111110010sssssPP0iiiiii10ttttt | memw(Rs+Ii) &= Rt
		.encoding = { .mask = 0xffe02060, .op = 0x3e400040 },
		.id = HEX_INS_L4_AND_MEMOPW_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x6, 7 } }, .imm_scale = 2, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memw(+) &= ",
	},
	{
		// 00111111000sssssPP0iiiiii00IIIII | memb(Rs+Ii) += II
		.encoding = { .mask = 0xffe02060, .op = 0x3f000000 },
		.id = HEX_INS_L4_IADD_MEMOPB_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x6, 7 } }, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 0 } }, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memb(+) += ",
	},
	{
		// 00111111001sssssPP0iiiiii00IIIII | memh(Rs+Ii) += II
		.encoding = { .mask = 0xffe02060, .op = 0x3f200000 },
		.id = HEX_INS_L4_IADD_MEMOPH_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x6, 7 } }, .imm_scale = 1, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 0 } }, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memh(+) += ",
	},
	{
		// 00111111010sssssPP0iiiiii00IIIII | memw(Rs+Ii) += II
		.encoding = { .mask = 0xffe02060, .op = 0x3f400000 },
		.id = HEX_INS_L4_IADD_MEMOPW_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x6, 7 } }, .imm_scale = 2, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 0 } }, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memw(+) += ",
	},
	{
		// 00111111000sssssPP0iiiiii10IIIII | memb(Rs+Ii) = clrbit(II)
		.encoding = { .mask = 0xffe02060, .op = 0x3f000040 },
		.id = HEX_INS_L4_IAND_MEMOPB_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x6, 7 } }, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 0 } }, .syntax = 17 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memb(+) = clrbit()",
	},
	{
		// 00111111001sssssPP0iiiiii10IIIII | memh(Rs+Ii) = clrbit(II)
		.encoding = { .mask = 0xffe02060, .op = 0x3f200040 },
		.id = HEX_INS_L4_IAND_MEMOPH_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x6, 7 } }, .imm_scale = 1, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 0 } }, .syntax = 17 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memh(+) = clrbit()",
	},
	{
		// 00111111010sssssPP0iiiiii10IIIII | memw(Rs+Ii) = clrbit(II)
		.encoding = { .mask = 0xffe02060, .op = 0x3f400040 },
		.id = HEX_INS_L4_IAND_MEMOPW_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x6, 7 } }, .imm_scale = 2, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 0 } }, .syntax = 17 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memw(+) = clrbit()",
	},
	{
		// 00111111000sssssPP0iiiiii11IIIII | memb(Rs+Ii) = setbit(II)
		.encoding = { .mask = 0xffe02060, .op = 0x3f000060 },
		.id = HEX_INS_L4_IOR_MEMOPB_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x6, 7 } }, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 0 } }, .syntax = 17 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memb(+) = setbit()",
	},
	{
		// 00111111001sssssPP0iiiiii11IIIII | memh(Rs+Ii) = setbit(II)
		.encoding = { .mask = 0xffe02060, .op = 0x3f200060 },
		.id = HEX_INS_L4_IOR_MEMOPH_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x6, 7 } }, .imm_scale = 1, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 0 } }, .syntax = 17 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memh(+) = setbit()",
	},
	{
		// 00111111010sssssPP0iiiiii11IIIII | memw(Rs+Ii) = setbit(II)
		.encoding = { .mask = 0xffe02060, .op = 0x3f400060 },
		.id = HEX_INS_L4_IOR_MEMOPW_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x6, 7 } }, .imm_scale = 2, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 0 } }, .syntax = 17 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memw(+) = setbit()",
	},
	{
		// 00111111000sssssPP0iiiiii01IIIII | memb(Rs+Ii) -= II
		.encoding = { .mask = 0xffe02060, .op = 0x3f000020 },
		.id = HEX_INS_L4_ISUB_MEMOPB_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x6, 7 } }, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 0 } }, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memb(+) -= ",
	},
	{
		// 00111111001sssssPP0iiiiii01IIIII | memh(Rs+Ii) -= II
		.encoding = { .mask = 0xffe02060, .op = 0x3f200020 },
		.id = HEX_INS_L4_ISUB_MEMOPH_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x6, 7 } }, .imm_scale = 1, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 0 } }, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memh(+) -= ",
	},
	{
		// 00111111010sssssPP0iiiiii01IIIII | memw(Rs+Ii) -= II
		.encoding = { .mask = 0xffe02060, .op = 0x3f400020 },
		.id = HEX_INS_L4_ISUB_MEMOPW_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x6, 7 } }, .imm_scale = 2, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 0 } }, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memw(+) -= ",
	},
	{
		// 00111010000sssssPPittttti00ddddd | Rd = memb(Rs+Rt<<Ii)
		.encoding = { .mask = 0xffe00060, .op = 0x3a000000 },
		.id = HEX_INS_L4_LOADRB_RR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x1, 7 }, { 0x1, 13 } }, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memb(+<<)",
	},
	{
		// 00111010110sssssPPittttti00ddddd | Rdd = memd(Rs+Rt<<Ii)
		.encoding = { .mask = 0xffe00060, .op = 0x3ac00000 },
		.id = HEX_INS_L4_LOADRD_RR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x1, 7 }, { 0x1, 13 } }, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memd(+<<)",
	},
	{
		// 00111010010sssssPPittttti00ddddd | Rd = memh(Rs+Rt<<Ii)
		.encoding = { .mask = 0xffe00060, .op = 0x3a400000 },
		.id = HEX_INS_L4_LOADRH_RR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x1, 7 }, { 0x1, 13 } }, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memh(+<<)",
	},
	{
		// 00111010100sssssPPittttti00ddddd | Rd = memw(Rs+Rt<<Ii)
		.encoding = { .mask = 0xffe00060, .op = 0x3a800000 },
		.id = HEX_INS_L4_LOADRI_RR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x1, 7 }, { 0x1, 13 } }, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memw(+<<)",
	},
	{
		// 00111010001sssssPPittttti00ddddd | Rd = memub(Rs+Rt<<Ii)
		.encoding = { .mask = 0xffe00060, .op = 0x3a200000 },
		.id = HEX_INS_L4_LOADRUB_RR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x1, 7 }, { 0x1, 13 } }, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memub(+<<)",
	},
	{
		// 00111010011sssssPPittttti00ddddd | Rd = memuh(Rs+Rt<<Ii)
		.encoding = { .mask = 0xffe00060, .op = 0x3a600000 },
		.id = HEX_INS_L4_LOADRUH_RR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x1, 7 }, { 0x1, 13 } }, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memuh(+<<)",
	},
	{
		// 00111110000sssssPP0iiiiii11ttttt | memb(Rs+Ii) |= Rt
		.encoding = { .mask = 0xffe02060, .op = 0x3e000060 },
		.id = HEX_INS_L4_OR_MEMOPB_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x6, 7 } }, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memb(+) |= ",
	},
	{
		// 00111110001sssssPP0iiiiii11ttttt | memh(Rs+Ii) |= Rt
		.encoding = { .mask = 0xffe02060, .op = 0x3e200060 },
		.id = HEX_INS_L4_OR_MEMOPH_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x6, 7 } }, .imm_scale = 1, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memh(+) |= ",
	},
	{
		// 00111110010sssssPP0iiiiii11ttttt | memw(Rs+Ii) |= Rt
		.encoding = { .mask = 0xffe02060, .op = 0x3e400060 },
		.id = HEX_INS_L4_OR_MEMOPW_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x6, 7 } }, .imm_scale = 2, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memw(+) |= ",
	},
	{
		// 00110001000sssssPPitttttivvddddd | if (!Pv) Rd = memb(Rs+Rt<<Ii)
		.encoding = { .mask = 0xffe00000, .op = 0x31000000 },
		.id = HEX_INS_L4_PLOADRBF_RR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 5 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x1, 7 }, { 0x1, 13 } }, .syntax = 18 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!)  = memb(+<<)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00110011000sssssPPitttttivvddddd | if (!Pv.new) Rd = memb(Rs+Rt<<Ii)
		.encoding = { .mask = 0xffe00000, .op = 0x33000000 },
		.id = HEX_INS_L4_PLOADRBFNEW_RR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 5 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 19 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 20 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x1, 7 }, { 0x1, 13 } }, .syntax = 22 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!.new)  = memb(+<<)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00110000000sssssPPitttttivvddddd | if (Pv) Rd = memb(Rs+Rt<<Ii)
		.encoding = { .mask = 0xffe00000, .op = 0x30000000 },
		.id = HEX_INS_L4_PLOADRBT_RR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 5 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x1, 7 }, { 0x1, 13 } }, .syntax = 17 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if ()  = memb(+<<)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00110010000sssssPPitttttivvddddd | if (Pv.new) Rd = memb(Rs+Rt<<Ii)
		.encoding = { .mask = 0xffe00000, .op = 0x32000000 },
		.id = HEX_INS_L4_PLOADRBTNEW_RR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 5 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 19 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x1, 7 }, { 0x1, 13 } }, .syntax = 21 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (.new)  = memb(+<<)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00110001110sssssPPitttttivvddddd | if (!Pv) Rdd = memd(Rs+Rt<<Ii)
		.encoding = { .mask = 0xffe00000, .op = 0x31c00000 },
		.id = HEX_INS_L4_PLOADRDF_RR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 5 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x1, 7 }, { 0x1, 13 } }, .syntax = 18 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!)  = memd(+<<)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00110011110sssssPPitttttivvddddd | if (!Pv.new) Rdd = memd(Rs+Rt<<Ii)
		.encoding = { .mask = 0xffe00000, .op = 0x33c00000 },
		.id = HEX_INS_L4_PLOADRDFNEW_RR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 5 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 19 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 20 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x1, 7 }, { 0x1, 13 } }, .syntax = 22 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!.new)  = memd(+<<)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00110000110sssssPPitttttivvddddd | if (Pv) Rdd = memd(Rs+Rt<<Ii)
		.encoding = { .mask = 0xffe00000, .op = 0x30c00000 },
		.id = HEX_INS_L4_PLOADRDT_RR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 5 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x1, 7 }, { 0x1, 13 } }, .syntax = 17 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if ()  = memd(+<<)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00110010110sssssPPitttttivvddddd | if (Pv.new) Rdd = memd(Rs+Rt<<Ii)
		.encoding = { .mask = 0xffe00000, .op = 0x32c00000 },
		.id = HEX_INS_L4_PLOADRDTNEW_RR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 5 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 19 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x1, 7 }, { 0x1, 13 } }, .syntax = 21 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (.new)  = memd(+<<)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00110001010sssssPPitttttivvddddd | if (!Pv) Rd = memh(Rs+Rt<<Ii)
		.encoding = { .mask = 0xffe00000, .op = 0x31400000 },
		.id = HEX_INS_L4_PLOADRHF_RR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 5 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x1, 7 }, { 0x1, 13 } }, .syntax = 18 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!)  = memh(+<<)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00110011010sssssPPitttttivvddddd | if (!Pv.new) Rd = memh(Rs+Rt<<Ii)
		.encoding = { .mask = 0xffe00000, .op = 0x33400000 },
		.id = HEX_INS_L4_PLOADRHFNEW_RR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 5 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 19 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 20 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x1, 7 }, { 0x1, 13 } }, .syntax = 22 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!.new)  = memh(+<<)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00110000010sssssPPitttttivvddddd | if (Pv) Rd = memh(Rs+Rt<<Ii)
		.encoding = { .mask = 0xffe00000, .op = 0x30400000 },
		.id = HEX_INS_L4_PLOADRHT_RR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 5 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x1, 7 }, { 0x1, 13 } }, .syntax = 17 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if ()  = memh(+<<)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00110010010sssssPPitttttivvddddd | if (Pv.new) Rd = memh(Rs+Rt<<Ii)
		.encoding = { .mask = 0xffe00000, .op = 0x32400000 },
		.id = HEX_INS_L4_PLOADRHTNEW_RR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 5 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 19 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x1, 7 }, { 0x1, 13 } }, .syntax = 21 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (.new)  = memh(+<<)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00110001100sssssPPitttttivvddddd | if (!Pv) Rd = memw(Rs+Rt<<Ii)
		.encoding = { .mask = 0xffe00000, .op = 0x31800000 },
		.id = HEX_INS_L4_PLOADRIF_RR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 5 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x1, 7 }, { 0x1, 13 } }, .syntax = 18 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!)  = memw(+<<)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00110011100sssssPPitttttivvddddd | if (!Pv.new) Rd = memw(Rs+Rt<<Ii)
		.encoding = { .mask = 0xffe00000, .op = 0x33800000 },
		.id = HEX_INS_L4_PLOADRIFNEW_RR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 5 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 19 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 20 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x1, 7 }, { 0x1, 13 } }, .syntax = 22 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!.new)  = memw(+<<)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00110000100sssssPPitttttivvddddd | if (Pv) Rd = memw(Rs+Rt<<Ii)
		.encoding = { .mask = 0xffe00000, .op = 0x30800000 },
		.id = HEX_INS_L4_PLOADRIT_RR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 5 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x1, 7 }, { 0x1, 13 } }, .syntax = 17 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if ()  = memw(+<<)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00110010100sssssPPitttttivvddddd | if (Pv.new) Rd = memw(Rs+Rt<<Ii)
		.encoding = { .mask = 0xffe00000, .op = 0x32800000 },
		.id = HEX_INS_L4_PLOADRITNEW_RR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 5 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 19 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x1, 7 }, { 0x1, 13 } }, .syntax = 21 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (.new)  = memw(+<<)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00110001001sssssPPitttttivvddddd | if (!Pv) Rd = memub(Rs+Rt<<Ii)
		.encoding = { .mask = 0xffe00000, .op = 0x31200000 },
		.id = HEX_INS_L4_PLOADRUBF_RR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 5 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x1, 7 }, { 0x1, 13 } }, .syntax = 19 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!)  = memub(+<<)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00110011001sssssPPitttttivvddddd | if (!Pv.new) Rd = memub(Rs+Rt<<Ii)
		.encoding = { .mask = 0xffe00000, .op = 0x33200000 },
		.id = HEX_INS_L4_PLOADRUBFNEW_RR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 5 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 20 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 21 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x1, 7 }, { 0x1, 13 } }, .syntax = 23 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!.new)  = memub(+<<)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00110000001sssssPPitttttivvddddd | if (Pv) Rd = memub(Rs+Rt<<Ii)
		.encoding = { .mask = 0xffe00000, .op = 0x30200000 },
		.id = HEX_INS_L4_PLOADRUBT_RR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 5 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x1, 7 }, { 0x1, 13 } }, .syntax = 18 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if ()  = memub(+<<)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00110010001sssssPPitttttivvddddd | if (Pv.new) Rd = memub(Rs+Rt<<Ii)
		.encoding = { .mask = 0xffe00000, .op = 0x32200000 },
		.id = HEX_INS_L4_PLOADRUBTNEW_RR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 5 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 19 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 20 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x1, 7 }, { 0x1, 13 } }, .syntax = 22 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (.new)  = memub(+<<)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00110001011sssssPPitttttivvddddd | if (!Pv) Rd = memuh(Rs+Rt<<Ii)
		.encoding = { .mask = 0xffe00000, .op = 0x31600000 },
		.id = HEX_INS_L4_PLOADRUHF_RR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 5 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x1, 7 }, { 0x1, 13 } }, .syntax = 19 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!)  = memuh(+<<)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00110011011sssssPPitttttivvddddd | if (!Pv.new) Rd = memuh(Rs+Rt<<Ii)
		.encoding = { .mask = 0xffe00000, .op = 0x33600000 },
		.id = HEX_INS_L4_PLOADRUHFNEW_RR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 5 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 20 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 21 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x1, 7 }, { 0x1, 13 } }, .syntax = 23 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!.new)  = memuh(+<<)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00110000011sssssPPitttttivvddddd | if (Pv) Rd = memuh(Rs+Rt<<Ii)
		.encoding = { .mask = 0xffe00000, .op = 0x30600000 },
		.id = HEX_INS_L4_PLOADRUHT_RR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 5 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x1, 7 }, { 0x1, 13 } }, .syntax = 18 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if ()  = memuh(+<<)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00110010011sssssPPitttttivvddddd | if (Pv.new) Rd = memuh(Rs+Rt<<Ii)
		.encoding = { .mask = 0xffe00000, .op = 0x32600000 },
		.id = HEX_INS_L4_PLOADRUHTNEW_RR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 5 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 19 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 20 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x1, 7 }, { 0x1, 13 } }, .syntax = 22 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (.new)  = memuh(+<<)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00111110000sssssPP0iiiiii01ttttt | memb(Rs+Ii) -= Rt
		.encoding = { .mask = 0xffe02060, .op = 0x3e000020 },
		.id = HEX_INS_L4_SUB_MEMOPB_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x6, 7 } }, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memb(+) -= ",
	},
	{
		// 00111110001sssssPP0iiiiii01ttttt | memh(Rs+Ii) -= Rt
		.encoding = { .mask = 0xffe02060, .op = 0x3e200020 },
		.id = HEX_INS_L4_SUB_MEMOPH_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x6, 7 } }, .imm_scale = 1, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memh(+) -= ",
	},
	{
		// 00111110010sssssPP0iiiiii01ttttt | memw(Rs+Ii) -= Rt
		.encoding = { .mask = 0xffe02060, .op = 0x3e400020 },
		.id = HEX_INS_L4_SUB_MEMOPW_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x6, 7 } }, .imm_scale = 2, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memw(+) -= ",
	},
	{
		// 00110101000sssssPPiuuuuuivvttttt | if (!Pv) memb(Rs+Ru<<Ii) = Rt
		.encoding = { .mask = 0xffe00000, .op = 0x35000000 },
		.id = HEX_INS_S4_PSTORERBF_RR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 5 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x1, 7 }, { 0x1, 13 } }, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 19 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!) memb(+<<) = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00110111000sssssPPiuuuuuivvttttt | if (!Pv.new) memb(Rs+Ru<<Ii) = Rt
		.encoding = { .mask = 0xffe00000, .op = 0x37000000 },
		.id = HEX_INS_S4_PSTORERBFNEW_RR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 5 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x1, 7 }, { 0x1, 13 } }, .syntax = 19 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 23 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!.new) memb(+<<) = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00110101101sssssPPiuuuuuivv00ttt | if (!Pv) memb(Rs+Ru<<Ii) = Nt.new
		.encoding = { .mask = 0xffe00018, .op = 0x35a00000 },
		.id = HEX_INS_S4_PSTORERBNEWF_RR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 5 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x1, 7 }, { 0x1, 13 } }, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 19 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!) memb(+<<) = .new",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00110111101sssssPPiuuuuuivv00ttt | if (!Pv.new) memb(Rs+Ru<<Ii) = Nt.new
		.encoding = { .mask = 0xffe00018, .op = 0x37a00000 },
		.id = HEX_INS_S4_PSTORERBNEWFNEW_RR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 5 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x1, 7 }, { 0x1, 13 } }, .syntax = 19 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 23 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!.new) memb(+<<) = .new",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00110100101sssssPPiuuuuuivv00ttt | if (Pv) memb(Rs+Ru<<Ii) = Nt.new
		.encoding = { .mask = 0xffe00018, .op = 0x34a00000 },
		.id = HEX_INS_S4_PSTORERBNEWT_RR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 5 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x1, 7 }, { 0x1, 13 } }, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 18 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if () memb(+<<) = .new",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00110110101sssssPPiuuuuuivv00ttt | if (Pv.new) memb(Rs+Ru<<Ii) = Nt.new
		.encoding = { .mask = 0xffe00018, .op = 0x36a00000 },
		.id = HEX_INS_S4_PSTORERBNEWTNEW_RR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 5 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x1, 7 }, { 0x1, 13 } }, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 22 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (.new) memb(+<<) = .new",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00110100000sssssPPiuuuuuivvttttt | if (Pv) memb(Rs+Ru<<Ii) = Rt
		.encoding = { .mask = 0xffe00000, .op = 0x34000000 },
		.id = HEX_INS_S4_PSTORERBT_RR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 5 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x1, 7 }, { 0x1, 13 } }, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 18 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if () memb(+<<) = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00110110000sssssPPiuuuuuivvttttt | if (Pv.new) memb(Rs+Ru<<Ii) = Rt
		.encoding = { .mask = 0xffe00000, .op = 0x36000000 },
		.id = HEX_INS_S4_PSTORERBTNEW_RR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 5 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x1, 7 }, { 0x1, 13 } }, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 22 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (.new) memb(+<<) = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00110101110sssssPPiuuuuuivvttttt | if (!Pv) memd(Rs+Ru<<Ii) = Rtt
		.encoding = { .mask = 0xffe00000, .op = 0x35c00000 },
		.id = HEX_INS_S4_PSTORERDF_RR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 5 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x1, 7 }, { 0x1, 13 } }, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 19 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!) memd(+<<) = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00110111110sssssPPiuuuuuivvttttt | if (!Pv.new) memd(Rs+Ru<<Ii) = Rtt
		.encoding = { .mask = 0xffe00000, .op = 0x37c00000 },
		.id = HEX_INS_S4_PSTORERDFNEW_RR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 5 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x1, 7 }, { 0x1, 13 } }, .syntax = 19 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 23 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!.new) memd(+<<) = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00110100110sssssPPiuuuuuivvttttt | if (Pv) memd(Rs+Ru<<Ii) = Rtt
		.encoding = { .mask = 0xffe00000, .op = 0x34c00000 },
		.id = HEX_INS_S4_PSTORERDT_RR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 5 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x1, 7 }, { 0x1, 13 } }, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 18 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if () memd(+<<) = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00110110110sssssPPiuuuuuivvttttt | if (Pv.new) memd(Rs+Ru<<Ii) = Rtt
		.encoding = { .mask = 0xffe00000, .op = 0x36c00000 },
		.id = HEX_INS_S4_PSTORERDTNEW_RR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 5 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x1, 7 }, { 0x1, 13 } }, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 22 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (.new) memd(+<<) = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00110101011sssssPPiuuuuuivvttttt | if (!Pv) memh(Rs+Ru<<Ii) = Rt.h
		.encoding = { .mask = 0xffe00000, .op = 0x35600000 },
		.id = HEX_INS_S4_PSTORERFF_RR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 5 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x1, 7 }, { 0x1, 13 } }, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 19 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!) memh(+<<) = .h",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00110111011sssssPPiuuuuuivvttttt | if (!Pv.new) memh(Rs+Ru<<Ii) = Rt.h
		.encoding = { .mask = 0xffe00000, .op = 0x37600000 },
		.id = HEX_INS_S4_PSTORERFFNEW_RR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 5 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x1, 7 }, { 0x1, 13 } }, .syntax = 19 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 23 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!.new) memh(+<<) = .h",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00110100011sssssPPiuuuuuivvttttt | if (Pv) memh(Rs+Ru<<Ii) = Rt.h
		.encoding = { .mask = 0xffe00000, .op = 0x34600000 },
		.id = HEX_INS_S4_PSTORERFT_RR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 5 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x1, 7 }, { 0x1, 13 } }, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 18 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if () memh(+<<) = .h",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00110110011sssssPPiuuuuuivvttttt | if (Pv.new) memh(Rs+Ru<<Ii) = Rt.h
		.encoding = { .mask = 0xffe00000, .op = 0x36600000 },
		.id = HEX_INS_S4_PSTORERFTNEW_RR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 5 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x1, 7 }, { 0x1, 13 } }, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 22 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (.new) memh(+<<) = .h",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00110101010sssssPPiuuuuuivvttttt | if (!Pv) memh(Rs+Ru<<Ii) = Rt
		.encoding = { .mask = 0xffe00000, .op = 0x35400000 },
		.id = HEX_INS_S4_PSTORERHF_RR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 5 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x1, 7 }, { 0x1, 13 } }, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 19 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!) memh(+<<) = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00110111010sssssPPiuuuuuivvttttt | if (!Pv.new) memh(Rs+Ru<<Ii) = Rt
		.encoding = { .mask = 0xffe00000, .op = 0x37400000 },
		.id = HEX_INS_S4_PSTORERHFNEW_RR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 5 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x1, 7 }, { 0x1, 13 } }, .syntax = 19 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 23 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!.new) memh(+<<) = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00110101101sssssPPiuuuuuivv01ttt | if (!Pv) memh(Rs+Ru<<Ii) = Nt.new
		.encoding = { .mask = 0xffe00018, .op = 0x35a00008 },
		.id = HEX_INS_S4_PSTORERHNEWF_RR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 5 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x1, 7 }, { 0x1, 13 } }, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 19 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!) memh(+<<) = .new",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00110111101sssssPPiuuuuuivv01ttt | if (!Pv.new) memh(Rs+Ru<<Ii) = Nt.new
		.encoding = { .mask = 0xffe00018, .op = 0x37a00008 },
		.id = HEX_INS_S4_PSTORERHNEWFNEW_RR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 5 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x1, 7 }, { 0x1, 13 } }, .syntax = 19 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 23 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!.new) memh(+<<) = .new",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00110100101sssssPPiuuuuuivv01ttt | if (Pv) memh(Rs+Ru<<Ii) = Nt.new
		.encoding = { .mask = 0xffe00018, .op = 0x34a00008 },
		.id = HEX_INS_S4_PSTORERHNEWT_RR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 5 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x1, 7 }, { 0x1, 13 } }, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 18 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if () memh(+<<) = .new",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00110110101sssssPPiuuuuuivv01ttt | if (Pv.new) memh(Rs+Ru<<Ii) = Nt.new
		.encoding = { .mask = 0xffe00018, .op = 0x36a00008 },
		.id = HEX_INS_S4_PSTORERHNEWTNEW_RR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 5 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x1, 7 }, { 0x1, 13 } }, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 22 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (.new) memh(+<<) = .new",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00110100010sssssPPiuuuuuivvttttt | if (Pv) memh(Rs+Ru<<Ii) = Rt
		.encoding = { .mask = 0xffe00000, .op = 0x34400000 },
		.id = HEX_INS_S4_PSTORERHT_RR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 5 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x1, 7 }, { 0x1, 13 } }, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 18 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if () memh(+<<) = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00110110010sssssPPiuuuuuivvttttt | if (Pv.new) memh(Rs+Ru<<Ii) = Rt
		.encoding = { .mask = 0xffe00000, .op = 0x36400000 },
		.id = HEX_INS_S4_PSTORERHTNEW_RR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 5 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x1, 7 }, { 0x1, 13 } }, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 22 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (.new) memh(+<<) = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00110101100sssssPPiuuuuuivvttttt | if (!Pv) memw(Rs+Ru<<Ii) = Rt
		.encoding = { .mask = 0xffe00000, .op = 0x35800000 },
		.id = HEX_INS_S4_PSTORERIF_RR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 5 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x1, 7 }, { 0x1, 13 } }, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 19 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!) memw(+<<) = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00110111100sssssPPiuuuuuivvttttt | if (!Pv.new) memw(Rs+Ru<<Ii) = Rt
		.encoding = { .mask = 0xffe00000, .op = 0x37800000 },
		.id = HEX_INS_S4_PSTORERIFNEW_RR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 5 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x1, 7 }, { 0x1, 13 } }, .syntax = 19 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 23 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!.new) memw(+<<) = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00110101101sssssPPiuuuuuivv10ttt | if (!Pv) memw(Rs+Ru<<Ii) = Nt.new
		.encoding = { .mask = 0xffe00018, .op = 0x35a00010 },
		.id = HEX_INS_S4_PSTORERINEWF_RR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 5 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x1, 7 }, { 0x1, 13 } }, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 19 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!) memw(+<<) = .new",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00110111101sssssPPiuuuuuivv10ttt | if (!Pv.new) memw(Rs+Ru<<Ii) = Nt.new
		.encoding = { .mask = 0xffe00018, .op = 0x37a00010 },
		.id = HEX_INS_S4_PSTORERINEWFNEW_RR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 5 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x1, 7 }, { 0x1, 13 } }, .syntax = 19 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 23 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!.new) memw(+<<) = .new",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00110100101sssssPPiuuuuuivv10ttt | if (Pv) memw(Rs+Ru<<Ii) = Nt.new
		.encoding = { .mask = 0xffe00018, .op = 0x34a00010 },
		.id = HEX_INS_S4_PSTORERINEWT_RR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 5 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x1, 7 }, { 0x1, 13 } }, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 18 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if () memw(+<<) = .new",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00110110101sssssPPiuuuuuivv10ttt | if (Pv.new) memw(Rs+Ru<<Ii) = Nt.new
		.encoding = { .mask = 0xffe00018, .op = 0x36a00010 },
		.id = HEX_INS_S4_PSTORERINEWTNEW_RR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 5 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x1, 7 }, { 0x1, 13 } }, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 22 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (.new) memw(+<<) = .new",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00110100100sssssPPiuuuuuivvttttt | if (Pv) memw(Rs+Ru<<Ii) = Rt
		.encoding = { .mask = 0xffe00000, .op = 0x34800000 },
		.id = HEX_INS_S4_PSTORERIT_RR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 5 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x1, 7 }, { 0x1, 13 } }, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 18 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if () memw(+<<) = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00110110100sssssPPiuuuuuivvttttt | if (Pv.new) memw(Rs+Ru<<Ii) = Rt
		.encoding = { .mask = 0xffe00000, .op = 0x36800000 },
		.id = HEX_INS_S4_PSTORERITNEW_RR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 5 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x1, 7 }, { 0x1, 13 } }, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 22 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (.new) memw(+<<) = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00111100000sssssPPIiiiiiiIIIIIII | memb(Rs+Ii) = II
		.encoding = { .mask = 0xffe00000, .op = 0x3c000000 },
		.id = HEX_INS_S4_STOREIRB_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x6, 7 } }, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 0 }, { 0x1, 13 } }, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memb(+) = ",
	},
	{
		// 00111000100sssssPPIiiiiiivvIIIII | if (!Pv) memb(Rs+Ii) = II
		.encoding = { .mask = 0xffe00000, .op = 0x38800000 },
		.id = HEX_INS_S4_STOREIRBF_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 5 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x6, 7 } }, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x5, 0 }, { 0x1, 13 } }, .syntax = 17 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!) memb(+) = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00111001100sssssPPIiiiiiivvIIIII | if (!Pv.new) memb(Rs+Ii) = II
		.encoding = { .mask = 0xffe00000, .op = 0x39800000 },
		.id = HEX_INS_S4_STOREIRBFNEW_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 5 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x6, 7 } }, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x5, 0 }, { 0x1, 13 } }, .syntax = 21 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!.new) memb(+) = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00111000000sssssPPIiiiiiivvIIIII | if (Pv) memb(Rs+Ii) = II
		.encoding = { .mask = 0xffe00000, .op = 0x38000000 },
		.id = HEX_INS_S4_STOREIRBT_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 5 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x6, 7 } }, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x5, 0 }, { 0x1, 13 } }, .syntax = 16 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if () memb(+) = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00111001000sssssPPIiiiiiivvIIIII | if (Pv.new) memb(Rs+Ii) = II
		.encoding = { .mask = 0xffe00000, .op = 0x39000000 },
		.id = HEX_INS_S4_STOREIRBTNEW_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 5 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x6, 7 } }, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x5, 0 }, { 0x1, 13 } }, .syntax = 20 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (.new) memb(+) = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00111100001sssssPPIiiiiiiIIIIIII | memh(Rs+Ii) = II
		.encoding = { .mask = 0xffe00000, .op = 0x3c200000 },
		.id = HEX_INS_S4_STOREIRH_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x6, 7 } }, .imm_scale = 1, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 0 }, { 0x1, 13 } }, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memh(+) = ",
	},
	{
		// 00111000101sssssPPIiiiiiivvIIIII | if (!Pv) memh(Rs+Ii) = II
		.encoding = { .mask = 0xffe00000, .op = 0x38a00000 },
		.id = HEX_INS_S4_STOREIRHF_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 5 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x6, 7 } }, .imm_scale = 1, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x5, 0 }, { 0x1, 13 } }, .syntax = 17 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!) memh(+) = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00111001101sssssPPIiiiiiivvIIIII | if (!Pv.new) memh(Rs+Ii) = II
		.encoding = { .mask = 0xffe00000, .op = 0x39a00000 },
		.id = HEX_INS_S4_STOREIRHFNEW_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 5 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x6, 7 } }, .imm_scale = 1, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x5, 0 }, { 0x1, 13 } }, .syntax = 21 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!.new) memh(+) = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00111000001sssssPPIiiiiiivvIIIII | if (Pv) memh(Rs+Ii) = II
		.encoding = { .mask = 0xffe00000, .op = 0x38200000 },
		.id = HEX_INS_S4_STOREIRHT_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 5 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x6, 7 } }, .imm_scale = 1, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x5, 0 }, { 0x1, 13 } }, .syntax = 16 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if () memh(+) = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00111001001sssssPPIiiiiiivvIIIII | if (Pv.new) memh(Rs+Ii) = II
		.encoding = { .mask = 0xffe00000, .op = 0x39200000 },
		.id = HEX_INS_S4_STOREIRHTNEW_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 5 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x6, 7 } }, .imm_scale = 1, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x5, 0 }, { 0x1, 13 } }, .syntax = 20 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (.new) memh(+) = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00111100010sssssPPIiiiiiiIIIIIII | memw(Rs+Ii) = II
		.encoding = { .mask = 0xffe00000, .op = 0x3c400000 },
		.id = HEX_INS_S4_STOREIRI_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x6, 7 } }, .imm_scale = 2, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 0 }, { 0x1, 13 } }, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memw(+) = ",
	},
	{
		// 00111000110sssssPPIiiiiiivvIIIII | if (!Pv) memw(Rs+Ii) = II
		.encoding = { .mask = 0xffe00000, .op = 0x38c00000 },
		.id = HEX_INS_S4_STOREIRIF_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 5 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x6, 7 } }, .imm_scale = 2, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x5, 0 }, { 0x1, 13 } }, .syntax = 17 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!) memw(+) = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00111001110sssssPPIiiiiiivvIIIII | if (!Pv.new) memw(Rs+Ii) = II
		.encoding = { .mask = 0xffe00000, .op = 0x39c00000 },
		.id = HEX_INS_S4_STOREIRIFNEW_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 5 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x6, 7 } }, .imm_scale = 2, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x5, 0 }, { 0x1, 13 } }, .syntax = 21 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!.new) memw(+) = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00111000010sssssPPIiiiiiivvIIIII | if (Pv) memw(Rs+Ii) = II
		.encoding = { .mask = 0xffe00000, .op = 0x38400000 },
		.id = HEX_INS_S4_STOREIRIT_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 5 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x6, 7 } }, .imm_scale = 2, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x5, 0 }, { 0x1, 13 } }, .syntax = 16 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if () memw(+) = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00111001010sssssPPIiiiiiivvIIIII | if (Pv.new) memw(Rs+Ii) = II
		.encoding = { .mask = 0xffe00000, .op = 0x39400000 },
		.id = HEX_INS_S4_STOREIRITNEW_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 5 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x6, 7 } }, .imm_scale = 2, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x5, 0 }, { 0x1, 13 } }, .syntax = 20 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (.new) memw(+) = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 00111011000sssssPPiuuuuui00ttttt | memb(Rs+Ru<<Ii) = Rt
		.encoding = { .mask = 0xffe00060, .op = 0x3b000000 },
		.id = HEX_INS_S4_STORERB_RR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x1, 7 }, { 0x1, 13 } }, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memb(+<<) = ",
	},
	{
		// 00111011101sssssPPiuuuuui0000ttt | memb(Rs+Ru<<Ii) = Nt.new
		.encoding = { .mask = 0xffe00078, .op = 0x3ba00000 },
		.id = HEX_INS_S4_STORERBNEW_RR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x1, 7 }, { 0x1, 13 } }, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memb(+<<) = .new",
	},
	{
		// 00111011110sssssPPiuuuuui00ttttt | memd(Rs+Ru<<Ii) = Rtt
		.encoding = { .mask = 0xffe00060, .op = 0x3bc00000 },
		.id = HEX_INS_S4_STORERD_RR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x1, 7 }, { 0x1, 13 } }, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memd(+<<) = ",
	},
	{
		// 00111011011sssssPPiuuuuui00ttttt | memh(Rs+Ru<<Ii) = Rt.h
		.encoding = { .mask = 0xffe00060, .op = 0x3b600000 },
		.id = HEX_INS_S4_STORERF_RR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x1, 7 }, { 0x1, 13 } }, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memh(+<<) = .h",
	},
	{
		// 00111011010sssssPPiuuuuui00ttttt | memh(Rs+Ru<<Ii) = Rt
		.encoding = { .mask = 0xffe00060, .op = 0x3b400000 },
		.id = HEX_INS_S4_STORERH_RR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x1, 7 }, { 0x1, 13 } }, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memh(+<<) = ",
	},
	{
		// 00111011101sssssPPiuuuuui0001ttt | memh(Rs+Ru<<Ii) = Nt.new
		.encoding = { .mask = 0xffe00078, .op = 0x3ba00008 },
		.id = HEX_INS_S4_STORERHNEW_RR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x1, 7 }, { 0x1, 13 } }, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memh(+<<) = .new",
	},
	{
		// 00111011100sssssPPiuuuuui00ttttt | memw(Rs+Ru<<Ii) = Rt
		.encoding = { .mask = 0xffe00060, .op = 0x3b800000 },
		.id = HEX_INS_S4_STORERI_RR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x1, 7 }, { 0x1, 13 } }, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memw(+<<) = ",
	},
	{
		// 00111011101sssssPPiuuuuui0010ttt | memw(Rs+Ru<<Ii) = Nt.new
		.encoding = { .mask = 0xffe00078, .op = 0x3ba00010 },
		.id = HEX_INS_S4_STORERINEW_RR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x1, 7 }, { 0x1, 13 } }, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memw(+<<) = .new",
	},
	{ { 0 } },
};

static const HexInsnTemplate templates_normal_0x4[] = {
	{
		// 01001ii1000iiiiiPPiiiiiiiiiddddd | Rd = memb(gp+Ii)
		.encoding = { .mask = 0xf9e00000, .op = 0x49000000 },
		.id = HEX_INS_L2_LOADRBGP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x9, 5 }, { 0x5, 16 }, { 0x2, 25 } }, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memb(GP+)",
	},
	{
		// 01001ii1110iiiiiPPiiiiiiiiiddddd | Rdd = memd(gp+Ii)
		.encoding = { .mask = 0xf9e00000, .op = 0x49c00000 },
		.id = HEX_INS_L2_LOADRDGP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x9, 5 }, { 0x5, 16 }, { 0x2, 25 } }, .imm_scale = 3, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memd(GP+)",
	},
	{
		// 01001ii1010iiiiiPPiiiiiiiiiddddd | Rd = memh(gp+Ii)
		.encoding = { .mask = 0xf9e00000, .op = 0x49400000 },
		.id = HEX_INS_L2_LOADRHGP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x9, 5 }, { 0x5, 16 }, { 0x2, 25 } }, .imm_scale = 1, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memh(GP+)",
	},
	{
		// 01001ii1100iiiiiPPiiiiiiiiiddddd | Rd = memw(gp+Ii)
		.encoding = { .mask = 0xf9e00000, .op = 0x49800000 },
		.id = HEX_INS_L2_LOADRIGP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x9, 5 }, { 0x5, 16 }, { 0x2, 25 } }, .imm_scale = 2, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memw(GP+)",
	},
	{
		// 01001ii1001iiiiiPPiiiiiiiiiddddd | Rd = memub(gp+Ii)
		.encoding = { .mask = 0xf9e00000, .op = 0x49200000 },
		.id = HEX_INS_L2_LOADRUBGP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x9, 5 }, { 0x5, 16 }, { 0x2, 25 } }, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memub(GP+)",
	},
	{
		// 01001ii1011iiiiiPPiiiiiiiiiddddd | Rd = memuh(gp+Ii)
		.encoding = { .mask = 0xf9e00000, .op = 0x49600000 },
		.id = HEX_INS_L2_LOADRUHGP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x9, 5 }, { 0x5, 16 }, { 0x2, 25 } }, .imm_scale = 1, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memuh(GP+)",
	},
	{
		// 01000101000sssssPP0ttiiiiiiddddd | if (!Pt) Rd = memb(Rs+Ii)
		.encoding = { .mask = 0xffe02000, .op = 0x45000000 },
		.id = HEX_INS_L2_PLOADRBF_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 11 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x6, 5 } }, .syntax = 16 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!)  = memb(+)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01000111000sssssPP0ttiiiiiiddddd | if (!Pt.new) Rd = memb(Rs+Ii)
		.encoding = { .mask = 0xffe02000, .op = 0x47000000 },
		.id = HEX_INS_L2_PLOADRBFNEW_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 11 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 19 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x6, 5 } }, .syntax = 20 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!.new)  = memb(+)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01000001000sssssPP0ttiiiiiiddddd | if (Pt) Rd = memb(Rs+Ii)
		.encoding = { .mask = 0xffe02000, .op = 0x41000000 },
		.id = HEX_INS_L2_PLOADRBT_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 11 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x6, 5 } }, .syntax = 15 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if ()  = memb(+)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01000011000sssssPP0ttiiiiiiddddd | if (Pt.new) Rd = memb(Rs+Ii)
		.encoding = { .mask = 0xffe02000, .op = 0x43000000 },
		.id = HEX_INS_L2_PLOADRBTNEW_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 11 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x6, 5 } }, .syntax = 19 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (.new)  = memb(+)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01000101110sssssPP0ttiiiiiiddddd | if (!Pt) Rdd = memd(Rs+Ii)
		.encoding = { .mask = 0xffe02000, .op = 0x45c00000 },
		.id = HEX_INS_L2_PLOADRDF_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 11 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x6, 5 } }, .imm_scale = 3, .syntax = 16 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!)  = memd(+)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01000111110sssssPP0ttiiiiiiddddd | if (!Pt.new) Rdd = memd(Rs+Ii)
		.encoding = { .mask = 0xffe02000, .op = 0x47c00000 },
		.id = HEX_INS_L2_PLOADRDFNEW_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 11 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 19 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x6, 5 } }, .imm_scale = 3, .syntax = 20 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!.new)  = memd(+)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01000001110sssssPP0ttiiiiiiddddd | if (Pt) Rdd = memd(Rs+Ii)
		.encoding = { .mask = 0xffe02000, .op = 0x41c00000 },
		.id = HEX_INS_L2_PLOADRDT_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 11 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x6, 5 } }, .imm_scale = 3, .syntax = 15 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if ()  = memd(+)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01000011110sssssPP0ttiiiiiiddddd | if (Pt.new) Rdd = memd(Rs+Ii)
		.encoding = { .mask = 0xffe02000, .op = 0x43c00000 },
		.id = HEX_INS_L2_PLOADRDTNEW_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 11 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x6, 5 } }, .imm_scale = 3, .syntax = 19 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (.new)  = memd(+)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01000101010sssssPP0ttiiiiiiddddd | if (!Pt) Rd = memh(Rs+Ii)
		.encoding = { .mask = 0xffe02000, .op = 0x45400000 },
		.id = HEX_INS_L2_PLOADRHF_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 11 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x6, 5 } }, .imm_scale = 1, .syntax = 16 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!)  = memh(+)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01000111010sssssPP0ttiiiiiiddddd | if (!Pt.new) Rd = memh(Rs+Ii)
		.encoding = { .mask = 0xffe02000, .op = 0x47400000 },
		.id = HEX_INS_L2_PLOADRHFNEW_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 11 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 19 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x6, 5 } }, .imm_scale = 1, .syntax = 20 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!.new)  = memh(+)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01000001010sssssPP0ttiiiiiiddddd | if (Pt) Rd = memh(Rs+Ii)
		.encoding = { .mask = 0xffe02000, .op = 0x41400000 },
		.id = HEX_INS_L2_PLOADRHT_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 11 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x6, 5 } }, .imm_scale = 1, .syntax = 15 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if ()  = memh(+)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01000011010sssssPP0ttiiiiiiddddd | if (Pt.new) Rd = memh(Rs+Ii)
		.encoding = { .mask = 0xffe02000, .op = 0x43400000 },
		.id = HEX_INS_L2_PLOADRHTNEW_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 11 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x6, 5 } }, .imm_scale = 1, .syntax = 19 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (.new)  = memh(+)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01000101100sssssPP0ttiiiiiiddddd | if (!Pt) Rd = memw(Rs+Ii)
		.encoding = { .mask = 0xffe02000, .op = 0x45800000 },
		.id = HEX_INS_L2_PLOADRIF_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 11 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x6, 5 } }, .imm_scale = 2, .syntax = 16 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!)  = memw(+)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01000111100sssssPP0ttiiiiiiddddd | if (!Pt.new) Rd = memw(Rs+Ii)
		.encoding = { .mask = 0xffe02000, .op = 0x47800000 },
		.id = HEX_INS_L2_PLOADRIFNEW_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 11 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 19 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x6, 5 } }, .imm_scale = 2, .syntax = 20 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!.new)  = memw(+)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01000001100sssssPP0ttiiiiiiddddd | if (Pt) Rd = memw(Rs+Ii)
		.encoding = { .mask = 0xffe02000, .op = 0x41800000 },
		.id = HEX_INS_L2_PLOADRIT_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 11 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x6, 5 } }, .imm_scale = 2, .syntax = 15 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if ()  = memw(+)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01000011100sssssPP0ttiiiiiiddddd | if (Pt.new) Rd = memw(Rs+Ii)
		.encoding = { .mask = 0xffe02000, .op = 0x43800000 },
		.id = HEX_INS_L2_PLOADRITNEW_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 11 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x6, 5 } }, .imm_scale = 2, .syntax = 19 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (.new)  = memw(+)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01000101001sssssPP0ttiiiiiiddddd | if (!Pt) Rd = memub(Rs+Ii)
		.encoding = { .mask = 0xffe02000, .op = 0x45200000 },
		.id = HEX_INS_L2_PLOADRUBF_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 11 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x6, 5 } }, .syntax = 17 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!)  = memub(+)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01000111001sssssPP0ttiiiiiiddddd | if (!Pt.new) Rd = memub(Rs+Ii)
		.encoding = { .mask = 0xffe02000, .op = 0x47200000 },
		.id = HEX_INS_L2_PLOADRUBFNEW_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 11 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 20 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x6, 5 } }, .syntax = 21 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!.new)  = memub(+)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01000001001sssssPP0ttiiiiiiddddd | if (Pt) Rd = memub(Rs+Ii)
		.encoding = { .mask = 0xffe02000, .op = 0x41200000 },
		.id = HEX_INS_L2_PLOADRUBT_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 11 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x6, 5 } }, .syntax = 16 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if ()  = memub(+)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01000011001sssssPP0ttiiiiiiddddd | if (Pt.new) Rd = memub(Rs+Ii)
		.encoding = { .mask = 0xffe02000, .op = 0x43200000 },
		.id = HEX_INS_L2_PLOADRUBTNEW_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 11 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 19 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x6, 5 } }, .syntax = 20 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (.new)  = memub(+)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01000101011sssssPP0ttiiiiiiddddd | if (!Pt) Rd = memuh(Rs+Ii)
		.encoding = { .mask = 0xffe02000, .op = 0x45600000 },
		.id = HEX_INS_L2_PLOADRUHF_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 11 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x6, 5 } }, .imm_scale = 1, .syntax = 17 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!)  = memuh(+)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01000111011sssssPP0ttiiiiiiddddd | if (!Pt.new) Rd = memuh(Rs+Ii)
		.encoding = { .mask = 0xffe02000, .op = 0x47600000 },
		.id = HEX_INS_L2_PLOADRUHFNEW_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 11 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 20 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x6, 5 } }, .imm_scale = 1, .syntax = 21 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!.new)  = memuh(+)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01000001011sssssPP0ttiiiiiiddddd | if (Pt) Rd = memuh(Rs+Ii)
		.encoding = { .mask = 0xffe02000, .op = 0x41600000 },
		.id = HEX_INS_L2_PLOADRUHT_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 11 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x6, 5 } }, .imm_scale = 1, .syntax = 16 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if ()  = memuh(+)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01000011011sssssPP0ttiiiiiiddddd | if (Pt.new) Rd = memuh(Rs+Ii)
		.encoding = { .mask = 0xffe02000, .op = 0x43600000 },
		.id = HEX_INS_L2_PLOADRUHTNEW_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 11 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 19 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x6, 5 } }, .imm_scale = 1, .syntax = 20 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (.new)  = memuh(+)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01001ii1000iiiiiPPiiiiiiiiiddddd | Rd = memb(Ii)
		.encoding = { .mask = 0xf9e00000, .op = 0x49000000 },
		.id = HEX_INS_PS_LOADRBABS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x9, 5 }, { 0x5, 16 }, { 0x2, 25 } }, .syntax = 8 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memb()",
	},
	{
		// 01001ii1110iiiiiPPiiiiiiiiiddddd | Rdd = memd(Ii)
		.encoding = { .mask = 0xf9e00000, .op = 0x49c00000 },
		.id = HEX_INS_PS_LOADRDABS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x9, 5 }, { 0x5, 16 }, { 0x2, 25 } }, .imm_scale = 3, .syntax = 8 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memd()",
	},
	{
		// 01001ii1010iiiiiPPiiiiiiiiiddddd | Rd = memh(Ii)
		.encoding = { .mask = 0xf9e00000, .op = 0x49400000 },
		.id = HEX_INS_PS_LOADRHABS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x9, 5 }, { 0x5, 16 }, { 0x2, 25 } }, .imm_scale = 1, .syntax = 8 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memh()",
	},
	{
		// 01001ii1100iiiiiPPiiiiiiiiiddddd | Rd = memw(Ii)
		.encoding = { .mask = 0xf9e00000, .op = 0x49800000 },
		.id = HEX_INS_PS_LOADRIABS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x9, 5 }, { 0x5, 16 }, { 0x2, 25 } }, .imm_scale = 2, .syntax = 8 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memw()",
	},
	{
		// 01001ii1001iiiiiPPiiiiiiiiiddddd | Rd = memub(Ii)
		.encoding = { .mask = 0xf9e00000, .op = 0x49200000 },
		.id = HEX_INS_PS_LOADRUBABS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x9, 5 }, { 0x5, 16 }, { 0x2, 25 } }, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memub()",
	},
	{
		// 01001ii1011iiiiiPPiiiiiiiiiddddd | Rd = memuh(Ii)
		.encoding = { .mask = 0xf9e00000, .op = 0x49600000 },
		.id = HEX_INS_PS_LOADRUHABS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x9, 5 }, { 0x5, 16 }, { 0x2, 25 } }, .imm_scale = 1, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memuh()",
	},
	{
		// 01001ii0000iiiiiPPitttttiiiiiiii | memb(Ii) = Rt
		.encoding = { .mask = 0xf9e00000, .op = 0x48000000 },
		.id = HEX_INS_PS_STORERBABS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x8, 0 }, { 0x1, 13 }, { 0x5, 16 }, { 0x2, 25 } }, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memb() = ",
	},
	{
		// 01001ii0101iiiiiPPi00tttiiiiiiii | memb(Ii) = Nt.new
		.encoding = { .mask = 0xf9e01800, .op = 0x48a00000 },
		.id = HEX_INS_PS_STORERBNEWABS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x8, 0 }, { 0x1, 13 }, { 0x5, 16 }, { 0x2, 25 } }, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memb() = .new",
	},
	{
		// 01001ii0110iiiiiPPitttttiiiiiiii | memd(Ii) = Rtt
		.encoding = { .mask = 0xf9e00000, .op = 0x48c00000 },
		.id = HEX_INS_PS_STORERDABS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x8, 0 }, { 0x1, 13 }, { 0x5, 16 }, { 0x2, 25 } }, .imm_scale = 3, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memd() = ",
	},
	{
		// 01001ii0011iiiiiPPitttttiiiiiiii | memh(Ii) = Rt.h
		.encoding = { .mask = 0xf9e00000, .op = 0x48600000 },
		.id = HEX_INS_PS_STORERFABS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x8, 0 }, { 0x1, 13 }, { 0x5, 16 }, { 0x2, 25 } }, .imm_scale = 1, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memh() = .h",
	},
	{
		// 01001ii0010iiiiiPPitttttiiiiiiii | memh(Ii) = Rt
		.encoding = { .mask = 0xf9e00000, .op = 0x48400000 },
		.id = HEX_INS_PS_STORERHABS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x8, 0 }, { 0x1, 13 }, { 0x5, 16 }, { 0x2, 25 } }, .imm_scale = 1, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memh() = ",
	},
	{
		// 01001ii0101iiiiiPPi01tttiiiiiiii | memh(Ii) = Nt.new
		.encoding = { .mask = 0xf9e01800, .op = 0x48a00800 },
		.id = HEX_INS_PS_STORERHNEWABS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x8, 0 }, { 0x1, 13 }, { 0x5, 16 }, { 0x2, 25 } }, .imm_scale = 1, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memh() = .new",
	},
	{
		// 01001ii0100iiiiiPPitttttiiiiiiii | memw(Ii) = Rt
		.encoding = { .mask = 0xf9e00000, .op = 0x48800000 },
		.id = HEX_INS_PS_STORERIABS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x8, 0 }, { 0x1, 13 }, { 0x5, 16 }, { 0x2, 25 } }, .imm_scale = 2, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memw() = ",
	},
	{
		// 01001ii0101iiiiiPPi10tttiiiiiiii | memw(Ii) = Nt.new
		.encoding = { .mask = 0xf9e01800, .op = 0x48a01000 },
		.id = HEX_INS_PS_STORERINEWABS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x8, 0 }, { 0x1, 13 }, { 0x5, 16 }, { 0x2, 25 } }, .imm_scale = 2, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memw() = .new",
	},
	{
		// 01000100000sssssPPitttttiiiii0vv | if (!Pv) memb(Rs+Ii) = Rt
		.encoding = { .mask = 0xffe00004, .op = 0x44000000 },
		.id = HEX_INS_S2_PSTORERBF_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x5, 3 }, { 0x1, 13 } }, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 17 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!) memb(+) = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01000100101sssssPPi00tttiiiii0vv | if (!Pv) memb(Rs+Ii) = Nt.new
		.encoding = { .mask = 0xffe01804, .op = 0x44a00000 },
		.id = HEX_INS_S2_PSTORERBNEWF_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x5, 3 }, { 0x1, 13 } }, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 17 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!) memb(+) = .new",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01000000101sssssPPi00tttiiiii0vv | if (Pv) memb(Rs+Ii) = Nt.new
		.encoding = { .mask = 0xffe01804, .op = 0x40a00000 },
		.id = HEX_INS_S2_PSTORERBNEWT_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x5, 3 }, { 0x1, 13 } }, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 16 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if () memb(+) = .new",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01000000000sssssPPitttttiiiii0vv | if (Pv) memb(Rs+Ii) = Rt
		.encoding = { .mask = 0xffe00004, .op = 0x40000000 },
		.id = HEX_INS_S2_PSTORERBT_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x5, 3 }, { 0x1, 13 } }, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 16 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if () memb(+) = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01000100110sssssPPitttttiiiii0vv | if (!Pv) memd(Rs+Ii) = Rtt
		.encoding = { .mask = 0xffe00004, .op = 0x44c00000 },
		.id = HEX_INS_S2_PSTORERDF_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x5, 3 }, { 0x1, 13 } }, .imm_scale = 3, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 17 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!) memd(+) = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01000000110sssssPPitttttiiiii0vv | if (Pv) memd(Rs+Ii) = Rtt
		.encoding = { .mask = 0xffe00004, .op = 0x40c00000 },
		.id = HEX_INS_S2_PSTORERDT_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x5, 3 }, { 0x1, 13 } }, .imm_scale = 3, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 16 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if () memd(+) = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01000100011sssssPPitttttiiiii0vv | if (!Pv) memh(Rs+Ii) = Rt.h
		.encoding = { .mask = 0xffe00004, .op = 0x44600000 },
		.id = HEX_INS_S2_PSTORERFF_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x5, 3 }, { 0x1, 13 } }, .imm_scale = 1, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 17 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!) memh(+) = .h",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01000000011sssssPPitttttiiiii0vv | if (Pv) memh(Rs+Ii) = Rt.h
		.encoding = { .mask = 0xffe00004, .op = 0x40600000 },
		.id = HEX_INS_S2_PSTORERFT_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x5, 3 }, { 0x1, 13 } }, .imm_scale = 1, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 16 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if () memh(+) = .h",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01000100010sssssPPitttttiiiii0vv | if (!Pv) memh(Rs+Ii) = Rt
		.encoding = { .mask = 0xffe00004, .op = 0x44400000 },
		.id = HEX_INS_S2_PSTORERHF_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x5, 3 }, { 0x1, 13 } }, .imm_scale = 1, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 17 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!) memh(+) = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01000100101sssssPPi01tttiiiii0vv | if (!Pv) memh(Rs+Ii) = Nt.new
		.encoding = { .mask = 0xffe01804, .op = 0x44a00800 },
		.id = HEX_INS_S2_PSTORERHNEWF_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x5, 3 }, { 0x1, 13 } }, .imm_scale = 1, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 17 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!) memh(+) = .new",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01000000101sssssPPi01tttiiiii0vv | if (Pv) memh(Rs+Ii) = Nt.new
		.encoding = { .mask = 0xffe01804, .op = 0x40a00800 },
		.id = HEX_INS_S2_PSTORERHNEWT_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x5, 3 }, { 0x1, 13 } }, .imm_scale = 1, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 16 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if () memh(+) = .new",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01000000010sssssPPitttttiiiii0vv | if (Pv) memh(Rs+Ii) = Rt
		.encoding = { .mask = 0xffe00004, .op = 0x40400000 },
		.id = HEX_INS_S2_PSTORERHT_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x5, 3 }, { 0x1, 13 } }, .imm_scale = 1, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 16 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if () memh(+) = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01000100100sssssPPitttttiiiii0vv | if (!Pv) memw(Rs+Ii) = Rt
		.encoding = { .mask = 0xffe00004, .op = 0x44800000 },
		.id = HEX_INS_S2_PSTORERIF_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x5, 3 }, { 0x1, 13 } }, .imm_scale = 2, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 17 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!) memw(+) = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01000100101sssssPPi10tttiiiii0vv | if (!Pv) memw(Rs+Ii) = Nt.new
		.encoding = { .mask = 0xffe01804, .op = 0x44a01000 },
		.id = HEX_INS_S2_PSTORERINEWF_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x5, 3 }, { 0x1, 13 } }, .imm_scale = 2, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 17 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!) memw(+) = .new",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01000000101sssssPPi10tttiiiii0vv | if (Pv) memw(Rs+Ii) = Nt.new
		.encoding = { .mask = 0xffe01804, .op = 0x40a01000 },
		.id = HEX_INS_S2_PSTORERINEWT_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x5, 3 }, { 0x1, 13 } }, .imm_scale = 2, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 16 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if () memw(+) = .new",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01000000100sssssPPitttttiiiii0vv | if (Pv) memw(Rs+Ii) = Rt
		.encoding = { .mask = 0xffe00004, .op = 0x40800000 },
		.id = HEX_INS_S2_PSTORERIT_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x5, 3 }, { 0x1, 13 } }, .imm_scale = 2, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 16 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if () memw(+) = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01001ii0000iiiiiPPitttttiiiiiiii | memb(gp+Ii) = Rt
		.encoding = { .mask = 0xf9e00000, .op = 0x48000000 },
		.id = HEX_INS_S2_STORERBGP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x8, 0 }, { 0x1, 13 }, { 0x5, 16 }, { 0x2, 25 } }, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memb(GP+) = ",
	},
	{
		// 01001ii0101iiiiiPPi00tttiiiiiiii | memb(gp+Ii) = Nt.new
		.encoding = { .mask = 0xf9e01800, .op = 0x48a00000 },
		.id = HEX_INS_S2_STORERBNEWGP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x8, 0 }, { 0x1, 13 }, { 0x5, 16 }, { 0x2, 25 } }, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memb(GP+) = .new",
	},
	{
		// 01001ii0110iiiiiPPitttttiiiiiiii | memd(gp+Ii) = Rtt
		.encoding = { .mask = 0xf9e00000, .op = 0x48c00000 },
		.id = HEX_INS_S2_STORERDGP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x8, 0 }, { 0x1, 13 }, { 0x5, 16 }, { 0x2, 25 } }, .imm_scale = 3, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memd(GP+) = ",
	},
	{
		// 01001ii0011iiiiiPPitttttiiiiiiii | memh(gp+Ii) = Rt.h
		.encoding = { .mask = 0xf9e00000, .op = 0x48600000 },
		.id = HEX_INS_S2_STORERFGP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x8, 0 }, { 0x1, 13 }, { 0x5, 16 }, { 0x2, 25 } }, .imm_scale = 1, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memh(GP+) = .h",
	},
	{
		// 01001ii0010iiiiiPPitttttiiiiiiii | memh(gp+Ii) = Rt
		.encoding = { .mask = 0xf9e00000, .op = 0x48400000 },
		.id = HEX_INS_S2_STORERHGP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x8, 0 }, { 0x1, 13 }, { 0x5, 16 }, { 0x2, 25 } }, .imm_scale = 1, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memh(GP+) = ",
	},
	{
		// 01001ii0101iiiiiPPi01tttiiiiiiii | memh(gp+Ii) = Nt.new
		.encoding = { .mask = 0xf9e01800, .op = 0x48a00800 },
		.id = HEX_INS_S2_STORERHNEWGP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x8, 0 }, { 0x1, 13 }, { 0x5, 16 }, { 0x2, 25 } }, .imm_scale = 1, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memh(GP+) = .new",
	},
	{
		// 01001ii0100iiiiiPPitttttiiiiiiii | memw(gp+Ii) = Rt
		.encoding = { .mask = 0xf9e00000, .op = 0x48800000 },
		.id = HEX_INS_S2_STORERIGP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x8, 0 }, { 0x1, 13 }, { 0x5, 16 }, { 0x2, 25 } }, .imm_scale = 2, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memw(GP+) = ",
	},
	{
		// 01001ii0101iiiiiPPi10tttiiiiiiii | memw(gp+Ii) = Nt.new
		.encoding = { .mask = 0xf9e01800, .op = 0x48a01000 },
		.id = HEX_INS_S2_STORERINEWGP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x8, 0 }, { 0x1, 13 }, { 0x5, 16 }, { 0x2, 25 } }, .imm_scale = 2, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memw(GP+) = .new",
	},
	{
		// 01000110000sssssPPitttttiiiii0vv | if (!Pv.new) memb(Rs+Ii) = Rt
		.encoding = { .mask = 0xffe00004, .op = 0x46000000 },
		.id = HEX_INS_S4_PSTORERBFNEW_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x5, 3 }, { 0x1, 13 } }, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 21 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!.new) memb(+) = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01000110101sssssPPi00tttiiiii0vv | if (!Pv.new) memb(Rs+Ii) = Nt.new
		.encoding = { .mask = 0xffe01804, .op = 0x46a00000 },
		.id = HEX_INS_S4_PSTORERBNEWFNEW_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x5, 3 }, { 0x1, 13 } }, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 21 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!.new) memb(+) = .new",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01000010101sssssPPi00tttiiiii0vv | if (Pv.new) memb(Rs+Ii) = Nt.new
		.encoding = { .mask = 0xffe01804, .op = 0x42a00000 },
		.id = HEX_INS_S4_PSTORERBNEWTNEW_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x5, 3 }, { 0x1, 13 } }, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 20 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (.new) memb(+) = .new",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01000010000sssssPPitttttiiiii0vv | if (Pv.new) memb(Rs+Ii) = Rt
		.encoding = { .mask = 0xffe00004, .op = 0x42000000 },
		.id = HEX_INS_S4_PSTORERBTNEW_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x5, 3 }, { 0x1, 13 } }, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 20 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (.new) memb(+) = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01000110110sssssPPitttttiiiii0vv | if (!Pv.new) memd(Rs+Ii) = Rtt
		.encoding = { .mask = 0xffe00004, .op = 0x46c00000 },
		.id = HEX_INS_S4_PSTORERDFNEW_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x5, 3 }, { 0x1, 13 } }, .imm_scale = 3, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 21 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!.new) memd(+) = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01000010110sssssPPitttttiiiii0vv | if (Pv.new) memd(Rs+Ii) = Rtt
		.encoding = { .mask = 0xffe00004, .op = 0x42c00000 },
		.id = HEX_INS_S4_PSTORERDTNEW_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x5, 3 }, { 0x1, 13 } }, .imm_scale = 3, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 20 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (.new) memd(+) = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01000110011sssssPPitttttiiiii0vv | if (!Pv.new) memh(Rs+Ii) = Rt.h
		.encoding = { .mask = 0xffe00004, .op = 0x46600000 },
		.id = HEX_INS_S4_PSTORERFFNEW_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x5, 3 }, { 0x1, 13 } }, .imm_scale = 1, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 21 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!.new) memh(+) = .h",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01000010011sssssPPitttttiiiii0vv | if (Pv.new) memh(Rs+Ii) = Rt.h
		.encoding = { .mask = 0xffe00004, .op = 0x42600000 },
		.id = HEX_INS_S4_PSTORERFTNEW_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x5, 3 }, { 0x1, 13 } }, .imm_scale = 1, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 20 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (.new) memh(+) = .h",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01000110010sssssPPitttttiiiii0vv | if (!Pv.new) memh(Rs+Ii) = Rt
		.encoding = { .mask = 0xffe00004, .op = 0x46400000 },
		.id = HEX_INS_S4_PSTORERHFNEW_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x5, 3 }, { 0x1, 13 } }, .imm_scale = 1, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 21 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!.new) memh(+) = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01000110101sssssPPi01tttiiiii0vv | if (!Pv.new) memh(Rs+Ii) = Nt.new
		.encoding = { .mask = 0xffe01804, .op = 0x46a00800 },
		.id = HEX_INS_S4_PSTORERHNEWFNEW_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x5, 3 }, { 0x1, 13 } }, .imm_scale = 1, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 21 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!.new) memh(+) = .new",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01000010101sssssPPi01tttiiiii0vv | if (Pv.new) memh(Rs+Ii) = Nt.new
		.encoding = { .mask = 0xffe01804, .op = 0x42a00800 },
		.id = HEX_INS_S4_PSTORERHNEWTNEW_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x5, 3 }, { 0x1, 13 } }, .imm_scale = 1, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 20 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (.new) memh(+) = .new",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01000010010sssssPPitttttiiiii0vv | if (Pv.new) memh(Rs+Ii) = Rt
		.encoding = { .mask = 0xffe00004, .op = 0x42400000 },
		.id = HEX_INS_S4_PSTORERHTNEW_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x5, 3 }, { 0x1, 13 } }, .imm_scale = 1, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 20 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (.new) memh(+) = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01000110100sssssPPitttttiiiii0vv | if (!Pv.new) memw(Rs+Ii) = Rt
		.encoding = { .mask = 0xffe00004, .op = 0x46800000 },
		.id = HEX_INS_S4_PSTORERIFNEW_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x5, 3 }, { 0x1, 13 } }, .imm_scale = 2, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 21 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!.new) memw(+) = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01000110101sssssPPi10tttiiiii0vv | if (!Pv.new) memw(Rs+Ii) = Nt.new
		.encoding = { .mask = 0xffe01804, .op = 0x46a01000 },
		.id = HEX_INS_S4_PSTORERINEWFNEW_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x5, 3 }, { 0x1, 13 } }, .imm_scale = 2, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 21 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!.new) memw(+) = .new",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01000010101sssssPPi10tttiiiii0vv | if (Pv.new) memw(Rs+Ii) = Nt.new
		.encoding = { .mask = 0xffe01804, .op = 0x42a01000 },
		.id = HEX_INS_S4_PSTORERINEWTNEW_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x5, 3 }, { 0x1, 13 } }, .imm_scale = 2, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 20 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (.new) memw(+) = .new",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01000010100sssssPPitttttiiiii0vv | if (Pv.new) memw(Rs+Ii) = Rt
		.encoding = { .mask = 0xffe00004, .op = 0x42800000 },
		.id = HEX_INS_S4_PSTORERITNEW_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x5, 3 }, { 0x1, 13 } }, .imm_scale = 2, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 20 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (.new) memw(+) = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{ { 0 } },
};

static const HexInsnTemplate templates_normal_0x5[] = {
	{
		// 0101101iiiiiiiiiPPiiiiiiiiiiiii0 | call Ii
		.encoding = { .mask = 0xfe000001, .op = 0x5a000000 },
		.id = HEX_INS_J2_CALL,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0xd, 1 }, { 0x9, 16 } }, .imm_scale = 2, .syntax = 5 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_CALL,
		.syntax = "call ",
		.flags = HEX_INSN_TEMPLATE_FLAG_CALL | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 01011101ii1iiiiiPPi000uuiiiiiii0 | if (!Pu) call Ii
		.encoding = { .mask = 0xff201c01, .op = 0x5d200000 },
		.id = HEX_INS_J2_CALLF,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 8 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x1, 13 }, { 0x5, 16 }, { 0x2, 22 } }, .imm_scale = 2, .syntax = 12 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CCALL,
		.syntax = "if (!) call ",
		.flags = HEX_INSN_TEMPLATE_FLAG_CALL | HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 01010000101sssssPP00000000000000 | callr Rs
		.encoding = { .mask = 0xffe03fff, .op = 0x50a00000 },
		.id = HEX_INS_J2_CALLR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 6 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_RCALL,
		.syntax = "callr ",
		.flags = HEX_INSN_TEMPLATE_FLAG_CALL | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 01010001001sssssPP0000uu00000000 | if (!Pu) callr Rs
		.encoding = { .mask = 0xffe03cff, .op = 0x51200000 },
		.id = HEX_INS_J2_CALLRF,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 8 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 13 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_UCCALL,
		.syntax = "if (!) callr ",
		.flags = HEX_INSN_TEMPLATE_FLAG_CALL | HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 01010001000sssssPP0000uu00000000 | if (Pu) callr Rs
		.encoding = { .mask = 0xffe03cff, .op = 0x51000000 },
		.id = HEX_INS_J2_CALLRT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 8 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_UCCALL,
		.syntax = "if () callr ",
		.flags = HEX_INSN_TEMPLATE_FLAG_CALL | HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 01011101ii0iiiiiPPi000uuiiiiiii0 | if (Pu) call Ii
		.encoding = { .mask = 0xff201c01, .op = 0x5d000000 },
		.id = HEX_INS_J2_CALLT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 8 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x1, 13 }, { 0x5, 16 }, { 0x2, 22 } }, .imm_scale = 2, .syntax = 11 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CCALL,
		.syntax = "if () call ",
		.flags = HEX_INSN_TEMPLATE_FLAG_CALL | HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0101100iiiiiiiiiPPiiiiiiiiiiiii0 | jump Ii
		.encoding = { .mask = 0xfe000001, .op = 0x58000000 },
		.id = HEX_INS_J2_JUMP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0xd, 1 }, { 0x9, 16 } }, .imm_scale = 2, .syntax = 5 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_JMP,
		.syntax = "jump ",
		.flags = HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 01011100ii1iiiiiPPi000uuiiiiiii0 | if (!Pu) jump:nt Ii
		.encoding = { .mask = 0xff201c01, .op = 0x5c200000 },
		.id = HEX_INS_J2_JUMPF,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 8 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x1, 13 }, { 0x5, 16 }, { 0x2, 22 } }, .imm_scale = 2, .syntax = 15 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "if (!) jump:nt ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 01011100ii1iiiiiPPi010uuiiiiiii0 | if (!Pu.new) jump:nt Ii
		.encoding = { .mask = 0xff201c01, .op = 0x5c200800 },
		.id = HEX_INS_J2_JUMPFNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 8 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x1, 13 }, { 0x5, 16 }, { 0x2, 22 } }, .imm_scale = 2, .syntax = 19 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "if (!.new) jump:nt ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 01011100ii1iiiiiPPi110uuiiiiiii0 | if (!Pu.new) jump:t Ii
		.encoding = { .mask = 0xff201c01, .op = 0x5c201800 },
		.id = HEX_INS_J2_JUMPFNEWPT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 8 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x1, 13 }, { 0x5, 16 }, { 0x2, 22 } }, .imm_scale = 2, .syntax = 18 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "if (!.new) jump:t ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 01011100ii1iiiiiPPi100uuiiiiiii0 | if (!Pu) jump:t Ii
		.encoding = { .mask = 0xff201c01, .op = 0x5c201000 },
		.id = HEX_INS_J2_JUMPFPT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 8 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x1, 13 }, { 0x5, 16 }, { 0x2, 22 } }, .imm_scale = 2, .syntax = 14 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "if (!) jump:t ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 01010010100sssssPP00000000000000 | jumpr Rs
		.encoding = { .mask = 0xffe03fff, .op = 0x52800000 },
		.id = HEX_INS_J2_JUMPR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 6 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_RJMP,
		.syntax = "jumpr ",
		.flags = HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 01010011011sssssPP0000uu00000000 | if (!Pu) jumpr:nt Rs
		.encoding = { .mask = 0xffe03cff, .op = 0x53600000 },
		.id = HEX_INS_J2_JUMPRF,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 8 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 16 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_RCJMP,
		.syntax = "if (!) jumpr:nt ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 01010011011sssssPP0010uu00000000 | if (!Pu.new) jumpr:nt Rs
		.encoding = { .mask = 0xffe03cff, .op = 0x53600800 },
		.id = HEX_INS_J2_JUMPRFNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 8 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 20 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_RCJMP,
		.syntax = "if (!.new) jumpr:nt ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 01010011011sssssPP0110uu00000000 | if (!Pu.new) jumpr:t Rs
		.encoding = { .mask = 0xffe03cff, .op = 0x53601800 },
		.id = HEX_INS_J2_JUMPRFNEWPT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 8 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 19 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_RCJMP,
		.syntax = "if (!.new) jumpr:t ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 01010011011sssssPP0100uu00000000 | if (!Pu) jumpr:t Rs
		.encoding = { .mask = 0xffe03cff, .op = 0x53601000 },
		.id = HEX_INS_J2_JUMPRFPT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 8 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 15 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_RCJMP,
		.syntax = "if (!) jumpr:t ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 01010011010sssssPP0000uu00000000 | if (Pu) jumpr:nt Rs
		.encoding = { .mask = 0xffe03cff, .op = 0x53400000 },
		.id = HEX_INS_J2_JUMPRT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 8 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 15 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_RCJMP,
		.syntax = "if () jumpr:nt ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 01010011010sssssPP0010uu00000000 | if (Pu.new) jumpr:nt Rs
		.encoding = { .mask = 0xffe03cff, .op = 0x53400800 },
		.id = HEX_INS_J2_JUMPRTNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 8 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 19 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_RCJMP,
		.syntax = "if (.new) jumpr:nt ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 01010011010sssssPP0110uu00000000 | if (Pu.new) jumpr:t Rs
		.encoding = { .mask = 0xffe03cff, .op = 0x53401800 },
		.id = HEX_INS_J2_JUMPRTNEWPT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 8 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 18 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_RCJMP,
		.syntax = "if (.new) jumpr:t ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 01010011010sssssPP0100uu00000000 | if (Pu) jumpr:t Rs
		.encoding = { .mask = 0xffe03cff, .op = 0x53401000 },
		.id = HEX_INS_J2_JUMPRTPT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 8 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 14 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_RCJMP,
		.syntax = "if () jumpr:t ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 01011100ii0iiiiiPPi000uuiiiiiii0 | if (Pu) jump:nt Ii
		.encoding = { .mask = 0xff201c01, .op = 0x5c000000 },
		.id = HEX_INS_J2_JUMPT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 8 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x1, 13 }, { 0x5, 16 }, { 0x2, 22 } }, .imm_scale = 2, .syntax = 14 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "if () jump:nt ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 01011100ii0iiiiiPPi010uuiiiiiii0 | if (Pu.new) jump:nt Ii
		.encoding = { .mask = 0xff201c01, .op = 0x5c000800 },
		.id = HEX_INS_J2_JUMPTNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 8 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x1, 13 }, { 0x5, 16 }, { 0x2, 22 } }, .imm_scale = 2, .syntax = 18 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "if (.new) jump:nt ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 01011100ii0iiiiiPPi110uuiiiiiii0 | if (Pu.new) jump:t Ii
		.encoding = { .mask = 0xff201c01, .op = 0x5c001800 },
		.id = HEX_INS_J2_JUMPTNEWPT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 8 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x1, 13 }, { 0x5, 16 }, { 0x2, 22 } }, .imm_scale = 2, .syntax = 17 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "if (.new) jump:t ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 01011100ii0iiiiiPPi100uuiiiiiii0 | if (Pu) jump:t Ii
		.encoding = { .mask = 0xff201c01, .op = 0x5c001000 },
		.id = HEX_INS_J2_JUMPTPT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 8 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 1 }, { 0x1, 13 }, { 0x5, 16 }, { 0x2, 22 } }, .imm_scale = 2, .syntax = 13 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "if () jump:t ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0101010001000000PP0iiiii000iii00 | pause(Ii)
		.encoding = { .mask = 0xffff20e3, .op = 0x54400000 },
		.id = HEX_INS_J2_PAUSE,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 2 }, { 0x5, 8 } }, .syntax = 6 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "pause()",
	},
	{
		// 0101010000000000PP0iiiii000iii00 | trap0(Ii)
		.encoding = { .mask = 0xffff20e3, .op = 0x54000000 },
		.id = HEX_INS_J2_TRAP0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 2 }, { 0x5, 8 } }, .syntax = 6 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_TRAP,
		.syntax = "trap0()",
	},
	{
		// 01010100100xxxxxPP0iiiii000iii00 | trap1(Rx,Ii)
		.encoding = { .mask = 0xffe020e3, .op = 0x54800000 },
		.id = HEX_INS_J2_TRAP1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 2 }, { 0x5, 8 } }, .syntax = 7 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_TRAP,
		.syntax = "trap1(,)",
	},
	{
		// 01010010101sssssPP00000000000000 | hintjr(Rs)
		.encoding = { .mask = 0xffe03fff, .op = 0x52a00000 },
		.id = HEX_INS_J4_HINTJUMPR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_RJMP,
		.syntax = "hintjr()",
		.flags = HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0101010010000000PP0iiiii000iii00 | trap1(Ii)
		.encoding = { .mask = 0xffff20e3, .op = 0x54800000 },
		.id = HEX_INS_PS_TRAP1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 2 }, { 0x5, 8 } }, .syntax = 6 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_TRAP,
		.syntax = "trap1()",
	},
	{
		// 01010110110sssssPP00000000000000 | icinva(Rs)
		.encoding = { .mask = 0xffe03fff, .op = 0x56c00000 },
		.id = HEX_INS_Y2_ICINVA,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "icinva()",
	},
	{
		// 0101011111000000PP00000000000010 | isync
		.encoding = { .mask = 0xffff3fff, .op = 0x57c00002 },
		.id = HEX_INS_Y2_ISYNC,
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "isync",
	},
	{
		// 01010101101sssssPP000000000ddddd | Rd = icdatar(Rs)
		.encoding = { .mask = 0xffe03fe0, .op = 0x55a00000 },
		.id = HEX_INS_IMPORTED_RD_ICDATAR_RS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = icdatar()",
	},
	{
		// 01010101111sssssPP000000000ddddd | Rd = ictagr(Rs)
		.encoding = { .mask = 0xffe03fe0, .op = 0x55e00000 },
		.id = HEX_INS_IMPORTED_RD_ICTAGR_RS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = ictagr()",
	},
	{
		// 01010101110sssssPP1ttttt00000000 | icdataw(Rs,Rt)
		.encoding = { .mask = 0xffe020ff, .op = 0x55c02000 },
		.id = HEX_INS_IMPORTED_ICDATAW_RS_RT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "icdataw(,)",
	},
	{
		// 01010110110sssssPP00100000000000 | icinvidx(Rs)
		.encoding = { .mask = 0xffe03fff, .op = 0x56c00800 },
		.id = HEX_INS_IMPORTED_ICINVIDX_RS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "icinvidx()",
	},
	{
		// 0101011011000000PP01000000000000 | ickill
		.encoding = { .mask = 0xffff3fff, .op = 0x56c01000 },
		.id = HEX_INS_IMPORTED_ICKILL,
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "ickill",
	},
	{
		// 01010101110sssssPP0ttttt00000000 | ictagw(Rs,Rt)
		.encoding = { .mask = 0xffe020ff, .op = 0x55c00000 },
		.id = HEX_INS_IMPORTED_ICTAGW_RS_RT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "ictagw(,)",
	},
	{
		// 0101011111100000PP00000000000000 | rte
		.encoding = { .mask = 0xffff3fff, .op = 0x57e00000 },
		.id = HEX_INS_IMPORTED_RTE,
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "rte",
	},
	{ { 0 } },
};

static const HexInsnTemplate templates_normal_0x6[] = {
	{
		// 01101010000sssssPP000000000ddddd | Rd = Cs
		.encoding = { .mask = 0xffe03fe0, .op = 0x6a000000 },
		.id = HEX_INS_A2_TFRCRR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_CTR_REGS, .syntax = 3 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = ",
	},
	{
		// 01100010001sssssPP000000000ddddd | Cd = Rs
		.encoding = { .mask = 0xffe03fe0, .op = 0x62200000 },
		.id = HEX_INS_A2_TFRRCR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_CTR_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 3 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = ",
	},
	{
		// 01101000000sssssPP000000000ddddd | Rdd = Css
		.encoding = { .mask = 0xffe03fe0, .op = 0x68000000 },
		.id = HEX_INS_A4_TFRCPP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_CTR_REGS64, .syntax = 3 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = ",
	},
	{
		// 01100011001sssssPP000000000ddddd | Cdd = Rss
		.encoding = { .mask = 0xffe03fe0, .op = 0x63200000 },
		.id = HEX_INS_A4_TFRPCP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_CTR_REGS64, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 3 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = ",
	},
	{
		// 01101011101000ssPP000000000000dd | Pd = all8(Ps)
		.encoding = { .mask = 0xfffc3ffc, .op = 0x6ba00000 },
		.id = HEX_INS_C2_ALL8,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 16 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 8 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = all8()",
	},
	{
		// 01101011000000ssPP0000tt000000dd | Pd = and(Pt,Ps)
		.encoding = { .mask = 0xfffc3cfc, .op = 0x6b000000 },
		.id = HEX_INS_C2_AND,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 8 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 16 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 8 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = and(,)",
	},
	{
		// 01101011011000ssPP0000tt000000dd | Pd = and(Pt,!Ps)
		.encoding = { .mask = 0xfffc3cfc, .op = 0x6b600000 },
		.id = HEX_INS_C2_ANDN,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 8 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 16 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = and(,!)",
	},
	{
		// 01101011100000ssPP000000000000dd | Pd = any8(Ps)
		.encoding = { .mask = 0xfffc3ffc, .op = 0x6b800000 },
		.id = HEX_INS_C2_ANY8,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 16 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 8 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = any8()",
	},
	{
		// 01101011110000ssPP000000000000dd | Pd = not(Ps)
		.encoding = { .mask = 0xfffc3ffc, .op = 0x6bc00000 },
		.id = HEX_INS_C2_NOT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 16 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 7 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = not()",
	},
	{
		// 01101011001000ssPP0000tt000000dd | Pd = or(Pt,Ps)
		.encoding = { .mask = 0xfffc3cfc, .op = 0x6b200000 },
		.id = HEX_INS_C2_OR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 8 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 16 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 7 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = or(,)",
	},
	{
		// 01101011111000ssPP0000tt000000dd | Pd = or(Pt,!Ps)
		.encoding = { .mask = 0xfffc3cfc, .op = 0x6be00000 },
		.id = HEX_INS_C2_ORN,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 8 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 16 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 8 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = or(,!)",
	},
	{
		// 01101011010000ssPP0000tt000000dd | Pd = xor(Ps,Pt)
		.encoding = { .mask = 0xfffc3cfc, .op = 0x6b400000 },
		.id = HEX_INS_C2_XOR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 16 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 8 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 8 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = xor(,)",
	},
	{
		// 0110101001001001PP0iiiiii00ddddd | Rd = add(pc,Ii)
		.encoding = { .mask = 0xffff2060, .op = 0x6a490000 },
		.id = HEX_INS_C4_ADDIPC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x6, 7 } }, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(PC,)",
	},
	{
		// 01101011000100ssPP0000ttuu0000dd | Pd = and(Ps,and(Pt,Pu))
		.encoding = { .mask = 0xfffc3c3c, .op = 0x6b100000 },
		.id = HEX_INS_C4_AND_AND,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 16 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 8 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 6 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = and(,and(,))",
	},
	{
		// 01101011100100ssPP0000ttuu0000dd | Pd = and(Ps,and(Pt,!Pu))
		.encoding = { .mask = 0xfffc3c3c, .op = 0x6b900000 },
		.id = HEX_INS_C4_AND_ANDN,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 16 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 8 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 6 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = and(,and(,!))",
	},
	{
		// 01101011001100ssPP0000ttuu0000dd | Pd = and(Ps,or(Pt,Pu))
		.encoding = { .mask = 0xfffc3c3c, .op = 0x6b300000 },
		.id = HEX_INS_C4_AND_OR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 16 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 8 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 6 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = and(,or(,))",
	},
	{
		// 01101011101100ssPP0000ttuu0000dd | Pd = and(Ps,or(Pt,!Pu))
		.encoding = { .mask = 0xfffc3c3c, .op = 0x6bb00000 },
		.id = HEX_INS_C4_AND_ORN,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 16 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 8 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 6 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = and(,or(,!))",
	},
	{
		// 01101011000000ssPP1000tt100100dd | Pd = fastcorner9(Ps,Pt)
		.encoding = { .mask = 0xfffc3cfc, .op = 0x6b002090 },
		.id = HEX_INS_C4_FASTCORNER9,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 16 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 8 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 16 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = fastcorner9(,)",
	},
	{
		// 01101011000100ssPP1000tt100100dd | Pd = !fastcorner9(Ps,Pt)
		.encoding = { .mask = 0xfffc3cfc, .op = 0x6b102090 },
		.id = HEX_INS_C4_FASTCORNER9_NOT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 16 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 8 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 17 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = !fastcorner9(,)",
	},
	{
		// 01101011010100ssPP0000ttuu0000dd | Pd = or(Ps,and(Pt,Pu))
		.encoding = { .mask = 0xfffc3c3c, .op = 0x6b500000 },
		.id = HEX_INS_C4_OR_AND,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 16 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 8 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 6 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = or(,and(,))",
	},
	{
		// 01101011110100ssPP0000ttuu0000dd | Pd = or(Ps,and(Pt,!Pu))
		.encoding = { .mask = 0xfffc3c3c, .op = 0x6bd00000 },
		.id = HEX_INS_C4_OR_ANDN,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 16 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 8 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 6 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = or(,and(,!))",
	},
	{
		// 01101011011100ssPP0000ttuu0000dd | Pd = or(Ps,or(Pt,Pu))
		.encoding = { .mask = 0xfffc3c3c, .op = 0x6b700000 },
		.id = HEX_INS_C4_OR_OR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 16 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 8 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 6 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = or(,or(,))",
	},
	{
		// 01101011111100ssPP0000ttuu0000dd | Pd = or(Ps,or(Pt,!Pu))
		.encoding = { .mask = 0xfffc3c3c, .op = 0x6bf00000 },
		.id = HEX_INS_C4_OR_ORN,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 16 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 8 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 6 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = or(,or(,!))",
	},
	{
		// 01101000001sssssPP000000000ddddd | Rdd = Gss
		.encoding = { .mask = 0xffe03fe0, .op = 0x68200000 },
		.id = HEX_INS_G4_TFRGCPP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_GUEST_REGS64, .syntax = 3 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = ",
	},
	{
		// 01101010001sssssPP000000000ddddd | Rd = Gs
		.encoding = { .mask = 0xffe03fe0, .op = 0x6a200000 },
		.id = HEX_INS_G4_TFRGCRR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_GUEST_REGS, .syntax = 3 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = ",
	},
	{
		// 01100011000sssssPP000000000ddddd | Gdd = Rss
		.encoding = { .mask = 0xffe03fe0, .op = 0x63000000 },
		.id = HEX_INS_G4_TFRGPCP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_GUEST_REGS64, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 3 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = ",
	},
	{
		// 01100010000sssssPP000000000ddddd | Gd = Rs
		.encoding = { .mask = 0xffe03fe0, .op = 0x62000000 },
		.id = HEX_INS_G4_TFRGRCR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_GUEST_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 3 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = ",
	},
	{
		// 0110000101isssssPPi0iiiiiiiiiii0 | if (Rs>=#0) jump:nt Ii
		.encoding = { .mask = 0xffc01001, .op = 0x61400000 },
		.id = HEX_INS_J2_JUMPRGTEZ,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE, .masks = { { 0xb, 1 }, { 0x1, 13 }, { 0x1, 21 } }, .imm_scale = 2, .syntax = 18 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "if (>=#0) jump:nt ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0110000101isssssPPi1iiiiiiiiiii0 | if (Rs>=#0) jump:t Ii
		.encoding = { .mask = 0xffc01001, .op = 0x61401000 },
		.id = HEX_INS_J2_JUMPRGTEZPT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE, .masks = { { 0xb, 1 }, { 0x1, 13 }, { 0x1, 21 } }, .imm_scale = 2, .syntax = 17 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "if (>=#0) jump:t ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0110000111isssssPPi0iiiiiiiiiii0 | if (Rs<=#0) jump:nt Ii
		.encoding = { .mask = 0xffc01001, .op = 0x61c00000 },
		.id = HEX_INS_J2_JUMPRLTEZ,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE, .masks = { { 0xb, 1 }, { 0x1, 13 }, { 0x1, 21 } }, .imm_scale = 2, .syntax = 18 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "if (<=#0) jump:nt ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0110000111isssssPPi1iiiiiiiiiii0 | if (Rs<=#0) jump:t Ii
		.encoding = { .mask = 0xffc01001, .op = 0x61c01000 },
		.id = HEX_INS_J2_JUMPRLTEZPT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE, .masks = { { 0xb, 1 }, { 0x1, 13 }, { 0x1, 21 } }, .imm_scale = 2, .syntax = 17 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "if (<=#0) jump:t ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0110000110isssssPPi0iiiiiiiiiii0 | if (Rs==#0) jump:nt Ii
		.encoding = { .mask = 0xffc01001, .op = 0x61800000 },
		.id = HEX_INS_J2_JUMPRNZ,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE, .masks = { { 0xb, 1 }, { 0x1, 13 }, { 0x1, 21 } }, .imm_scale = 2, .syntax = 18 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "if (==#0) jump:nt ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0110000110isssssPPi1iiiiiiiiiii0 | if (Rs==#0) jump:t Ii
		.encoding = { .mask = 0xffc01001, .op = 0x61801000 },
		.id = HEX_INS_J2_JUMPRNZPT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE, .masks = { { 0xb, 1 }, { 0x1, 13 }, { 0x1, 21 } }, .imm_scale = 2, .syntax = 17 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "if (==#0) jump:t ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0110000100isssssPPi0iiiiiiiiiii0 | if (Rs!=#0) jump:nt Ii
		.encoding = { .mask = 0xffc01001, .op = 0x61000000 },
		.id = HEX_INS_J2_JUMPRZ,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE, .masks = { { 0xb, 1 }, { 0x1, 13 }, { 0x1, 21 } }, .imm_scale = 2, .syntax = 18 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "if (!=#0) jump:nt ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 0110000100isssssPPi1iiiiiiiiiii0 | if (Rs!=#0) jump:t Ii
		.encoding = { .mask = 0xffc01001, .op = 0x61001000 },
		.id = HEX_INS_J2_JUMPRZPT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE, .masks = { { 0xb, 1 }, { 0x1, 13 }, { 0x1, 21 } }, .imm_scale = 2, .syntax = 17 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CJMP,
		.syntax = "if (!=#0) jump:t ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED | HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT,
	},
	{
		// 01101001000IIIIIPP0iiiiiIIIii0II | loop0(Ii,II)
		.encoding = { .mask = 0xffe02004, .op = 0x69000000 },
		.id = HEX_INS_J2_LOOP0I,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x2, 3 }, { 0x5, 8 } }, .imm_scale = 2, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 0 }, { 0x3, 5 }, { 0x5, 16 } }, .syntax = 7 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_JMP,
		.syntax = "loop0(,)",
		.flags = HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT | HEX_INSN_TEMPLATE_FLAG_LOOP_BEGIN | HEX_INSN_TEMPLATE_FLAG_LOOP_0,
	},
	{
		// 01100000000sssssPP0iiiii000ii000 | loop0(Ii,Rs)
		.encoding = { .mask = 0xffe020e7, .op = 0x60000000 },
		.id = HEX_INS_J2_LOOP0R,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x2, 3 }, { 0x5, 8 } }, .imm_scale = 2, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_JMP,
		.syntax = "loop0(,)",
		.flags = HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT | HEX_INSN_TEMPLATE_FLAG_LOOP_BEGIN | HEX_INSN_TEMPLATE_FLAG_LOOP_0,
	},
	{
		// 01101001001IIIIIPP0iiiiiIIIii0II | loop1(Ii,II)
		.encoding = { .mask = 0xffe02004, .op = 0x69200000 },
		.id = HEX_INS_J2_LOOP1I,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x2, 3 }, { 0x5, 8 } }, .imm_scale = 2, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 0 }, { 0x3, 5 }, { 0x5, 16 } }, .syntax = 7 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_JMP,
		.syntax = "loop1(,)",
		.flags = HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT | HEX_INSN_TEMPLATE_FLAG_LOOP_BEGIN | HEX_INSN_TEMPLATE_FLAG_LOOP_1,
	},
	{
		// 01100000001sssssPP0iiiii000ii000 | loop1(Ii,Rs)
		.encoding = { .mask = 0xffe020e7, .op = 0x60200000 },
		.id = HEX_INS_J2_LOOP1R,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x2, 3 }, { 0x5, 8 } }, .imm_scale = 2, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_JMP,
		.syntax = "loop1(,)",
		.flags = HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT | HEX_INSN_TEMPLATE_FLAG_LOOP_BEGIN | HEX_INSN_TEMPLATE_FLAG_LOOP_1,
	},
	{
		// 01101001101IIIIIPP0iiiiiIIIii0II | p3 = sp1loop0(Ii,II)
		.encoding = { .mask = 0xffe02004, .op = 0x69a00000 },
		.id = HEX_INS_J2_PLOOP1SI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x2, 3 }, { 0x5, 8 } }, .imm_scale = 2, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 0 }, { 0x3, 5 }, { 0x5, 16 } }, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_JMP,
		.syntax = "P3 = sp1loop0(,)",
		.flags = HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT | HEX_INSN_TEMPLATE_FLAG_LOOP_BEGIN | HEX_INSN_TEMPLATE_FLAG_LOOP_0,
	},
	{
		// 01100000101sssssPP0iiiii000ii000 | p3 = sp1loop0(Ii,Rs)
		.encoding = { .mask = 0xffe020e7, .op = 0x60a00000 },
		.id = HEX_INS_J2_PLOOP1SR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x2, 3 }, { 0x5, 8 } }, .imm_scale = 2, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_JMP,
		.syntax = "P3 = sp1loop0(,)",
		.flags = HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT | HEX_INSN_TEMPLATE_FLAG_LOOP_BEGIN | HEX_INSN_TEMPLATE_FLAG_LOOP_0,
	},
	{
		// 01101001110IIIIIPP0iiiiiIIIii0II | p3 = sp2loop0(Ii,II)
		.encoding = { .mask = 0xffe02004, .op = 0x69c00000 },
		.id = HEX_INS_J2_PLOOP2SI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x2, 3 }, { 0x5, 8 } }, .imm_scale = 2, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 0 }, { 0x3, 5 }, { 0x5, 16 } }, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_JMP,
		.syntax = "P3 = sp2loop0(,)",
		.flags = HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT | HEX_INSN_TEMPLATE_FLAG_LOOP_BEGIN | HEX_INSN_TEMPLATE_FLAG_LOOP_0,
	},
	{
		// 01100000110sssssPP0iiiii000ii000 | p3 = sp2loop0(Ii,Rs)
		.encoding = { .mask = 0xffe020e7, .op = 0x60c00000 },
		.id = HEX_INS_J2_PLOOP2SR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x2, 3 }, { 0x5, 8 } }, .imm_scale = 2, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_JMP,
		.syntax = "P3 = sp2loop0(,)",
		.flags = HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT | HEX_INSN_TEMPLATE_FLAG_LOOP_BEGIN | HEX_INSN_TEMPLATE_FLAG_LOOP_0,
	},
	{
		// 01101001111IIIIIPP0iiiiiIIIii0II | p3 = sp3loop0(Ii,II)
		.encoding = { .mask = 0xffe02004, .op = 0x69e00000 },
		.id = HEX_INS_J2_PLOOP3SI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x2, 3 }, { 0x5, 8 } }, .imm_scale = 2, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x2, 0 }, { 0x3, 5 }, { 0x5, 16 } }, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_JMP,
		.syntax = "P3 = sP3loop0(,)",
		.flags = HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT | HEX_INSN_TEMPLATE_FLAG_LOOP_BEGIN | HEX_INSN_TEMPLATE_FLAG_LOOP_0,
	},
	{
		// 01100000111sssssPP0iiiii000ii000 | p3 = sp3loop0(Ii,Rs)
		.encoding = { .mask = 0xffe020e7, .op = 0x60e00000 },
		.id = HEX_INS_J2_PLOOP3SR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x2, 3 }, { 0x5, 8 } }, .imm_scale = 2, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_JMP,
		.syntax = "P3 = sP3loop0(,)",
		.flags = HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT | HEX_INSN_TEMPLATE_FLAG_LOOP_BEGIN | HEX_INSN_TEMPLATE_FLAG_LOOP_0,
	},
	{
		// 0110110000100000PP00000000000000 | brkpt
		.encoding = { .mask = 0xffff3fff, .op = 0x6c200000 },
		.id = HEX_INS_Y2_BREAK,
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "brkpt",
	},
	{
		// 011011101sssssssPP000000000ddddd | Rd = Ss
		.encoding = { .mask = 0xff803fe0, .op = 0x6e800000 },
		.id = HEX_INS_Y2_TFRSCRR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x7, 16 } }, .reg_cls = HEX_REG_CLASS_SYS_REGS, .syntax = 3 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = ",
	},
	{
		// 01100111000sssssPP0000000ddddddd | Sd = Rs
		.encoding = { .mask = 0xffe03f80, .op = 0x67000000 },
		.id = HEX_INS_Y2_TFRSRCR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x7, 0 } }, .reg_cls = HEX_REG_CLASS_SYS_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 3 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = ",
	},
	{
		// 01100100010sssssPP00000000000000 | wait(Rs)
		.encoding = { .mask = 0xffe03fff, .op = 0x64400000 },
		.id = HEX_INS_Y2_WAIT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 5 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "wait()",
	},
	{
		// 011011110sssssssPP000000000ddddd | Rdd = Sss
		.encoding = { .mask = 0xff803fe0, .op = 0x6f000000 },
		.id = HEX_INS_Y4_TFRSCPP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x7, 16 } }, .reg_cls = HEX_REG_CLASS_SYS_REGS64, .syntax = 3 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = ",
	},
	{
		// 01101101000sssssPP0000000ddddddd | Sdd = Rss
		.encoding = { .mask = 0xffe03f80, .op = 0x6d000000 },
		.id = HEX_INS_Y4_TFRSPCP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x7, 0 } }, .reg_cls = HEX_REG_CLASS_SYS_REGS64, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 3 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = ",
	},
	{
		// 01100010010sssssPP00000000000000 | trace(Rs)
		.encoding = { .mask = 0xffe03fff, .op = 0x62400000 },
		.id = HEX_INS_Y4_TRACE,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 6 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "trace()",
	},
	{
		// 01100010010sssssPP00000000100000 | diag(Rs)
		.encoding = { .mask = 0xffe03fff, .op = 0x62400020 },
		.id = HEX_INS_Y6_DIAG,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 5 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "DIAG()",
	},
	{
		// 01100010010sssssPP0ttttt01000000 | diag0(Rss,Rtt)
		.encoding = { .mask = 0xffe020ff, .op = 0x62400040 },
		.id = HEX_INS_Y6_DIAG0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 7 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "DIAG0(,)",
	},
	{
		// 01100010010sssssPP0ttttt01100000 | diag1(Rss,Rtt)
		.encoding = { .mask = 0xffe020ff, .op = 0x62400060 },
		.id = HEX_INS_Y6_DIAG1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 7 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "DIAG1(,)",
	},
	{
		// 011011101sssssssPP000000000ddddd | Rd = Ss
		.encoding = { .mask = 0xff803fe0, .op = 0x6e800000 },
		.id = HEX_INS_IMPORTED_RD_SS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x7, 16 } }, .reg_cls = HEX_REG_CLASS_SYS_REGS, .syntax = 3 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = ",
	},
	{
		// 01101100110sssssPP0ttttt000ddddd | Rd = ctlbw(Rss,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0x6cc00000 },
		.id = HEX_INS_IMPORTED_RD_CTLBW_RSS_RT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = ctlbw(,)",
	},
	{
		// 01100110000sssssPP000000000ddddd | Rd = getimask(Rs)
		.encoding = { .mask = 0xffe03fe0, .op = 0x66000000 },
		.id = HEX_INS_IMPORTED_RD_GETIMASK_RS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = getimask()",
	},
	{
		// 01100110011sssssPP000000000ddddd | Rd = iassignr(Rs)
		.encoding = { .mask = 0xffe03fe0, .op = 0x66600000 },
		.id = HEX_INS_IMPORTED_RD_IASSIGNR_RS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = iassignr()",
	},
	{
		// 01101100111sssssPP000000000ddddd | Rd = tlboc(Rss)
		.encoding = { .mask = 0xffe03fe0, .op = 0x6ce00000 },
		.id = HEX_INS_IMPORTED_RD_TLBOC_RSS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = tlboc()",
	},
	{
		// 01101100100sssssPP000000000ddddd | Rd = tlbp(Rs)
		.encoding = { .mask = 0xffe03fe0, .op = 0x6c800000 },
		.id = HEX_INS_IMPORTED_RD_TLBP_RS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = tlbp()",
	},
	{
		// 011011110sssssssPP000000000ddddd | Rdd = Sss
		.encoding = { .mask = 0xff803fe0, .op = 0x6f000000 },
		.id = HEX_INS_IMPORTED_RDD_SSS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x7, 16 } }, .reg_cls = HEX_REG_CLASS_SYS_REGS64, .syntax = 3 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = ",
	},
	{
		// 01101100010sssssPP000000000ddddd | Rdd = tlbr(Rs)
		.encoding = { .mask = 0xffe03fe0, .op = 0x6c400000 },
		.id = HEX_INS_IMPORTED_RDD_TLBR_RS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = tlbr()",
	},
	{
		// 01100111000sssssPP0000000ddddddd | Sd = Rs
		.encoding = { .mask = 0xffe03f80, .op = 0x67000000 },
		.id = HEX_INS_IMPORTED_SD_RS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x7, 0 } }, .reg_cls = HEX_REG_CLASS_SYS_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 3 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = ",
	},
	{
		// 0110110100-sssssPP-------ddddddd | Sdd = Rss
		.encoding = { .mask = 0xffc00000, .op = 0x6d000000 },
		.id = HEX_INS_IMPORTED_SDD_RSS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x7, 0 } }, .reg_cls = HEX_REG_CLASS_SYS_REGS64, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 3 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = ",
	},
	{
		// 01100100000sssssPP00000001100000 | ciad(Rs)
		.encoding = { .mask = 0xffe03fff, .op = 0x64000060 },
		.id = HEX_INS_IMPORTED_CIAD_RS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 5 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "ciad()",
	},
	{
		// 01100101000xxxxxPP00000000000000 | crswap(Rx,sgp0)
		.encoding = { .mask = 0xffe03fff, .op = 0x65000000 },
		.id = HEX_INS_IMPORTED_CRSWAP_RX_SGP0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "crswap(,SGP0)",
	},
	{
		// 01100101001xxxxxPP00000000000000 | crswap(Rx,sgp1)
		.encoding = { .mask = 0xffe03fff, .op = 0x65200000 },
		.id = HEX_INS_IMPORTED_CRSWAP_RX_SGP1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "crswap(,SGP1)",
	},
	{
		// 01101101100xxxxxPP00000000000000 | crswap(Rxx,sgp1:0)
		.encoding = { .mask = 0xffe03fff, .op = 0x6d800000 },
		.id = HEX_INS_IMPORTED_CRSWAP_RXX_SGP1_0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 7 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "crswap(,SGP1:0)",
	},
	{
		// 01100100000sssssPP00000000100000 | cswi(Rs)
		.encoding = { .mask = 0xffe03fff, .op = 0x64000020 },
		.id = HEX_INS_IMPORTED_CSWI_RS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 5 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "CSwi()",
	},
	{
		// 01100100000sssssPP00000001000000 | iassignw(Rs)
		.encoding = { .mask = 0xffe03fff, .op = 0x64000040 },
		.id = HEX_INS_IMPORTED_IASSIGNW_RS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "iassignw()",
	},
	{
		// 0110110000100000PP00000001100000 | k0lock
		.encoding = { .mask = 0xffff3fff, .op = 0x6c200060 },
		.id = HEX_INS_IMPORTED_K0LOCK,
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "k0lock",
	},
	{
		// 0110110000100000PP00000010000000 | k0unlock
		.encoding = { .mask = 0xffff3fff, .op = 0x6c200080 },
		.id = HEX_INS_IMPORTED_K0UNLOCK,
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "k0unlock",
	},
	{
		// 01100100011sssssPP00000001000000 | nmi(Rs)
		.encoding = { .mask = 0xffe03fff, .op = 0x64600040 },
		.id = HEX_INS_IMPORTED_NMI_RS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 4 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "nmi()",
	},
	{
		// 01100100010sssssPP00000000100000 | resume(Rs)
		.encoding = { .mask = 0xffe03fff, .op = 0x64400020 },
		.id = HEX_INS_IMPORTED_RESUME_RS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "resume()",
	},
	{
		// 01100100100sssssPP0000tt00000000 | setimask(Pt,Rs)
		.encoding = { .mask = 0xffe03cff, .op = 0x64800000 },
		.id = HEX_INS_IMPORTED_SETIMASK_PT_RS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 8 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "setimask(,)",
	},
	{
		// 01100100100sssssPP0000tt00100000 | setprio(Pt,Rs)
		.encoding = { .mask = 0xffe03cff, .op = 0x64800020 },
		.id = HEX_INS_IMPORTED_SETPRIO_PT_RS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 8 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "setprio(,)",
	},
	{
		// 01100100100sssssPP00000001100000 | siad(Rs)
		.encoding = { .mask = 0xffe03fff, .op = 0x64800060 },
		.id = HEX_INS_IMPORTED_SIAD_RS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 5 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "siad()",
	},
	{
		// 01100100011sssssPP00000000100000 | start(Rs)
		.encoding = { .mask = 0xffe03fff, .op = 0x64600020 },
		.id = HEX_INS_IMPORTED_START_RS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 6 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "start()",
	},
	{
		// 01100100011sssssPP00000000000000 | stop(Rs)
		.encoding = { .mask = 0xffe03fff, .op = 0x64600000 },
		.id = HEX_INS_IMPORTED_STOP_RS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 5 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "stop()",
	},
	{
		// 01100100000sssssPP00000000000000 | swi(Rs)
		.encoding = { .mask = 0xffe03fff, .op = 0x64000000 },
		.id = HEX_INS_IMPORTED_SWI_RS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 4 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "swi()",
	},
	{
		// 01101100101sssssPP00000000000000 | tlbinvasid(Rs)
		.encoding = { .mask = 0xffe03fff, .op = 0x6ca00000 },
		.id = HEX_INS_IMPORTED_TLBINVASID_RS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "tlbinvasid()",
	},
	{
		// 0110110000100000PP00000000100000 | tlblock
		.encoding = { .mask = 0xffff3fff, .op = 0x6c200020 },
		.id = HEX_INS_IMPORTED_TLBLOCK,
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "tlblock",
	},
	{
		// 0110110000100000PP00000001000000 | tlbunlock
		.encoding = { .mask = 0xffff3fff, .op = 0x6c200040 },
		.id = HEX_INS_IMPORTED_TLBUNLOCK,
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "tlbunlock",
	},
	{
		// 01101100000sssssPP0ttttt00000000 | tlbw(Rss,Rt)
		.encoding = { .mask = 0xffe020ff, .op = 0x6c000000 },
		.id = HEX_INS_IMPORTED_TLBW_RSS_RT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 6 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "tlbw(,)",
	},
	{ { 0 } },
};

static const HexInsnTemplate templates_normal_0x7[] = {
	{
		// 0111011000isssssPPiiiiiiiiiddddd | Rd = and(Rs,Ii)
		.encoding = { .mask = 0xffc00000, .op = 0x76000000 },
		.id = HEX_INS_A2_ANDIR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x9, 5 }, { 0x1, 21 } }, .syntax = 8 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = and(,)",
	},
	{
		// 01110000000sssssPP000000000ddddd | Rd = aslh(Rs)
		.encoding = { .mask = 0xffe03fe0, .op = 0x70000000 },
		.id = HEX_INS_A2_ASLH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = aslh()",
	},
	{
		// 01110000001sssssPP000000000ddddd | Rd = asrh(Rs)
		.encoding = { .mask = 0xffe03fe0, .op = 0x70200000 },
		.id = HEX_INS_A2_ASRH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = asrh()",
	},
	{
		// 011111000IIIIIIIPPIiiiiiiiiddddd | Rdd = combine(Ii,II)
		.encoding = { .mask = 0xff800000, .op = 0x7c000000 },
		.id = HEX_INS_A2_COMBINEII,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x8, 5 } }, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED, .masks = { { 0x1, 13 }, { 0x7, 16 } }, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(,)",
	},
	{
		// 0111111100000000PP00000000000000 | nop
		.encoding = { .mask = 0xffff3fff, .op = 0x7f000000 },
		.id = HEX_INS_A2_NOP,
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NOP,
		.syntax = "nop",
	},
	{
		// 0111011010isssssPPiiiiiiiiiddddd | Rd = or(Rs,Ii)
		.encoding = { .mask = 0xffc00000, .op = 0x76800000 },
		.id = HEX_INS_A2_ORIR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x9, 5 }, { 0x1, 21 } }, .syntax = 7 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = or(,)",
	},
	{
		// 011101001uusssssPP0iiiiiiiiddddd | if (!Pu) Rd = add(Rs,Ii)
		.encoding = { .mask = 0xff802000, .op = 0x74800000 },
		.id = HEX_INS_A2_PADDIF,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 21 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x8, 5 } }, .syntax = 15 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!)  = add(,)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 011101001uusssssPP1iiiiiiiiddddd | if (!Pu.new) Rd = add(Rs,Ii)
		.encoding = { .mask = 0xff802000, .op = 0x74802000 },
		.id = HEX_INS_A2_PADDIFNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 21 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x8, 5 } }, .syntax = 19 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!.new)  = add(,)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 011101000uusssssPP0iiiiiiiiddddd | if (Pu) Rd = add(Rs,Ii)
		.encoding = { .mask = 0xff802000, .op = 0x74000000 },
		.id = HEX_INS_A2_PADDIT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 21 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x8, 5 } }, .syntax = 14 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if ()  = add(,)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 011101000uusssssPP1iiiiiiiiddddd | if (Pu.new) Rd = add(Rs,Ii)
		.encoding = { .mask = 0xff802000, .op = 0x74002000 },
		.id = HEX_INS_A2_PADDITNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 21 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x8, 5 } }, .syntax = 18 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (.new)  = add(,)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 0111011001isssssPPiiiiiiiiiddddd | Rd = sub(Ii,Rs)
		.encoding = { .mask = 0xffc00000, .op = 0x76400000 },
		.id = HEX_INS_A2_SUBRI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x9, 5 }, { 0x1, 21 } }, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = sub(,)",
	},
	{
		// 01110000101sssssPP000000000ddddd | Rd = sxtb(Rs)
		.encoding = { .mask = 0xffe03fe0, .op = 0x70a00000 },
		.id = HEX_INS_A2_SXTB,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = sxtb()",
	},
	{
		// 01110000111sssssPP000000000ddddd | Rd = sxth(Rs)
		.encoding = { .mask = 0xffe03fe0, .op = 0x70e00000 },
		.id = HEX_INS_A2_SXTH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = sxth()",
	},
	{
		// 01110000011sssssPP000000000ddddd | Rd = Rs
		.encoding = { .mask = 0xffe03fe0, .op = 0x70600000 },
		.id = HEX_INS_A2_TFR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 3 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = ",
	},
	{
		// 01110010ii1xxxxxPPiiiiiiiiiiiiii | Rx.h = Ii
		.encoding = { .mask = 0xff200000, .op = 0x72200000 },
		.id = HEX_INS_A2_TFRIH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0xe, 0 }, { 0x2, 22 } }, .syntax = 5 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".h = ",
	},
	{
		// 01110001ii1xxxxxPPiiiiiiiiiiiiii | Rx.l = Ii
		.encoding = { .mask = 0xff200000, .op = 0x71200000 },
		.id = HEX_INS_A2_TFRIL,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0xe, 0 }, { 0x2, 22 } }, .syntax = 5 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ".l = ",
	},
	{
		// 01111000ii0iiiiiPPiiiiiiiiiddddd | Rd = Ii
		.encoding = { .mask = 0xff200000, .op = 0x78000000 },
		.id = HEX_INS_A2_TFRSI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x9, 5 }, { 0x5, 16 }, { 0x2, 22 } }, .syntax = 3 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = ",
	},
	{
		// 01110000110sssssPP000000000ddddd | Rd = zxth(Rs)
		.encoding = { .mask = 0xffe03fe0, .op = 0x70c00000 },
		.id = HEX_INS_A2_ZXTH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = zxth()",
	},
	{
		// 01111100100IIIIIPPIiiiiiiiiddddd | Rdd = combine(Ii,II)
		.encoding = { .mask = 0xffe00000, .op = 0x7c800000 },
		.id = HEX_INS_A4_COMBINEII,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED, .masks = { { 0x8, 5 } }, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x1, 13 }, { 0x5, 16 } }, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(,)",
	},
	{
		// 01110011001sssssPP1iiiiiiiiddddd | Rdd = combine(Ii,Rs)
		.encoding = { .mask = 0xffe02000, .op = 0x73202000 },
		.id = HEX_INS_A4_COMBINEIR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x8, 5 } }, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(,)",
	},
	{
		// 01110011000sssssPP1iiiiiiiiddddd | Rdd = combine(Rs,Ii)
		.encoding = { .mask = 0xffe02000, .op = 0x73002000 },
		.id = HEX_INS_A4_COMBINERI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x8, 5 } }, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(,)",
	},
	{
		// 01110000000sssssPP1010uu000ddddd | if (!Pu) Rd = aslh(Rs)
		.encoding = { .mask = 0xffe03ce0, .op = 0x70002800 },
		.id = HEX_INS_A4_PASLHF,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 8 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 15 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!)  = aslh()",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01110000000sssssPP1011uu000ddddd | if (!Pu.new) Rd = aslh(Rs)
		.encoding = { .mask = 0xffe03ce0, .op = 0x70002c00 },
		.id = HEX_INS_A4_PASLHFNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 8 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 19 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!.new)  = aslh()",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01110000000sssssPP1000uu000ddddd | if (Pu) Rd = aslh(Rs)
		.encoding = { .mask = 0xffe03ce0, .op = 0x70002000 },
		.id = HEX_INS_A4_PASLHT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 8 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 14 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if ()  = aslh()",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01110000000sssssPP1001uu000ddddd | if (Pu.new) Rd = aslh(Rs)
		.encoding = { .mask = 0xffe03ce0, .op = 0x70002400 },
		.id = HEX_INS_A4_PASLHTNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 8 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 18 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (.new)  = aslh()",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01110000001sssssPP1010uu000ddddd | if (!Pu) Rd = asrh(Rs)
		.encoding = { .mask = 0xffe03ce0, .op = 0x70202800 },
		.id = HEX_INS_A4_PASRHF,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 8 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 15 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!)  = asrh()",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01110000001sssssPP1011uu000ddddd | if (!Pu.new) Rd = asrh(Rs)
		.encoding = { .mask = 0xffe03ce0, .op = 0x70202c00 },
		.id = HEX_INS_A4_PASRHFNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 8 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 19 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!.new)  = asrh()",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01110000001sssssPP1000uu000ddddd | if (Pu) Rd = asrh(Rs)
		.encoding = { .mask = 0xffe03ce0, .op = 0x70202000 },
		.id = HEX_INS_A4_PASRHT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 8 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 14 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if ()  = asrh()",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01110000001sssssPP1001uu000ddddd | if (Pu.new) Rd = asrh(Rs)
		.encoding = { .mask = 0xffe03ce0, .op = 0x70202400 },
		.id = HEX_INS_A4_PASRHTNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 8 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 18 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (.new)  = asrh()",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01110000101sssssPP1010uu000ddddd | if (!Pu) Rd = sxtb(Rs)
		.encoding = { .mask = 0xffe03ce0, .op = 0x70a02800 },
		.id = HEX_INS_A4_PSXTBF,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 8 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 15 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!)  = sxtb()",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01110000101sssssPP1011uu000ddddd | if (!Pu.new) Rd = sxtb(Rs)
		.encoding = { .mask = 0xffe03ce0, .op = 0x70a02c00 },
		.id = HEX_INS_A4_PSXTBFNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 8 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 19 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!.new)  = sxtb()",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01110000101sssssPP1000uu000ddddd | if (Pu) Rd = sxtb(Rs)
		.encoding = { .mask = 0xffe03ce0, .op = 0x70a02000 },
		.id = HEX_INS_A4_PSXTBT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 8 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 14 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if ()  = sxtb()",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01110000101sssssPP1001uu000ddddd | if (Pu.new) Rd = sxtb(Rs)
		.encoding = { .mask = 0xffe03ce0, .op = 0x70a02400 },
		.id = HEX_INS_A4_PSXTBTNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 8 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 18 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (.new)  = sxtb()",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01110000111sssssPP1010uu000ddddd | if (!Pu) Rd = sxth(Rs)
		.encoding = { .mask = 0xffe03ce0, .op = 0x70e02800 },
		.id = HEX_INS_A4_PSXTHF,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 8 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 15 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!)  = sxth()",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01110000111sssssPP1011uu000ddddd | if (!Pu.new) Rd = sxth(Rs)
		.encoding = { .mask = 0xffe03ce0, .op = 0x70e02c00 },
		.id = HEX_INS_A4_PSXTHFNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 8 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 19 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!.new)  = sxth()",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01110000111sssssPP1000uu000ddddd | if (Pu) Rd = sxth(Rs)
		.encoding = { .mask = 0xffe03ce0, .op = 0x70e02000 },
		.id = HEX_INS_A4_PSXTHT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 8 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 14 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if ()  = sxth()",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01110000111sssssPP1001uu000ddddd | if (Pu.new) Rd = sxth(Rs)
		.encoding = { .mask = 0xffe03ce0, .op = 0x70e02400 },
		.id = HEX_INS_A4_PSXTHTNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 8 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 18 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (.new)  = sxth()",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01110000100sssssPP1010uu000ddddd | if (!Pu) Rd = zxtb(Rs)
		.encoding = { .mask = 0xffe03ce0, .op = 0x70802800 },
		.id = HEX_INS_A4_PZXTBF,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 8 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 15 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!)  = zxtb()",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01110000100sssssPP1011uu000ddddd | if (!Pu.new) Rd = zxtb(Rs)
		.encoding = { .mask = 0xffe03ce0, .op = 0x70802c00 },
		.id = HEX_INS_A4_PZXTBFNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 8 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 19 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!.new)  = zxtb()",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01110000100sssssPP1000uu000ddddd | if (Pu) Rd = zxtb(Rs)
		.encoding = { .mask = 0xffe03ce0, .op = 0x70802000 },
		.id = HEX_INS_A4_PZXTBT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 8 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 14 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if ()  = zxtb()",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01110000100sssssPP1001uu000ddddd | if (Pu.new) Rd = zxtb(Rs)
		.encoding = { .mask = 0xffe03ce0, .op = 0x70802400 },
		.id = HEX_INS_A4_PZXTBTNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 8 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 18 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (.new)  = zxtb()",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01110000110sssssPP1010uu000ddddd | if (!Pu) Rd = zxth(Rs)
		.encoding = { .mask = 0xffe03ce0, .op = 0x70c02800 },
		.id = HEX_INS_A4_PZXTHF,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 8 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 15 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!)  = zxth()",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01110000110sssssPP1011uu000ddddd | if (!Pu.new) Rd = zxth(Rs)
		.encoding = { .mask = 0xffe03ce0, .op = 0x70c02c00 },
		.id = HEX_INS_A4_PZXTHFNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 8 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 19 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!.new)  = zxth()",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01110000110sssssPP1000uu000ddddd | if (Pu) Rd = zxth(Rs)
		.encoding = { .mask = 0xffe03ce0, .op = 0x70c02000 },
		.id = HEX_INS_A4_PZXTHT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 8 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 14 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if ()  = zxth()",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01110000110sssssPP1001uu000ddddd | if (Pu.new) Rd = zxth(Rs)
		.encoding = { .mask = 0xffe03ce0, .op = 0x70c02400 },
		.id = HEX_INS_A4_PZXTHTNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 8 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 18 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (.new)  = zxth()",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 01110011010sssssPP1iiiiiiiiddddd | Rd = cmp.eq(Rs,Ii)
		.encoding = { .mask = 0xffe02000, .op = 0x73402000 },
		.id = HEX_INS_A4_RCMPEQI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x8, 5 } }, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = cmp.eq(,)",
	},
	{
		// 01110011011sssssPP1iiiiiiiiddddd | Rd = !cmp.eq(Rs,Ii)
		.encoding = { .mask = 0xffe02000, .op = 0x73602000 },
		.id = HEX_INS_A4_RCMPNEQI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x8, 5 } }, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = !cmp.eq(,)",
	},
	{
		// 011111101uu0iiiiPP0iiiiiiiiddddd | if (!Pu) Rd = Ii
		.encoding = { .mask = 0xff902000, .op = 0x7e800000 },
		.id = HEX_INS_C2_CMOVEIF,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 21 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x8, 5 }, { 0x4, 16 } }, .syntax = 10 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!)  = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 011111100uu0iiiiPP0iiiiiiiiddddd | if (Pu) Rd = Ii
		.encoding = { .mask = 0xff902000, .op = 0x7e000000 },
		.id = HEX_INS_C2_CMOVEIT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 21 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x8, 5 }, { 0x4, 16 } }, .syntax = 9 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if ()  = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 011111101uu0iiiiPP1iiiiiiiiddddd | if (!Pu.new) Rd = Ii
		.encoding = { .mask = 0xff902000, .op = 0x7e802000 },
		.id = HEX_INS_C2_CMOVENEWIF,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 21 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x8, 5 }, { 0x4, 16 } }, .syntax = 14 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!.new)  = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 011111100uu0iiiiPP1iiiiiiiiddddd | if (Pu.new) Rd = Ii
		.encoding = { .mask = 0xff902000, .op = 0x7e002000 },
		.id = HEX_INS_C2_CMOVENEWIT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 21 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x8, 5 }, { 0x4, 16 } }, .syntax = 13 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (.new)  = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 0111010100isssssPPiiiiiiiii000dd | Pd = cmp.eq(Rs,Ii)
		.encoding = { .mask = 0xffc0001c, .op = 0x75000000 },
		.id = HEX_INS_C2_CMPEQI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x9, 5 }, { 0x1, 21 } }, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = cmp.eq(,)",
	},
	{
		// 0111010101isssssPPiiiiiiiii000dd | Pd = cmp.gt(Rs,Ii)
		.encoding = { .mask = 0xffc0001c, .op = 0x75400000 },
		.id = HEX_INS_C2_CMPGTI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x9, 5 }, { 0x1, 21 } }, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = cmp.gt(,)",
	},
	{
		// 01110101100sssssPPiiiiiiiii000dd | Pd = cmp.gtu(Rs,Ii)
		.encoding = { .mask = 0xffe0001c, .op = 0x75800000 },
		.id = HEX_INS_C2_CMPGTUI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x9, 5 } }, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = cmp.gtu(,)",
	},
	{
		// 0111101uuIIIIIIIPPIiiiiiiiiddddd | Rd = mux(Pu,Ii,II)
		.encoding = { .mask = 0xfe000000, .op = 0x7a000000 },
		.id = HEX_INS_C2_MUXII,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 23 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x8, 5 } }, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED, .masks = { { 0x1, 13 }, { 0x7, 16 } }, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = mux(,,)",
	},
	{
		// 011100110uusssssPP0iiiiiiiiddddd | Rd = mux(Pu,Rs,Ii)
		.encoding = { .mask = 0xff802000, .op = 0x73000000 },
		.id = HEX_INS_C2_MUXIR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 21 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x8, 5 } }, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = mux(,,)",
	},
	{
		// 011100111uusssssPP0iiiiiiiiddddd | Rd = mux(Pu,Ii,Rs)
		.encoding = { .mask = 0xff802000, .op = 0x73800000 },
		.id = HEX_INS_C2_MUXRI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 21 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x8, 5 } }, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = mux(,,)",
	},
	{
		// 0111010101isssssPPiiiiiiiii100dd | Pd = !cmp.gt(Rs,Ii)
		.encoding = { .mask = 0xffc0001c, .op = 0x75400010 },
		.id = HEX_INS_C4_CMPLTEI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x9, 5 }, { 0x1, 21 } }, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = !cmp.gt(,)",
	},
	{
		// 01110101100sssssPPiiiiiiiii100dd | Pd = !cmp.gtu(Rs,Ii)
		.encoding = { .mask = 0xffe0001c, .op = 0x75800010 },
		.id = HEX_INS_C4_CMPLTEUI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x9, 5 } }, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = !cmp.gtu(,)",
	},
	{
		// 0111010100isssssPPiiiiiiiii100dd | Pd = !cmp.eq(Rs,Ii)
		.encoding = { .mask = 0xffc0001c, .op = 0x75000010 },
		.id = HEX_INS_C4_CMPNEQI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x9, 5 }, { 0x1, 21 } }, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = !cmp.eq(,)",
	},
	{ { 0 } },
};

static const HexInsnTemplate templates_normal_0x8[] = {
	{
		// 10001100100sssssPP000000100ddddd | Rd = abs(Rs)
		.encoding = { .mask = 0xffe03fe0, .op = 0x8c800080 },
		.id = HEX_INS_A2_ABS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = abs()",
	},
	{
		// 10000000100sssssPP000000110ddddd | Rdd = abs(Rss)
		.encoding = { .mask = 0xffe03fe0, .op = 0x808000c0 },
		.id = HEX_INS_A2_ABSP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 7 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = abs()",
	},
	{
		// 10001100100sssssPP000000101ddddd | Rd = abs(Rs):sat
		.encoding = { .mask = 0xffe03fe0, .op = 0x8c8000a0 },
		.id = HEX_INS_A2_ABSSAT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = abs():sat",
	},
	{
		// 10000000100sssssPP000000101ddddd | Rdd = neg(Rss)
		.encoding = { .mask = 0xffe03fe0, .op = 0x808000a0 },
		.id = HEX_INS_A2_NEGP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 7 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = neg()",
	},
	{
		// 10001100100sssssPP000000110ddddd | Rd = neg(Rs):sat
		.encoding = { .mask = 0xffe03fe0, .op = 0x8c8000c0 },
		.id = HEX_INS_A2_NEGSAT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = neg():sat",
	},
	{
		// 10000000100sssssPP000000100ddddd | Rdd = not(Rss)
		.encoding = { .mask = 0xffe03fe0, .op = 0x80800080 },
		.id = HEX_INS_A2_NOTP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 7 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = not()",
	},
	{
		// 10001000110sssssPP000000001ddddd | Rd = round(Rss):sat
		.encoding = { .mask = 0xffe03fe0, .op = 0x88c00020 },
		.id = HEX_INS_A2_ROUNDSAT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = round():sat",
	},
	{
		// 10001000110sssssPP000000000ddddd | Rd = sat(Rss)
		.encoding = { .mask = 0xffe03fe0, .op = 0x88c00000 },
		.id = HEX_INS_A2_SAT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 7 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = sat()",
	},
	{
		// 10001100110sssssPP000000111ddddd | Rd = satb(Rs)
		.encoding = { .mask = 0xffe03fe0, .op = 0x8cc000e0 },
		.id = HEX_INS_A2_SATB,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = satb()",
	},
	{
		// 10001100110sssssPP000000100ddddd | Rd = sath(Rs)
		.encoding = { .mask = 0xffe03fe0, .op = 0x8cc00080 },
		.id = HEX_INS_A2_SATH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = sath()",
	},
	{
		// 10001100110sssssPP000000110ddddd | Rd = satub(Rs)
		.encoding = { .mask = 0xffe03fe0, .op = 0x8cc000c0 },
		.id = HEX_INS_A2_SATUB,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = satub()",
	},
	{
		// 10001100110sssssPP000000101ddddd | Rd = satuh(Rs)
		.encoding = { .mask = 0xffe03fe0, .op = 0x8cc000a0 },
		.id = HEX_INS_A2_SATUH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = satuh()",
	},
	{
		// 10001100100sssssPP000000111ddddd | Rd = swiz(Rs)
		.encoding = { .mask = 0xffe03fe0, .op = 0x8c8000e0 },
		.id = HEX_INS_A2_SWIZ,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = swiz()",
	},
	{
		// 10000100010sssssPP000000000ddddd | Rdd = sxtw(Rs)
		.encoding = { .mask = 0xffe03fe0, .op = 0x84400000 },
		.id = HEX_INS_A2_SXTW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = sxtw()",
	},
	{
		// 10000000010sssssPP000000100ddddd | Rdd = vabsh(Rss)
		.encoding = { .mask = 0xffe03fe0, .op = 0x80400080 },
		.id = HEX_INS_A2_VABSH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vabsh()",
	},
	{
		// 10000000010sssssPP000000101ddddd | Rdd = vabsh(Rss):sat
		.encoding = { .mask = 0xffe03fe0, .op = 0x804000a0 },
		.id = HEX_INS_A2_VABSHSAT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vabsh():sat",
	},
	{
		// 10000000010sssssPP000000110ddddd | Rdd = vabsw(Rss)
		.encoding = { .mask = 0xffe03fe0, .op = 0x804000c0 },
		.id = HEX_INS_A2_VABSW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vabsw()",
	},
	{
		// 10000000010sssssPP000000111ddddd | Rdd = vabsw(Rss):sat
		.encoding = { .mask = 0xffe03fe0, .op = 0x804000e0 },
		.id = HEX_INS_A2_VABSWSAT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vabsw():sat",
	},
	{
		// 10000000100sssssPP000000111ddddd | Rdd = vconj(Rss):sat
		.encoding = { .mask = 0xffe03fe0, .op = 0x808000e0 },
		.id = HEX_INS_A2_VCONJ,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vconj():sat",
	},
	{
		// 10001000110sssssPP0iiiii100ddddd | Rdd = bitsplit(Rs,Ii)
		.encoding = { .mask = 0xffe020e0, .op = 0x88c00080 },
		.id = HEX_INS_A4_BITSPLITI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 8 } }, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = bitsplit(,)",
	},
	{
		// 10001100111sssssPP0iiiii000ddddd | Rd = cround(Rs,Ii)
		.encoding = { .mask = 0xffe020e0, .op = 0x8ce00000 },
		.id = HEX_INS_A4_CROUND_RI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 8 } }, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = cround(,)",
	},
	{
		// 10001100111sssssPP0iiiii100ddddd | Rd = round(Rs,Ii)
		.encoding = { .mask = 0xffe020e0, .op = 0x8ce00080 },
		.id = HEX_INS_A4_ROUND_RI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 8 } }, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = round(,)",
	},
	{
		// 10001100111sssssPP0iiiii110ddddd | Rd = round(Rs,Ii):sat
		.encoding = { .mask = 0xffe020e0, .op = 0x8ce000c0 },
		.id = HEX_INS_A4_ROUND_RI_SAT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 8 } }, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = round(,):sat",
	},
	{
		// 10001000110sssssPP0iiiii101ddddd | Rd = clip(Rs,Ii)
		.encoding = { .mask = 0xffe020e0, .op = 0x88c000a0 },
		.id = HEX_INS_A7_CLIP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 8 } }, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = clip(,)",
	},
	{
		// 10001100111sssssPPiiiiii010ddddd | Rdd = cround(Rss,Ii)
		.encoding = { .mask = 0xffe000e0, .op = 0x8ce00040 },
		.id = HEX_INS_A7_CROUNDD_RI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x6, 8 } }, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = cround(,)",
	},
	{
		// 10001000110sssssPP0iiiii110ddddd | Rdd = vclip(Rss,Ii)
		.encoding = { .mask = 0xffe020e0, .op = 0x88c000c0 },
		.id = HEX_INS_A7_VCLIP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 8 } }, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vclip(,)",
	},
	{
		// 10000101100sssssPPiiiiii000000dd | Pd = bitsclr(Rs,Ii)
		.encoding = { .mask = 0xffe000fc, .op = 0x85800000 },
		.id = HEX_INS_C2_BITSCLRI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x6, 8 } }, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = bitsclr(,)",
	},
	{
		// 1000011000000000PP0000tt000ddddd | Rdd = mask(Pt)
		.encoding = { .mask = 0xffff3ce0, .op = 0x86000000 },
		.id = HEX_INS_C2_MASK,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 8 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 8 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = mask()",
	},
	{
		// 10001001010000ssPP000000000ddddd | Rd = Ps
		.encoding = { .mask = 0xfffc3fe0, .op = 0x89400000 },
		.id = HEX_INS_C2_TFRPR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 16 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 3 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = ",
	},
	{
		// 10000101010sssssPP000000000000dd | Pd = Rs
		.encoding = { .mask = 0xffe03ffc, .op = 0x85400000 },
		.id = HEX_INS_C2_TFRRP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 3 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = ",
	},
	{
		// 10001001000000ssPP0000tt000ddddd | Rd = vitpack(Ps,Pt)
		.encoding = { .mask = 0xfffc3ce0, .op = 0x89000000 },
		.id = HEX_INS_C2_VITPACK,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 16 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 8 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vitpack(,)",
	},
	{
		// 10000101101sssssPPiiiiii000000dd | Pd = !bitsclr(Rs,Ii)
		.encoding = { .mask = 0xffe000fc, .op = 0x85a00000 },
		.id = HEX_INS_C4_NBITSCLRI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x6, 8 } }, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = !bitsclr(,)",
	},
	{
		// 10000000111sssssPP000000011ddddd | Rdd = convert_d2df(Rss)
		.encoding = { .mask = 0xffe03fe0, .op = 0x80e00060 },
		.id = HEX_INS_F2_CONV_D2DF,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 16 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = convert_D2df()",
	},
	{
		// 10001000010sssssPP000000001ddddd | Rd = convert_d2sf(Rss)
		.encoding = { .mask = 0xffe03fe0, .op = 0x88400020 },
		.id = HEX_INS_F2_CONV_D2SF,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 16 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = convert_D2sf()",
	},
	{
		// 10000000111sssssPP000000000ddddd | Rdd = convert_df2d(Rss)
		.encoding = { .mask = 0xffe03fe0, .op = 0x80e00000 },
		.id = HEX_INS_F2_CONV_DF2D,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 16 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = convert_df2d()",
	},
	{
		// 10000000111sssssPP000000110ddddd | Rdd = convert_df2d(Rss):chop
		.encoding = { .mask = 0xffe03fe0, .op = 0x80e000c0 },
		.id = HEX_INS_F2_CONV_DF2D_CHOP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 16 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = convert_df2d():chop",
	},
	{
		// 10001000000sssssPP000000001ddddd | Rd = convert_df2sf(Rss)
		.encoding = { .mask = 0xffe03fe0, .op = 0x88000020 },
		.id = HEX_INS_F2_CONV_DF2SF,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 17 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = convert_df2sf()",
	},
	{
		// 10000000111sssssPP000000001ddddd | Rdd = convert_df2ud(Rss)
		.encoding = { .mask = 0xffe03fe0, .op = 0x80e00020 },
		.id = HEX_INS_F2_CONV_DF2UD,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 17 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = convert_df2ud()",
	},
	{
		// 10000000111sssssPP000000111ddddd | Rdd = convert_df2ud(Rss):chop
		.encoding = { .mask = 0xffe03fe0, .op = 0x80e000e0 },
		.id = HEX_INS_F2_CONV_DF2UD_CHOP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 17 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = convert_df2ud():chop",
	},
	{
		// 10001000011sssssPP000000001ddddd | Rd = convert_df2uw(Rss)
		.encoding = { .mask = 0xffe03fe0, .op = 0x88600020 },
		.id = HEX_INS_F2_CONV_DF2UW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 17 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = convert_df2uw()",
	},
	{
		// 10001000101sssssPP000000001ddddd | Rd = convert_df2uw(Rss):chop
		.encoding = { .mask = 0xffe03fe0, .op = 0x88a00020 },
		.id = HEX_INS_F2_CONV_DF2UW_CHOP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 17 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = convert_df2uw():chop",
	},
	{
		// 10001000100sssssPP000000001ddddd | Rd = convert_df2w(Rss)
		.encoding = { .mask = 0xffe03fe0, .op = 0x88800020 },
		.id = HEX_INS_F2_CONV_DF2W,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 16 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = convert_df2w()",
	},
	{
		// 10001000111sssssPP000000001ddddd | Rd = convert_df2w(Rss):chop
		.encoding = { .mask = 0xffe03fe0, .op = 0x88e00020 },
		.id = HEX_INS_F2_CONV_DF2W_CHOP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 16 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = convert_df2w():chop",
	},
	{
		// 10000100100sssssPP000000100ddddd | Rdd = convert_sf2d(Rs)
		.encoding = { .mask = 0xffe03fe0, .op = 0x84800080 },
		.id = HEX_INS_F2_CONV_SF2D,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 16 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = convert_sf2d()",
	},
	{
		// 10000100100sssssPP000000110ddddd | Rdd = convert_sf2d(Rs):chop
		.encoding = { .mask = 0xffe03fe0, .op = 0x848000c0 },
		.id = HEX_INS_F2_CONV_SF2D_CHOP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 16 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = convert_sf2d():chop",
	},
	{
		// 10000100100sssssPP000000000ddddd | Rdd = convert_sf2df(Rs)
		.encoding = { .mask = 0xffe03fe0, .op = 0x84800000 },
		.id = HEX_INS_F2_CONV_SF2DF,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 17 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = convert_sf2df()",
	},
	{
		// 10000100100sssssPP000000011ddddd | Rdd = convert_sf2ud(Rs)
		.encoding = { .mask = 0xffe03fe0, .op = 0x84800060 },
		.id = HEX_INS_F2_CONV_SF2UD,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 17 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = convert_sf2ud()",
	},
	{
		// 10000100100sssssPP000000101ddddd | Rdd = convert_sf2ud(Rs):chop
		.encoding = { .mask = 0xffe03fe0, .op = 0x848000a0 },
		.id = HEX_INS_F2_CONV_SF2UD_CHOP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 17 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = convert_sf2ud():chop",
	},
	{
		// 10001011011sssssPP000000000ddddd | Rd = convert_sf2uw(Rs)
		.encoding = { .mask = 0xffe03fe0, .op = 0x8b600000 },
		.id = HEX_INS_F2_CONV_SF2UW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 17 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = convert_sf2uw()",
	},
	{
		// 10001011011sssssPP000000001ddddd | Rd = convert_sf2uw(Rs):chop
		.encoding = { .mask = 0xffe03fe0, .op = 0x8b600020 },
		.id = HEX_INS_F2_CONV_SF2UW_CHOP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 17 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = convert_sf2uw():chop",
	},
	{
		// 10001011100sssssPP000000000ddddd | Rd = convert_sf2w(Rs)
		.encoding = { .mask = 0xffe03fe0, .op = 0x8b800000 },
		.id = HEX_INS_F2_CONV_SF2W,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 16 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = convert_sf2w()",
	},
	{
		// 10001011100sssssPP000000001ddddd | Rd = convert_sf2w(Rs):chop
		.encoding = { .mask = 0xffe03fe0, .op = 0x8b800020 },
		.id = HEX_INS_F2_CONV_SF2W_CHOP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 16 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = convert_sf2w():chop",
	},
	{
		// 10000000111sssssPP000000010ddddd | Rdd = convert_ud2df(Rss)
		.encoding = { .mask = 0xffe03fe0, .op = 0x80e00040 },
		.id = HEX_INS_F2_CONV_UD2DF,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 17 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = convert_ud2df()",
	},
	{
		// 10001000001sssssPP000000001ddddd | Rd = convert_ud2sf(Rss)
		.encoding = { .mask = 0xffe03fe0, .op = 0x88200020 },
		.id = HEX_INS_F2_CONV_UD2SF,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 17 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = convert_ud2sf()",
	},
	{
		// 10000100100sssssPP000000001ddddd | Rdd = convert_uw2df(Rs)
		.encoding = { .mask = 0xffe03fe0, .op = 0x84800020 },
		.id = HEX_INS_F2_CONV_UW2DF,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 17 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = convert_uw2df()",
	},
	{
		// 10001011001sssssPP000000000ddddd | Rd = convert_uw2sf(Rs)
		.encoding = { .mask = 0xffe03fe0, .op = 0x8b200000 },
		.id = HEX_INS_F2_CONV_UW2SF,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 17 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = convert_uw2sf()",
	},
	{
		// 10000100100sssssPP000000010ddddd | Rdd = convert_w2df(Rs)
		.encoding = { .mask = 0xffe03fe0, .op = 0x84800040 },
		.id = HEX_INS_F2_CONV_W2DF,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 16 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = convert_W2df()",
	},
	{
		// 10001011010sssssPP000000000ddddd | Rd = convert_w2sf(Rs)
		.encoding = { .mask = 0xffe03fe0, .op = 0x8b400000 },
		.id = HEX_INS_F2_CONV_W2SF,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 16 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = convert_W2sf()",
	},
	{
		// 10000101111sssssPP0iiiii000000dd | Pd = sfclass(Rs,Ii)
		.encoding = { .mask = 0xffe020fc, .op = 0x85e00000 },
		.id = HEX_INS_F2_SFCLASS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 8 } }, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = sfclass(,)",
	},
	{
		// 10001011101sssssPP000000000ddddd | Rd = sffixupr(Rs)
		.encoding = { .mask = 0xffe03fe0, .op = 0x8ba00000 },
		.id = HEX_INS_F2_SFFIXUPR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = sffixupr()",
	},
	{
		// 10001011111sssssPP0000000eeddddd | Rd,Pe = sfinvsqrta(Rs)
		.encoding = { .mask = 0xffe03f80, .op = 0x8be00000 },
		.id = HEX_INS_F2_SFINVSQRTA,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 5 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 1 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ", = sfinvsqrta()",
	},
	{
		// 10000000000sssssPPiiiiii010ddddd | Rdd = asl(Rss,Ii)
		.encoding = { .mask = 0xffe000e0, .op = 0x80000040 },
		.id = HEX_INS_S2_ASL_I_P,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x6, 8 } }, .syntax = 8 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = asl(,)",
	},
	{
		// 10000010000sssssPPiiiiii110xxxxx | Rxx += asl(Rss,Ii)
		.encoding = { .mask = 0xffe000e0, .op = 0x820000c0 },
		.id = HEX_INS_S2_ASL_I_P_ACC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x6, 8 } }, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += asl(,)",
	},
	{
		// 10000010010sssssPPiiiiii010xxxxx | Rxx &= asl(Rss,Ii)
		.encoding = { .mask = 0xffe000e0, .op = 0x82400040 },
		.id = HEX_INS_S2_ASL_I_P_AND,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x6, 8 } }, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " &= asl(,)",
	},
	{
		// 10000010000sssssPPiiiiii010xxxxx | Rxx -= asl(Rss,Ii)
		.encoding = { .mask = 0xffe000e0, .op = 0x82000040 },
		.id = HEX_INS_S2_ASL_I_P_NAC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x6, 8 } }, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " -= asl(,)",
	},
	{
		// 10000010010sssssPPiiiiii110xxxxx | Rxx |= asl(Rss,Ii)
		.encoding = { .mask = 0xffe000e0, .op = 0x824000c0 },
		.id = HEX_INS_S2_ASL_I_P_OR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x6, 8 } }, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " |= asl(,)",
	},
	{
		// 10000010100sssssPPiiiiii010xxxxx | Rxx ^= asl(Rss,Ii)
		.encoding = { .mask = 0xffe000e0, .op = 0x82800040 },
		.id = HEX_INS_S2_ASL_I_P_XACC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x6, 8 } }, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " ^= asl(,)",
	},
	{
		// 10001100000sssssPP0iiiii010ddddd | Rd = asl(Rs,Ii)
		.encoding = { .mask = 0xffe020e0, .op = 0x8c000040 },
		.id = HEX_INS_S2_ASL_I_R,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 8 } }, .syntax = 8 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = asl(,)",
	},
	{
		// 10001110000sssssPP0iiiii110xxxxx | Rx += asl(Rs,Ii)
		.encoding = { .mask = 0xffe020e0, .op = 0x8e0000c0 },
		.id = HEX_INS_S2_ASL_I_R_ACC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 8 } }, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += asl(,)",
	},
	{
		// 10001110010sssssPP0iiiii010xxxxx | Rx &= asl(Rs,Ii)
		.encoding = { .mask = 0xffe020e0, .op = 0x8e400040 },
		.id = HEX_INS_S2_ASL_I_R_AND,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 8 } }, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " &= asl(,)",
	},
	{
		// 10001110000sssssPP0iiiii010xxxxx | Rx -= asl(Rs,Ii)
		.encoding = { .mask = 0xffe020e0, .op = 0x8e000040 },
		.id = HEX_INS_S2_ASL_I_R_NAC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 8 } }, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " -= asl(,)",
	},
	{
		// 10001110010sssssPP0iiiii110xxxxx | Rx |= asl(Rs,Ii)
		.encoding = { .mask = 0xffe020e0, .op = 0x8e4000c0 },
		.id = HEX_INS_S2_ASL_I_R_OR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 8 } }, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " |= asl(,)",
	},
	{
		// 10001100010sssssPP0iiiii010ddddd | Rd = asl(Rs,Ii):sat
		.encoding = { .mask = 0xffe020e0, .op = 0x8c400040 },
		.id = HEX_INS_S2_ASL_I_R_SAT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 8 } }, .syntax = 8 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = asl(,):sat",
	},
	{
		// 10001110100sssssPP0iiiii010xxxxx | Rx ^= asl(Rs,Ii)
		.encoding = { .mask = 0xffe020e0, .op = 0x8e800040 },
		.id = HEX_INS_S2_ASL_I_R_XACC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 8 } }, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " ^= asl(,)",
	},
	{
		// 10000000100sssssPP00iiii010ddddd | Rdd = vaslh(Rss,Ii)
		.encoding = { .mask = 0xffe030e0, .op = 0x80800040 },
		.id = HEX_INS_S2_ASL_I_VH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 8 } }, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vaslh(,)",
	},
	{
		// 10000000010sssssPP0iiiii010ddddd | Rdd = vaslw(Rss,Ii)
		.encoding = { .mask = 0xffe020e0, .op = 0x80400040 },
		.id = HEX_INS_S2_ASL_I_VW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 8 } }, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vaslw(,)",
	},
	{
		// 10000000000sssssPPiiiiii000ddddd | Rdd = asr(Rss,Ii)
		.encoding = { .mask = 0xffe000e0, .op = 0x80000000 },
		.id = HEX_INS_S2_ASR_I_P,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x6, 8 } }, .syntax = 8 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = asr(,)",
	},
	{
		// 10000010000sssssPPiiiiii100xxxxx | Rxx += asr(Rss,Ii)
		.encoding = { .mask = 0xffe000e0, .op = 0x82000080 },
		.id = HEX_INS_S2_ASR_I_P_ACC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x6, 8 } }, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += asr(,)",
	},
	{
		// 10000010010sssssPPiiiiii000xxxxx | Rxx &= asr(Rss,Ii)
		.encoding = { .mask = 0xffe000e0, .op = 0x82400000 },
		.id = HEX_INS_S2_ASR_I_P_AND,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x6, 8 } }, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " &= asr(,)",
	},
	{
		// 10000010000sssssPPiiiiii000xxxxx | Rxx -= asr(Rss,Ii)
		.encoding = { .mask = 0xffe000e0, .op = 0x82000000 },
		.id = HEX_INS_S2_ASR_I_P_NAC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x6, 8 } }, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " -= asr(,)",
	},
	{
		// 10000010010sssssPPiiiiii100xxxxx | Rxx |= asr(Rss,Ii)
		.encoding = { .mask = 0xffe000e0, .op = 0x82400080 },
		.id = HEX_INS_S2_ASR_I_P_OR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x6, 8 } }, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " |= asr(,)",
	},
	{
		// 10000000110sssssPPiiiiii111ddddd | Rdd = asr(Rss,Ii):rnd
		.encoding = { .mask = 0xffe000e0, .op = 0x80c000e0 },
		.id = HEX_INS_S2_ASR_I_P_RND,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x6, 8 } }, .syntax = 8 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = asr(,):rnd",
	},
	{
		// 10001100000sssssPP0iiiii000ddddd | Rd = asr(Rs,Ii)
		.encoding = { .mask = 0xffe020e0, .op = 0x8c000000 },
		.id = HEX_INS_S2_ASR_I_R,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 8 } }, .syntax = 8 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = asr(,)",
	},
	{
		// 10001110000sssssPP0iiiii100xxxxx | Rx += asr(Rs,Ii)
		.encoding = { .mask = 0xffe020e0, .op = 0x8e000080 },
		.id = HEX_INS_S2_ASR_I_R_ACC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 8 } }, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += asr(,)",
	},
	{
		// 10001110010sssssPP0iiiii000xxxxx | Rx &= asr(Rs,Ii)
		.encoding = { .mask = 0xffe020e0, .op = 0x8e400000 },
		.id = HEX_INS_S2_ASR_I_R_AND,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 8 } }, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " &= asr(,)",
	},
	{
		// 10001110000sssssPP0iiiii000xxxxx | Rx -= asr(Rs,Ii)
		.encoding = { .mask = 0xffe020e0, .op = 0x8e000000 },
		.id = HEX_INS_S2_ASR_I_R_NAC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 8 } }, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " -= asr(,)",
	},
	{
		// 10001110010sssssPP0iiiii100xxxxx | Rx |= asr(Rs,Ii)
		.encoding = { .mask = 0xffe020e0, .op = 0x8e400080 },
		.id = HEX_INS_S2_ASR_I_R_OR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 8 } }, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " |= asr(,)",
	},
	{
		// 10001100010sssssPP0iiiii000ddddd | Rd = asr(Rs,Ii):rnd
		.encoding = { .mask = 0xffe020e0, .op = 0x8c400000 },
		.id = HEX_INS_S2_ASR_I_R_RND,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 8 } }, .syntax = 8 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = asr(,):rnd",
	},
	{
		// 10001000110sssssPP0iiiii010ddddd | Rd = vasrw(Rss,Ii)
		.encoding = { .mask = 0xffe020e0, .op = 0x88c00040 },
		.id = HEX_INS_S2_ASR_I_SVW_TRUN,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 8 } }, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vasrw(,)",
	},
	{
		// 10000000100sssssPP00iiii000ddddd | Rdd = vasrh(Rss,Ii)
		.encoding = { .mask = 0xffe030e0, .op = 0x80800000 },
		.id = HEX_INS_S2_ASR_I_VH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 8 } }, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vasrh(,)",
	},
	{
		// 10000000010sssssPP0iiiii000ddddd | Rdd = vasrw(Rss,Ii)
		.encoding = { .mask = 0xffe020e0, .op = 0x80400000 },
		.id = HEX_INS_S2_ASR_I_VW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 8 } }, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vasrw(,)",
	},
	{
		// 10001100010sssssPP000000110ddddd | Rd = brev(Rs)
		.encoding = { .mask = 0xffe03fe0, .op = 0x8c4000c0 },
		.id = HEX_INS_S2_BREV,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = brev()",
	},
	{
		// 10000000110sssssPP000000110ddddd | Rdd = brev(Rss)
		.encoding = { .mask = 0xffe03fe0, .op = 0x80c000c0 },
		.id = HEX_INS_S2_BREVP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 8 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = brev()",
	},
	{
		// 10001100000sssssPP000000101ddddd | Rd = cl0(Rs)
		.encoding = { .mask = 0xffe03fe0, .op = 0x8c0000a0 },
		.id = HEX_INS_S2_CL0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = cl0()",
	},
	{
		// 10001000010sssssPP000000010ddddd | Rd = cl0(Rss)
		.encoding = { .mask = 0xffe03fe0, .op = 0x88400040 },
		.id = HEX_INS_S2_CL0P,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 7 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = cl0()",
	},
	{
		// 10001100000sssssPP000000110ddddd | Rd = cl1(Rs)
		.encoding = { .mask = 0xffe03fe0, .op = 0x8c0000c0 },
		.id = HEX_INS_S2_CL1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = cl1()",
	},
	{
		// 10001000010sssssPP000000100ddddd | Rd = cl1(Rss)
		.encoding = { .mask = 0xffe03fe0, .op = 0x88400080 },
		.id = HEX_INS_S2_CL1P,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 7 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = cl1()",
	},
	{
		// 10001100000sssssPP000000100ddddd | Rd = clb(Rs)
		.encoding = { .mask = 0xffe03fe0, .op = 0x8c000080 },
		.id = HEX_INS_S2_CLB,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = clb()",
	},
	{
		// 10001100000sssssPP000000111ddddd | Rd = normamt(Rs)
		.encoding = { .mask = 0xffe03fe0, .op = 0x8c0000e0 },
		.id = HEX_INS_S2_CLBNORM,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = normamt()",
	},
	{
		// 10001000010sssssPP000000000ddddd | Rd = clb(Rss)
		.encoding = { .mask = 0xffe03fe0, .op = 0x88400000 },
		.id = HEX_INS_S2_CLBP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 7 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = clb()",
	},
	{
		// 10001100110sssssPP0iiiii001ddddd | Rd = clrbit(Rs,Ii)
		.encoding = { .mask = 0xffe020e0, .op = 0x8cc00020 },
		.id = HEX_INS_S2_CLRBIT_I,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 8 } }, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = clrbit(,)",
	},
	{
		// 10001100010sssssPP000000100ddddd | Rd = ct0(Rs)
		.encoding = { .mask = 0xffe03fe0, .op = 0x8c400080 },
		.id = HEX_INS_S2_CT0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = ct0()",
	},
	{
		// 10001000111sssssPP000000010ddddd | Rd = ct0(Rss)
		.encoding = { .mask = 0xffe03fe0, .op = 0x88e00040 },
		.id = HEX_INS_S2_CT0P,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 7 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = ct0()",
	},
	{
		// 10001100010sssssPP000000101ddddd | Rd = ct1(Rs)
		.encoding = { .mask = 0xffe03fe0, .op = 0x8c4000a0 },
		.id = HEX_INS_S2_CT1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = ct1()",
	},
	{
		// 10001000111sssssPP000000100ddddd | Rd = ct1(Rss)
		.encoding = { .mask = 0xffe03fe0, .op = 0x88e00080 },
		.id = HEX_INS_S2_CT1P,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 7 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = ct1()",
	},
	{
		// 10000000110sssssPP000000100ddddd | Rdd = deinterleave(Rss)
		.encoding = { .mask = 0xffe03fe0, .op = 0x80c00080 },
		.id = HEX_INS_S2_DEINTERLEAVE,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 16 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = deinterleave()",
	},
	{
		// 100011010IIsssssPP0iiiiiIIIddddd | Rd = extractu(Rs,Ii,II)
		.encoding = { .mask = 0xff802000, .op = 0x8d000000 },
		.id = HEX_INS_S2_EXTRACTU,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 8 } }, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 5 }, { 0x2, 21 } }, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = extractu(,,)",
	},
	{
		// 10000001IIIsssssPPiiiiiiIIIddddd | Rdd = extractu(Rss,Ii,II)
		.encoding = { .mask = 0xff000000, .op = 0x81000000 },
		.id = HEX_INS_S2_EXTRACTUP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x6, 8 } }, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 5 }, { 0x3, 21 } }, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = extractu(,,)",
	},
	{
		// 100011110IIsssssPP0iiiiiIIIxxxxx | Rx = insert(Rs,Ii,II)
		.encoding = { .mask = 0xff802000, .op = 0x8f000000 },
		.id = HEX_INS_S2_INSERT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 8 } }, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 5 }, { 0x2, 21 } }, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = insert(,,)",
	},
	{
		// 10000011IIIsssssPPiiiiiiIIIxxxxx | Rxx = insert(Rss,Ii,II)
		.encoding = { .mask = 0xff000000, .op = 0x83000000 },
		.id = HEX_INS_S2_INSERTP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x6, 8 } }, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 5 }, { 0x3, 21 } }, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = insert(,,)",
	},
	{
		// 10000000110sssssPP000000101ddddd | Rdd = interleave(Rss)
		.encoding = { .mask = 0xffe03fe0, .op = 0x80c000a0 },
		.id = HEX_INS_S2_INTERLEAVE,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = interleave()",
	},
	{
		// 10000000000sssssPPiiiiii001ddddd | Rdd = lsr(Rss,Ii)
		.encoding = { .mask = 0xffe000e0, .op = 0x80000020 },
		.id = HEX_INS_S2_LSR_I_P,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x6, 8 } }, .syntax = 8 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = lsr(,)",
	},
	{
		// 10000010000sssssPPiiiiii101xxxxx | Rxx += lsr(Rss,Ii)
		.encoding = { .mask = 0xffe000e0, .op = 0x820000a0 },
		.id = HEX_INS_S2_LSR_I_P_ACC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x6, 8 } }, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += lsr(,)",
	},
	{
		// 10000010010sssssPPiiiiii001xxxxx | Rxx &= lsr(Rss,Ii)
		.encoding = { .mask = 0xffe000e0, .op = 0x82400020 },
		.id = HEX_INS_S2_LSR_I_P_AND,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x6, 8 } }, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " &= lsr(,)",
	},
	{
		// 10000010000sssssPPiiiiii001xxxxx | Rxx -= lsr(Rss,Ii)
		.encoding = { .mask = 0xffe000e0, .op = 0x82000020 },
		.id = HEX_INS_S2_LSR_I_P_NAC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x6, 8 } }, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " -= lsr(,)",
	},
	{
		// 10000010010sssssPPiiiiii101xxxxx | Rxx |= lsr(Rss,Ii)
		.encoding = { .mask = 0xffe000e0, .op = 0x824000a0 },
		.id = HEX_INS_S2_LSR_I_P_OR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x6, 8 } }, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " |= lsr(,)",
	},
	{
		// 10000010100sssssPPiiiiii001xxxxx | Rxx ^= lsr(Rss,Ii)
		.encoding = { .mask = 0xffe000e0, .op = 0x82800020 },
		.id = HEX_INS_S2_LSR_I_P_XACC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x6, 8 } }, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " ^= lsr(,)",
	},
	{
		// 10001100000sssssPP0iiiii001ddddd | Rd = lsr(Rs,Ii)
		.encoding = { .mask = 0xffe020e0, .op = 0x8c000020 },
		.id = HEX_INS_S2_LSR_I_R,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 8 } }, .syntax = 8 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = lsr(,)",
	},
	{
		// 10001110000sssssPP0iiiii101xxxxx | Rx += lsr(Rs,Ii)
		.encoding = { .mask = 0xffe020e0, .op = 0x8e0000a0 },
		.id = HEX_INS_S2_LSR_I_R_ACC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 8 } }, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += lsr(,)",
	},
	{
		// 10001110010sssssPP0iiiii001xxxxx | Rx &= lsr(Rs,Ii)
		.encoding = { .mask = 0xffe020e0, .op = 0x8e400020 },
		.id = HEX_INS_S2_LSR_I_R_AND,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 8 } }, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " &= lsr(,)",
	},
	{
		// 10001110000sssssPP0iiiii001xxxxx | Rx -= lsr(Rs,Ii)
		.encoding = { .mask = 0xffe020e0, .op = 0x8e000020 },
		.id = HEX_INS_S2_LSR_I_R_NAC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 8 } }, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " -= lsr(,)",
	},
	{
		// 10001110010sssssPP0iiiii101xxxxx | Rx |= lsr(Rs,Ii)
		.encoding = { .mask = 0xffe020e0, .op = 0x8e4000a0 },
		.id = HEX_INS_S2_LSR_I_R_OR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 8 } }, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " |= lsr(,)",
	},
	{
		// 10001110100sssssPP0iiiii001xxxxx | Rx ^= lsr(Rs,Ii)
		.encoding = { .mask = 0xffe020e0, .op = 0x8e800020 },
		.id = HEX_INS_S2_LSR_I_R_XACC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 8 } }, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " ^= lsr(,)",
	},
	{
		// 10000000100sssssPP00iiii001ddddd | Rdd = vlsrh(Rss,Ii)
		.encoding = { .mask = 0xffe030e0, .op = 0x80800020 },
		.id = HEX_INS_S2_LSR_I_VH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 8 } }, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vlsrh(,)",
	},
	{
		// 10000000010sssssPP0iiiii001ddddd | Rdd = vlsrw(Rss,Ii)
		.encoding = { .mask = 0xffe020e0, .op = 0x80400020 },
		.id = HEX_INS_S2_LSR_I_VW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 8 } }, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vlsrw(,)",
	},
	{
		// 100011010II00000PP1iiiiiIIIddddd | Rd = mask(Ii,II)
		.encoding = { .mask = 0xff9f2000, .op = 0x8d002000 },
		.id = HEX_INS_S2_MASK,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 8 } }, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 5 }, { 0x2, 21 } }, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = mask(,)",
	},
	{
		// 10001100110sssssPP0iiiii000ddddd | Rd = setbit(Rs,Ii)
		.encoding = { .mask = 0xffe020e0, .op = 0x8cc00000 },
		.id = HEX_INS_S2_SETBIT_I,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 8 } }, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = setbit(,)",
	},
	{
		// 10001100100sssssPP000000000ddddd | Rd = vsathb(Rs)
		.encoding = { .mask = 0xffe03fe0, .op = 0x8c800000 },
		.id = HEX_INS_S2_SVSATHB,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vsathb()",
	},
	{
		// 10001100100sssssPP000000010ddddd | Rd = vsathub(Rs)
		.encoding = { .mask = 0xffe03fe0, .op = 0x8c800040 },
		.id = HEX_INS_S2_SVSATHUB,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vsathub()",
	},
	{
		// 1000011100isssssPPIIIIIIiiixxxxx | Rx = tableidxb(Rs,Ii,II):raw
		.encoding = { .mask = 0xffc00000, .op = 0x87000000 },
		.id = HEX_INS_S2_TABLEIDXB,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 5 }, { 0x1, 21 } }, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED, .masks = { { 0x6, 8 } }, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = tableidxb(,,):raw",
	},
	{
		// 1000011111isssssPPIIIIIIiiixxxxx | Rx = tableidxd(Rs,Ii,II):raw
		.encoding = { .mask = 0xffc00000, .op = 0x87c00000 },
		.id = HEX_INS_S2_TABLEIDXD,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 5 }, { 0x1, 21 } }, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED, .masks = { { 0x6, 8 } }, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = tableidxd(,,):raw",
	},
	{
		// 1000011101isssssPPIIIIIIiiixxxxx | Rx = tableidxh(Rs,Ii,II):raw
		.encoding = { .mask = 0xffc00000, .op = 0x87400000 },
		.id = HEX_INS_S2_TABLEIDXH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 5 }, { 0x1, 21 } }, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED, .masks = { { 0x6, 8 } }, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = tableidxh(,,):raw",
	},
	{
		// 1000011110isssssPPIIIIIIiiixxxxx | Rx = tableidxw(Rs,Ii,II):raw
		.encoding = { .mask = 0xffc00000, .op = 0x87800000 },
		.id = HEX_INS_S2_TABLEIDXW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 5 }, { 0x1, 21 } }, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED, .masks = { { 0x6, 8 } }, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = tableidxw(,,):raw",
	},
	{
		// 10001100110sssssPP0iiiii010ddddd | Rd = togglebit(Rs,Ii)
		.encoding = { .mask = 0xffe020e0, .op = 0x8cc00040 },
		.id = HEX_INS_S2_TOGGLEBIT_I,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 8 } }, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = togglebit(,)",
	},
	{
		// 10000101000sssssPP0iiiii000000dd | Pd = tstbit(Rs,Ii)
		.encoding = { .mask = 0xffe020fc, .op = 0x85000000 },
		.id = HEX_INS_S2_TSTBIT_I,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 8 } }, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = tstbit(,)",
	},
	{
		// 10001000100sssssPP000000100ddddd | Rd = vrndwh(Rss)
		.encoding = { .mask = 0xffe03fe0, .op = 0x88800080 },
		.id = HEX_INS_S2_VRNDPACKWH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vrndwh()",
	},
	{
		// 10001000100sssssPP000000110ddddd | Rd = vrndwh(Rss):sat
		.encoding = { .mask = 0xffe03fe0, .op = 0x888000c0 },
		.id = HEX_INS_S2_VRNDPACKWHS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vrndwh():sat",
	},
	{
		// 10001000000sssssPP000000110ddddd | Rd = vsathb(Rss)
		.encoding = { .mask = 0xffe03fe0, .op = 0x880000c0 },
		.id = HEX_INS_S2_VSATHB,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vsathb()",
	},
	{
		// 10000000000sssssPP000000111ddddd | Rdd = vsathb(Rss)
		.encoding = { .mask = 0xffe03fe0, .op = 0x800000e0 },
		.id = HEX_INS_S2_VSATHB_NOPACK,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vsathb()",
	},
	{
		// 10001000000sssssPP000000000ddddd | Rd = vsathub(Rss)
		.encoding = { .mask = 0xffe03fe0, .op = 0x88000000 },
		.id = HEX_INS_S2_VSATHUB,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vsathub()",
	},
	{
		// 10000000000sssssPP000000100ddddd | Rdd = vsathub(Rss)
		.encoding = { .mask = 0xffe03fe0, .op = 0x80000080 },
		.id = HEX_INS_S2_VSATHUB_NOPACK,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vsathub()",
	},
	{
		// 10001000000sssssPP000000010ddddd | Rd = vsatwh(Rss)
		.encoding = { .mask = 0xffe03fe0, .op = 0x88000040 },
		.id = HEX_INS_S2_VSATWH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vsatwh()",
	},
	{
		// 10000000000sssssPP000000110ddddd | Rdd = vsatwh(Rss)
		.encoding = { .mask = 0xffe03fe0, .op = 0x800000c0 },
		.id = HEX_INS_S2_VSATWH_NOPACK,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vsatwh()",
	},
	{
		// 10001000000sssssPP000000100ddddd | Rd = vsatwuh(Rss)
		.encoding = { .mask = 0xffe03fe0, .op = 0x88000080 },
		.id = HEX_INS_S2_VSATWUH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vsatwuh()",
	},
	{
		// 10000000000sssssPP000000101ddddd | Rdd = vsatwuh(Rss)
		.encoding = { .mask = 0xffe03fe0, .op = 0x800000a0 },
		.id = HEX_INS_S2_VSATWUH_NOPACK,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vsatwuh()",
	},
	{
		// 10001100010sssssPP000000111ddddd | Rd = vsplatb(Rs)
		.encoding = { .mask = 0xffe03fe0, .op = 0x8c4000e0 },
		.id = HEX_INS_S2_VSPLATRB,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vsplatb()",
	},
	{
		// 10000100010sssssPP000000010ddddd | Rdd = vsplath(Rs)
		.encoding = { .mask = 0xffe03fe0, .op = 0x84400040 },
		.id = HEX_INS_S2_VSPLATRH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vsplath()",
	},
	{
		// 10000100000sssssPP000000000ddddd | Rdd = vsxtbh(Rs)
		.encoding = { .mask = 0xffe03fe0, .op = 0x84000000 },
		.id = HEX_INS_S2_VSXTBH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vsxtbh()",
	},
	{
		// 10000100000sssssPP000000100ddddd | Rdd = vsxthw(Rs)
		.encoding = { .mask = 0xffe03fe0, .op = 0x84000080 },
		.id = HEX_INS_S2_VSXTHW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vsxthw()",
	},
	{
		// 10001000100sssssPP000000010ddddd | Rd = vtrunehb(Rss)
		.encoding = { .mask = 0xffe03fe0, .op = 0x88800040 },
		.id = HEX_INS_S2_VTRUNEHB,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vtrunehb()",
	},
	{
		// 10001000100sssssPP000000000ddddd | Rd = vtrunohb(Rss)
		.encoding = { .mask = 0xffe03fe0, .op = 0x88800000 },
		.id = HEX_INS_S2_VTRUNOHB,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vtrunohb()",
	},
	{
		// 10000100000sssssPP000000010ddddd | Rdd = vzxtbh(Rs)
		.encoding = { .mask = 0xffe03fe0, .op = 0x84000040 },
		.id = HEX_INS_S2_VZXTBH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vzxtbh()",
	},
	{
		// 10000100000sssssPP000000110ddddd | Rdd = vzxthw(Rs)
		.encoding = { .mask = 0xffe03fe0, .op = 0x840000c0 },
		.id = HEX_INS_S2_VZXTHW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vzxthw()",
	},
	{
		// 10001100001sssssPPiiiiii000ddddd | Rd = add(clb(Rs),Ii)
		.encoding = { .mask = 0xffe000e0, .op = 0x8c200000 },
		.id = HEX_INS_S4_CLBADDI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x6, 8 } }, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(clb(),)",
	},
	{
		// 10001000011sssssPPiiiiii010ddddd | Rd = add(clb(Rss),Ii)
		.encoding = { .mask = 0xffe000e0, .op = 0x88600040 },
		.id = HEX_INS_S4_CLBPADDI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x6, 8 } }, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(clb(),)",
	},
	{
		// 10001000011sssssPP000000000ddddd | Rd = normamt(Rss)
		.encoding = { .mask = 0xffe03fe0, .op = 0x88600000 },
		.id = HEX_INS_S4_CLBPNORM,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = normamt()",
	},
	{
		// 100011011IIsssssPP0iiiiiIIIddddd | Rd = extract(Rs,Ii,II)
		.encoding = { .mask = 0xff802000, .op = 0x8d800000 },
		.id = HEX_INS_S4_EXTRACT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 8 } }, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 5 }, { 0x2, 21 } }, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = extract(,,)",
	},
	{
		// 10001010IIIsssssPPiiiiiiIIIddddd | Rdd = extract(Rss,Ii,II)
		.encoding = { .mask = 0xff000000, .op = 0x8a000000 },
		.id = HEX_INS_S4_EXTRACTP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x6, 8 } }, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x3, 5 }, { 0x3, 21 } }, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = extract(,,)",
	},
	{
		// 10000101001sssssPP0iiiii000000dd | Pd = !tstbit(Rs,Ii)
		.encoding = { .mask = 0xffe020fc, .op = 0x85200000 },
		.id = HEX_INS_S4_NTSTBIT_I,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 8 } }, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = !tstbit(,)",
	},
	{
		// 10001000011sssssPP00iiii100ddddd | Rd = vasrhub(Rss,Ii):raw
		.encoding = { .mask = 0xffe030e0, .op = 0x88600080 },
		.id = HEX_INS_S5_ASRHUB_RND_SAT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 8 } }, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vasrhub(,):raw",
	},
	{
		// 10001000011sssssPP00iiii101ddddd | Rd = vasrhub(Rss,Ii):sat
		.encoding = { .mask = 0xffe030e0, .op = 0x886000a0 },
		.id = HEX_INS_S5_ASRHUB_SAT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 8 } }, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vasrhub(,):sat",
	},
	{
		// 10001000011sssssPP000000011ddddd | Rd = popcount(Rss)
		.encoding = { .mask = 0xffe03fe0, .op = 0x88600060 },
		.id = HEX_INS_S5_POPCOUNTP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = popcount()",
	},
	{
		// 10000000001sssssPP00iiii000ddddd | Rdd = vasrh(Rss,Ii):raw
		.encoding = { .mask = 0xffe030e0, .op = 0x80200000 },
		.id = HEX_INS_S5_VASRHRND,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 8 } }, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vasrh(,):raw",
	},
	{
		// 10000000000sssssPPiiiiii011ddddd | Rdd = rol(Rss,Ii)
		.encoding = { .mask = 0xffe000e0, .op = 0x80000060 },
		.id = HEX_INS_S6_ROL_I_P,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x6, 8 } }, .syntax = 8 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = rol(,)",
	},
	{
		// 10000010000sssssPPiiiiii111xxxxx | Rxx += rol(Rss,Ii)
		.encoding = { .mask = 0xffe000e0, .op = 0x820000e0 },
		.id = HEX_INS_S6_ROL_I_P_ACC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x6, 8 } }, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += rol(,)",
	},
	{
		// 10000010010sssssPPiiiiii011xxxxx | Rxx &= rol(Rss,Ii)
		.encoding = { .mask = 0xffe000e0, .op = 0x82400060 },
		.id = HEX_INS_S6_ROL_I_P_AND,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x6, 8 } }, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " &= rol(,)",
	},
	{
		// 10000010000sssssPPiiiiii011xxxxx | Rxx -= rol(Rss,Ii)
		.encoding = { .mask = 0xffe000e0, .op = 0x82000060 },
		.id = HEX_INS_S6_ROL_I_P_NAC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x6, 8 } }, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " -= rol(,)",
	},
	{
		// 10000010010sssssPPiiiiii111xxxxx | Rxx |= rol(Rss,Ii)
		.encoding = { .mask = 0xffe000e0, .op = 0x824000e0 },
		.id = HEX_INS_S6_ROL_I_P_OR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x6, 8 } }, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " |= rol(,)",
	},
	{
		// 10000010100sssssPPiiiiii011xxxxx | Rxx ^= rol(Rss,Ii)
		.encoding = { .mask = 0xffe000e0, .op = 0x82800060 },
		.id = HEX_INS_S6_ROL_I_P_XACC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x6, 8 } }, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " ^= rol(,)",
	},
	{
		// 10001100000sssssPP0iiiii011ddddd | Rd = rol(Rs,Ii)
		.encoding = { .mask = 0xffe020e0, .op = 0x8c000060 },
		.id = HEX_INS_S6_ROL_I_R,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 8 } }, .syntax = 8 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = rol(,)",
	},
	{
		// 10001110000sssssPP0iiiii111xxxxx | Rx += rol(Rs,Ii)
		.encoding = { .mask = 0xffe020e0, .op = 0x8e0000e0 },
		.id = HEX_INS_S6_ROL_I_R_ACC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 8 } }, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += rol(,)",
	},
	{
		// 10001110010sssssPP0iiiii011xxxxx | Rx &= rol(Rs,Ii)
		.encoding = { .mask = 0xffe020e0, .op = 0x8e400060 },
		.id = HEX_INS_S6_ROL_I_R_AND,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 8 } }, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " &= rol(,)",
	},
	{
		// 10001110000sssssPP0iiiii011xxxxx | Rx -= rol(Rs,Ii)
		.encoding = { .mask = 0xffe020e0, .op = 0x8e000060 },
		.id = HEX_INS_S6_ROL_I_R_NAC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 8 } }, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " -= rol(,)",
	},
	{
		// 10001110010sssssPP0iiiii111xxxxx | Rx |= rol(Rs,Ii)
		.encoding = { .mask = 0xffe020e0, .op = 0x8e4000e0 },
		.id = HEX_INS_S6_ROL_I_R_OR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 8 } }, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " |= rol(,)",
	},
	{
		// 10001110100sssssPP0iiiii011xxxxx | Rx ^= rol(Rs,Ii)
		.encoding = { .mask = 0xffe020e0, .op = 0x8e800060 },
		.id = HEX_INS_S6_ROL_I_R_XACC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 8 } }, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " ^= rol(,)",
	},
	{
		// 10000100010sssssPP000000100ddddd | Rdd = vsplatb(Rs)
		.encoding = { .mask = 0xffe03fe0, .op = 0x84400080 },
		.id = HEX_INS_S6_VSPLATRBP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vsplatb()",
	},
	{ { 0 } },
};

static const HexInsnTemplate templates_normal_0x9[] = {
	{
		// 10010000000sssssPP000000000ddddd | Rdd = deallocframe(Rs):raw
		.encoding = { .mask = 0xffe03fe0, .op = 0x90000000 },
		.id = HEX_INS_L2_DEALLOCFRAME,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 16 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = deallocframe():raw",
	},
	{
		// 10010ii0100sssssPPiiiiiiiiiyyyyy | Ryy = memb_fifo(Rs+Ii)
		.encoding = { .mask = 0xf9e00000, .op = 0x90800000 },
		.id = HEX_INS_L2_LOADALIGNB_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x9, 5 }, { 0x2, 25 } }, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memb_fifo(+)",
	},
	{
		// 10011110100xxxxxPPu00000000yyyyy | Ryy = memb_fifo(Rx++Mu:brev)
		.encoding = { .mask = 0xffe01fe0, .op = 0x9e800000 },
		.id = HEX_INS_L2_LOADALIGNB_PBR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memb_fifo(++:brev)",
	},
	{
		// 10011000100xxxxxPPu0000iiiiyyyyy | Ryy = memb_fifo(Rx++Ii:circ(Mu))
		.encoding = { .mask = 0xffe01e00, .op = 0x98800000 },
		.id = HEX_INS_L2_LOADALIGNB_PCI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 5 } }, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 21 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memb_fifo(++:circ())",
	},
	{
		// 10011000100xxxxxPPu00010000yyyyy | Ryy = memb_fifo(Rx++I:circ(Mu))
		.encoding = { .mask = 0xffe01fe0, .op = 0x98800200 },
		.id = HEX_INS_L2_LOADALIGNB_PCR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 22 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memb_fifo(++I:circ())",
	},
	{
		// 10011010100xxxxxPP00000iiiiyyyyy | Ryy = memb_fifo(Rx++Ii)
		.encoding = { .mask = 0xffe03e00, .op = 0x9a800000 },
		.id = HEX_INS_L2_LOADALIGNB_PI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 5 } }, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memb_fifo(++)",
	},
	{
		// 10011100100xxxxxPPu00000000yyyyy | Ryy = memb_fifo(Rx++Mu)
		.encoding = { .mask = 0xffe01fe0, .op = 0x9c800000 },
		.id = HEX_INS_L2_LOADALIGNB_PR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memb_fifo(++)",
	},
	{
		// 10010ii0010sssssPPiiiiiiiiiyyyyy | Ryy = memh_fifo(Rs+Ii)
		.encoding = { .mask = 0xf9e00000, .op = 0x90400000 },
		.id = HEX_INS_L2_LOADALIGNH_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x9, 5 }, { 0x2, 25 } }, .imm_scale = 1, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memh_fifo(+)",
	},
	{
		// 10011110010xxxxxPPu00000000yyyyy | Ryy = memh_fifo(Rx++Mu:brev)
		.encoding = { .mask = 0xffe01fe0, .op = 0x9e400000 },
		.id = HEX_INS_L2_LOADALIGNH_PBR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memh_fifo(++:brev)",
	},
	{
		// 10011000010xxxxxPPu0000iiiiyyyyy | Ryy = memh_fifo(Rx++Ii:circ(Mu))
		.encoding = { .mask = 0xffe01e00, .op = 0x98400000 },
		.id = HEX_INS_L2_LOADALIGNH_PCI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 5 } }, .imm_scale = 1, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 21 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memh_fifo(++:circ())",
	},
	{
		// 10011000010xxxxxPPu00010000yyyyy | Ryy = memh_fifo(Rx++I:circ(Mu))
		.encoding = { .mask = 0xffe01fe0, .op = 0x98400200 },
		.id = HEX_INS_L2_LOADALIGNH_PCR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 22 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memh_fifo(++I:circ())",
	},
	{
		// 10011010010xxxxxPP00000iiiiyyyyy | Ryy = memh_fifo(Rx++Ii)
		.encoding = { .mask = 0xffe03e00, .op = 0x9a400000 },
		.id = HEX_INS_L2_LOADALIGNH_PI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 5 } }, .imm_scale = 1, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memh_fifo(++)",
	},
	{
		// 10011100010xxxxxPPu00000000yyyyy | Ryy = memh_fifo(Rx++Mu)
		.encoding = { .mask = 0xffe01fe0, .op = 0x9c400000 },
		.id = HEX_INS_L2_LOADALIGNH_PR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memh_fifo(++)",
	},
	{
		// 10010ii0001sssssPPiiiiiiiiiddddd | Rd = membh(Rs+Ii)
		.encoding = { .mask = 0xf9e00000, .op = 0x90200000 },
		.id = HEX_INS_L2_LOADBSW2_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x9, 5 }, { 0x2, 25 } }, .imm_scale = 1, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = membh(+)",
	},
	{
		// 10011110001xxxxxPPu00000000ddddd | Rd = membh(Rx++Mu:brev)
		.encoding = { .mask = 0xffe01fe0, .op = 0x9e200000 },
		.id = HEX_INS_L2_LOADBSW2_PBR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = membh(++:brev)",
	},
	{
		// 10011000001xxxxxPPu0000iiiiddddd | Rd = membh(Rx++Ii:circ(Mu))
		.encoding = { .mask = 0xffe01e00, .op = 0x98200000 },
		.id = HEX_INS_L2_LOADBSW2_PCI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 5 } }, .imm_scale = 1, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 17 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = membh(++:circ())",
	},
	{
		// 10011000001xxxxxPPu00010000ddddd | Rd = membh(Rx++I:circ(Mu))
		.encoding = { .mask = 0xffe01fe0, .op = 0x98200200 },
		.id = HEX_INS_L2_LOADBSW2_PCR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 18 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = membh(++I:circ())",
	},
	{
		// 10011010001xxxxxPP00000iiiiddddd | Rd = membh(Rx++Ii)
		.encoding = { .mask = 0xffe03e00, .op = 0x9a200000 },
		.id = HEX_INS_L2_LOADBSW2_PI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 5 } }, .imm_scale = 1, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = membh(++)",
	},
	{
		// 10011100001xxxxxPPu00000000ddddd | Rd = membh(Rx++Mu)
		.encoding = { .mask = 0xffe01fe0, .op = 0x9c200000 },
		.id = HEX_INS_L2_LOADBSW2_PR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = membh(++)",
	},
	{
		// 10010ii0111sssssPPiiiiiiiiiddddd | Rdd = membh(Rs+Ii)
		.encoding = { .mask = 0xf9e00000, .op = 0x90e00000 },
		.id = HEX_INS_L2_LOADBSW4_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x9, 5 }, { 0x2, 25 } }, .imm_scale = 2, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = membh(+)",
	},
	{
		// 10011110111xxxxxPPu00000000ddddd | Rdd = membh(Rx++Mu:brev)
		.encoding = { .mask = 0xffe01fe0, .op = 0x9ee00000 },
		.id = HEX_INS_L2_LOADBSW4_PBR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = membh(++:brev)",
	},
	{
		// 10011000111xxxxxPPu0000iiiiddddd | Rdd = membh(Rx++Ii:circ(Mu))
		.encoding = { .mask = 0xffe01e00, .op = 0x98e00000 },
		.id = HEX_INS_L2_LOADBSW4_PCI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 5 } }, .imm_scale = 2, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 17 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = membh(++:circ())",
	},
	{
		// 10011000111xxxxxPPu00010000ddddd | Rdd = membh(Rx++I:circ(Mu))
		.encoding = { .mask = 0xffe01fe0, .op = 0x98e00200 },
		.id = HEX_INS_L2_LOADBSW4_PCR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 18 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = membh(++I:circ())",
	},
	{
		// 10011010111xxxxxPP00000iiiiddddd | Rdd = membh(Rx++Ii)
		.encoding = { .mask = 0xffe03e00, .op = 0x9ae00000 },
		.id = HEX_INS_L2_LOADBSW4_PI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 5 } }, .imm_scale = 2, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = membh(++)",
	},
	{
		// 10011100111xxxxxPPu00000000ddddd | Rdd = membh(Rx++Mu)
		.encoding = { .mask = 0xffe01fe0, .op = 0x9ce00000 },
		.id = HEX_INS_L2_LOADBSW4_PR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = membh(++)",
	},
	{
		// 10010ii0011sssssPPiiiiiiiiiddddd | Rd = memubh(Rs+Ii)
		.encoding = { .mask = 0xf9e00000, .op = 0x90600000 },
		.id = HEX_INS_L2_LOADBZW2_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x9, 5 }, { 0x2, 25 } }, .imm_scale = 1, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memubh(+)",
	},
	{
		// 10011110011xxxxxPPu00000000ddddd | Rd = memubh(Rx++Mu:brev)
		.encoding = { .mask = 0xffe01fe0, .op = 0x9e600000 },
		.id = HEX_INS_L2_LOADBZW2_PBR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memubh(++:brev)",
	},
	{
		// 10011000011xxxxxPPu0000iiiiddddd | Rd = memubh(Rx++Ii:circ(Mu))
		.encoding = { .mask = 0xffe01e00, .op = 0x98600000 },
		.id = HEX_INS_L2_LOADBZW2_PCI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 5 } }, .imm_scale = 1, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 18 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memubh(++:circ())",
	},
	{
		// 10011000011xxxxxPPu00010000ddddd | Rd = memubh(Rx++I:circ(Mu))
		.encoding = { .mask = 0xffe01fe0, .op = 0x98600200 },
		.id = HEX_INS_L2_LOADBZW2_PCR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 19 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memubh(++I:circ())",
	},
	{
		// 10011010011xxxxxPP00000iiiiddddd | Rd = memubh(Rx++Ii)
		.encoding = { .mask = 0xffe03e00, .op = 0x9a600000 },
		.id = HEX_INS_L2_LOADBZW2_PI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 5 } }, .imm_scale = 1, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memubh(++)",
	},
	{
		// 10011100011xxxxxPPu00000000ddddd | Rd = memubh(Rx++Mu)
		.encoding = { .mask = 0xffe01fe0, .op = 0x9c600000 },
		.id = HEX_INS_L2_LOADBZW2_PR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memubh(++)",
	},
	{
		// 10010ii0101sssssPPiiiiiiiiiddddd | Rdd = memubh(Rs+Ii)
		.encoding = { .mask = 0xf9e00000, .op = 0x90a00000 },
		.id = HEX_INS_L2_LOADBZW4_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x9, 5 }, { 0x2, 25 } }, .imm_scale = 2, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memubh(+)",
	},
	{
		// 10011110101xxxxxPPu00000000ddddd | Rdd = memubh(Rx++Mu:brev)
		.encoding = { .mask = 0xffe01fe0, .op = 0x9ea00000 },
		.id = HEX_INS_L2_LOADBZW4_PBR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memubh(++:brev)",
	},
	{
		// 10011000101xxxxxPPu0000iiiiddddd | Rdd = memubh(Rx++Ii:circ(Mu))
		.encoding = { .mask = 0xffe01e00, .op = 0x98a00000 },
		.id = HEX_INS_L2_LOADBZW4_PCI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 5 } }, .imm_scale = 2, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 18 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memubh(++:circ())",
	},
	{
		// 10011000101xxxxxPPu00010000ddddd | Rdd = memubh(Rx++I:circ(Mu))
		.encoding = { .mask = 0xffe01fe0, .op = 0x98a00200 },
		.id = HEX_INS_L2_LOADBZW4_PCR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 19 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memubh(++I:circ())",
	},
	{
		// 10011010101xxxxxPP00000iiiiddddd | Rdd = memubh(Rx++Ii)
		.encoding = { .mask = 0xffe03e00, .op = 0x9aa00000 },
		.id = HEX_INS_L2_LOADBZW4_PI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 5 } }, .imm_scale = 2, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memubh(++)",
	},
	{
		// 10011100101xxxxxPPu00000000ddddd | Rdd = memubh(Rx++Mu)
		.encoding = { .mask = 0xffe01fe0, .op = 0x9ca00000 },
		.id = HEX_INS_L2_LOADBZW4_PR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memubh(++)",
	},
	{
		// 10010ii1000sssssPPiiiiiiiiiddddd | Rd = memb(Rs+Ii)
		.encoding = { .mask = 0xf9e00000, .op = 0x91000000 },
		.id = HEX_INS_L2_LOADRB_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x9, 5 }, { 0x2, 25 } }, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memb(+)",
	},
	{
		// 10011111000xxxxxPPu00000000ddddd | Rd = memb(Rx++Mu:brev)
		.encoding = { .mask = 0xffe01fe0, .op = 0x9f000000 },
		.id = HEX_INS_L2_LOADRB_PBR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memb(++:brev)",
	},
	{
		// 10011001000xxxxxPPu0000iiiiddddd | Rd = memb(Rx++Ii:circ(Mu))
		.encoding = { .mask = 0xffe01e00, .op = 0x99000000 },
		.id = HEX_INS_L2_LOADRB_PCI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 5 } }, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 16 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memb(++:circ())",
	},
	{
		// 10011001000xxxxxPPu00010000ddddd | Rd = memb(Rx++I:circ(Mu))
		.encoding = { .mask = 0xffe01fe0, .op = 0x99000200 },
		.id = HEX_INS_L2_LOADRB_PCR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 17 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memb(++I:circ())",
	},
	{
		// 10011011000xxxxxPP00000iiiiddddd | Rd = memb(Rx++Ii)
		.encoding = { .mask = 0xffe03e00, .op = 0x9b000000 },
		.id = HEX_INS_L2_LOADRB_PI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 5 } }, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memb(++)",
	},
	{
		// 10011101000xxxxxPPu00000000ddddd | Rd = memb(Rx++Mu)
		.encoding = { .mask = 0xffe01fe0, .op = 0x9d000000 },
		.id = HEX_INS_L2_LOADRB_PR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memb(++)",
	},
	{
		// 10010ii1110sssssPPiiiiiiiiiddddd | Rdd = memd(Rs+Ii)
		.encoding = { .mask = 0xf9e00000, .op = 0x91c00000 },
		.id = HEX_INS_L2_LOADRD_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x9, 5 }, { 0x2, 25 } }, .imm_scale = 3, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memd(+)",
	},
	{
		// 10011111110xxxxxPPu00000000ddddd | Rdd = memd(Rx++Mu:brev)
		.encoding = { .mask = 0xffe01fe0, .op = 0x9fc00000 },
		.id = HEX_INS_L2_LOADRD_PBR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memd(++:brev)",
	},
	{
		// 10011001110xxxxxPPu0000iiiiddddd | Rdd = memd(Rx++Ii:circ(Mu))
		.encoding = { .mask = 0xffe01e00, .op = 0x99c00000 },
		.id = HEX_INS_L2_LOADRD_PCI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 5 } }, .imm_scale = 3, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 16 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memd(++:circ())",
	},
	{
		// 10011001110xxxxxPPu00010000ddddd | Rdd = memd(Rx++I:circ(Mu))
		.encoding = { .mask = 0xffe01fe0, .op = 0x99c00200 },
		.id = HEX_INS_L2_LOADRD_PCR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 17 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memd(++I:circ())",
	},
	{
		// 10011011110xxxxxPP00000iiiiddddd | Rdd = memd(Rx++Ii)
		.encoding = { .mask = 0xffe03e00, .op = 0x9bc00000 },
		.id = HEX_INS_L2_LOADRD_PI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 5 } }, .imm_scale = 3, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memd(++)",
	},
	{
		// 10011101110xxxxxPPu00000000ddddd | Rdd = memd(Rx++Mu)
		.encoding = { .mask = 0xffe01fe0, .op = 0x9dc00000 },
		.id = HEX_INS_L2_LOADRD_PR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memd(++)",
	},
	{
		// 10010ii1010sssssPPiiiiiiiiiddddd | Rd = memh(Rs+Ii)
		.encoding = { .mask = 0xf9e00000, .op = 0x91400000 },
		.id = HEX_INS_L2_LOADRH_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x9, 5 }, { 0x2, 25 } }, .imm_scale = 1, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memh(+)",
	},
	{
		// 10011111010xxxxxPPu00000000ddddd | Rd = memh(Rx++Mu:brev)
		.encoding = { .mask = 0xffe01fe0, .op = 0x9f400000 },
		.id = HEX_INS_L2_LOADRH_PBR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memh(++:brev)",
	},
	{
		// 10011001010xxxxxPPu0000iiiiddddd | Rd = memh(Rx++Ii:circ(Mu))
		.encoding = { .mask = 0xffe01e00, .op = 0x99400000 },
		.id = HEX_INS_L2_LOADRH_PCI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 5 } }, .imm_scale = 1, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 16 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memh(++:circ())",
	},
	{
		// 10011001010xxxxxPPu00010000ddddd | Rd = memh(Rx++I:circ(Mu))
		.encoding = { .mask = 0xffe01fe0, .op = 0x99400200 },
		.id = HEX_INS_L2_LOADRH_PCR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 17 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memh(++I:circ())",
	},
	{
		// 10011011010xxxxxPP00000iiiiddddd | Rd = memh(Rx++Ii)
		.encoding = { .mask = 0xffe03e00, .op = 0x9b400000 },
		.id = HEX_INS_L2_LOADRH_PI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 5 } }, .imm_scale = 1, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memh(++)",
	},
	{
		// 10011101010xxxxxPPu00000000ddddd | Rd = memh(Rx++Mu)
		.encoding = { .mask = 0xffe01fe0, .op = 0x9d400000 },
		.id = HEX_INS_L2_LOADRH_PR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memh(++)",
	},
	{
		// 10010ii1100sssssPPiiiiiiiiiddddd | Rd = memw(Rs+Ii)
		.encoding = { .mask = 0xf9e00000, .op = 0x91800000 },
		.id = HEX_INS_L2_LOADRI_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x9, 5 }, { 0x2, 25 } }, .imm_scale = 2, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memw(+)",
	},
	{
		// 10011111100xxxxxPPu00000000ddddd | Rd = memw(Rx++Mu:brev)
		.encoding = { .mask = 0xffe01fe0, .op = 0x9f800000 },
		.id = HEX_INS_L2_LOADRI_PBR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memw(++:brev)",
	},
	{
		// 10011001100xxxxxPPu0000iiiiddddd | Rd = memw(Rx++Ii:circ(Mu))
		.encoding = { .mask = 0xffe01e00, .op = 0x99800000 },
		.id = HEX_INS_L2_LOADRI_PCI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 5 } }, .imm_scale = 2, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 16 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memw(++:circ())",
	},
	{
		// 10011001100xxxxxPPu00010000ddddd | Rd = memw(Rx++I:circ(Mu))
		.encoding = { .mask = 0xffe01fe0, .op = 0x99800200 },
		.id = HEX_INS_L2_LOADRI_PCR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 17 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memw(++I:circ())",
	},
	{
		// 10011011100xxxxxPP00000iiiiddddd | Rd = memw(Rx++Ii)
		.encoding = { .mask = 0xffe03e00, .op = 0x9b800000 },
		.id = HEX_INS_L2_LOADRI_PI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 5 } }, .imm_scale = 2, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memw(++)",
	},
	{
		// 10011101100xxxxxPPu00000000ddddd | Rd = memw(Rx++Mu)
		.encoding = { .mask = 0xffe01fe0, .op = 0x9d800000 },
		.id = HEX_INS_L2_LOADRI_PR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memw(++)",
	},
	{
		// 10010ii1001sssssPPiiiiiiiiiddddd | Rd = memub(Rs+Ii)
		.encoding = { .mask = 0xf9e00000, .op = 0x91200000 },
		.id = HEX_INS_L2_LOADRUB_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x9, 5 }, { 0x2, 25 } }, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memub(+)",
	},
	{
		// 10011111001xxxxxPPu00000000ddddd | Rd = memub(Rx++Mu:brev)
		.encoding = { .mask = 0xffe01fe0, .op = 0x9f200000 },
		.id = HEX_INS_L2_LOADRUB_PBR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memub(++:brev)",
	},
	{
		// 10011001001xxxxxPPu0000iiiiddddd | Rd = memub(Rx++Ii:circ(Mu))
		.encoding = { .mask = 0xffe01e00, .op = 0x99200000 },
		.id = HEX_INS_L2_LOADRUB_PCI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 5 } }, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 17 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memub(++:circ())",
	},
	{
		// 10011001001xxxxxPPu00010000ddddd | Rd = memub(Rx++I:circ(Mu))
		.encoding = { .mask = 0xffe01fe0, .op = 0x99200200 },
		.id = HEX_INS_L2_LOADRUB_PCR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 18 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memub(++I:circ())",
	},
	{
		// 10011011001xxxxxPP00000iiiiddddd | Rd = memub(Rx++Ii)
		.encoding = { .mask = 0xffe03e00, .op = 0x9b200000 },
		.id = HEX_INS_L2_LOADRUB_PI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 5 } }, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memub(++)",
	},
	{
		// 10011101001xxxxxPPu00000000ddddd | Rd = memub(Rx++Mu)
		.encoding = { .mask = 0xffe01fe0, .op = 0x9d200000 },
		.id = HEX_INS_L2_LOADRUB_PR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memub(++)",
	},
	{
		// 10010ii1011sssssPPiiiiiiiiiddddd | Rd = memuh(Rs+Ii)
		.encoding = { .mask = 0xf9e00000, .op = 0x91600000 },
		.id = HEX_INS_L2_LOADRUH_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x9, 5 }, { 0x2, 25 } }, .imm_scale = 1, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memuh(+)",
	},
	{
		// 10011111011xxxxxPPu00000000ddddd | Rd = memuh(Rx++Mu:brev)
		.encoding = { .mask = 0xffe01fe0, .op = 0x9f600000 },
		.id = HEX_INS_L2_LOADRUH_PBR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memuh(++:brev)",
	},
	{
		// 10011001011xxxxxPPu0000iiiiddddd | Rd = memuh(Rx++Ii:circ(Mu))
		.encoding = { .mask = 0xffe01e00, .op = 0x99600000 },
		.id = HEX_INS_L2_LOADRUH_PCI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 5 } }, .imm_scale = 1, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 17 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memuh(++:circ())",
	},
	{
		// 10011001011xxxxxPPu00010000ddddd | Rd = memuh(Rx++I:circ(Mu))
		.encoding = { .mask = 0xffe01fe0, .op = 0x99600200 },
		.id = HEX_INS_L2_LOADRUH_PCR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 18 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memuh(++I:circ())",
	},
	{
		// 10011011011xxxxxPP00000iiiiddddd | Rd = memuh(Rx++Ii)
		.encoding = { .mask = 0xffe03e00, .op = 0x9b600000 },
		.id = HEX_INS_L2_LOADRUH_PI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 5 } }, .imm_scale = 1, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memuh(++)",
	},
	{
		// 10011101011xxxxxPPu00000000ddddd | Rd = memuh(Rx++Mu)
		.encoding = { .mask = 0xffe01fe0, .op = 0x9d600000 },
		.id = HEX_INS_L2_LOADRUH_PR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memuh(++)",
	},
	{
		// 10010010000sssssPP001000000ddddd | Rd = memw_aq(Rs)
		.encoding = { .mask = 0xffe03fe0, .op = 0x92000800 },
		.id = HEX_INS_L2_LOADW_AQ,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memw_aq()",
	},
	{
		// 10010010000sssssPP000000000ddddd | Rd = memw_locked(Rs)
		.encoding = { .mask = 0xffe03fe0, .op = 0x92000000 },
		.id = HEX_INS_L2_LOADW_LOCKED,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memw_locked()",
	},
	{
		// 10011011000xxxxxPP101ttiiiiddddd | if (!Pt) Rd = memb(Rx++Ii)
		.encoding = { .mask = 0xffe03800, .op = 0x9b002800 },
		.id = HEX_INS_L2_PLOADRBF_PI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 9 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 5 } }, .syntax = 17 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!)  = memb(++)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 10011011000xxxxxPP111ttiiiiddddd | if (!Pt.new) Rd = memb(Rx++Ii)
		.encoding = { .mask = 0xffe03800, .op = 0x9b003800 },
		.id = HEX_INS_L2_PLOADRBFNEW_PI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 9 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 19 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 5 } }, .syntax = 21 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!.new)  = memb(++)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 10011011000xxxxxPP100ttiiiiddddd | if (Pt) Rd = memb(Rx++Ii)
		.encoding = { .mask = 0xffe03800, .op = 0x9b002000 },
		.id = HEX_INS_L2_PLOADRBT_PI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 9 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 5 } }, .syntax = 16 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if ()  = memb(++)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 10011011000xxxxxPP110ttiiiiddddd | if (Pt.new) Rd = memb(Rx++Ii)
		.encoding = { .mask = 0xffe03800, .op = 0x9b003000 },
		.id = HEX_INS_L2_PLOADRBTNEW_PI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 9 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 5 } }, .syntax = 20 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (.new)  = memb(++)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 10011011110xxxxxPP101ttiiiiddddd | if (!Pt) Rdd = memd(Rx++Ii)
		.encoding = { .mask = 0xffe03800, .op = 0x9bc02800 },
		.id = HEX_INS_L2_PLOADRDF_PI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 9 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 5 } }, .imm_scale = 3, .syntax = 17 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!)  = memd(++)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 10011011110xxxxxPP111ttiiiiddddd | if (!Pt.new) Rdd = memd(Rx++Ii)
		.encoding = { .mask = 0xffe03800, .op = 0x9bc03800 },
		.id = HEX_INS_L2_PLOADRDFNEW_PI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 9 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 19 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 5 } }, .imm_scale = 3, .syntax = 21 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!.new)  = memd(++)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 10011011110xxxxxPP100ttiiiiddddd | if (Pt) Rdd = memd(Rx++Ii)
		.encoding = { .mask = 0xffe03800, .op = 0x9bc02000 },
		.id = HEX_INS_L2_PLOADRDT_PI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 9 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 5 } }, .imm_scale = 3, .syntax = 16 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if ()  = memd(++)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 10011011110xxxxxPP110ttiiiiddddd | if (Pt.new) Rdd = memd(Rx++Ii)
		.encoding = { .mask = 0xffe03800, .op = 0x9bc03000 },
		.id = HEX_INS_L2_PLOADRDTNEW_PI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 9 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 5 } }, .imm_scale = 3, .syntax = 20 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (.new)  = memd(++)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 10011011010xxxxxPP101ttiiiiddddd | if (!Pt) Rd = memh(Rx++Ii)
		.encoding = { .mask = 0xffe03800, .op = 0x9b402800 },
		.id = HEX_INS_L2_PLOADRHF_PI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 9 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 5 } }, .imm_scale = 1, .syntax = 17 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!)  = memh(++)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 10011011010xxxxxPP111ttiiiiddddd | if (!Pt.new) Rd = memh(Rx++Ii)
		.encoding = { .mask = 0xffe03800, .op = 0x9b403800 },
		.id = HEX_INS_L2_PLOADRHFNEW_PI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 9 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 19 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 5 } }, .imm_scale = 1, .syntax = 21 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!.new)  = memh(++)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 10011011010xxxxxPP100ttiiiiddddd | if (Pt) Rd = memh(Rx++Ii)
		.encoding = { .mask = 0xffe03800, .op = 0x9b402000 },
		.id = HEX_INS_L2_PLOADRHT_PI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 9 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 5 } }, .imm_scale = 1, .syntax = 16 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if ()  = memh(++)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 10011011010xxxxxPP110ttiiiiddddd | if (Pt.new) Rd = memh(Rx++Ii)
		.encoding = { .mask = 0xffe03800, .op = 0x9b403000 },
		.id = HEX_INS_L2_PLOADRHTNEW_PI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 9 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 5 } }, .imm_scale = 1, .syntax = 20 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (.new)  = memh(++)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 10011011100xxxxxPP101ttiiiiddddd | if (!Pt) Rd = memw(Rx++Ii)
		.encoding = { .mask = 0xffe03800, .op = 0x9b802800 },
		.id = HEX_INS_L2_PLOADRIF_PI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 9 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 5 } }, .imm_scale = 2, .syntax = 17 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!)  = memw(++)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 10011011100xxxxxPP111ttiiiiddddd | if (!Pt.new) Rd = memw(Rx++Ii)
		.encoding = { .mask = 0xffe03800, .op = 0x9b803800 },
		.id = HEX_INS_L2_PLOADRIFNEW_PI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 9 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 19 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 5 } }, .imm_scale = 2, .syntax = 21 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!.new)  = memw(++)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 10011011100xxxxxPP100ttiiiiddddd | if (Pt) Rd = memw(Rx++Ii)
		.encoding = { .mask = 0xffe03800, .op = 0x9b802000 },
		.id = HEX_INS_L2_PLOADRIT_PI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 9 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 5 } }, .imm_scale = 2, .syntax = 16 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if ()  = memw(++)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 10011011100xxxxxPP110ttiiiiddddd | if (Pt.new) Rd = memw(Rx++Ii)
		.encoding = { .mask = 0xffe03800, .op = 0x9b803000 },
		.id = HEX_INS_L2_PLOADRITNEW_PI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 9 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 5 } }, .imm_scale = 2, .syntax = 20 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (.new)  = memw(++)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 10011011001xxxxxPP101ttiiiiddddd | if (!Pt) Rd = memub(Rx++Ii)
		.encoding = { .mask = 0xffe03800, .op = 0x9b202800 },
		.id = HEX_INS_L2_PLOADRUBF_PI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 9 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 5 } }, .syntax = 18 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!)  = memub(++)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 10011011001xxxxxPP111ttiiiiddddd | if (!Pt.new) Rd = memub(Rx++Ii)
		.encoding = { .mask = 0xffe03800, .op = 0x9b203800 },
		.id = HEX_INS_L2_PLOADRUBFNEW_PI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 9 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 20 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 5 } }, .syntax = 22 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!.new)  = memub(++)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 10011011001xxxxxPP100ttiiiiddddd | if (Pt) Rd = memub(Rx++Ii)
		.encoding = { .mask = 0xffe03800, .op = 0x9b202000 },
		.id = HEX_INS_L2_PLOADRUBT_PI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 9 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 5 } }, .syntax = 17 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if ()  = memub(++)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 10011011001xxxxxPP110ttiiiiddddd | if (Pt.new) Rd = memub(Rx++Ii)
		.encoding = { .mask = 0xffe03800, .op = 0x9b203000 },
		.id = HEX_INS_L2_PLOADRUBTNEW_PI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 9 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 19 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 5 } }, .syntax = 21 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (.new)  = memub(++)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 10011011011xxxxxPP101ttiiiiddddd | if (!Pt) Rd = memuh(Rx++Ii)
		.encoding = { .mask = 0xffe03800, .op = 0x9b602800 },
		.id = HEX_INS_L2_PLOADRUHF_PI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 9 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 5 } }, .imm_scale = 1, .syntax = 18 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!)  = memuh(++)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 10011011011xxxxxPP111ttiiiiddddd | if (!Pt.new) Rd = memuh(Rx++Ii)
		.encoding = { .mask = 0xffe03800, .op = 0x9b603800 },
		.id = HEX_INS_L2_PLOADRUHFNEW_PI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 9 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 20 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 5 } }, .imm_scale = 1, .syntax = 22 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!.new)  = memuh(++)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 10011011011xxxxxPP100ttiiiiddddd | if (Pt) Rd = memuh(Rx++Ii)
		.encoding = { .mask = 0xffe03800, .op = 0x9b602000 },
		.id = HEX_INS_L2_PLOADRUHT_PI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 9 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 5 } }, .imm_scale = 1, .syntax = 17 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if ()  = memuh(++)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 10011011011xxxxxPP110ttiiiiddddd | if (Pt.new) Rd = memuh(Rx++Ii)
		.encoding = { .mask = 0xffe03800, .op = 0x9b603000 },
		.id = HEX_INS_L2_PLOADRUHTNEW_PI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 9 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 19 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 5 } }, .imm_scale = 1, .syntax = 21 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (.new)  = memuh(++)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 10011010100eeeeePP01IIII0IIyyyyy | Ryy = memb_fifo(Re=II)
		.encoding = { .mask = 0xffe03080, .op = 0x9a801000 },
		.id = HEX_INS_L4_LOADALIGNB_AP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x2, 5 }, { 0x4, 8 } }, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memb_fifo(=)",
	},
	{
		// 10011100100tttttPPi1IIIIiIIyyyyy | Ryy = memb_fifo(Rt<<Ii+II)
		.encoding = { .mask = 0xffe01000, .op = 0x9c801000 },
		.id = HEX_INS_L4_LOADALIGNB_UR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x1, 7 }, { 0x1, 13 } }, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x2, 5 }, { 0x4, 8 } }, .syntax = 16 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memb_fifo(<<+)",
	},
	{
		// 10011010010eeeeePP01IIII0IIyyyyy | Ryy = memh_fifo(Re=II)
		.encoding = { .mask = 0xffe03080, .op = 0x9a401000 },
		.id = HEX_INS_L4_LOADALIGNH_AP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x2, 5 }, { 0x4, 8 } }, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memh_fifo(=)",
	},
	{
		// 10011100010tttttPPi1IIIIiIIyyyyy | Ryy = memh_fifo(Rt<<Ii+II)
		.encoding = { .mask = 0xffe01000, .op = 0x9c401000 },
		.id = HEX_INS_L4_LOADALIGNH_UR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x1, 7 }, { 0x1, 13 } }, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x2, 5 }, { 0x4, 8 } }, .syntax = 16 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memh_fifo(<<+)",
	},
	{
		// 10011010001eeeeePP01IIII0IIddddd | Rd = membh(Re=II)
		.encoding = { .mask = 0xffe03080, .op = 0x9a201000 },
		.id = HEX_INS_L4_LOADBSW2_AP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x2, 5 }, { 0x4, 8 } }, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = membh(=)",
	},
	{
		// 10011100001tttttPPi1IIIIiIIddddd | Rd = membh(Rt<<Ii+II)
		.encoding = { .mask = 0xffe01000, .op = 0x9c201000 },
		.id = HEX_INS_L4_LOADBSW2_UR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x1, 7 }, { 0x1, 13 } }, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x2, 5 }, { 0x4, 8 } }, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = membh(<<+)",
	},
	{
		// 10011010111eeeeePP01IIII0IIddddd | Rdd = membh(Re=II)
		.encoding = { .mask = 0xffe03080, .op = 0x9ae01000 },
		.id = HEX_INS_L4_LOADBSW4_AP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x2, 5 }, { 0x4, 8 } }, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = membh(=)",
	},
	{
		// 10011100111tttttPPi1IIIIiIIddddd | Rdd = membh(Rt<<Ii+II)
		.encoding = { .mask = 0xffe01000, .op = 0x9ce01000 },
		.id = HEX_INS_L4_LOADBSW4_UR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x1, 7 }, { 0x1, 13 } }, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x2, 5 }, { 0x4, 8 } }, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = membh(<<+)",
	},
	{
		// 10011010011eeeeePP01IIII0IIddddd | Rd = memubh(Re=II)
		.encoding = { .mask = 0xffe03080, .op = 0x9a601000 },
		.id = HEX_INS_L4_LOADBZW2_AP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x2, 5 }, { 0x4, 8 } }, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memubh(=)",
	},
	{
		// 10011100011tttttPPi1IIIIiIIddddd | Rd = memubh(Rt<<Ii+II)
		.encoding = { .mask = 0xffe01000, .op = 0x9c601000 },
		.id = HEX_INS_L4_LOADBZW2_UR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x1, 7 }, { 0x1, 13 } }, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x2, 5 }, { 0x4, 8 } }, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memubh(<<+)",
	},
	{
		// 10011010101eeeeePP01IIII0IIddddd | Rdd = memubh(Re=II)
		.encoding = { .mask = 0xffe03080, .op = 0x9aa01000 },
		.id = HEX_INS_L4_LOADBZW4_AP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x2, 5 }, { 0x4, 8 } }, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memubh(=)",
	},
	{
		// 10011100101tttttPPi1IIIIiIIddddd | Rdd = memubh(Rt<<Ii+II)
		.encoding = { .mask = 0xffe01000, .op = 0x9ca01000 },
		.id = HEX_INS_L4_LOADBZW4_UR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x1, 7 }, { 0x1, 13 } }, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x2, 5 }, { 0x4, 8 } }, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memubh(<<+)",
	},
	{
		// 10010010000sssssPP011000000ddddd | Rdd = memd_aq(Rs)
		.encoding = { .mask = 0xffe03fe0, .op = 0x92001800 },
		.id = HEX_INS_L4_LOADD_AQ,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memd_aq()",
	},
	{
		// 10010010000sssssPP010000000ddddd | Rdd = memd_locked(Rs)
		.encoding = { .mask = 0xffe03fe0, .op = 0x92001000 },
		.id = HEX_INS_L4_LOADD_LOCKED,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memd_locked()",
	},
	{
		// 10011011000eeeeePP01IIII0IIddddd | Rd = memb(Re=II)
		.encoding = { .mask = 0xffe03080, .op = 0x9b001000 },
		.id = HEX_INS_L4_LOADRB_AP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x2, 5 }, { 0x4, 8 } }, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memb(=)",
	},
	{
		// 10011101000tttttPPi1IIIIiIIddddd | Rd = memb(Rt<<Ii+II)
		.encoding = { .mask = 0xffe01000, .op = 0x9d001000 },
		.id = HEX_INS_L4_LOADRB_UR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x1, 7 }, { 0x1, 13 } }, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x2, 5 }, { 0x4, 8 } }, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memb(<<+)",
	},
	{
		// 10011011110eeeeePP01IIII0IIddddd | Rdd = memd(Re=II)
		.encoding = { .mask = 0xffe03080, .op = 0x9bc01000 },
		.id = HEX_INS_L4_LOADRD_AP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x2, 5 }, { 0x4, 8 } }, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memd(=)",
	},
	{
		// 10011101110tttttPPi1IIIIiIIddddd | Rdd = memd(Rt<<Ii+II)
		.encoding = { .mask = 0xffe01000, .op = 0x9dc01000 },
		.id = HEX_INS_L4_LOADRD_UR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x1, 7 }, { 0x1, 13 } }, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x2, 5 }, { 0x4, 8 } }, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memd(<<+)",
	},
	{
		// 10011011010eeeeePP01IIII0IIddddd | Rd = memh(Re=II)
		.encoding = { .mask = 0xffe03080, .op = 0x9b401000 },
		.id = HEX_INS_L4_LOADRH_AP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x2, 5 }, { 0x4, 8 } }, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memh(=)",
	},
	{
		// 10011101010tttttPPi1IIIIiIIddddd | Rd = memh(Rt<<Ii+II)
		.encoding = { .mask = 0xffe01000, .op = 0x9d401000 },
		.id = HEX_INS_L4_LOADRH_UR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x1, 7 }, { 0x1, 13 } }, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x2, 5 }, { 0x4, 8 } }, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memh(<<+)",
	},
	{
		// 10011011100eeeeePP01IIII0IIddddd | Rd = memw(Re=II)
		.encoding = { .mask = 0xffe03080, .op = 0x9b801000 },
		.id = HEX_INS_L4_LOADRI_AP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x2, 5 }, { 0x4, 8 } }, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memw(=)",
	},
	{
		// 10011101100tttttPPi1IIIIiIIddddd | Rd = memw(Rt<<Ii+II)
		.encoding = { .mask = 0xffe01000, .op = 0x9d801000 },
		.id = HEX_INS_L4_LOADRI_UR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x1, 7 }, { 0x1, 13 } }, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x2, 5 }, { 0x4, 8 } }, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memw(<<+)",
	},
	{
		// 10011011001eeeeePP01IIII0IIddddd | Rd = memub(Re=II)
		.encoding = { .mask = 0xffe03080, .op = 0x9b201000 },
		.id = HEX_INS_L4_LOADRUB_AP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x2, 5 }, { 0x4, 8 } }, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memub(=)",
	},
	{
		// 10011101001tttttPPi1IIIIiIIddddd | Rd = memub(Rt<<Ii+II)
		.encoding = { .mask = 0xffe01000, .op = 0x9d201000 },
		.id = HEX_INS_L4_LOADRUB_UR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x1, 7 }, { 0x1, 13 } }, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x2, 5 }, { 0x4, 8 } }, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memub(<<+)",
	},
	{
		// 10011011011eeeeePP01IIII0IIddddd | Rd = memuh(Re=II)
		.encoding = { .mask = 0xffe03080, .op = 0x9b601000 },
		.id = HEX_INS_L4_LOADRUH_AP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x2, 5 }, { 0x4, 8 } }, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memuh(=)",
	},
	{
		// 10011101011tttttPPi1IIIIiIIddddd | Rd = memuh(Rt<<Ii+II)
		.encoding = { .mask = 0xffe01000, .op = 0x9d601000 },
		.id = HEX_INS_L4_LOADRUH_UR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x1, 7 }, { 0x1, 13 } }, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x2, 5 }, { 0x4, 8 } }, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memuh(<<+)",
	},
	{
		// 10011111000iiiiiPP101tti100ddddd | if (!Pt) Rd = memb(Ii)
		.encoding = { .mask = 0xffe038e0, .op = 0x9f002880 },
		.id = HEX_INS_L4_PLOADRBF_ABS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 9 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x1, 8 }, { 0x5, 16 } }, .syntax = 15 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!)  = memb()",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 10011111000iiiiiPP111tti100ddddd | if (!Pt.new) Rd = memb(Ii)
		.encoding = { .mask = 0xffe038e0, .op = 0x9f003880 },
		.id = HEX_INS_L4_PLOADRBFNEW_ABS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 9 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x1, 8 }, { 0x5, 16 } }, .syntax = 19 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!.new)  = memb()",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 10011111000iiiiiPP100tti100ddddd | if (Pt) Rd = memb(Ii)
		.encoding = { .mask = 0xffe038e0, .op = 0x9f002080 },
		.id = HEX_INS_L4_PLOADRBT_ABS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 9 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x1, 8 }, { 0x5, 16 } }, .syntax = 14 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if ()  = memb()",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 10011111000iiiiiPP110tti100ddddd | if (Pt.new) Rd = memb(Ii)
		.encoding = { .mask = 0xffe038e0, .op = 0x9f003080 },
		.id = HEX_INS_L4_PLOADRBTNEW_ABS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 9 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x1, 8 }, { 0x5, 16 } }, .syntax = 18 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (.new)  = memb()",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 10011111110iiiiiPP101tti100ddddd | if (!Pt) Rdd = memd(Ii)
		.encoding = { .mask = 0xffe038e0, .op = 0x9fc02880 },
		.id = HEX_INS_L4_PLOADRDF_ABS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 9 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x1, 8 }, { 0x5, 16 } }, .syntax = 15 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!)  = memd()",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 10011111110iiiiiPP111tti100ddddd | if (!Pt.new) Rdd = memd(Ii)
		.encoding = { .mask = 0xffe038e0, .op = 0x9fc03880 },
		.id = HEX_INS_L4_PLOADRDFNEW_ABS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 9 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x1, 8 }, { 0x5, 16 } }, .syntax = 19 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!.new)  = memd()",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 10011111110iiiiiPP100tti100ddddd | if (Pt) Rdd = memd(Ii)
		.encoding = { .mask = 0xffe038e0, .op = 0x9fc02080 },
		.id = HEX_INS_L4_PLOADRDT_ABS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 9 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x1, 8 }, { 0x5, 16 } }, .syntax = 14 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if ()  = memd()",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 10011111110iiiiiPP110tti100ddddd | if (Pt.new) Rdd = memd(Ii)
		.encoding = { .mask = 0xffe038e0, .op = 0x9fc03080 },
		.id = HEX_INS_L4_PLOADRDTNEW_ABS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 9 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x1, 8 }, { 0x5, 16 } }, .syntax = 18 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (.new)  = memd()",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 10011111010iiiiiPP101tti100ddddd | if (!Pt) Rd = memh(Ii)
		.encoding = { .mask = 0xffe038e0, .op = 0x9f402880 },
		.id = HEX_INS_L4_PLOADRHF_ABS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 9 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x1, 8 }, { 0x5, 16 } }, .syntax = 15 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!)  = memh()",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 10011111010iiiiiPP111tti100ddddd | if (!Pt.new) Rd = memh(Ii)
		.encoding = { .mask = 0xffe038e0, .op = 0x9f403880 },
		.id = HEX_INS_L4_PLOADRHFNEW_ABS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 9 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x1, 8 }, { 0x5, 16 } }, .syntax = 19 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!.new)  = memh()",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 10011111010iiiiiPP100tti100ddddd | if (Pt) Rd = memh(Ii)
		.encoding = { .mask = 0xffe038e0, .op = 0x9f402080 },
		.id = HEX_INS_L4_PLOADRHT_ABS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 9 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x1, 8 }, { 0x5, 16 } }, .syntax = 14 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if ()  = memh()",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 10011111010iiiiiPP110tti100ddddd | if (Pt.new) Rd = memh(Ii)
		.encoding = { .mask = 0xffe038e0, .op = 0x9f403080 },
		.id = HEX_INS_L4_PLOADRHTNEW_ABS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 9 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x1, 8 }, { 0x5, 16 } }, .syntax = 18 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (.new)  = memh()",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 10011111100iiiiiPP101tti100ddddd | if (!Pt) Rd = memw(Ii)
		.encoding = { .mask = 0xffe038e0, .op = 0x9f802880 },
		.id = HEX_INS_L4_PLOADRIF_ABS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 9 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x1, 8 }, { 0x5, 16 } }, .syntax = 15 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!)  = memw()",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 10011111100iiiiiPP111tti100ddddd | if (!Pt.new) Rd = memw(Ii)
		.encoding = { .mask = 0xffe038e0, .op = 0x9f803880 },
		.id = HEX_INS_L4_PLOADRIFNEW_ABS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 9 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x1, 8 }, { 0x5, 16 } }, .syntax = 19 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!.new)  = memw()",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 10011111100iiiiiPP100tti100ddddd | if (Pt) Rd = memw(Ii)
		.encoding = { .mask = 0xffe038e0, .op = 0x9f802080 },
		.id = HEX_INS_L4_PLOADRIT_ABS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 9 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x1, 8 }, { 0x5, 16 } }, .syntax = 14 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if ()  = memw()",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 10011111100iiiiiPP110tti100ddddd | if (Pt.new) Rd = memw(Ii)
		.encoding = { .mask = 0xffe038e0, .op = 0x9f803080 },
		.id = HEX_INS_L4_PLOADRITNEW_ABS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 9 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x1, 8 }, { 0x5, 16 } }, .syntax = 18 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (.new)  = memw()",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 10011111001iiiiiPP101tti100ddddd | if (!Pt) Rd = memub(Ii)
		.encoding = { .mask = 0xffe038e0, .op = 0x9f202880 },
		.id = HEX_INS_L4_PLOADRUBF_ABS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 9 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x1, 8 }, { 0x5, 16 } }, .syntax = 16 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!)  = memub()",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 10011111001iiiiiPP111tti100ddddd | if (!Pt.new) Rd = memub(Ii)
		.encoding = { .mask = 0xffe038e0, .op = 0x9f203880 },
		.id = HEX_INS_L4_PLOADRUBFNEW_ABS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 9 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x1, 8 }, { 0x5, 16 } }, .syntax = 20 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!.new)  = memub()",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 10011111001iiiiiPP100tti100ddddd | if (Pt) Rd = memub(Ii)
		.encoding = { .mask = 0xffe038e0, .op = 0x9f202080 },
		.id = HEX_INS_L4_PLOADRUBT_ABS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 9 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x1, 8 }, { 0x5, 16 } }, .syntax = 15 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if ()  = memub()",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 10011111001iiiiiPP110tti100ddddd | if (Pt.new) Rd = memub(Ii)
		.encoding = { .mask = 0xffe038e0, .op = 0x9f203080 },
		.id = HEX_INS_L4_PLOADRUBTNEW_ABS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 9 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x1, 8 }, { 0x5, 16 } }, .syntax = 19 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (.new)  = memub()",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 10011111011iiiiiPP101tti100ddddd | if (!Pt) Rd = memuh(Ii)
		.encoding = { .mask = 0xffe038e0, .op = 0x9f602880 },
		.id = HEX_INS_L4_PLOADRUHF_ABS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 9 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x1, 8 }, { 0x5, 16 } }, .syntax = 16 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!)  = memuh()",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 10011111011iiiiiPP111tti100ddddd | if (!Pt.new) Rd = memuh(Ii)
		.encoding = { .mask = 0xffe038e0, .op = 0x9f603880 },
		.id = HEX_INS_L4_PLOADRUHFNEW_ABS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 9 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x1, 8 }, { 0x5, 16 } }, .syntax = 20 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!.new)  = memuh()",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 10011111011iiiiiPP100tti100ddddd | if (Pt) Rd = memuh(Ii)
		.encoding = { .mask = 0xffe038e0, .op = 0x9f602080 },
		.id = HEX_INS_L4_PLOADRUHT_ABS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 9 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x1, 8 }, { 0x5, 16 } }, .syntax = 15 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if ()  = memuh()",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 10011111011iiiiiPP110tti100ddddd | if (Pt.new) Rd = memuh(Ii)
		.encoding = { .mask = 0xffe038e0, .op = 0x9f603080 },
		.id = HEX_INS_L4_PLOADRUHTNEW_ABS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 9 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x1, 8 }, { 0x5, 16 } }, .syntax = 19 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (.new)  = memuh()",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 10010110000sssssPP000000000ddddd | Rdd = dealloc_return(Rs):raw
		.encoding = { .mask = 0xffe03fe0, .op = 0x96000000 },
		.id = HEX_INS_L4_RETURN,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 18 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_RET,
		.syntax = " = dealloc_return():raw",
	},
	{
		// 10010110000sssssPP1100vv000ddddd | if (!Pv) Rdd = dealloc_return(Rs):raw
		.encoding = { .mask = 0xffe03ce0, .op = 0x96003000 },
		.id = HEX_INS_L4_RETURN_F,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 8 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 25 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "if (!)  = dealloc_return():raw",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 10010110000sssssPP1010vv000ddddd | if (!Pv.new) Rdd = dealloc_return(Rs):nt:raw
		.encoding = { .mask = 0xffe03ce0, .op = 0x96002800 },
		.id = HEX_INS_L4_RETURN_FNEW_PNT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 8 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 29 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "if (!.new)  = dealloc_return():nt:raw",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 10010110000sssssPP1110vv000ddddd | if (!Pv.new) Rdd = dealloc_return(Rs):t:raw
		.encoding = { .mask = 0xffe03ce0, .op = 0x96003800 },
		.id = HEX_INS_L4_RETURN_FNEW_PT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 8 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 29 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "if (!.new)  = dealloc_return():t:raw",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 10010110000sssssPP0100vv000ddddd | if (Pv) Rdd = dealloc_return(Rs):raw
		.encoding = { .mask = 0xffe03ce0, .op = 0x96001000 },
		.id = HEX_INS_L4_RETURN_T,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 8 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 24 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "if ()  = dealloc_return():raw",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 10010110000sssssPP0010vv000ddddd | if (Pv.new) Rdd = dealloc_return(Rs):nt:raw
		.encoding = { .mask = 0xffe03ce0, .op = 0x96000800 },
		.id = HEX_INS_L4_RETURN_TNEW_PNT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 8 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 28 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "if (.new)  = dealloc_return():nt:raw",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 10010110000sssssPP0110vv000ddddd | if (Pv.new) Rdd = dealloc_return(Rs):t:raw
		.encoding = { .mask = 0xffe03ce0, .op = 0x96001800 },
		.id = HEX_INS_L4_RETURN_TNEW_PT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 8 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 28 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_CRET,
		.syntax = "if (.new)  = dealloc_return():t:raw",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 10010010000sssssPPuttttt01000000 | memcpy(Rs,Rt,Mu)
		.encoding = { .mask = 0xffe000ff, .op = 0x92000040 },
		.id = HEX_INS_L6_MEMCPY,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memcpy(,,)",
	},
	{
		// 10010010000sssssPP0uuuuu001ddddd | Rd = vextract(Vu,Rs)
		.encoding = { .mask = 0xffe020e0, .op = 0x92000020 },
		.id = HEX_INS_V6_EXTRACTW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_HVX_VR, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vextract(,)",
	},
	{
		// 10010100000sssssPP000iiiiiiiiiii | dcfetch(Rs+Ii)
		.encoding = { .mask = 0xffe03800, .op = 0x94000000 },
		.id = HEX_INS_Y2_DCFETCHBO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0xb, 0 } }, .imm_scale = 3, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "dcfetch(+)",
	},
	{
		// 10010010000sssssPP1ttttt000ddddd | Rd = memw_phys(Rs,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0x92002000 },
		.id = HEX_INS_IMPORTED_RD_MEMW_PHYS_RS_RT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = memw_phys(,)",
	},
	{ { 0 } },
};

static const HexInsnTemplate templates_normal_0xa[] = {
	{
		// 10100000111sssssPP0000011 | release(Rs):at
		.encoding = { .mask = 0xffe020fc, .op = 0xa0e0000c },
		.id = HEX_INS_R6_RELEASE_AT_VI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "release():at",
	},
	{
		// 10100000111sssssPP0001011 | release(Rs):st
		.encoding = { .mask = 0xffe020fc, .op = 0xa0e0002c },
		.id = HEX_INS_R6_RELEASE_ST_VI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "release():st",
	},
	{
		// 10100000100xxxxxPP000iiiiiiiiiii | allocframe(Rx,Ii):raw
		.encoding = { .mask = 0xffe03800, .op = 0xa0800000 },
		.id = HEX_INS_S2_ALLOCFRAME,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0xb, 0 } }, .imm_scale = 3, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "allocframe(,):raw",
	},
	{
		// 10101011000xxxxxPP1ttttt0iiii1vv | if (!Pv) memb(Rx++Ii) = Rt
		.encoding = { .mask = 0xffe02084, .op = 0xab002004 },
		.id = HEX_INS_S2_PSTORERBF_PI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 3 } }, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 18 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!) memb(++) = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 10101011000xxxxxPP1ttttt1iiii1vv | if (!Pv.new) memb(Rx++Ii) = Rt
		.encoding = { .mask = 0xffe02084, .op = 0xab002084 },
		.id = HEX_INS_S2_PSTORERBFNEW_PI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 3 } }, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 22 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!.new) memb(++) = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 10101011101xxxxxPP100ttt0iiii1vv | if (!Pv) memb(Rx++Ii) = Nt.new
		.encoding = { .mask = 0xffe03884, .op = 0xaba02004 },
		.id = HEX_INS_S2_PSTORERBNEWF_PI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 3 } }, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 18 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!) memb(++) = .new",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 10101011101xxxxxPP100ttt1iiii1vv | if (!Pv.new) memb(Rx++Ii) = Nt.new
		.encoding = { .mask = 0xffe03884, .op = 0xaba02084 },
		.id = HEX_INS_S2_PSTORERBNEWFNEW_PI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 3 } }, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 22 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!.new) memb(++) = .new",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 10101011101xxxxxPP100ttt0iiii0vv | if (Pv) memb(Rx++Ii) = Nt.new
		.encoding = { .mask = 0xffe03884, .op = 0xaba02000 },
		.id = HEX_INS_S2_PSTORERBNEWT_PI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 3 } }, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 17 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if () memb(++) = .new",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 10101011101xxxxxPP100ttt1iiii0vv | if (Pv.new) memb(Rx++Ii) = Nt.new
		.encoding = { .mask = 0xffe03884, .op = 0xaba02080 },
		.id = HEX_INS_S2_PSTORERBNEWTNEW_PI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 3 } }, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 21 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (.new) memb(++) = .new",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 10101011000xxxxxPP1ttttt0iiii0vv | if (Pv) memb(Rx++Ii) = Rt
		.encoding = { .mask = 0xffe02084, .op = 0xab002000 },
		.id = HEX_INS_S2_PSTORERBT_PI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 3 } }, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 17 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if () memb(++) = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 10101011000xxxxxPP1ttttt1iiii0vv | if (Pv.new) memb(Rx++Ii) = Rt
		.encoding = { .mask = 0xffe02084, .op = 0xab002080 },
		.id = HEX_INS_S2_PSTORERBTNEW_PI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 3 } }, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 21 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (.new) memb(++) = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 10101011110xxxxxPP1ttttt0iiii1vv | if (!Pv) memd(Rx++Ii) = Rtt
		.encoding = { .mask = 0xffe02084, .op = 0xabc02004 },
		.id = HEX_INS_S2_PSTORERDF_PI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 3 } }, .imm_scale = 3, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 18 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!) memd(++) = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 10101011110xxxxxPP1ttttt1iiii1vv | if (!Pv.new) memd(Rx++Ii) = Rtt
		.encoding = { .mask = 0xffe02084, .op = 0xabc02084 },
		.id = HEX_INS_S2_PSTORERDFNEW_PI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 3 } }, .imm_scale = 3, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 22 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!.new) memd(++) = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 10101011110xxxxxPP1ttttt0iiii0vv | if (Pv) memd(Rx++Ii) = Rtt
		.encoding = { .mask = 0xffe02084, .op = 0xabc02000 },
		.id = HEX_INS_S2_PSTORERDT_PI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 3 } }, .imm_scale = 3, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 17 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if () memd(++) = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 10101011110xxxxxPP1ttttt1iiii0vv | if (Pv.new) memd(Rx++Ii) = Rtt
		.encoding = { .mask = 0xffe02084, .op = 0xabc02080 },
		.id = HEX_INS_S2_PSTORERDTNEW_PI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 3 } }, .imm_scale = 3, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 21 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (.new) memd(++) = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 10101011011xxxxxPP1ttttt0iiii1vv | if (!Pv) memh(Rx++Ii) = Rt.h
		.encoding = { .mask = 0xffe02084, .op = 0xab602004 },
		.id = HEX_INS_S2_PSTORERFF_PI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 3 } }, .imm_scale = 1, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 18 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!) memh(++) = .h",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 10101011011xxxxxPP1ttttt1iiii1vv | if (!Pv.new) memh(Rx++Ii) = Rt.h
		.encoding = { .mask = 0xffe02084, .op = 0xab602084 },
		.id = HEX_INS_S2_PSTORERFFNEW_PI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 3 } }, .imm_scale = 1, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 22 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!.new) memh(++) = .h",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 10101011011xxxxxPP1ttttt0iiii0vv | if (Pv) memh(Rx++Ii) = Rt.h
		.encoding = { .mask = 0xffe02084, .op = 0xab602000 },
		.id = HEX_INS_S2_PSTORERFT_PI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 3 } }, .imm_scale = 1, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 17 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if () memh(++) = .h",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 10101011011xxxxxPP1ttttt1iiii0vv | if (Pv.new) memh(Rx++Ii) = Rt.h
		.encoding = { .mask = 0xffe02084, .op = 0xab602080 },
		.id = HEX_INS_S2_PSTORERFTNEW_PI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 3 } }, .imm_scale = 1, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 21 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (.new) memh(++) = .h",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 10101011010xxxxxPP1ttttt0iiii1vv | if (!Pv) memh(Rx++Ii) = Rt
		.encoding = { .mask = 0xffe02084, .op = 0xab402004 },
		.id = HEX_INS_S2_PSTORERHF_PI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 3 } }, .imm_scale = 1, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 18 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!) memh(++) = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 10101011010xxxxxPP1ttttt1iiii1vv | if (!Pv.new) memh(Rx++Ii) = Rt
		.encoding = { .mask = 0xffe02084, .op = 0xab402084 },
		.id = HEX_INS_S2_PSTORERHFNEW_PI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 3 } }, .imm_scale = 1, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 22 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!.new) memh(++) = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 10101011101xxxxxPP101ttt0iiii1vv | if (!Pv) memh(Rx++Ii) = Nt.new
		.encoding = { .mask = 0xffe03884, .op = 0xaba02804 },
		.id = HEX_INS_S2_PSTORERHNEWF_PI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 3 } }, .imm_scale = 1, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 18 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!) memh(++) = .new",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 10101011101xxxxxPP101ttt1iiii1vv | if (!Pv.new) memh(Rx++Ii) = Nt.new
		.encoding = { .mask = 0xffe03884, .op = 0xaba02884 },
		.id = HEX_INS_S2_PSTORERHNEWFNEW_PI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 3 } }, .imm_scale = 1, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 22 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!.new) memh(++) = .new",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 10101011101xxxxxPP101ttt0iiii0vv | if (Pv) memh(Rx++Ii) = Nt.new
		.encoding = { .mask = 0xffe03884, .op = 0xaba02800 },
		.id = HEX_INS_S2_PSTORERHNEWT_PI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 3 } }, .imm_scale = 1, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 17 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if () memh(++) = .new",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 10101011101xxxxxPP101ttt1iiii0vv | if (Pv.new) memh(Rx++Ii) = Nt.new
		.encoding = { .mask = 0xffe03884, .op = 0xaba02880 },
		.id = HEX_INS_S2_PSTORERHNEWTNEW_PI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 3 } }, .imm_scale = 1, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 21 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (.new) memh(++) = .new",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 10101011010xxxxxPP1ttttt0iiii0vv | if (Pv) memh(Rx++Ii) = Rt
		.encoding = { .mask = 0xffe02084, .op = 0xab402000 },
		.id = HEX_INS_S2_PSTORERHT_PI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 3 } }, .imm_scale = 1, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 17 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if () memh(++) = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 10101011010xxxxxPP1ttttt1iiii0vv | if (Pv.new) memh(Rx++Ii) = Rt
		.encoding = { .mask = 0xffe02084, .op = 0xab402080 },
		.id = HEX_INS_S2_PSTORERHTNEW_PI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 3 } }, .imm_scale = 1, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 21 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (.new) memh(++) = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 10101011100xxxxxPP1ttttt0iiii1vv | if (!Pv) memw(Rx++Ii) = Rt
		.encoding = { .mask = 0xffe02084, .op = 0xab802004 },
		.id = HEX_INS_S2_PSTORERIF_PI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 3 } }, .imm_scale = 2, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 18 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!) memw(++) = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 10101011100xxxxxPP1ttttt1iiii1vv | if (!Pv.new) memw(Rx++Ii) = Rt
		.encoding = { .mask = 0xffe02084, .op = 0xab802084 },
		.id = HEX_INS_S2_PSTORERIFNEW_PI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 3 } }, .imm_scale = 2, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 22 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!.new) memw(++) = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 10101011101xxxxxPP110ttt0iiii1vv | if (!Pv) memw(Rx++Ii) = Nt.new
		.encoding = { .mask = 0xffe03884, .op = 0xaba03004 },
		.id = HEX_INS_S2_PSTORERINEWF_PI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 3 } }, .imm_scale = 2, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 18 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!) memw(++) = .new",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 10101011101xxxxxPP110ttt1iiii1vv | if (!Pv.new) memw(Rx++Ii) = Nt.new
		.encoding = { .mask = 0xffe03884, .op = 0xaba03084 },
		.id = HEX_INS_S2_PSTORERINEWFNEW_PI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 3 } }, .imm_scale = 2, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 22 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!.new) memw(++) = .new",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 10101011101xxxxxPP110ttt0iiii0vv | if (Pv) memw(Rx++Ii) = Nt.new
		.encoding = { .mask = 0xffe03884, .op = 0xaba03000 },
		.id = HEX_INS_S2_PSTORERINEWT_PI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 3 } }, .imm_scale = 2, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 17 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if () memw(++) = .new",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 10101011101xxxxxPP110ttt1iiii0vv | if (Pv.new) memw(Rx++Ii) = Nt.new
		.encoding = { .mask = 0xffe03884, .op = 0xaba03080 },
		.id = HEX_INS_S2_PSTORERINEWTNEW_PI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 3 } }, .imm_scale = 2, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 21 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (.new) memw(++) = .new",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 10101011100xxxxxPP1ttttt0iiii0vv | if (Pv) memw(Rx++Ii) = Rt
		.encoding = { .mask = 0xffe02084, .op = 0xab802000 },
		.id = HEX_INS_S2_PSTORERIT_PI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 3 } }, .imm_scale = 2, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 17 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if () memw(++) = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 10101011100xxxxxPP1ttttt1iiii0vv | if (Pv.new) memw(Rx++Ii) = Rt
		.encoding = { .mask = 0xffe02084, .op = 0xab802080 },
		.id = HEX_INS_S2_PSTORERITNEW_PI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 3 } }, .imm_scale = 2, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 21 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (.new) memw(++) = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 10100ii1000sssssPPitttttiiiiiiii | memb(Rs+Ii) = Rt
		.encoding = { .mask = 0xf9e00000, .op = 0xa1000000 },
		.id = HEX_INS_S2_STORERB_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x8, 0 }, { 0x1, 13 }, { 0x2, 25 } }, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memb(+) = ",
	},
	{
		// 10101111000xxxxxPPuttttt00000000 | memb(Rx++Mu:brev) = Rt
		.encoding = { .mask = 0xffe000ff, .op = 0xaf000000 },
		.id = HEX_INS_S2_STORERB_PBR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 16 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memb(++:brev) = ",
	},
	{
		// 10101001000xxxxxPPuttttt0iiii000 | memb(Rx++Ii:circ(Mu)) = Rt
		.encoding = { .mask = 0xffe00087, .op = 0xa9000000 },
		.id = HEX_INS_S2_STORERB_PCI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 3 } }, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 18 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memb(++:circ()) = ",
	},
	{
		// 10101001000xxxxxPPuttttt00000010 | memb(Rx++I:circ(Mu)) = Rt
		.encoding = { .mask = 0xffe000ff, .op = 0xa9000002 },
		.id = HEX_INS_S2_STORERB_PCR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 19 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memb(++I:circ()) = ",
	},
	{
		// 10101011000xxxxxPP0ttttt0iiii000 | memb(Rx++Ii) = Rt
		.encoding = { .mask = 0xffe02087, .op = 0xab000000 },
		.id = HEX_INS_S2_STORERB_PI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 3 } }, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memb(++) = ",
	},
	{
		// 10101101000xxxxxPPuttttt00000000 | memb(Rx++Mu) = Rt
		.encoding = { .mask = 0xffe000ff, .op = 0xad000000 },
		.id = HEX_INS_S2_STORERB_PR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memb(++) = ",
	},
	{
		// 10100ii1101sssssPPi00tttiiiiiiii | memb(Rs+Ii) = Nt.new
		.encoding = { .mask = 0xf9e01800, .op = 0xa1a00000 },
		.id = HEX_INS_S2_STORERBNEW_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x8, 0 }, { 0x1, 13 }, { 0x2, 25 } }, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memb(+) = .new",
	},
	{
		// 10101111101xxxxxPPu00ttt00000000 | memb(Rx++Mu:brev) = Nt.new
		.encoding = { .mask = 0xffe018ff, .op = 0xafa00000 },
		.id = HEX_INS_S2_STORERBNEW_PBR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 16 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memb(++:brev) = .new",
	},
	{
		// 10101001101xxxxxPPu00ttt0iiii000 | memb(Rx++Ii:circ(Mu)) = Nt.new
		.encoding = { .mask = 0xffe01887, .op = 0xa9a00000 },
		.id = HEX_INS_S2_STORERBNEW_PCI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 3 } }, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 18 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memb(++:circ()) = .new",
	},
	{
		// 10101001101xxxxxPPu00ttt00000010 | memb(Rx++I:circ(Mu)) = Nt.new
		.encoding = { .mask = 0xffe018ff, .op = 0xa9a00002 },
		.id = HEX_INS_S2_STORERBNEW_PCR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 19 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memb(++I:circ()) = .new",
	},
	{
		// 10101011101xxxxxPP000ttt0iiii000 | memb(Rx++Ii) = Nt.new
		.encoding = { .mask = 0xffe03887, .op = 0xaba00000 },
		.id = HEX_INS_S2_STORERBNEW_PI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 3 } }, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memb(++) = .new",
	},
	{
		// 10101101101xxxxxPPu00ttt00000000 | memb(Rx++Mu) = Nt.new
		.encoding = { .mask = 0xffe018ff, .op = 0xada00000 },
		.id = HEX_INS_S2_STORERBNEW_PR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memb(++) = .new",
	},
	{
		// 10100ii1110sssssPPitttttiiiiiiii | memd(Rs+Ii) = Rtt
		.encoding = { .mask = 0xf9e00000, .op = 0xa1c00000 },
		.id = HEX_INS_S2_STORERD_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x8, 0 }, { 0x1, 13 }, { 0x2, 25 } }, .imm_scale = 3, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memd(+) = ",
	},
	{
		// 10101111110xxxxxPPuttttt00000000 | memd(Rx++Mu:brev) = Rtt
		.encoding = { .mask = 0xffe000ff, .op = 0xafc00000 },
		.id = HEX_INS_S2_STORERD_PBR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 16 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memd(++:brev) = ",
	},
	{
		// 10101001110xxxxxPPuttttt0iiii000 | memd(Rx++Ii:circ(Mu)) = Rtt
		.encoding = { .mask = 0xffe00087, .op = 0xa9c00000 },
		.id = HEX_INS_S2_STORERD_PCI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 3 } }, .imm_scale = 3, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 18 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memd(++:circ()) = ",
	},
	{
		// 10101001110xxxxxPPuttttt00000010 | memd(Rx++I:circ(Mu)) = Rtt
		.encoding = { .mask = 0xffe000ff, .op = 0xa9c00002 },
		.id = HEX_INS_S2_STORERD_PCR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 19 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memd(++I:circ()) = ",
	},
	{
		// 10101011110xxxxxPP0ttttt0iiii000 | memd(Rx++Ii) = Rtt
		.encoding = { .mask = 0xffe02087, .op = 0xabc00000 },
		.id = HEX_INS_S2_STORERD_PI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 3 } }, .imm_scale = 3, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memd(++) = ",
	},
	{
		// 10101101110xxxxxPPuttttt00000000 | memd(Rx++Mu) = Rtt
		.encoding = { .mask = 0xffe000ff, .op = 0xadc00000 },
		.id = HEX_INS_S2_STORERD_PR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memd(++) = ",
	},
	{
		// 10100ii1011sssssPPitttttiiiiiiii | memh(Rs+Ii) = Rt.h
		.encoding = { .mask = 0xf9e00000, .op = 0xa1600000 },
		.id = HEX_INS_S2_STORERF_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x8, 0 }, { 0x1, 13 }, { 0x2, 25 } }, .imm_scale = 1, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memh(+) = .h",
	},
	{
		// 10101111011xxxxxPPuttttt00000000 | memh(Rx++Mu:brev) = Rt.h
		.encoding = { .mask = 0xffe000ff, .op = 0xaf600000 },
		.id = HEX_INS_S2_STORERF_PBR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 16 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memh(++:brev) = .h",
	},
	{
		// 10101001011xxxxxPPuttttt0iiii000 | memh(Rx++Ii:circ(Mu)) = Rt.h
		.encoding = { .mask = 0xffe00087, .op = 0xa9600000 },
		.id = HEX_INS_S2_STORERF_PCI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 3 } }, .imm_scale = 1, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 18 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memh(++:circ()) = .h",
	},
	{
		// 10101001011xxxxxPPuttttt00000010 | memh(Rx++I:circ(Mu)) = Rt.h
		.encoding = { .mask = 0xffe000ff, .op = 0xa9600002 },
		.id = HEX_INS_S2_STORERF_PCR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 19 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memh(++I:circ()) = .h",
	},
	{
		// 10101011011xxxxxPP0ttttt0iiii000 | memh(Rx++Ii) = Rt.h
		.encoding = { .mask = 0xffe02087, .op = 0xab600000 },
		.id = HEX_INS_S2_STORERF_PI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 3 } }, .imm_scale = 1, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memh(++) = .h",
	},
	{
		// 10101101011xxxxxPPuttttt00000000 | memh(Rx++Mu) = Rt.h
		.encoding = { .mask = 0xffe000ff, .op = 0xad600000 },
		.id = HEX_INS_S2_STORERF_PR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memh(++) = .h",
	},
	{
		// 10100ii1010sssssPPitttttiiiiiiii | memh(Rs+Ii) = Rt
		.encoding = { .mask = 0xf9e00000, .op = 0xa1400000 },
		.id = HEX_INS_S2_STORERH_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x8, 0 }, { 0x1, 13 }, { 0x2, 25 } }, .imm_scale = 1, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memh(+) = ",
	},
	{
		// 10101111010xxxxxPPuttttt00000000 | memh(Rx++Mu:brev) = Rt
		.encoding = { .mask = 0xffe000ff, .op = 0xaf400000 },
		.id = HEX_INS_S2_STORERH_PBR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 16 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memh(++:brev) = ",
	},
	{
		// 10101001010xxxxxPPuttttt0iiii000 | memh(Rx++Ii:circ(Mu)) = Rt
		.encoding = { .mask = 0xffe00087, .op = 0xa9400000 },
		.id = HEX_INS_S2_STORERH_PCI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 3 } }, .imm_scale = 1, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 18 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memh(++:circ()) = ",
	},
	{
		// 10101001010xxxxxPPuttttt00000010 | memh(Rx++I:circ(Mu)) = Rt
		.encoding = { .mask = 0xffe000ff, .op = 0xa9400002 },
		.id = HEX_INS_S2_STORERH_PCR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 19 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memh(++I:circ()) = ",
	},
	{
		// 10101011010xxxxxPP0ttttt0iiii000 | memh(Rx++Ii) = Rt
		.encoding = { .mask = 0xffe02087, .op = 0xab400000 },
		.id = HEX_INS_S2_STORERH_PI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 3 } }, .imm_scale = 1, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memh(++) = ",
	},
	{
		// 10101101010xxxxxPPuttttt00000000 | memh(Rx++Mu) = Rt
		.encoding = { .mask = 0xffe000ff, .op = 0xad400000 },
		.id = HEX_INS_S2_STORERH_PR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memh(++) = ",
	},
	{
		// 10100ii1101sssssPPi01tttiiiiiiii | memh(Rs+Ii) = Nt.new
		.encoding = { .mask = 0xf9e01800, .op = 0xa1a00800 },
		.id = HEX_INS_S2_STORERHNEW_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x8, 0 }, { 0x1, 13 }, { 0x2, 25 } }, .imm_scale = 1, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memh(+) = .new",
	},
	{
		// 10101111101xxxxxPPu01ttt00000000 | memh(Rx++Mu:brev) = Nt.new
		.encoding = { .mask = 0xffe018ff, .op = 0xafa00800 },
		.id = HEX_INS_S2_STORERHNEW_PBR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 16 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memh(++:brev) = .new",
	},
	{
		// 10101001101xxxxxPPu01ttt0iiii000 | memh(Rx++Ii:circ(Mu)) = Nt.new
		.encoding = { .mask = 0xffe01887, .op = 0xa9a00800 },
		.id = HEX_INS_S2_STORERHNEW_PCI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 3 } }, .imm_scale = 1, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 18 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memh(++:circ()) = .new",
	},
	{
		// 10101001101xxxxxPPu01ttt00000010 | memh(Rx++I:circ(Mu)) = Nt.new
		.encoding = { .mask = 0xffe018ff, .op = 0xa9a00802 },
		.id = HEX_INS_S2_STORERHNEW_PCR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 19 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memh(++I:circ()) = .new",
	},
	{
		// 10101011101xxxxxPP001ttt0iiii000 | memh(Rx++Ii) = Nt.new
		.encoding = { .mask = 0xffe03887, .op = 0xaba00800 },
		.id = HEX_INS_S2_STORERHNEW_PI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 3 } }, .imm_scale = 1, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memh(++) = .new",
	},
	{
		// 10101101101xxxxxPPu01ttt00000000 | memh(Rx++Mu) = Nt.new
		.encoding = { .mask = 0xffe018ff, .op = 0xada00800 },
		.id = HEX_INS_S2_STORERHNEW_PR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memh(++) = .new",
	},
	{
		// 10100ii1100sssssPPitttttiiiiiiii | memw(Rs+Ii) = Rt
		.encoding = { .mask = 0xf9e00000, .op = 0xa1800000 },
		.id = HEX_INS_S2_STORERI_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x8, 0 }, { 0x1, 13 }, { 0x2, 25 } }, .imm_scale = 2, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memw(+) = ",
	},
	{
		// 10101111100xxxxxPPuttttt00000000 | memw(Rx++Mu:brev) = Rt
		.encoding = { .mask = 0xffe000ff, .op = 0xaf800000 },
		.id = HEX_INS_S2_STORERI_PBR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 16 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memw(++:brev) = ",
	},
	{
		// 10101001100xxxxxPPuttttt0iiii000 | memw(Rx++Ii:circ(Mu)) = Rt
		.encoding = { .mask = 0xffe00087, .op = 0xa9800000 },
		.id = HEX_INS_S2_STORERI_PCI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 3 } }, .imm_scale = 2, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 18 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memw(++:circ()) = ",
	},
	{
		// 10101001100xxxxxPPuttttt00000010 | memw(Rx++I:circ(Mu)) = Rt
		.encoding = { .mask = 0xffe000ff, .op = 0xa9800002 },
		.id = HEX_INS_S2_STORERI_PCR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 19 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memw(++I:circ()) = ",
	},
	{
		// 10101011100xxxxxPP0ttttt0iiii000 | memw(Rx++Ii) = Rt
		.encoding = { .mask = 0xffe02087, .op = 0xab800000 },
		.id = HEX_INS_S2_STORERI_PI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 3 } }, .imm_scale = 2, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memw(++) = ",
	},
	{
		// 10101101100xxxxxPPuttttt00000000 | memw(Rx++Mu) = Rt
		.encoding = { .mask = 0xffe000ff, .op = 0xad800000 },
		.id = HEX_INS_S2_STORERI_PR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memw(++) = ",
	},
	{
		// 10100ii1101sssssPPi10tttiiiiiiii | memw(Rs+Ii) = Nt.new
		.encoding = { .mask = 0xf9e01800, .op = 0xa1a01000 },
		.id = HEX_INS_S2_STORERINEW_IO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x8, 0 }, { 0x1, 13 }, { 0x2, 25 } }, .imm_scale = 2, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memw(+) = .new",
	},
	{
		// 10101111101xxxxxPPu10ttt00000000 | memw(Rx++Mu:brev) = Nt.new
		.encoding = { .mask = 0xffe018ff, .op = 0xafa01000 },
		.id = HEX_INS_S2_STORERINEW_PBR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 16 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memw(++:brev) = .new",
	},
	{
		// 10101001101xxxxxPPu10ttt0iiii000 | memw(Rx++Ii:circ(Mu)) = Nt.new
		.encoding = { .mask = 0xffe01887, .op = 0xa9a01000 },
		.id = HEX_INS_S2_STORERINEW_PCI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 3 } }, .imm_scale = 2, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 18 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memw(++:circ()) = .new",
	},
	{
		// 10101001101xxxxxPPu10ttt00000010 | memw(Rx++I:circ(Mu)) = Nt.new
		.encoding = { .mask = 0xffe018ff, .op = 0xa9a01002 },
		.id = HEX_INS_S2_STORERINEW_PCR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 19 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memw(++I:circ()) = .new",
	},
	{
		// 10101011101xxxxxPP010ttt0iiii000 | memw(Rx++Ii) = Nt.new
		.encoding = { .mask = 0xffe03887, .op = 0xaba01000 },
		.id = HEX_INS_S2_STORERINEW_PI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x4, 3 } }, .imm_scale = 2, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memw(++) = .new",
	},
	{
		// 10101101101xxxxxPPu10ttt00000000 | memw(Rx++Mu) = Nt.new
		.encoding = { .mask = 0xffe018ff, .op = 0xada01000 },
		.id = HEX_INS_S2_STORERINEW_PR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x1, 13 } }, .reg_cls = HEX_REG_CLASS_MOD_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memw(++) = .new",
	},
	{
		// 10100000101sssssPP0ttttt000000dd | memw_locked(Rs,Pd) = Rt
		.encoding = { .mask = 0xffe020fc, .op = 0xa0a00000 },
		.id = HEX_INS_S2_STOREW_LOCKED,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 17 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memw_locked(,) = ",
	},
	{
		// 10100000101sssssPP0ttttt000010 | memw_rl(Rs):at = Rt
		.encoding = { .mask = 0xffe020fc, .op = 0xa0a00008 },
		.id = HEX_INS_S2_STOREW_RL_AT_VI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memw_rl():at = ",
	},
	{
		// 10100000101sssssPP0ttttt001010 | memw_rl(Rs):st = Rt
		.encoding = { .mask = 0xffe020fc, .op = 0xa0a00028 },
		.id = HEX_INS_S2_STOREW_RL_ST_VI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memw_rl():st = ",
	},
	{
		// 10101111000000iiPP0ttttt1iiii1vv | if (!Pv) memb(Ii) = Rt
		.encoding = { .mask = 0xfffc2084, .op = 0xaf000084 },
		.id = HEX_INS_S4_PSTORERBF_ABS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x4, 3 }, { 0x2, 16 } }, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 16 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!) memb() = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 10101111000000iiPP1ttttt1iiii1vv | if (!Pv.new) memb(Ii) = Rt
		.encoding = { .mask = 0xfffc2084, .op = 0xaf002084 },
		.id = HEX_INS_S4_PSTORERBFNEW_ABS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x4, 3 }, { 0x2, 16 } }, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 20 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!.new) memb() = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 10101111101000iiPP000ttt1iiii1vv | if (!Pv) memb(Ii) = Nt.new
		.encoding = { .mask = 0xfffc3884, .op = 0xafa00084 },
		.id = HEX_INS_S4_PSTORERBNEWF_ABS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x4, 3 }, { 0x2, 16 } }, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 16 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!) memb() = .new",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 10101111101000iiPP100ttt1iiii1vv | if (!Pv.new) memb(Ii) = Nt.new
		.encoding = { .mask = 0xfffc3884, .op = 0xafa02084 },
		.id = HEX_INS_S4_PSTORERBNEWFNEW_ABS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x4, 3 }, { 0x2, 16 } }, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 20 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!.new) memb() = .new",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 10101111101000iiPP000ttt1iiii0vv | if (Pv) memb(Ii) = Nt.new
		.encoding = { .mask = 0xfffc3884, .op = 0xafa00080 },
		.id = HEX_INS_S4_PSTORERBNEWT_ABS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x4, 3 }, { 0x2, 16 } }, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 15 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if () memb() = .new",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 10101111101000iiPP100ttt1iiii0vv | if (Pv.new) memb(Ii) = Nt.new
		.encoding = { .mask = 0xfffc3884, .op = 0xafa02080 },
		.id = HEX_INS_S4_PSTORERBNEWTNEW_ABS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x4, 3 }, { 0x2, 16 } }, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 19 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (.new) memb() = .new",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 10101111000000iiPP0ttttt1iiii0vv | if (Pv) memb(Ii) = Rt
		.encoding = { .mask = 0xfffc2084, .op = 0xaf000080 },
		.id = HEX_INS_S4_PSTORERBT_ABS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x4, 3 }, { 0x2, 16 } }, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 15 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if () memb() = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 10101111000000iiPP1ttttt1iiii0vv | if (Pv.new) memb(Ii) = Rt
		.encoding = { .mask = 0xfffc2084, .op = 0xaf002080 },
		.id = HEX_INS_S4_PSTORERBTNEW_ABS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x4, 3 }, { 0x2, 16 } }, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 19 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (.new) memb() = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 10101111110000iiPP0ttttt1iiii1vv | if (!Pv) memd(Ii) = Rtt
		.encoding = { .mask = 0xfffc2084, .op = 0xafc00084 },
		.id = HEX_INS_S4_PSTORERDF_ABS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x4, 3 }, { 0x2, 16 } }, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 16 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!) memd() = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 10101111110000iiPP1ttttt1iiii1vv | if (!Pv.new) memd(Ii) = Rtt
		.encoding = { .mask = 0xfffc2084, .op = 0xafc02084 },
		.id = HEX_INS_S4_PSTORERDFNEW_ABS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x4, 3 }, { 0x2, 16 } }, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 20 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!.new) memd() = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 10101111110000iiPP0ttttt1iiii0vv | if (Pv) memd(Ii) = Rtt
		.encoding = { .mask = 0xfffc2084, .op = 0xafc00080 },
		.id = HEX_INS_S4_PSTORERDT_ABS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x4, 3 }, { 0x2, 16 } }, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 15 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if () memd() = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 10101111110000iiPP1ttttt1iiii0vv | if (Pv.new) memd(Ii) = Rtt
		.encoding = { .mask = 0xfffc2084, .op = 0xafc02080 },
		.id = HEX_INS_S4_PSTORERDTNEW_ABS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x4, 3 }, { 0x2, 16 } }, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 19 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (.new) memd() = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 10101111011000iiPP0ttttt1iiii1vv | if (!Pv) memh(Ii) = Rt.h
		.encoding = { .mask = 0xfffc2084, .op = 0xaf600084 },
		.id = HEX_INS_S4_PSTORERFF_ABS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x4, 3 }, { 0x2, 16 } }, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 16 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!) memh() = .h",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 10101111011000iiPP1ttttt1iiii1vv | if (!Pv.new) memh(Ii) = Rt.h
		.encoding = { .mask = 0xfffc2084, .op = 0xaf602084 },
		.id = HEX_INS_S4_PSTORERFFNEW_ABS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x4, 3 }, { 0x2, 16 } }, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 20 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!.new) memh() = .h",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 10101111011000iiPP0ttttt1iiii0vv | if (Pv) memh(Ii) = Rt.h
		.encoding = { .mask = 0xfffc2084, .op = 0xaf600080 },
		.id = HEX_INS_S4_PSTORERFT_ABS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x4, 3 }, { 0x2, 16 } }, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 15 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if () memh() = .h",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 10101111011000iiPP1ttttt1iiii0vv | if (Pv.new) memh(Ii) = Rt.h
		.encoding = { .mask = 0xfffc2084, .op = 0xaf602080 },
		.id = HEX_INS_S4_PSTORERFTNEW_ABS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x4, 3 }, { 0x2, 16 } }, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 19 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (.new) memh() = .h",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 10101111010000iiPP0ttttt1iiii1vv | if (!Pv) memh(Ii) = Rt
		.encoding = { .mask = 0xfffc2084, .op = 0xaf400084 },
		.id = HEX_INS_S4_PSTORERHF_ABS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x4, 3 }, { 0x2, 16 } }, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 16 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!) memh() = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 10101111010000iiPP1ttttt1iiii1vv | if (!Pv.new) memh(Ii) = Rt
		.encoding = { .mask = 0xfffc2084, .op = 0xaf402084 },
		.id = HEX_INS_S4_PSTORERHFNEW_ABS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x4, 3 }, { 0x2, 16 } }, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 20 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!.new) memh() = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 10101111101000iiPP001ttt1iiii1vv | if (!Pv) memh(Ii) = Nt.new
		.encoding = { .mask = 0xfffc3884, .op = 0xafa00884 },
		.id = HEX_INS_S4_PSTORERHNEWF_ABS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x4, 3 }, { 0x2, 16 } }, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 16 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!) memh() = .new",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 10101111101000iiPP101ttt1iiii1vv | if (!Pv.new) memh(Ii) = Nt.new
		.encoding = { .mask = 0xfffc3884, .op = 0xafa02884 },
		.id = HEX_INS_S4_PSTORERHNEWFNEW_ABS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x4, 3 }, { 0x2, 16 } }, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 20 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!.new) memh() = .new",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 10101111101000iiPP001ttt1iiii0vv | if (Pv) memh(Ii) = Nt.new
		.encoding = { .mask = 0xfffc3884, .op = 0xafa00880 },
		.id = HEX_INS_S4_PSTORERHNEWT_ABS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x4, 3 }, { 0x2, 16 } }, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 15 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if () memh() = .new",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 10101111101000iiPP101ttt1iiii0vv | if (Pv.new) memh(Ii) = Nt.new
		.encoding = { .mask = 0xfffc3884, .op = 0xafa02880 },
		.id = HEX_INS_S4_PSTORERHNEWTNEW_ABS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x4, 3 }, { 0x2, 16 } }, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 19 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (.new) memh() = .new",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 10101111010000iiPP0ttttt1iiii0vv | if (Pv) memh(Ii) = Rt
		.encoding = { .mask = 0xfffc2084, .op = 0xaf400080 },
		.id = HEX_INS_S4_PSTORERHT_ABS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x4, 3 }, { 0x2, 16 } }, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 15 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if () memh() = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 10101111010000iiPP1ttttt1iiii0vv | if (Pv.new) memh(Ii) = Rt
		.encoding = { .mask = 0xfffc2084, .op = 0xaf402080 },
		.id = HEX_INS_S4_PSTORERHTNEW_ABS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x4, 3 }, { 0x2, 16 } }, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 19 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (.new) memh() = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 10101111100000iiPP0ttttt1iiii1vv | if (!Pv) memw(Ii) = Rt
		.encoding = { .mask = 0xfffc2084, .op = 0xaf800084 },
		.id = HEX_INS_S4_PSTORERIF_ABS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x4, 3 }, { 0x2, 16 } }, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 16 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!) memw() = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 10101111100000iiPP1ttttt1iiii1vv | if (!Pv.new) memw(Ii) = Rt
		.encoding = { .mask = 0xfffc2084, .op = 0xaf802084 },
		.id = HEX_INS_S4_PSTORERIFNEW_ABS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x4, 3 }, { 0x2, 16 } }, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 20 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!.new) memw() = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 10101111101000iiPP010ttt1iiii1vv | if (!Pv) memw(Ii) = Nt.new
		.encoding = { .mask = 0xfffc3884, .op = 0xafa01084 },
		.id = HEX_INS_S4_PSTORERINEWF_ABS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x4, 3 }, { 0x2, 16 } }, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 16 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!) memw() = .new",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 10101111101000iiPP110ttt1iiii1vv | if (!Pv.new) memw(Ii) = Nt.new
		.encoding = { .mask = 0xfffc3884, .op = 0xafa03084 },
		.id = HEX_INS_S4_PSTORERINEWFNEW_ABS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x4, 3 }, { 0x2, 16 } }, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 20 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!.new) memw() = .new",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 10101111101000iiPP010ttt1iiii0vv | if (Pv) memw(Ii) = Nt.new
		.encoding = { .mask = 0xfffc3884, .op = 0xafa01080 },
		.id = HEX_INS_S4_PSTORERINEWT_ABS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x4, 3 }, { 0x2, 16 } }, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 15 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if () memw() = .new",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 10101111101000iiPP110ttt1iiii0vv | if (Pv.new) memw(Ii) = Nt.new
		.encoding = { .mask = 0xfffc3884, .op = 0xafa03080 },
		.id = HEX_INS_S4_PSTORERINEWTNEW_ABS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x4, 3 }, { 0x2, 16 } }, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 19 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (.new) memw() = .new",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 10101111100000iiPP0ttttt1iiii0vv | if (Pv) memw(Ii) = Rt
		.encoding = { .mask = 0xfffc2084, .op = 0xaf800080 },
		.id = HEX_INS_S4_PSTORERIT_ABS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x4, 3 }, { 0x2, 16 } }, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 15 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if () memw() = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 10101111100000iiPP1ttttt1iiii0vv | if (Pv.new) memw(Ii) = Rt
		.encoding = { .mask = 0xfffc2084, .op = 0xaf802080 },
		.id = HEX_INS_S4_PSTORERITNEW_ABS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x4, 3 }, { 0x2, 16 } }, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 19 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (.new) memw() = ",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 10100000111sssssPP0ttttt000000dd | memd_locked(Rs,Pd) = Rtt
		.encoding = { .mask = 0xffe020fc, .op = 0xa0e00000 },
		.id = HEX_INS_S4_STORED_LOCKED,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 17 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memd_locked(,) = ",
	},
	{
		// 10100000111sssssPP0ttttt000010 | memd_rl(Rs):at = Rtt
		.encoding = { .mask = 0xffe020fc, .op = 0xa0e00008 },
		.id = HEX_INS_S4_STORED_RL_AT_VI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memd_rl():at = ",
	},
	{
		// 10100000111sssssPP0ttttt001010 | memd_rl(Rs):st = Rtt
		.encoding = { .mask = 0xffe020fc, .op = 0xa0e00028 },
		.id = HEX_INS_S4_STORED_RL_ST_VI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memd_rl():st = ",
	},
	{
		// 10101011000eeeeePP0ttttt10IIIIII | memb(Re=II) = Rt
		.encoding = { .mask = 0xffe020c0, .op = 0xab000080 },
		.id = HEX_INS_S4_STORERB_AP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x6, 0 } }, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memb(=) = ",
	},
	{
		// 10101101000uuuuuPPittttt1iIIIIII | memb(Ru<<Ii+II) = Rt
		.encoding = { .mask = 0xffe00080, .op = 0xad000080 },
		.id = HEX_INS_S4_STORERB_UR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x1, 6 }, { 0x1, 13 } }, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x6, 0 } }, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memb(<<+) = ",
	},
	{
		// 10101011101eeeeePP000ttt10IIIIII | memb(Re=II) = Nt.new
		.encoding = { .mask = 0xffe038c0, .op = 0xaba00080 },
		.id = HEX_INS_S4_STORERBNEW_AP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x6, 0 } }, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memb(=) = .new",
	},
	{
		// 10101101101uuuuuPPi00ttt1iIIIIII | memb(Ru<<Ii+II) = Nt.new
		.encoding = { .mask = 0xffe01880, .op = 0xada00080 },
		.id = HEX_INS_S4_STORERBNEW_UR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x1, 6 }, { 0x1, 13 } }, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x6, 0 } }, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memb(<<+) = .new",
	},
	{
		// 10101011110eeeeePP0ttttt10IIIIII | memd(Re=II) = Rtt
		.encoding = { .mask = 0xffe020c0, .op = 0xabc00080 },
		.id = HEX_INS_S4_STORERD_AP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x6, 0 } }, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memd(=) = ",
	},
	{
		// 10101101110uuuuuPPittttt1iIIIIII | memd(Ru<<Ii+II) = Rtt
		.encoding = { .mask = 0xffe00080, .op = 0xadc00080 },
		.id = HEX_INS_S4_STORERD_UR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x1, 6 }, { 0x1, 13 } }, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x6, 0 } }, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memd(<<+) = ",
	},
	{
		// 10101011011eeeeePP0ttttt10IIIIII | memh(Re=II) = Rt.h
		.encoding = { .mask = 0xffe020c0, .op = 0xab600080 },
		.id = HEX_INS_S4_STORERF_AP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x6, 0 } }, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memh(=) = .h",
	},
	{
		// 10101101011uuuuuPPittttt1iIIIIII | memh(Ru<<Ii+II) = Rt.h
		.encoding = { .mask = 0xffe00080, .op = 0xad600080 },
		.id = HEX_INS_S4_STORERF_UR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x1, 6 }, { 0x1, 13 } }, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x6, 0 } }, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memh(<<+) = .h",
	},
	{
		// 10101011010eeeeePP0ttttt10IIIIII | memh(Re=II) = Rt
		.encoding = { .mask = 0xffe020c0, .op = 0xab400080 },
		.id = HEX_INS_S4_STORERH_AP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x6, 0 } }, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memh(=) = ",
	},
	{
		// 10101101010uuuuuPPittttt1iIIIIII | memh(Ru<<Ii+II) = Rt
		.encoding = { .mask = 0xffe00080, .op = 0xad400080 },
		.id = HEX_INS_S4_STORERH_UR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x1, 6 }, { 0x1, 13 } }, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x6, 0 } }, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memh(<<+) = ",
	},
	{
		// 10101011101eeeeePP001ttt10IIIIII | memh(Re=II) = Nt.new
		.encoding = { .mask = 0xffe038c0, .op = 0xaba00880 },
		.id = HEX_INS_S4_STORERHNEW_AP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x6, 0 } }, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memh(=) = .new",
	},
	{
		// 10101101101uuuuuPPi01ttt1iIIIIII | memh(Ru<<Ii+II) = Nt.new
		.encoding = { .mask = 0xffe01880, .op = 0xada00880 },
		.id = HEX_INS_S4_STORERHNEW_UR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x1, 6 }, { 0x1, 13 } }, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x6, 0 } }, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memh(<<+) = .new",
	},
	{
		// 10101011100eeeeePP0ttttt10IIIIII | memw(Re=II) = Rt
		.encoding = { .mask = 0xffe020c0, .op = 0xab800080 },
		.id = HEX_INS_S4_STORERI_AP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x6, 0 } }, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memw(=) = ",
	},
	{
		// 10101101100uuuuuPPittttt1iIIIIII | memw(Ru<<Ii+II) = Rt
		.encoding = { .mask = 0xffe00080, .op = 0xad800080 },
		.id = HEX_INS_S4_STORERI_UR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x1, 6 }, { 0x1, 13 } }, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x6, 0 } }, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memw(<<+) = ",
	},
	{
		// 10101011101eeeeePP010ttt10IIIIII | memw(Re=II) = Nt.new
		.encoding = { .mask = 0xffe038c0, .op = 0xaba01080 },
		.id = HEX_INS_S4_STORERINEW_AP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x6, 0 } }, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memw(=) = .new",
	},
	{
		// 10101101101uuuuuPPi10ttt1iIIIIII | memw(Ru<<Ii+II) = Nt.new
		.encoding = { .mask = 0xffe01880, .op = 0xada01080 },
		.id = HEX_INS_S4_STORERINEW_UR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x1, 6 }, { 0x1, 13 } }, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x6, 0 } }, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_N_REG, .masks = { { 0x3, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "memw(<<+) = .new",
	},
	{
		// 1010100000000000PP00000000000000 | barrier
		.encoding = { .mask = 0xffff3fff, .op = 0xa8000000 },
		.id = HEX_INS_Y2_BARRIER,
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "barrier",
	},
	{
		// 10100000000sssssPP00000000000000 | dccleana(Rs)
		.encoding = { .mask = 0xffe03fff, .op = 0xa0000000 },
		.id = HEX_INS_Y2_DCCLEANA,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "dccleana()",
	},
	{
		// 10100000010sssssPP00000000000000 | dccleaninva(Rs)
		.encoding = { .mask = 0xffe03fff, .op = 0xa0400000 },
		.id = HEX_INS_Y2_DCCLEANINVA,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "dccleaninva()",
	},
	{
		// 10100000001sssssPP00000000000000 | dcinva(Rs)
		.encoding = { .mask = 0xffe03fff, .op = 0xa0200000 },
		.id = HEX_INS_Y2_DCINVA,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "dcinva()",
	},
	{
		// 10100000110sssssPP00000000000000 | dczeroa(Rs)
		.encoding = { .mask = 0xffe03fff, .op = 0xa0c00000 },
		.id = HEX_INS_Y2_DCZEROA,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "dczeroa()",
	},
	{
		// 1010100001000000PP00000000000000 | syncht
		.encoding = { .mask = 0xffff3fff, .op = 0xa8400000 },
		.id = HEX_INS_Y2_SYNCHT,
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "syncht",
	},
	{
		// 10100110000sssssPP0ttttt00000000 | l2fetch(Rs,Rt)
		.encoding = { .mask = 0xffe020ff, .op = 0xa6000000 },
		.id = HEX_INS_Y4_L2FETCH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "l2fetch(,)",
	},
	{
		// 10100110100sssssPP0ttttt00000000 | l2fetch(Rs,Rtt)
		.encoding = { .mask = 0xffe020ff, .op = 0xa6800000 },
		.id = HEX_INS_Y5_L2FETCH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "l2fetch(,)",
	},
	{
		// 10100110000sssssPP0ttttt01000000 | dmlink(Rs,Rt)
		.encoding = { .mask = 0xffe020ff, .op = 0xa6000040 },
		.id = HEX_INS_Y6_DMLINK,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "dmlink(,)",
	},
	{
		// 1010100000000000PP000000011ddddd | Rd = dmpause
		.encoding = { .mask = 0xffff3fe0, .op = 0xa8000060 },
		.id = HEX_INS_Y6_DMPAUSE,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = dmpause",
	},
	{
		// 1010100000000000PP000000010ddddd | Rd = dmpoll
		.encoding = { .mask = 0xffff3fe0, .op = 0xa8000040 },
		.id = HEX_INS_Y6_DMPOLL,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = dmpoll",
	},
	{
		// 10100110000sssssPP00000010000000 | dmresume(Rs)
		.encoding = { .mask = 0xffe03fff, .op = 0xa6000080 },
		.id = HEX_INS_Y6_DMRESUME,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "dmresume()",
	},
	{
		// 10100110000sssssPP00000000100000 | dmstart(Rs)
		.encoding = { .mask = 0xffe03fff, .op = 0xa6000020 },
		.id = HEX_INS_Y6_DMSTART,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "dmstart()",
	},
	{
		// 1010100000000000PP000000001ddddd | Rd = dmwait
		.encoding = { .mask = 0xffff3fe0, .op = 0xa8000020 },
		.id = HEX_INS_Y6_DMWAIT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = dmwait",
	},
	{
		// 10100000111sssssPP100000000000dd | Pd = l2locka(Rs)
		.encoding = { .mask = 0xffe03ffc, .op = 0xa0e02000 },
		.id = HEX_INS_IMPORTED_PD_L2LOCKA_RS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = l2locka()",
	},
	{
		// 10100100001sssssPP000000000ddddd | Rd = dctagr(Rs)
		.encoding = { .mask = 0xffe03fe0, .op = 0xa4200000 },
		.id = HEX_INS_IMPORTED_RD_DCTAGR_RS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = dctagr()",
	},
	{
		// 10100100011sssssPP000000000ddddd | Rd = l2tagr(Rs)
		.encoding = { .mask = 0xffe03fe0, .op = 0xa4600000 },
		.id = HEX_INS_IMPORTED_RD_L2TAGR_RS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = l2tagr()",
	},
	{
		// 10100010001sssssPP00000000000000 | dccleanidx(Rs)
		.encoding = { .mask = 0xffe03fff, .op = 0xa2200000 },
		.id = HEX_INS_IMPORTED_DCCLEANIDX_RS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "dccleanidx()",
	},
	{
		// 10100010011sssssPP00000000000000 | dccleaninvidx(Rs)
		.encoding = { .mask = 0xffe03fff, .op = 0xa2600000 },
		.id = HEX_INS_IMPORTED_DCCLEANINVIDX_RS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "dccleaninvidx()",
	},
	{
		// 10100010010sssssPP00000000000000 | dcinvidx(Rs)
		.encoding = { .mask = 0xffe03fff, .op = 0xa2400000 },
		.id = HEX_INS_IMPORTED_DCINVIDX_RS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "dcinvidx()",
	},
	{
		// 1010001000000000PP00000000000000 | dckill
		.encoding = { .mask = 0xffff3fff, .op = 0xa2000000 },
		.id = HEX_INS_IMPORTED_DCKILL,
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "dckill",
	},
	{
		// 10100100000sssssPP0ttttt00000000 | dctagw(Rs,Rt)
		.encoding = { .mask = 0xffe020ff, .op = 0xa4000000 },
		.id = HEX_INS_IMPORTED_DCTAGW_RS_RT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "dctagw(,)",
	},
	{
		// 10100110001sssssPP00000000000000 | l2cleanidx(Rs)
		.encoding = { .mask = 0xffe03fff, .op = 0xa6200000 },
		.id = HEX_INS_IMPORTED_L2CLEANIDX_RS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "l2cleanidx()",
	},
	{
		// 10101000011sssssPP00000000000000 | l2cleaninvidx(Rs)
		.encoding = { .mask = 0xffe03fff, .op = 0xa8600000 },
		.id = HEX_INS_IMPORTED_L2CLEANINVIDX_RS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "l2cleaninvidx()",
	},
	{
		// 1010100000100000PP01000000000000 | l2gclean
		.encoding = { .mask = 0xffff3fff, .op = 0xa8201000 },
		.id = HEX_INS_IMPORTED_L2GCLEAN,
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "l2gclean",
	},
	{
		// 1010011010100000PP0ttttt00000000 | l2gclean(Rtt)
		.encoding = { .mask = 0xffff20ff, .op = 0xa6a00000 },
		.id = HEX_INS_IMPORTED_L2GCLEAN_RTT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "l2gclean()",
	},
	{
		// 1010100000100000PP01100000000000 | l2gcleaninv
		.encoding = { .mask = 0xffff3fff, .op = 0xa8201800 },
		.id = HEX_INS_IMPORTED_L2GCLEANINV,
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "l2gcleaninv",
	},
	{
		// 1010011011000000PP0ttttt00000000 | l2gcleaninv(Rtt)
		.encoding = { .mask = 0xffff20ff, .op = 0xa6c00000 },
		.id = HEX_INS_IMPORTED_L2GCLEANINV_RTT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "l2gcleaninv()",
	},
	{
		// 1010100000100000PP00100000000000 | l2gunlock
		.encoding = { .mask = 0xffff3fff, .op = 0xa8200800 },
		.id = HEX_INS_IMPORTED_L2GUNLOCK,
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "l2gunlock",
	},
	{
		// 10100110010sssssPP00000000000000 | l2invidx(Rs)
		.encoding = { .mask = 0xffe03fff, .op = 0xa6400000 },
		.id = HEX_INS_IMPORTED_L2INVIDX_RS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "l2invidx()",
	},
	{
		// 1010100000100000PP00000000000000 | l2kill
		.encoding = { .mask = 0xffff3fff, .op = 0xa8200000 },
		.id = HEX_INS_IMPORTED_L2KILL,
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "l2kill",
	},
	{
		// 10100100010sssssPP0ttttt00000000 | l2tagw(Rs,Rt)
		.encoding = { .mask = 0xffe020ff, .op = 0xa4400000 },
		.id = HEX_INS_IMPORTED_L2TAGW_RS_RT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "l2tagw(,)",
	},
	{
		// 10100110011sssssPP00000000000000 | l2unlocka(Rs)
		.encoding = { .mask = 0xffe03fff, .op = 0xa6600000 },
		.id = HEX_INS_IMPORTED_L2UNLOCKA_RS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = "l2unlocka()",
	},
	{ { 0 } },
};

static const HexInsnTemplate templates_normal_0xb[] = {
	{
		// 1011iiiiiiisssssPPiiiiiiiiiddddd | Rd = add(Rs,Ii)
		.encoding = { .mask = 0xf0000000, .op = 0xb0000000 },
		.id = HEX_INS_A2_ADDI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x9, 5 }, { 0x7, 21 } }, .syntax = 8 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,)",
	},
	{ { 0 } },
};

static const HexInsnTemplate templates_normal_0xc[] = {
	{
		// 11000010110sssssPP0ttttt0xxddddd | Rdd = add(Rss,Rtt,Px):carry
		.encoding = { .mask = 0xffe02080, .op = 0xc2c00000 },
		.id = HEX_INS_A4_ADDP_C,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 5 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,,):carry",
	},
	{
		// 11000111110sssssPP0ttttt110000dd | Pd = cmpb.eq(Rs,Rt)
		.encoding = { .mask = 0xffe020fc, .op = 0xc7c000c0 },
		.id = HEX_INS_A4_CMPBEQ,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = cmpb.eq(,)",
	},
	{
		// 11000111110sssssPP0ttttt010000dd | Pd = cmpb.gt(Rs,Rt)
		.encoding = { .mask = 0xffe020fc, .op = 0xc7c00040 },
		.id = HEX_INS_A4_CMPBGT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = cmpb.gt(,)",
	},
	{
		// 11000111110sssssPP0ttttt111000dd | Pd = cmpb.gtu(Rs,Rt)
		.encoding = { .mask = 0xffe020fc, .op = 0xc7c000e0 },
		.id = HEX_INS_A4_CMPBGTU,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = cmpb.gtu(,)",
	},
	{
		// 11000111110sssssPP0ttttt011000dd | Pd = cmph.eq(Rs,Rt)
		.encoding = { .mask = 0xffe020fc, .op = 0xc7c00060 },
		.id = HEX_INS_A4_CMPHEQ,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = cmph.eq(,)",
	},
	{
		// 11000111110sssssPP0ttttt100000dd | Pd = cmph.gt(Rs,Rt)
		.encoding = { .mask = 0xffe020fc, .op = 0xc7c00080 },
		.id = HEX_INS_A4_CMPHGT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = cmph.gt(,)",
	},
	{
		// 11000111110sssssPP0ttttt101000dd | Pd = cmph.gtu(Rs,Rt)
		.encoding = { .mask = 0xffe020fc, .op = 0xc7c000a0 },
		.id = HEX_INS_A4_CMPHGTU,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = cmph.gtu(,)",
	},
	{
		// 11000110110sssssPP0ttttt000ddddd | Rd = cround(Rs,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xc6c00000 },
		.id = HEX_INS_A4_CROUND_RR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = cround(,)",
	},
	{
		// 11000110110sssssPP0ttttt100ddddd | Rd = round(Rs,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xc6c00080 },
		.id = HEX_INS_A4_ROUND_RR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = round(,)",
	},
	{
		// 11000110110sssssPP0ttttt110ddddd | Rd = round(Rs,Rt):sat
		.encoding = { .mask = 0xffe020e0, .op = 0xc6c000c0 },
		.id = HEX_INS_A4_ROUND_RR_SAT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = round(,):sat",
	},
	{
		// 11000010111sssssPP0ttttt0xxddddd | Rdd = sub(Rss,Rtt,Px):carry
		.encoding = { .mask = 0xffe02080, .op = 0xc2e00000 },
		.id = HEX_INS_A4_SUBP_C,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 5 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = sub(,,):carry",
	},
	{
		// 11001011001sssssPP0xxxxx001uuuuu | Rxx = vrmaxh(Rss,Ru)
		.encoding = { .mask = 0xffe020e0, .op = 0xcb200020 },
		.id = HEX_INS_A4_VRMAXH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vrmaxh(,)",
	},
	{
		// 11001011001sssssPP1xxxxx001uuuuu | Rxx = vrmaxuh(Rss,Ru)
		.encoding = { .mask = 0xffe020e0, .op = 0xcb202020 },
		.id = HEX_INS_A4_VRMAXUH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vrmaxuh(,)",
	},
	{
		// 11001011001sssssPP1xxxxx010uuuuu | Rxx = vrmaxuw(Rss,Ru)
		.encoding = { .mask = 0xffe020e0, .op = 0xcb202040 },
		.id = HEX_INS_A4_VRMAXUW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vrmaxuw(,)",
	},
	{
		// 11001011001sssssPP0xxxxx010uuuuu | Rxx = vrmaxw(Rss,Ru)
		.encoding = { .mask = 0xffe020e0, .op = 0xcb200040 },
		.id = HEX_INS_A4_VRMAXW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vrmaxw(,)",
	},
	{
		// 11001011001sssssPP0xxxxx101uuuuu | Rxx = vrminh(Rss,Ru)
		.encoding = { .mask = 0xffe020e0, .op = 0xcb2000a0 },
		.id = HEX_INS_A4_VRMINH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vrminh(,)",
	},
	{
		// 11001011001sssssPP1xxxxx101uuuuu | Rxx = vrminuh(Rss,Ru)
		.encoding = { .mask = 0xffe020e0, .op = 0xcb2020a0 },
		.id = HEX_INS_A4_VRMINUH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vrminuh(,)",
	},
	{
		// 11001011001sssssPP1xxxxx110uuuuu | Rxx = vrminuw(Rss,Ru)
		.encoding = { .mask = 0xffe020e0, .op = 0xcb2020c0 },
		.id = HEX_INS_A4_VRMINUW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vrminuw(,)",
	},
	{
		// 11001011001sssssPP0xxxxx110uuuuu | Rxx = vrminw(Rss,Ru)
		.encoding = { .mask = 0xffe020e0, .op = 0xcb2000c0 },
		.id = HEX_INS_A4_VRMINW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vrminw(,)",
	},
	{
		// 11000001010sssssPP0ttttt001ddddd | Rd = vaddhub(Rss,Rtt):sat
		.encoding = { .mask = 0xffe020e0, .op = 0xc1400020 },
		.id = HEX_INS_A5_VADDHUBS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vaddhub(,):sat",
	},
	{
		// 11000110110sssssPP0ttttt010ddddd | Rdd = cround(Rss,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xc6c00040 },
		.id = HEX_INS_A7_CROUNDD_RR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = cround(,)",
	},
	{
		// 11000111100sssssPP0ttttt000000dd | Pd = bitsclr(Rs,Rt)
		.encoding = { .mask = 0xffe020fc, .op = 0xc7800000 },
		.id = HEX_INS_C2_BITSCLR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = bitsclr(,)",
	},
	{
		// 11000111010sssssPP0ttttt000000dd | Pd = bitsset(Rs,Rt)
		.encoding = { .mask = 0xffe020fc, .op = 0xc7400000 },
		.id = HEX_INS_C2_BITSSET,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = bitsset(,)",
	},
	{
		// 11000111101sssssPP0ttttt000000dd | Pd = !bitsclr(Rs,Rt)
		.encoding = { .mask = 0xffe020fc, .op = 0xc7a00000 },
		.id = HEX_INS_C4_NBITSCLR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = !bitsclr(,)",
	},
	{
		// 11000111011sssssPP0ttttt000000dd | Pd = !bitsset(Rs,Rt)
		.encoding = { .mask = 0xffe020fc, .op = 0xc7600000 },
		.id = HEX_INS_C4_NBITSSET,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = !bitsset(,)",
	},
	{
		// 11000111111sssssPP0ttttt011000dd | Pd = sfcmp.eq(Rs,Rt)
		.encoding = { .mask = 0xffe020fc, .op = 0xc7e00060 },
		.id = HEX_INS_F2_SFCMPEQ,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = sfcmp.eq(,)",
	},
	{
		// 11000111111sssssPP0ttttt000000dd | Pd = sfcmp.ge(Rs,Rt)
		.encoding = { .mask = 0xffe020fc, .op = 0xc7e00000 },
		.id = HEX_INS_F2_SFCMPGE,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = sfcmp.ge(,)",
	},
	{
		// 11000111111sssssPP0ttttt100000dd | Pd = sfcmp.gt(Rs,Rt)
		.encoding = { .mask = 0xffe020fc, .op = 0xc7e00080 },
		.id = HEX_INS_F2_SFCMPGT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = sfcmp.gt(,)",
	},
	{
		// 11000111111sssssPP0ttttt001000dd | Pd = sfcmp.uo(Rs,Rt)
		.encoding = { .mask = 0xffe020fc, .op = 0xc7e00020 },
		.id = HEX_INS_F2_SFCMPUO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = sfcmp.uo(,)",
	},
	{
		// 11000101000sssssPP0ttttt100ddddd | Rd = cmpyiwh(Rss,Rt):<<1:rnd:sat
		.encoding = { .mask = 0xffe020e0, .op = 0xc5000080 },
		.id = HEX_INS_M4_CMPYI_WH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = cmpyiwh(,):<<1:rnd:sat",
	},
	{
		// 11000101000sssssPP0ttttt101ddddd | Rd = cmpyiwh(Rss,Rt*):<<1:rnd:sat
		.encoding = { .mask = 0xffe020e0, .op = 0xc50000a0 },
		.id = HEX_INS_M4_CMPYI_WHC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = cmpyiwh(,*):<<1:rnd:sat",
	},
	{
		// 11000101000sssssPP0ttttt110ddddd | Rd = cmpyrwh(Rss,Rt):<<1:rnd:sat
		.encoding = { .mask = 0xffe020e0, .op = 0xc50000c0 },
		.id = HEX_INS_M4_CMPYR_WH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = cmpyrwh(,):<<1:rnd:sat",
	},
	{
		// 11000101000sssssPP0ttttt111ddddd | Rd = cmpyrwh(Rss,Rt*):<<1:rnd:sat
		.encoding = { .mask = 0xffe020e0, .op = 0xc50000e0 },
		.id = HEX_INS_M4_CMPYR_WHC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = cmpyrwh(,*):<<1:rnd:sat",
	},
	{
		// 11001010100sssssPP0ttttt000xxxxx | Rxx ^= xor(Rss,Rtt)
		.encoding = { .mask = 0xffe020e0, .op = 0xca800000 },
		.id = HEX_INS_M4_XOR_XACC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " ^= xor(,)",
	},
	{
		// 11000100000sssssPP0tttttiiiddddd | Rd = addasl(Rt,Rs,Ii)
		.encoding = { .mask = 0xffe02000, .op = 0xc4000000 },
		.id = HEX_INS_S2_ADDASL_RRRI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 5 } }, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = addasl(,,)",
	},
	{
		// 11000011100sssssPP0ttttt100ddddd | Rdd = asl(Rss,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xc3800080 },
		.id = HEX_INS_S2_ASL_R_P,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = asl(,)",
	},
	{
		// 11001011110sssssPP0ttttt100xxxxx | Rxx += asl(Rss,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xcbc00080 },
		.id = HEX_INS_S2_ASL_R_P_ACC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += asl(,)",
	},
	{
		// 11001011010sssssPP0ttttt100xxxxx | Rxx &= asl(Rss,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xcb400080 },
		.id = HEX_INS_S2_ASL_R_P_AND,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " &= asl(,)",
	},
	{
		// 11001011100sssssPP0ttttt100xxxxx | Rxx -= asl(Rss,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xcb800080 },
		.id = HEX_INS_S2_ASL_R_P_NAC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " -= asl(,)",
	},
	{
		// 11001011000sssssPP0ttttt100xxxxx | Rxx |= asl(Rss,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xcb000080 },
		.id = HEX_INS_S2_ASL_R_P_OR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " |= asl(,)",
	},
	{
		// 11001011011sssssPP0ttttt100xxxxx | Rxx ^= asl(Rss,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xcb600080 },
		.id = HEX_INS_S2_ASL_R_P_XOR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " ^= asl(,)",
	},
	{
		// 11000110010sssssPP0ttttt100ddddd | Rd = asl(Rs,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xc6400080 },
		.id = HEX_INS_S2_ASL_R_R,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = asl(,)",
	},
	{
		// 11001100110sssssPP0ttttt100xxxxx | Rx += asl(Rs,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xccc00080 },
		.id = HEX_INS_S2_ASL_R_R_ACC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += asl(,)",
	},
	{
		// 11001100010sssssPP0ttttt100xxxxx | Rx &= asl(Rs,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xcc400080 },
		.id = HEX_INS_S2_ASL_R_R_AND,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " &= asl(,)",
	},
	{
		// 11001100100sssssPP0ttttt100xxxxx | Rx -= asl(Rs,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xcc800080 },
		.id = HEX_INS_S2_ASL_R_R_NAC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " -= asl(,)",
	},
	{
		// 11001100000sssssPP0ttttt100xxxxx | Rx |= asl(Rs,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xcc000080 },
		.id = HEX_INS_S2_ASL_R_R_OR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " |= asl(,)",
	},
	{
		// 11000110000sssssPP0ttttt100ddddd | Rd = asl(Rs,Rt):sat
		.encoding = { .mask = 0xffe020e0, .op = 0xc6000080 },
		.id = HEX_INS_S2_ASL_R_R_SAT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = asl(,):sat",
	},
	{
		// 11000011010sssssPP0ttttt100ddddd | Rdd = vaslh(Rss,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xc3400080 },
		.id = HEX_INS_S2_ASL_R_VH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vaslh(,)",
	},
	{
		// 11000011000sssssPP0ttttt100ddddd | Rdd = vaslw(Rss,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xc3000080 },
		.id = HEX_INS_S2_ASL_R_VW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vaslw(,)",
	},
	{
		// 11000011100sssssPP0ttttt000ddddd | Rdd = asr(Rss,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xc3800000 },
		.id = HEX_INS_S2_ASR_R_P,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = asr(,)",
	},
	{
		// 11001011110sssssPP0ttttt000xxxxx | Rxx += asr(Rss,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xcbc00000 },
		.id = HEX_INS_S2_ASR_R_P_ACC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += asr(,)",
	},
	{
		// 11001011010sssssPP0ttttt000xxxxx | Rxx &= asr(Rss,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xcb400000 },
		.id = HEX_INS_S2_ASR_R_P_AND,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " &= asr(,)",
	},
	{
		// 11001011100sssssPP0ttttt000xxxxx | Rxx -= asr(Rss,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xcb800000 },
		.id = HEX_INS_S2_ASR_R_P_NAC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " -= asr(,)",
	},
	{
		// 11001011000sssssPP0ttttt000xxxxx | Rxx |= asr(Rss,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xcb000000 },
		.id = HEX_INS_S2_ASR_R_P_OR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " |= asr(,)",
	},
	{
		// 11001011011sssssPP0ttttt000xxxxx | Rxx ^= asr(Rss,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xcb600000 },
		.id = HEX_INS_S2_ASR_R_P_XOR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " ^= asr(,)",
	},
	{
		// 11000110010sssssPP0ttttt000ddddd | Rd = asr(Rs,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xc6400000 },
		.id = HEX_INS_S2_ASR_R_R,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = asr(,)",
	},
	{
		// 11001100110sssssPP0ttttt000xxxxx | Rx += asr(Rs,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xccc00000 },
		.id = HEX_INS_S2_ASR_R_R_ACC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += asr(,)",
	},
	{
		// 11001100010sssssPP0ttttt000xxxxx | Rx &= asr(Rs,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xcc400000 },
		.id = HEX_INS_S2_ASR_R_R_AND,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " &= asr(,)",
	},
	{
		// 11001100100sssssPP0ttttt000xxxxx | Rx -= asr(Rs,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xcc800000 },
		.id = HEX_INS_S2_ASR_R_R_NAC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " -= asr(,)",
	},
	{
		// 11001100000sssssPP0ttttt000xxxxx | Rx |= asr(Rs,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xcc000000 },
		.id = HEX_INS_S2_ASR_R_R_OR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " |= asr(,)",
	},
	{
		// 11000110000sssssPP0ttttt000ddddd | Rd = asr(Rs,Rt):sat
		.encoding = { .mask = 0xffe020e0, .op = 0xc6000000 },
		.id = HEX_INS_S2_ASR_R_R_SAT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = asr(,):sat",
	},
	{
		// 11000101000sssssPP0ttttt010ddddd | Rd = vasrw(Rss,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xc5000040 },
		.id = HEX_INS_S2_ASR_R_SVW_TRUN,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vasrw(,)",
	},
	{
		// 11000011010sssssPP0ttttt000ddddd | Rdd = vasrh(Rss,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xc3400000 },
		.id = HEX_INS_S2_ASR_R_VH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vasrh(,)",
	},
	{
		// 11000011000sssssPP0ttttt000ddddd | Rdd = vasrw(Rss,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xc3000000 },
		.id = HEX_INS_S2_ASR_R_VW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vasrw(,)",
	},
	{
		// 11000001110sssssPP0ttttt110ddddd | Rdd = decbin(Rss,Rtt)
		.encoding = { .mask = 0xffe020e0, .op = 0xc1c000c0 },
		.id = HEX_INS_S2_CABACDECBIN,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = decbin(,)",
	},
	{
		// 11000110100sssssPP0ttttt010ddddd | Rd = clrbit(Rs,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xc6800040 },
		.id = HEX_INS_S2_CLRBIT_R,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = clrbit(,)",
	},
	{
		// 11001001000sssssPP0ttttt000ddddd | Rd = extractu(Rs,Rtt)
		.encoding = { .mask = 0xffe020e0, .op = 0xc9000000 },
		.id = HEX_INS_S2_EXTRACTU_RP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = extractu(,)",
	},
	{
		// 11000001000sssssPP0ttttt000ddddd | Rdd = extractu(Rss,Rtt)
		.encoding = { .mask = 0xffe020e0, .op = 0xc1000000 },
		.id = HEX_INS_S2_EXTRACTUP_RP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = extractu(,)",
	},
	{
		// 11001000000sssssPP0ttttt000xxxxx | Rx = insert(Rs,Rtt)
		.encoding = { .mask = 0xffe020e0, .op = 0xc8000000 },
		.id = HEX_INS_S2_INSERT_RP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = insert(,)",
	},
	{
		// 11001010000sssssPP0ttttt000xxxxx | Rxx = insert(Rss,Rtt)
		.encoding = { .mask = 0xffe020e0, .op = 0xca000000 },
		.id = HEX_INS_S2_INSERTP_RP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = insert(,)",
	},
	{
		// 11000001100sssssPP0ttttt110ddddd | Rdd = lfs(Rss,Rtt)
		.encoding = { .mask = 0xffe020e0, .op = 0xc18000c0 },
		.id = HEX_INS_S2_LFSP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 8 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = lfs(,)",
	},
	{
		// 11000011100sssssPP0ttttt110ddddd | Rdd = lsl(Rss,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xc38000c0 },
		.id = HEX_INS_S2_LSL_R_P,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = lsl(,)",
	},
	{
		// 11001011110sssssPP0ttttt110xxxxx | Rxx += lsl(Rss,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xcbc000c0 },
		.id = HEX_INS_S2_LSL_R_P_ACC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += lsl(,)",
	},
	{
		// 11001011010sssssPP0ttttt110xxxxx | Rxx &= lsl(Rss,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xcb4000c0 },
		.id = HEX_INS_S2_LSL_R_P_AND,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " &= lsl(,)",
	},
	{
		// 11001011100sssssPP0ttttt110xxxxx | Rxx -= lsl(Rss,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xcb8000c0 },
		.id = HEX_INS_S2_LSL_R_P_NAC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " -= lsl(,)",
	},
	{
		// 11001011000sssssPP0ttttt110xxxxx | Rxx |= lsl(Rss,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xcb0000c0 },
		.id = HEX_INS_S2_LSL_R_P_OR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " |= lsl(,)",
	},
	{
		// 11001011011sssssPP0ttttt110xxxxx | Rxx ^= lsl(Rss,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xcb6000c0 },
		.id = HEX_INS_S2_LSL_R_P_XOR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " ^= lsl(,)",
	},
	{
		// 11000110010sssssPP0ttttt110ddddd | Rd = lsl(Rs,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xc64000c0 },
		.id = HEX_INS_S2_LSL_R_R,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = lsl(,)",
	},
	{
		// 11001100110sssssPP0ttttt110xxxxx | Rx += lsl(Rs,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xccc000c0 },
		.id = HEX_INS_S2_LSL_R_R_ACC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += lsl(,)",
	},
	{
		// 11001100010sssssPP0ttttt110xxxxx | Rx &= lsl(Rs,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xcc4000c0 },
		.id = HEX_INS_S2_LSL_R_R_AND,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " &= lsl(,)",
	},
	{
		// 11001100100sssssPP0ttttt110xxxxx | Rx -= lsl(Rs,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xcc8000c0 },
		.id = HEX_INS_S2_LSL_R_R_NAC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " -= lsl(,)",
	},
	{
		// 11001100000sssssPP0ttttt110xxxxx | Rx |= lsl(Rs,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xcc0000c0 },
		.id = HEX_INS_S2_LSL_R_R_OR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " |= lsl(,)",
	},
	{
		// 11000011010sssssPP0ttttt110ddddd | Rdd = vlslh(Rss,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xc34000c0 },
		.id = HEX_INS_S2_LSL_R_VH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vlslh(,)",
	},
	{
		// 11000011000sssssPP0ttttt110ddddd | Rdd = vlslw(Rss,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xc30000c0 },
		.id = HEX_INS_S2_LSL_R_VW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vlslw(,)",
	},
	{
		// 11000011100sssssPP0ttttt010ddddd | Rdd = lsr(Rss,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xc3800040 },
		.id = HEX_INS_S2_LSR_R_P,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = lsr(,)",
	},
	{
		// 11001011110sssssPP0ttttt010xxxxx | Rxx += lsr(Rss,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xcbc00040 },
		.id = HEX_INS_S2_LSR_R_P_ACC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += lsr(,)",
	},
	{
		// 11001011010sssssPP0ttttt010xxxxx | Rxx &= lsr(Rss,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xcb400040 },
		.id = HEX_INS_S2_LSR_R_P_AND,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " &= lsr(,)",
	},
	{
		// 11001011100sssssPP0ttttt010xxxxx | Rxx -= lsr(Rss,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xcb800040 },
		.id = HEX_INS_S2_LSR_R_P_NAC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " -= lsr(,)",
	},
	{
		// 11001011000sssssPP0ttttt010xxxxx | Rxx |= lsr(Rss,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xcb000040 },
		.id = HEX_INS_S2_LSR_R_P_OR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " |= lsr(,)",
	},
	{
		// 11001011011sssssPP0ttttt010xxxxx | Rxx ^= lsr(Rss,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xcb600040 },
		.id = HEX_INS_S2_LSR_R_P_XOR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " ^= lsr(,)",
	},
	{
		// 11000110010sssssPP0ttttt010ddddd | Rd = lsr(Rs,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xc6400040 },
		.id = HEX_INS_S2_LSR_R_R,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = lsr(,)",
	},
	{
		// 11001100110sssssPP0ttttt010xxxxx | Rx += lsr(Rs,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xccc00040 },
		.id = HEX_INS_S2_LSR_R_R_ACC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += lsr(,)",
	},
	{
		// 11001100010sssssPP0ttttt010xxxxx | Rx &= lsr(Rs,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xcc400040 },
		.id = HEX_INS_S2_LSR_R_R_AND,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " &= lsr(,)",
	},
	{
		// 11001100100sssssPP0ttttt010xxxxx | Rx -= lsr(Rs,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xcc800040 },
		.id = HEX_INS_S2_LSR_R_R_NAC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " -= lsr(,)",
	},
	{
		// 11001100000sssssPP0ttttt010xxxxx | Rx |= lsr(Rs,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xcc000040 },
		.id = HEX_INS_S2_LSR_R_R_OR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " |= lsr(,)",
	},
	{
		// 11000011010sssssPP0ttttt010ddddd | Rdd = vlsrh(Rss,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xc3400040 },
		.id = HEX_INS_S2_LSR_R_VH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vlsrh(,)",
	},
	{
		// 11000011000sssssPP0ttttt010ddddd | Rdd = vlsrw(Rss,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xc3000040 },
		.id = HEX_INS_S2_LSR_R_VW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vlsrw(,)",
	},
	{
		// 11000110100sssssPP0ttttt000ddddd | Rd = setbit(Rs,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xc6800000 },
		.id = HEX_INS_S2_SETBIT_R,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = setbit(,)",
	},
	{
		// 11000001000sssssPP0ttttt010ddddd | Rdd = shuffeb(Rss,Rtt)
		.encoding = { .mask = 0xffe020e0, .op = 0xc1000040 },
		.id = HEX_INS_S2_SHUFFEB,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = shuffeb(,)",
	},
	{
		// 11000001000sssssPP0ttttt110ddddd | Rdd = shuffeh(Rss,Rtt)
		.encoding = { .mask = 0xffe020e0, .op = 0xc10000c0 },
		.id = HEX_INS_S2_SHUFFEH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = shuffeh(,)",
	},
	{
		// 11000001000sssssPP0ttttt100ddddd | Rdd = shuffob(Rtt,Rss)
		.encoding = { .mask = 0xffe020e0, .op = 0xc1000080 },
		.id = HEX_INS_S2_SHUFFOB,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = shuffob(,)",
	},
	{
		// 11000001100sssssPP0ttttt000ddddd | Rdd = shuffoh(Rtt,Rss)
		.encoding = { .mask = 0xffe020e0, .op = 0xc1800000 },
		.id = HEX_INS_S2_SHUFFOH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = shuffoh(,)",
	},
	{
		// 11000110100sssssPP0ttttt100ddddd | Rd = togglebit(Rs,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xc6800080 },
		.id = HEX_INS_S2_TOGGLEBIT_R,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = togglebit(,)",
	},
	{
		// 11000111000sssssPP0ttttt000000dd | Pd = tstbit(Rs,Rt)
		.encoding = { .mask = 0xffe020fc, .op = 0xc7000000 },
		.id = HEX_INS_S2_TSTBIT_R,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = tstbit(,)",
	},
	{
		// 11000000000sssssPP0tttttiiiddddd | Rdd = valignb(Rtt,Rss,Ii)
		.encoding = { .mask = 0xffe02000, .op = 0xc0000000 },
		.id = HEX_INS_S2_VALIGNIB,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 5 } }, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = valignb(,,)",
	},
	{
		// 11000010000sssssPP0ttttt0uuddddd | Rdd = valignb(Rtt,Rss,Pu)
		.encoding = { .mask = 0xffe02080, .op = 0xc2000000 },
		.id = HEX_INS_S2_VALIGNRB,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 5 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = valignb(,,)",
	},
	{
		// 11000011110sssssPP0ttttt010ddddd | Rdd = vcnegh(Rss,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xc3c00040 },
		.id = HEX_INS_S2_VCNEGH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vcnegh(,)",
	},
	{
		// 11000011110sssssPP0ttttt000ddddd | Rdd = vcrotate(Rss,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xc3c00000 },
		.id = HEX_INS_S2_VCROTATE,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vcrotate(,)",
	},
	{
		// 11001011001sssssPP1ttttt111xxxxx | Rxx += vrcnegh(Rss,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xcb2020e0 },
		.id = HEX_INS_S2_VRCNEGH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += vrcnegh(,)",
	},
	{
		// 11000000100sssssPP0tttttiiiddddd | Rdd = vspliceb(Rss,Rtt,Ii)
		.encoding = { .mask = 0xffe02000, .op = 0xc0800000 },
		.id = HEX_INS_S2_VSPLICEIB,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 5 } }, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vspliceb(,,)",
	},
	{
		// 11000010100sssssPP0ttttt0uuddddd | Rdd = vspliceb(Rss,Rtt,Pu)
		.encoding = { .mask = 0xffe02080, .op = 0xc2800000 },
		.id = HEX_INS_S2_VSPLICERB,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 5 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vspliceb(,,)",
	},
	{
		// 11000001100sssssPP0ttttt010ddddd | Rdd = vtrunewh(Rss,Rtt)
		.encoding = { .mask = 0xffe020e0, .op = 0xc1800040 },
		.id = HEX_INS_S2_VTRUNEWH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vtrunewh(,)",
	},
	{
		// 11000001100sssssPP0ttttt100ddddd | Rdd = vtrunowh(Rss,Rtt)
		.encoding = { .mask = 0xffe020e0, .op = 0xc1800080 },
		.id = HEX_INS_S2_VTRUNOWH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vtrunowh(,)",
	},
	{
		// 11001001000sssssPP0ttttt010ddddd | Rd = extract(Rs,Rtt)
		.encoding = { .mask = 0xffe020e0, .op = 0xc9000040 },
		.id = HEX_INS_S4_EXTRACT_RP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = extract(,)",
	},
	{
		// 11000001110sssssPP0ttttt100ddddd | Rdd = extract(Rss,Rtt)
		.encoding = { .mask = 0xffe020e0, .op = 0xc1c00080 },
		.id = HEX_INS_S4_EXTRACTP_RP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = extract(,)",
	},
	{
		// 11000110100iiiiiPP0ttttt11iddddd | Rd = lsl(Ii,Rt)
		.encoding = { .mask = 0xffe020c0, .op = 0xc68000c0 },
		.id = HEX_INS_S4_LSLI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x1, 5 }, { 0x5, 16 } }, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = lsl(,)",
	},
	{
		// 11000111001sssssPP0ttttt000000dd | Pd = !tstbit(Rs,Rt)
		.encoding = { .mask = 0xffe020fc, .op = 0xc7200000 },
		.id = HEX_INS_S4_NTSTBIT_R,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = !tstbit(,)",
	},
	{
		// 11000011110sssssPPittttt11iddddd | Rdd = vrcrotate(Rss,Rt,Ii)
		.encoding = { .mask = 0xffe000c0, .op = 0xc3c000c0 },
		.id = HEX_INS_S4_VRCROTATE,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x1, 5 }, { 0x1, 13 } }, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vrcrotate(,,)",
	},
	{
		// 11001011101sssssPPittttt00ixxxxx | Rxx += vrcrotate(Rss,Rt,Ii)
		.encoding = { .mask = 0xffe000c0, .op = 0xcba00000 },
		.id = HEX_INS_S4_VRCROTATE_ACC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x1, 5 }, { 0x1, 13 } }, .syntax = 16 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += vrcrotate(,,)",
	},
	{
		// 11000001010sssssPP0ttttt100ddddd | Rdd = vxaddsubh(Rss,Rtt):sat
		.encoding = { .mask = 0xffe020e0, .op = 0xc1400080 },
		.id = HEX_INS_S4_VXADDSUBH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vxaddsubh(,):sat",
	},
	{
		// 11000001110sssssPP0ttttt000ddddd | Rdd = vxaddsubh(Rss,Rtt):rnd:>>1:sat
		.encoding = { .mask = 0xffe020e0, .op = 0xc1c00000 },
		.id = HEX_INS_S4_VXADDSUBHR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vxaddsubh(,):rnd:>>1:sat",
	},
	{
		// 11000001010sssssPP0ttttt000ddddd | Rdd = vxaddsubw(Rss,Rtt):sat
		.encoding = { .mask = 0xffe020e0, .op = 0xc1400000 },
		.id = HEX_INS_S4_VXADDSUBW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vxaddsubw(,):sat",
	},
	{
		// 11000001010sssssPP0ttttt110ddddd | Rdd = vxsubaddh(Rss,Rtt):sat
		.encoding = { .mask = 0xffe020e0, .op = 0xc14000c0 },
		.id = HEX_INS_S4_VXSUBADDH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vxsubaddh(,):sat",
	},
	{
		// 11000001110sssssPP0ttttt010ddddd | Rdd = vxsubaddh(Rss,Rtt):rnd:>>1:sat
		.encoding = { .mask = 0xffe020e0, .op = 0xc1c00040 },
		.id = HEX_INS_S4_VXSUBADDHR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vxsubaddh(,):rnd:>>1:sat",
	},
	{
		// 11000001010sssssPP0ttttt010ddddd | Rdd = vxsubaddw(Rss,Rtt):sat
		.encoding = { .mask = 0xffe020e0, .op = 0xc1400040 },
		.id = HEX_INS_S4_VXSUBADDW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vxsubaddw(,):sat",
	},
	{
		// 11000001100sssssPP0ttttt011ddddd | Rdd = vtrunehb(Rss,Rtt)
		.encoding = { .mask = 0xffe020e0, .op = 0xc1800060 },
		.id = HEX_INS_S6_VTRUNEHB_PPP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vtrunehb(,)",
	},
	{
		// 11000001100sssssPP0ttttt101ddddd | Rdd = vtrunohb(Rss,Rtt)
		.encoding = { .mask = 0xffe020e0, .op = 0xc18000a0 },
		.id = HEX_INS_S6_VTRUNOHB_PPP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vtrunohb(,)",
	},
	{ { 0 } },
};

static const HexInsnTemplate templates_normal_0xd[] = {
	{
		// 11010101010sssssPP0ttttt011ddddd | Rd = add(Rt.h,Rs.h):<<16
		.encoding = { .mask = 0xffe020e0, .op = 0xd5400060 },
		.id = HEX_INS_A2_ADDH_H16_HH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(.h,.h):<<16",
	},
	{
		// 11010101010sssssPP0ttttt010ddddd | Rd = add(Rt.h,Rs.l):<<16
		.encoding = { .mask = 0xffe020e0, .op = 0xd5400040 },
		.id = HEX_INS_A2_ADDH_H16_HL,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(.h,.l):<<16",
	},
	{
		// 11010101010sssssPP0ttttt001ddddd | Rd = add(Rt.l,Rs.h):<<16
		.encoding = { .mask = 0xffe020e0, .op = 0xd5400020 },
		.id = HEX_INS_A2_ADDH_H16_LH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(.l,.h):<<16",
	},
	{
		// 11010101010sssssPP0ttttt000ddddd | Rd = add(Rt.l,Rs.l):<<16
		.encoding = { .mask = 0xffe020e0, .op = 0xd5400000 },
		.id = HEX_INS_A2_ADDH_H16_LL,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(.l,.l):<<16",
	},
	{
		// 11010101010sssssPP0ttttt111ddddd | Rd = add(Rt.h,Rs.h):sat:<<16
		.encoding = { .mask = 0xffe020e0, .op = 0xd54000e0 },
		.id = HEX_INS_A2_ADDH_H16_SAT_HH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(.h,.h):sat:<<16",
	},
	{
		// 11010101010sssssPP0ttttt110ddddd | Rd = add(Rt.h,Rs.l):sat:<<16
		.encoding = { .mask = 0xffe020e0, .op = 0xd54000c0 },
		.id = HEX_INS_A2_ADDH_H16_SAT_HL,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(.h,.l):sat:<<16",
	},
	{
		// 11010101010sssssPP0ttttt101ddddd | Rd = add(Rt.l,Rs.h):sat:<<16
		.encoding = { .mask = 0xffe020e0, .op = 0xd54000a0 },
		.id = HEX_INS_A2_ADDH_H16_SAT_LH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(.l,.h):sat:<<16",
	},
	{
		// 11010101010sssssPP0ttttt100ddddd | Rd = add(Rt.l,Rs.l):sat:<<16
		.encoding = { .mask = 0xffe020e0, .op = 0xd5400080 },
		.id = HEX_INS_A2_ADDH_H16_SAT_LL,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(.l,.l):sat:<<16",
	},
	{
		// 11010101000sssssPP0ttttt010ddddd | Rd = add(Rt.l,Rs.h)
		.encoding = { .mask = 0xffe020e0, .op = 0xd5000040 },
		.id = HEX_INS_A2_ADDH_L16_HL,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(.l,.h)",
	},
	{
		// 11010101000sssssPP0ttttt000ddddd | Rd = add(Rt.l,Rs.l)
		.encoding = { .mask = 0xffe020e0, .op = 0xd5000000 },
		.id = HEX_INS_A2_ADDH_L16_LL,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(.l,.l)",
	},
	{
		// 11010101000sssssPP0ttttt110ddddd | Rd = add(Rt.l,Rs.h):sat
		.encoding = { .mask = 0xffe020e0, .op = 0xd50000c0 },
		.id = HEX_INS_A2_ADDH_L16_SAT_HL,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(.l,.h):sat",
	},
	{
		// 11010101000sssssPP0ttttt100ddddd | Rd = add(Rt.l,Rs.l):sat
		.encoding = { .mask = 0xffe020e0, .op = 0xd5000080 },
		.id = HEX_INS_A2_ADDH_L16_SAT_LL,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(.l,.l):sat",
	},
	{
		// 11010011000sssssPP0ttttt111ddddd | Rdd = add(Rss,Rtt)
		.encoding = { .mask = 0xffe020e0, .op = 0xd30000e0 },
		.id = HEX_INS_A2_ADDP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 8 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,)",
	},
	{
		// 11010011011sssssPP0ttttt101ddddd | Rdd = add(Rss,Rtt):sat
		.encoding = { .mask = 0xffe020e0, .op = 0xd36000a0 },
		.id = HEX_INS_A2_ADDPSAT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 8 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,):sat",
	},
	{
		// 11010011011sssssPP0ttttt111ddddd | Rdd = add(Rss,Rtt):raw:hi
		.encoding = { .mask = 0xffe020e0, .op = 0xd36000e0 },
		.id = HEX_INS_A2_ADDSPH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 8 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,):raw:hi",
	},
	{
		// 11010011011sssssPP0ttttt110ddddd | Rdd = add(Rss,Rtt):raw:lo
		.encoding = { .mask = 0xffe020e0, .op = 0xd36000c0 },
		.id = HEX_INS_A2_ADDSPL,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 8 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,):raw:lo",
	},
	{
		// 11010011111sssssPP0ttttt000ddddd | Rdd = and(Rss,Rtt)
		.encoding = { .mask = 0xffe020e0, .op = 0xd3e00000 },
		.id = HEX_INS_A2_ANDP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 8 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = and(,)",
	},
	{
		// 11010101110sssssPP0ttttt000ddddd | Rd = max(Rs,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xd5c00000 },
		.id = HEX_INS_A2_MAX,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = max(,)",
	},
	{
		// 11010011110sssssPP0ttttt100ddddd | Rdd = max(Rss,Rtt)
		.encoding = { .mask = 0xffe020e0, .op = 0xd3c00080 },
		.id = HEX_INS_A2_MAXP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 8 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = max(,)",
	},
	{
		// 11010101110sssssPP0ttttt100ddddd | Rd = maxu(Rs,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xd5c00080 },
		.id = HEX_INS_A2_MAXU,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = maxu(,)",
	},
	{
		// 11010011110sssssPP0ttttt101ddddd | Rdd = maxu(Rss,Rtt)
		.encoding = { .mask = 0xffe020e0, .op = 0xd3c000a0 },
		.id = HEX_INS_A2_MAXUP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = maxu(,)",
	},
	{
		// 11010101101sssssPP0ttttt000ddddd | Rd = min(Rt,Rs)
		.encoding = { .mask = 0xffe020e0, .op = 0xd5a00000 },
		.id = HEX_INS_A2_MIN,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = min(,)",
	},
	{
		// 11010011101sssssPP0ttttt110ddddd | Rdd = min(Rtt,Rss)
		.encoding = { .mask = 0xffe020e0, .op = 0xd3a000c0 },
		.id = HEX_INS_A2_MINP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 8 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = min(,)",
	},
	{
		// 11010101101sssssPP0ttttt100ddddd | Rd = minu(Rt,Rs)
		.encoding = { .mask = 0xffe020e0, .op = 0xd5a00080 },
		.id = HEX_INS_A2_MINU,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = minu(,)",
	},
	{
		// 11010011101sssssPP0ttttt111ddddd | Rdd = minu(Rtt,Rss)
		.encoding = { .mask = 0xffe020e0, .op = 0xd3a000e0 },
		.id = HEX_INS_A2_MINUP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = minu(,)",
	},
	{
		// 11010011111sssssPP0ttttt010ddddd | Rdd = or(Rss,Rtt)
		.encoding = { .mask = 0xffe020e0, .op = 0xd3e00040 },
		.id = HEX_INS_A2_ORP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 7 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = or(,)",
	},
	{
		// 11010101011sssssPP0ttttt011ddddd | Rd = sub(Rt.h,Rs.h):<<16
		.encoding = { .mask = 0xffe020e0, .op = 0xd5600060 },
		.id = HEX_INS_A2_SUBH_H16_HH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = sub(.h,.h):<<16",
	},
	{
		// 11010101011sssssPP0ttttt010ddddd | Rd = sub(Rt.h,Rs.l):<<16
		.encoding = { .mask = 0xffe020e0, .op = 0xd5600040 },
		.id = HEX_INS_A2_SUBH_H16_HL,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = sub(.h,.l):<<16",
	},
	{
		// 11010101011sssssPP0ttttt001ddddd | Rd = sub(Rt.l,Rs.h):<<16
		.encoding = { .mask = 0xffe020e0, .op = 0xd5600020 },
		.id = HEX_INS_A2_SUBH_H16_LH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = sub(.l,.h):<<16",
	},
	{
		// 11010101011sssssPP0ttttt000ddddd | Rd = sub(Rt.l,Rs.l):<<16
		.encoding = { .mask = 0xffe020e0, .op = 0xd5600000 },
		.id = HEX_INS_A2_SUBH_H16_LL,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = sub(.l,.l):<<16",
	},
	{
		// 11010101011sssssPP0ttttt111ddddd | Rd = sub(Rt.h,Rs.h):sat:<<16
		.encoding = { .mask = 0xffe020e0, .op = 0xd56000e0 },
		.id = HEX_INS_A2_SUBH_H16_SAT_HH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = sub(.h,.h):sat:<<16",
	},
	{
		// 11010101011sssssPP0ttttt110ddddd | Rd = sub(Rt.h,Rs.l):sat:<<16
		.encoding = { .mask = 0xffe020e0, .op = 0xd56000c0 },
		.id = HEX_INS_A2_SUBH_H16_SAT_HL,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = sub(.h,.l):sat:<<16",
	},
	{
		// 11010101011sssssPP0ttttt101ddddd | Rd = sub(Rt.l,Rs.h):sat:<<16
		.encoding = { .mask = 0xffe020e0, .op = 0xd56000a0 },
		.id = HEX_INS_A2_SUBH_H16_SAT_LH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = sub(.l,.h):sat:<<16",
	},
	{
		// 11010101011sssssPP0ttttt100ddddd | Rd = sub(Rt.l,Rs.l):sat:<<16
		.encoding = { .mask = 0xffe020e0, .op = 0xd5600080 },
		.id = HEX_INS_A2_SUBH_H16_SAT_LL,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = sub(.l,.l):sat:<<16",
	},
	{
		// 11010101001sssssPP0ttttt010ddddd | Rd = sub(Rt.l,Rs.h)
		.encoding = { .mask = 0xffe020e0, .op = 0xd5200040 },
		.id = HEX_INS_A2_SUBH_L16_HL,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = sub(.l,.h)",
	},
	{
		// 11010101001sssssPP0ttttt000ddddd | Rd = sub(Rt.l,Rs.l)
		.encoding = { .mask = 0xffe020e0, .op = 0xd5200000 },
		.id = HEX_INS_A2_SUBH_L16_LL,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = sub(.l,.l)",
	},
	{
		// 11010101001sssssPP0ttttt110ddddd | Rd = sub(Rt.l,Rs.h):sat
		.encoding = { .mask = 0xffe020e0, .op = 0xd52000c0 },
		.id = HEX_INS_A2_SUBH_L16_SAT_HL,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = sub(.l,.h):sat",
	},
	{
		// 11010101001sssssPP0ttttt100ddddd | Rd = sub(Rt.l,Rs.l):sat
		.encoding = { .mask = 0xffe020e0, .op = 0xd5200080 },
		.id = HEX_INS_A2_SUBH_L16_SAT_LL,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = sub(.l,.l):sat",
	},
	{
		// 11010011001sssssPP0ttttt111ddddd | Rdd = sub(Rtt,Rss)
		.encoding = { .mask = 0xffe020e0, .op = 0xd32000e0 },
		.id = HEX_INS_A2_SUBP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 8 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = sub(,)",
	},
	{
		// 11010011000sssssPP0ttttt010ddddd | Rdd = vaddh(Rss,Rtt)
		.encoding = { .mask = 0xffe020e0, .op = 0xd3000040 },
		.id = HEX_INS_A2_VADDH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vaddh(,)",
	},
	{
		// 11010011000sssssPP0ttttt011ddddd | Rdd = vaddh(Rss,Rtt):sat
		.encoding = { .mask = 0xffe020e0, .op = 0xd3000060 },
		.id = HEX_INS_A2_VADDHS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vaddh(,):sat",
	},
	{
		// 11010011000sssssPP0ttttt000ddddd | Rdd = vaddub(Rss,Rtt)
		.encoding = { .mask = 0xffe020e0, .op = 0xd3000000 },
		.id = HEX_INS_A2_VADDUB,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vaddub(,)",
	},
	{
		// 11010011000sssssPP0ttttt001ddddd | Rdd = vaddub(Rss,Rtt):sat
		.encoding = { .mask = 0xffe020e0, .op = 0xd3000020 },
		.id = HEX_INS_A2_VADDUBS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vaddub(,):sat",
	},
	{
		// 11010011000sssssPP0ttttt100ddddd | Rdd = vadduh(Rss,Rtt):sat
		.encoding = { .mask = 0xffe020e0, .op = 0xd3000080 },
		.id = HEX_INS_A2_VADDUHS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vadduh(,):sat",
	},
	{
		// 11010011000sssssPP0ttttt101ddddd | Rdd = vaddw(Rss,Rtt)
		.encoding = { .mask = 0xffe020e0, .op = 0xd30000a0 },
		.id = HEX_INS_A2_VADDW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vaddw(,)",
	},
	{
		// 11010011000sssssPP0ttttt110ddddd | Rdd = vaddw(Rss,Rtt):sat
		.encoding = { .mask = 0xffe020e0, .op = 0xd30000c0 },
		.id = HEX_INS_A2_VADDWS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vaddw(,):sat",
	},
	{
		// 11010011010sssssPP0ttttt010ddddd | Rdd = vavgh(Rss,Rtt)
		.encoding = { .mask = 0xffe020e0, .op = 0xd3400040 },
		.id = HEX_INS_A2_VAVGH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vavgh(,)",
	},
	{
		// 11010011010sssssPP0ttttt100ddddd | Rdd = vavgh(Rss,Rtt):crnd
		.encoding = { .mask = 0xffe020e0, .op = 0xd3400080 },
		.id = HEX_INS_A2_VAVGHCR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vavgh(,):crnd",
	},
	{
		// 11010011010sssssPP0ttttt011ddddd | Rdd = vavgh(Rss,Rtt):rnd
		.encoding = { .mask = 0xffe020e0, .op = 0xd3400060 },
		.id = HEX_INS_A2_VAVGHR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vavgh(,):rnd",
	},
	{
		// 11010011010sssssPP0ttttt000ddddd | Rdd = vavgub(Rss,Rtt)
		.encoding = { .mask = 0xffe020e0, .op = 0xd3400000 },
		.id = HEX_INS_A2_VAVGUB,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vavgub(,)",
	},
	{
		// 11010011010sssssPP0ttttt001ddddd | Rdd = vavgub(Rss,Rtt):rnd
		.encoding = { .mask = 0xffe020e0, .op = 0xd3400020 },
		.id = HEX_INS_A2_VAVGUBR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vavgub(,):rnd",
	},
	{
		// 11010011010sssssPP0ttttt101ddddd | Rdd = vavguh(Rss,Rtt)
		.encoding = { .mask = 0xffe020e0, .op = 0xd34000a0 },
		.id = HEX_INS_A2_VAVGUH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vavguh(,)",
	},
	{
		// 11010011010sssssPP0ttttt110ddddd | Rdd = vavguh(Rss,Rtt):rnd
		.encoding = { .mask = 0xffe020e0, .op = 0xd34000c0 },
		.id = HEX_INS_A2_VAVGUHR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vavguh(,):rnd",
	},
	{
		// 11010011011sssssPP0ttttt011ddddd | Rdd = vavguw(Rss,Rtt)
		.encoding = { .mask = 0xffe020e0, .op = 0xd3600060 },
		.id = HEX_INS_A2_VAVGUW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vavguw(,)",
	},
	{
		// 11010011011sssssPP0ttttt100ddddd | Rdd = vavguw(Rss,Rtt):rnd
		.encoding = { .mask = 0xffe020e0, .op = 0xd3600080 },
		.id = HEX_INS_A2_VAVGUWR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vavguw(,):rnd",
	},
	{
		// 11010011011sssssPP0ttttt000ddddd | Rdd = vavgw(Rss,Rtt)
		.encoding = { .mask = 0xffe020e0, .op = 0xd3600000 },
		.id = HEX_INS_A2_VAVGW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vavgw(,)",
	},
	{
		// 11010011011sssssPP0ttttt010ddddd | Rdd = vavgw(Rss,Rtt):crnd
		.encoding = { .mask = 0xffe020e0, .op = 0xd3600040 },
		.id = HEX_INS_A2_VAVGWCR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vavgw(,):crnd",
	},
	{
		// 11010011011sssssPP0ttttt001ddddd | Rdd = vavgw(Rss,Rtt):rnd
		.encoding = { .mask = 0xffe020e0, .op = 0xd3600020 },
		.id = HEX_INS_A2_VAVGWR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vavgw(,):rnd",
	},
	{
		// 11010010000sssssPP0ttttt110000dd | Pd = vcmpb.eq(Rss,Rtt)
		.encoding = { .mask = 0xffe020fc, .op = 0xd20000c0 },
		.id = HEX_INS_A2_VCMPBEQ,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vcmpb.eq(,)",
	},
	{
		// 11010010000sssssPP0ttttt111000dd | Pd = vcmpb.gtu(Rss,Rtt)
		.encoding = { .mask = 0xffe020fc, .op = 0xd20000e0 },
		.id = HEX_INS_A2_VCMPBGTU,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vcmpb.gtu(,)",
	},
	{
		// 11010010000sssssPP0ttttt011000dd | Pd = vcmph.eq(Rss,Rtt)
		.encoding = { .mask = 0xffe020fc, .op = 0xd2000060 },
		.id = HEX_INS_A2_VCMPHEQ,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vcmph.eq(,)",
	},
	{
		// 11010010000sssssPP0ttttt100000dd | Pd = vcmph.gt(Rss,Rtt)
		.encoding = { .mask = 0xffe020fc, .op = 0xd2000080 },
		.id = HEX_INS_A2_VCMPHGT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vcmph.gt(,)",
	},
	{
		// 11010010000sssssPP0ttttt101000dd | Pd = vcmph.gtu(Rss,Rtt)
		.encoding = { .mask = 0xffe020fc, .op = 0xd20000a0 },
		.id = HEX_INS_A2_VCMPHGTU,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vcmph.gtu(,)",
	},
	{
		// 11010010000sssssPP0ttttt000000dd | Pd = vcmpw.eq(Rss,Rtt)
		.encoding = { .mask = 0xffe020fc, .op = 0xd2000000 },
		.id = HEX_INS_A2_VCMPWEQ,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vcmpw.eq(,)",
	},
	{
		// 11010010000sssssPP0ttttt001000dd | Pd = vcmpw.gt(Rss,Rtt)
		.encoding = { .mask = 0xffe020fc, .op = 0xd2000020 },
		.id = HEX_INS_A2_VCMPWGT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vcmpw.gt(,)",
	},
	{
		// 11010010000sssssPP0ttttt010000dd | Pd = vcmpw.gtu(Rss,Rtt)
		.encoding = { .mask = 0xffe020fc, .op = 0xd2000040 },
		.id = HEX_INS_A2_VCMPWGTU,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vcmpw.gtu(,)",
	},
	{
		// 11010011110sssssPP0ttttt110ddddd | Rdd = vmaxb(Rtt,Rss)
		.encoding = { .mask = 0xffe020e0, .op = 0xd3c000c0 },
		.id = HEX_INS_A2_VMAXB,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vmaxb(,)",
	},
	{
		// 11010011110sssssPP0ttttt001ddddd | Rdd = vmaxh(Rtt,Rss)
		.encoding = { .mask = 0xffe020e0, .op = 0xd3c00020 },
		.id = HEX_INS_A2_VMAXH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vmaxh(,)",
	},
	{
		// 11010011110sssssPP0ttttt000ddddd | Rdd = vmaxub(Rtt,Rss)
		.encoding = { .mask = 0xffe020e0, .op = 0xd3c00000 },
		.id = HEX_INS_A2_VMAXUB,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vmaxub(,)",
	},
	{
		// 11010011110sssssPP0ttttt010ddddd | Rdd = vmaxuh(Rtt,Rss)
		.encoding = { .mask = 0xffe020e0, .op = 0xd3c00040 },
		.id = HEX_INS_A2_VMAXUH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vmaxuh(,)",
	},
	{
		// 11010011101sssssPP0ttttt101ddddd | Rdd = vmaxuw(Rtt,Rss)
		.encoding = { .mask = 0xffe020e0, .op = 0xd3a000a0 },
		.id = HEX_INS_A2_VMAXUW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vmaxuw(,)",
	},
	{
		// 11010011110sssssPP0ttttt011ddddd | Rdd = vmaxw(Rtt,Rss)
		.encoding = { .mask = 0xffe020e0, .op = 0xd3c00060 },
		.id = HEX_INS_A2_VMAXW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vmaxw(,)",
	},
	{
		// 11010011110sssssPP0ttttt111ddddd | Rdd = vminb(Rtt,Rss)
		.encoding = { .mask = 0xffe020e0, .op = 0xd3c000e0 },
		.id = HEX_INS_A2_VMINB,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vminb(,)",
	},
	{
		// 11010011101sssssPP0ttttt001ddddd | Rdd = vminh(Rtt,Rss)
		.encoding = { .mask = 0xffe020e0, .op = 0xd3a00020 },
		.id = HEX_INS_A2_VMINH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vminh(,)",
	},
	{
		// 11010011101sssssPP0ttttt000ddddd | Rdd = vminub(Rtt,Rss)
		.encoding = { .mask = 0xffe020e0, .op = 0xd3a00000 },
		.id = HEX_INS_A2_VMINUB,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vminub(,)",
	},
	{
		// 11010011101sssssPP0ttttt010ddddd | Rdd = vminuh(Rtt,Rss)
		.encoding = { .mask = 0xffe020e0, .op = 0xd3a00040 },
		.id = HEX_INS_A2_VMINUH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vminuh(,)",
	},
	{
		// 11010011101sssssPP0ttttt100ddddd | Rdd = vminuw(Rtt,Rss)
		.encoding = { .mask = 0xffe020e0, .op = 0xd3a00080 },
		.id = HEX_INS_A2_VMINUW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vminuw(,)",
	},
	{
		// 11010011101sssssPP0ttttt011ddddd | Rdd = vminw(Rtt,Rss)
		.encoding = { .mask = 0xffe020e0, .op = 0xd3a00060 },
		.id = HEX_INS_A2_VMINW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vminw(,)",
	},
	{
		// 11010011100sssssPP0ttttt000ddddd | Rdd = vnavgh(Rtt,Rss)
		.encoding = { .mask = 0xffe020e0, .op = 0xd3800000 },
		.id = HEX_INS_A2_VNAVGH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vnavgh(,)",
	},
	{
		// 11010011100sssssPP0ttttt010ddddd | Rdd = vnavgh(Rtt,Rss):crnd:sat
		.encoding = { .mask = 0xffe020e0, .op = 0xd3800040 },
		.id = HEX_INS_A2_VNAVGHCR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vnavgh(,):crnd:sat",
	},
	{
		// 11010011100sssssPP0ttttt001ddddd | Rdd = vnavgh(Rtt,Rss):rnd:sat
		.encoding = { .mask = 0xffe020e0, .op = 0xd3800020 },
		.id = HEX_INS_A2_VNAVGHR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vnavgh(,):rnd:sat",
	},
	{
		// 11010011100sssssPP0ttttt011ddddd | Rdd = vnavgw(Rtt,Rss)
		.encoding = { .mask = 0xffe020e0, .op = 0xd3800060 },
		.id = HEX_INS_A2_VNAVGW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vnavgw(,)",
	},
	{
		// 11010011100sssssPP0ttttt110ddddd | Rdd = vnavgw(Rtt,Rss):crnd:sat
		.encoding = { .mask = 0xffe020e0, .op = 0xd38000c0 },
		.id = HEX_INS_A2_VNAVGWCR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vnavgw(,):crnd:sat",
	},
	{
		// 11010011100sssssPP0ttttt100ddddd | Rdd = vnavgw(Rtt,Rss):rnd:sat
		.encoding = { .mask = 0xffe020e0, .op = 0xd3800080 },
		.id = HEX_INS_A2_VNAVGWR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vnavgw(,):rnd:sat",
	},
	{
		// 11010011001sssssPP0ttttt010ddddd | Rdd = vsubh(Rtt,Rss)
		.encoding = { .mask = 0xffe020e0, .op = 0xd3200040 },
		.id = HEX_INS_A2_VSUBH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vsubh(,)",
	},
	{
		// 11010011001sssssPP0ttttt011ddddd | Rdd = vsubh(Rtt,Rss):sat
		.encoding = { .mask = 0xffe020e0, .op = 0xd3200060 },
		.id = HEX_INS_A2_VSUBHS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vsubh(,):sat",
	},
	{
		// 11010011001sssssPP0ttttt000ddddd | Rdd = vsubub(Rtt,Rss)
		.encoding = { .mask = 0xffe020e0, .op = 0xd3200000 },
		.id = HEX_INS_A2_VSUBUB,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vsubub(,)",
	},
	{
		// 11010011001sssssPP0ttttt001ddddd | Rdd = vsubub(Rtt,Rss):sat
		.encoding = { .mask = 0xffe020e0, .op = 0xd3200020 },
		.id = HEX_INS_A2_VSUBUBS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vsubub(,):sat",
	},
	{
		// 11010011001sssssPP0ttttt100ddddd | Rdd = vsubuh(Rtt,Rss):sat
		.encoding = { .mask = 0xffe020e0, .op = 0xd3200080 },
		.id = HEX_INS_A2_VSUBUHS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vsubuh(,):sat",
	},
	{
		// 11010011001sssssPP0ttttt101ddddd | Rdd = vsubw(Rtt,Rss)
		.encoding = { .mask = 0xffe020e0, .op = 0xd32000a0 },
		.id = HEX_INS_A2_VSUBW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vsubw(,)",
	},
	{
		// 11010011001sssssPP0ttttt110ddddd | Rdd = vsubw(Rtt,Rss):sat
		.encoding = { .mask = 0xffe020e0, .op = 0xd32000c0 },
		.id = HEX_INS_A2_VSUBWS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vsubw(,):sat",
	},
	{
		// 11010011111sssssPP0ttttt100ddddd | Rdd = xor(Rss,Rtt)
		.encoding = { .mask = 0xffe020e0, .op = 0xd3e00080 },
		.id = HEX_INS_A2_XORP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 8 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = xor(,)",
	},
	{
		// 11010011111sssssPP0ttttt001ddddd | Rdd = and(Rtt,~Rss)
		.encoding = { .mask = 0xffe020e0, .op = 0xd3e00020 },
		.id = HEX_INS_A4_ANDNP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = and(,~)",
	},
	{
		// 11010100001sssssPP0ttttt000ddddd | Rdd = bitsplit(Rs,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xd4200000 },
		.id = HEX_INS_A4_BITSPLIT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = bitsplit(,)",
	},
	{
		// 11010010000sssssPP1ttttt101000dd | Pd = boundscheck(Rss,Rtt):raw:hi
		.encoding = { .mask = 0xffe020fc, .op = 0xd20020a0 },
		.id = HEX_INS_A4_BOUNDSCHECK_HI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 16 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = boundscheck(,):raw:hi",
	},
	{
		// 11010010000sssssPP1ttttt100000dd | Pd = boundscheck(Rss,Rtt):raw:lo
		.encoding = { .mask = 0xffe020fc, .op = 0xd2002080 },
		.id = HEX_INS_A4_BOUNDSCHECK_LO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 15 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 16 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = boundscheck(,):raw:lo",
	},
	{
		// 11011101000sssssPP0iiiiiiii000dd | Pd = cmpb.eq(Rs,Ii)
		.encoding = { .mask = 0xffe0201c, .op = 0xdd000000 },
		.id = HEX_INS_A4_CMPBEQI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x8, 5 } }, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = cmpb.eq(,)",
	},
	{
		// 11011101001sssssPP0iiiiiiii000dd | Pd = cmpb.gt(Rs,Ii)
		.encoding = { .mask = 0xffe0201c, .op = 0xdd200000 },
		.id = HEX_INS_A4_CMPBGTI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x8, 5 } }, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = cmpb.gt(,)",
	},
	{
		// 11011101010sssssPP00iiiiiii000dd | Pd = cmpb.gtu(Rs,Ii)
		.encoding = { .mask = 0xffe0301c, .op = 0xdd400000 },
		.id = HEX_INS_A4_CMPBGTUI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 5 } }, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = cmpb.gtu(,)",
	},
	{
		// 11011101000sssssPP0iiiiiiii010dd | Pd = cmph.eq(Rs,Ii)
		.encoding = { .mask = 0xffe0201c, .op = 0xdd000008 },
		.id = HEX_INS_A4_CMPHEQI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x8, 5 } }, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = cmph.eq(,)",
	},
	{
		// 11011101001sssssPP0iiiiiiii010dd | Pd = cmph.gt(Rs,Ii)
		.encoding = { .mask = 0xffe0201c, .op = 0xdd200008 },
		.id = HEX_INS_A4_CMPHGTI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x8, 5 } }, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = cmph.gt(,)",
	},
	{
		// 11011101010sssssPP00iiiiiii010dd | Pd = cmph.gtu(Rs,Ii)
		.encoding = { .mask = 0xffe0301c, .op = 0xdd400008 },
		.id = HEX_INS_A4_CMPHGTUI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x7, 5 } }, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = cmph.gtu(,)",
	},
	{
		// 11010011111sssssPP0ttttt111ddddd | Rd = modwrap(Rs,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xd3e000e0 },
		.id = HEX_INS_A4_MODWRAPU,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = modwrap(,)",
	},
	{
		// 11010011111sssssPP0ttttt011ddddd | Rdd = or(Rtt,~Rss)
		.encoding = { .mask = 0xffe020e0, .op = 0xd3e00060 },
		.id = HEX_INS_A4_ORNP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 8 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = or(,~)",
	},
	{
		// 11010010000sssssPP1ttttt011000dd | Pd = tlbmatch(Rss,Rt)
		.encoding = { .mask = 0xffe020fc, .op = 0xd2002060 },
		.id = HEX_INS_A4_TLBMATCH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = tlbmatch(,)",
	},
	{
		// 11010010000sssssPP1ttttt000000dd | Pd = any8(vcmpb.eq(Rss,Rtt))
		.encoding = { .mask = 0xffe020fc, .op = 0xd2002000 },
		.id = HEX_INS_A4_VCMPBEQ_ANY,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 18 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = any8(vcmpb.eq(,))",
	},
	{
		// 11011100000sssssPP0iiiiiiii000dd | Pd = vcmpb.eq(Rss,Ii)
		.encoding = { .mask = 0xffe0201c, .op = 0xdc000000 },
		.id = HEX_INS_A4_VCMPBEQI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x8, 5 } }, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vcmpb.eq(,)",
	},
	{
		// 11010010000sssssPP1ttttt010000dd | Pd = vcmpb.gt(Rss,Rtt)
		.encoding = { .mask = 0xffe020fc, .op = 0xd2002040 },
		.id = HEX_INS_A4_VCMPBGT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vcmpb.gt(,)",
	},
	{
		// 11011100001sssssPP0iiiiiiii000dd | Pd = vcmpb.gt(Rss,Ii)
		.encoding = { .mask = 0xffe0201c, .op = 0xdc200000 },
		.id = HEX_INS_A4_VCMPBGTI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x8, 5 } }, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vcmpb.gt(,)",
	},
	{
		// 11011100010sssssPP00iiiiiii000dd | Pd = vcmpb.gtu(Rss,Ii)
		.encoding = { .mask = 0xffe0301c, .op = 0xdc400000 },
		.id = HEX_INS_A4_VCMPBGTUI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x7, 5 } }, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vcmpb.gtu(,)",
	},
	{
		// 11011100000sssssPP0iiiiiiii010dd | Pd = vcmph.eq(Rss,Ii)
		.encoding = { .mask = 0xffe0201c, .op = 0xdc000008 },
		.id = HEX_INS_A4_VCMPHEQI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x8, 5 } }, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vcmph.eq(,)",
	},
	{
		// 11011100001sssssPP0iiiiiiii010dd | Pd = vcmph.gt(Rss,Ii)
		.encoding = { .mask = 0xffe0201c, .op = 0xdc200008 },
		.id = HEX_INS_A4_VCMPHGTI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x8, 5 } }, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vcmph.gt(,)",
	},
	{
		// 11011100010sssssPP00iiiiiii010dd | Pd = vcmph.gtu(Rss,Ii)
		.encoding = { .mask = 0xffe0301c, .op = 0xdc400008 },
		.id = HEX_INS_A4_VCMPHGTUI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x7, 5 } }, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vcmph.gtu(,)",
	},
	{
		// 11011100000sssssPP0iiiiiiii100dd | Pd = vcmpw.eq(Rss,Ii)
		.encoding = { .mask = 0xffe0201c, .op = 0xdc000010 },
		.id = HEX_INS_A4_VCMPWEQI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x8, 5 } }, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vcmpw.eq(,)",
	},
	{
		// 11011100001sssssPP0iiiiiiii100dd | Pd = vcmpw.gt(Rss,Ii)
		.encoding = { .mask = 0xffe0201c, .op = 0xdc200010 },
		.id = HEX_INS_A4_VCMPWGTI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x8, 5 } }, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vcmpw.gt(,)",
	},
	{
		// 11011100010sssssPP00iiiiiii100dd | Pd = vcmpw.gtu(Rss,Ii)
		.encoding = { .mask = 0xffe0301c, .op = 0xdc400010 },
		.id = HEX_INS_A4_VCMPWGTUI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x7, 5 } }, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vcmpw.gtu(,)",
	},
	{
		// 11010010000sssssPP1ttttt001000dd | Pd = !any8(vcmpb.eq(Rss,Rtt))
		.encoding = { .mask = 0xffe020fc, .op = 0xd2002020 },
		.id = HEX_INS_A6_VCMPBEQ_NOTANY,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 19 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = !any8(vcmpb.eq(,))",
	},
	{
		// 11010010100sssssPP0ttttt000000dd | Pd = cmp.eq(Rss,Rtt)
		.encoding = { .mask = 0xffe020fc, .op = 0xd2800000 },
		.id = HEX_INS_C2_CMPEQP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = cmp.eq(,)",
	},
	{
		// 11010010100sssssPP0ttttt010000dd | Pd = cmp.gt(Rss,Rtt)
		.encoding = { .mask = 0xffe020fc, .op = 0xd2800040 },
		.id = HEX_INS_C2_CMPGTP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = cmp.gt(,)",
	},
	{
		// 11010010100sssssPP0ttttt100000dd | Pd = cmp.gtu(Rss,Rtt)
		.encoding = { .mask = 0xffe020fc, .op = 0xd2800080 },
		.id = HEX_INS_C2_CMPGTUP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = cmp.gtu(,)",
	},
	{
		// 11010001000sssssPP0ttttt0uuddddd | Rdd = vmux(Pu,Rss,Rtt)
		.encoding = { .mask = 0xffe02080, .op = 0xd1000000 },
		.id = HEX_INS_C2_VMUX,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 5 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vmux(,,)",
	},
	{
		// 11011100100sssssPP0000iiiii100dd | Pd = dfclass(Rss,Ii)
		.encoding = { .mask = 0xffe03c1c, .op = 0xdc800010 },
		.id = HEX_INS_F2_DFCLASS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x5, 5 } }, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = dfclass(,)",
	},
	{
		// 11010010111sssssPP0ttttt000000dd | Pd = dfcmp.eq(Rss,Rtt)
		.encoding = { .mask = 0xffe020fc, .op = 0xd2e00000 },
		.id = HEX_INS_F2_DFCMPEQ,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = dfcmp.eq(,)",
	},
	{
		// 11010010111sssssPP0ttttt010000dd | Pd = dfcmp.ge(Rss,Rtt)
		.encoding = { .mask = 0xffe020fc, .op = 0xd2e00040 },
		.id = HEX_INS_F2_DFCMPGE,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = dfcmp.ge(,)",
	},
	{
		// 11010010111sssssPP0ttttt001000dd | Pd = dfcmp.gt(Rss,Rtt)
		.encoding = { .mask = 0xffe020fc, .op = 0xd2e00020 },
		.id = HEX_INS_F2_DFCMPGT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = dfcmp.gt(,)",
	},
	{
		// 11010010111sssssPP0ttttt011000dd | Pd = dfcmp.uo(Rss,Rtt)
		.encoding = { .mask = 0xffe020fc, .op = 0xd2e00060 },
		.id = HEX_INS_F2_DFCMPUO,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = dfcmp.uo(,)",
	},
	{
		// 1101100101i00000PPiiiiiiiiiddddd | Rdd = dfmake(Ii):neg
		.encoding = { .mask = 0xffdf0000, .op = 0xd9400000 },
		.id = HEX_INS_F2_DFIMM_N,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x9, 5 }, { 0x1, 21 } }, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = dfmake():neg",
	},
	{
		// 1101100100i00000PPiiiiiiiiiddddd | Rdd = dfmake(Ii):pos
		.encoding = { .mask = 0xffdf0000, .op = 0xd9000000 },
		.id = HEX_INS_F2_DFIMM_P,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x9, 5 }, { 0x1, 21 } }, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = dfmake():pos",
	},
	{
		// 1101011001i00000PPiiiiiiiiiddddd | Rd = sfmake(Ii):neg
		.encoding = { .mask = 0xffdf0000, .op = 0xd6400000 },
		.id = HEX_INS_F2_SFIMM_N,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x9, 5 }, { 0x1, 21 } }, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = sfmake():neg",
	},
	{
		// 1101011000i00000PPiiiiiiiiiddddd | Rd = sfmake(Ii):pos
		.encoding = { .mask = 0xffdf0000, .op = 0xd6000000 },
		.id = HEX_INS_F2_SFIMM_P,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x9, 5 }, { 0x1, 21 } }, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = sfmake():pos",
	},
	{
		// 11011000IiisssssPPidddddiiiIIIII | Rd = add(Ii,mpyi(Rs,II))
		.encoding = { .mask = 0xff000000, .op = 0xd8000000 },
		.id = HEX_INS_M4_MPYRI_ADDI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x3, 5 }, { 0x1, 13 }, { 0x2, 21 } }, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 0 }, { 0x1, 23 } }, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,mpyi(,))",
	},
	{
		// 110111111iisssssPPidddddiiiuuuuu | Rd = add(Ru,mpyi(Rs,Ii))
		.encoding = { .mask = 0xff800000, .op = 0xdf800000 },
		.id = HEX_INS_M4_MPYRI_ADDR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x3, 5 }, { 0x1, 13 }, { 0x2, 21 } }, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,mpyi(,))",
	},
	{
		// 110111110iisssssPPidddddiiiuuuuu | Rd = add(Ru,mpyi(Ii,Rs))
		.encoding = { .mask = 0xff800000, .op = 0xdf000000 },
		.id = HEX_INS_M4_MPYRI_ADDR_U2,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x3, 5 }, { 0x1, 13 }, { 0x2, 21 } }, .imm_scale = 2, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,mpyi(,))",
	},
	{
		// 110101110iisssssPPitttttiiiddddd | Rd = add(Ii,mpyi(Rs,Rt))
		.encoding = { .mask = 0xff800000, .op = 0xd7000000 },
		.id = HEX_INS_M4_MPYRR_ADDI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x3, 5 }, { 0x1, 13 }, { 0x2, 21 } }, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,mpyi(,))",
	},
	{
		// 11010000000sssssPP0ttttt000ddddd | Rd = parity(Rss,Rtt)
		.encoding = { .mask = 0xffe020e0, .op = 0xd0000000 },
		.id = HEX_INS_S2_PARITYP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = parity(,)",
	},
	{
		// 110110110iisssssPPidddddiiiuuuuu | Rd = add(Rs,add(Ru,Ii))
		.encoding = { .mask = 0xff800000, .op = 0xdb000000 },
		.id = HEX_INS_S4_ADDADDI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x3, 5 }, { 0x1, 13 }, { 0x2, 21 } }, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,add(,))",
	},
	{
		// 11011110iiixxxxxPPiIIIIIiii0i100 | Rx = add(Ii,asl(Rxin,II))
		.encoding = { .mask = 0xff000017, .op = 0xde000004 },
		.id = HEX_INS_S4_ADDI_ASL_RI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x1, 3 }, { 0x3, 5 }, { 0x1, 13 }, { 0x3, 21 } }, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 8 } }, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,asl(,))",
	},
	{
		// 11011110iiixxxxxPPiIIIIIiii1i100 | Rx = add(Ii,lsr(Rxin,II))
		.encoding = { .mask = 0xff000017, .op = 0xde000014 },
		.id = HEX_INS_S4_ADDI_LSR_RI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x1, 3 }, { 0x3, 5 }, { 0x1, 13 }, { 0x3, 21 } }, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 8 } }, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,lsr(,))",
	},
	{
		// 11011110iiixxxxxPPiIIIIIiii0i000 | Rx = and(Ii,asl(Rxin,II))
		.encoding = { .mask = 0xff000017, .op = 0xde000000 },
		.id = HEX_INS_S4_ANDI_ASL_RI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x1, 3 }, { 0x3, 5 }, { 0x1, 13 }, { 0x3, 21 } }, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 8 } }, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = and(,asl(,))",
	},
	{
		// 11011110iiixxxxxPPiIIIIIiii1i000 | Rx = and(Ii,lsr(Rxin,II))
		.encoding = { .mask = 0xff000017, .op = 0xde000010 },
		.id = HEX_INS_S4_ANDI_LSR_RI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x1, 3 }, { 0x3, 5 }, { 0x1, 13 }, { 0x3, 21 } }, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 8 } }, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = and(,lsr(,))",
	},
	{
		// 1101101000isssssPPiiiiiiiiixxxxx | Rx |= and(Rs,Ii)
		.encoding = { .mask = 0xffc00000, .op = 0xda000000 },
		.id = HEX_INS_S4_OR_ANDI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x9, 5 }, { 0x1, 21 } }, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " |= and(,)",
	},
	{
		// 1101101001ixxxxxPPiiiiiiiiiuuuuu | Rx = or(Ru,and(Rxin,Ii))
		.encoding = { .mask = 0xffc00000, .op = 0xda400000 },
		.id = HEX_INS_S4_OR_ANDIX,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x9, 5 }, { 0x1, 21 } }, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = or(,and(,))",
	},
	{
		// 1101101010isssssPPiiiiiiiiixxxxx | Rx |= or(Rs,Ii)
		.encoding = { .mask = 0xffc00000, .op = 0xda800000 },
		.id = HEX_INS_S4_OR_ORI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x9, 5 }, { 0x1, 21 } }, .syntax = 8 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " |= or(,)",
	},
	{
		// 11011110iiixxxxxPPiIIIIIiii0i010 | Rx = or(Ii,asl(Rxin,II))
		.encoding = { .mask = 0xff000017, .op = 0xde000002 },
		.id = HEX_INS_S4_ORI_ASL_RI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x1, 3 }, { 0x3, 5 }, { 0x1, 13 }, { 0x3, 21 } }, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 8 } }, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = or(,asl(,))",
	},
	{
		// 11011110iiixxxxxPPiIIIIIiii1i010 | Rx = or(Ii,lsr(Rxin,II))
		.encoding = { .mask = 0xff000017, .op = 0xde000012 },
		.id = HEX_INS_S4_ORI_LSR_RI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x1, 3 }, { 0x3, 5 }, { 0x1, 13 }, { 0x3, 21 } }, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 8 } }, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = or(,lsr(,))",
	},
	{
		// 11010101111sssssPP0ttttt000ddddd | Rd = parity(Rs,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xd5e00000 },
		.id = HEX_INS_S4_PARITY,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = parity(,)",
	},
	{
		// 110110111iisssssPPidddddiiiuuuuu | Rd = add(Rs,sub(Ii,Ru))
		.encoding = { .mask = 0xff800000, .op = 0xdb800000 },
		.id = HEX_INS_S4_SUBADDI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x3, 5 }, { 0x1, 13 }, { 0x2, 21 } }, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,sub(,))",
	},
	{
		// 11011110iiixxxxxPPiIIIIIiii0i110 | Rx = sub(Ii,asl(Rxin,II))
		.encoding = { .mask = 0xff000017, .op = 0xde000006 },
		.id = HEX_INS_S4_SUBI_ASL_RI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x1, 3 }, { 0x3, 5 }, { 0x1, 13 }, { 0x3, 21 } }, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 8 } }, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = sub(,asl(,))",
	},
	{
		// 11011110iiixxxxxPPiIIIIIiii1i110 | Rx = sub(Ii,lsr(Rxin,II))
		.encoding = { .mask = 0xff000017, .op = 0xde000016 },
		.id = HEX_INS_S4_SUBI_LSR_RI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x1, 3 }, { 0x3, 5 }, { 0x1, 13 }, { 0x3, 21 } }, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM, .masks = { { 0x5, 8 } }, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = sub(,lsr(,))",
	},
	{
		// 11010101100sssssPP0ttttt000ddddd | Rd = add(Rs,Rt):sat:deprecated
		.encoding = { .mask = 0xffe020e0, .op = 0xd5800000 },
		.id = HEX_INS_DEP_A2_ADDSAT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,):sat:deprecated",
	},
	{
		// 11010101100sssssPP0ttttt100ddddd | Rd = sub(Rt,Rs):sat:deprecated
		.encoding = { .mask = 0xffe020e0, .op = 0xd5800080 },
		.id = HEX_INS_DEP_A2_SUBSAT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = sub(,):sat:deprecated",
	},
	{
		// 11010100000sssssPP0ttttt000ddddd | Rdd = packhl(Rs,Rt):deprecated
		.encoding = { .mask = 0xffe020e0, .op = 0xd4000000 },
		.id = HEX_INS_DEP_S2_PACKHL,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = packhl(,):deprecated",
	},
	{ { 0 } },
};

static const HexInsnTemplate templates_normal_0xe[] = {
	{
		// 11101000010sssssPP0ttttt001ddddd | Rdd = vraddub(Rss,Rtt)
		.encoding = { .mask = 0xffe020e0, .op = 0xe8400020 },
		.id = HEX_INS_A2_VRADDUB,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vraddub(,)",
	},
	{
		// 11101010010sssssPP0ttttt001xxxxx | Rxx += vraddub(Rss,Rtt)
		.encoding = { .mask = 0xffe020e0, .op = 0xea400020 },
		.id = HEX_INS_A2_VRADDUB_ACC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += vraddub(,)",
	},
	{
		// 11101000010sssssPP0ttttt010ddddd | Rdd = vrsadub(Rss,Rtt)
		.encoding = { .mask = 0xffe020e0, .op = 0xe8400040 },
		.id = HEX_INS_A2_VRSADUB,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vrsadub(,)",
	},
	{
		// 11101010010sssssPP0ttttt010xxxxx | Rxx += vrsadub(Rss,Rtt)
		.encoding = { .mask = 0xffe020e0, .op = 0xea400040 },
		.id = HEX_INS_A2_VRSADUB_ACC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += vrsadub(,)",
	},
	{
		// 11101010101sssssPP0ttttt0eexxxxx | Rxx,Pe = vacsh(Rss,Rtt)
		.encoding = { .mask = 0xffe02080, .op = 0xeaa00000 },
		.id = HEX_INS_A5_ACS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 5 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 1 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ", = vacsh(,)",
	},
	{
		// 11101010111sssssPP0ttttt0eeddddd | Rdd,Pe = vminub(Rtt,Rss)
		.encoding = { .mask = 0xffe02080, .op = 0xeae00000 },
		.id = HEX_INS_A6_VMINUB_RDP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 5 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 1 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ", = vminub(,)",
	},
	{
		// 11101000000sssssPP0ttttt011ddddd | Rdd = dfadd(Rss,Rtt)
		.encoding = { .mask = 0xffe020e0, .op = 0xe8000060 },
		.id = HEX_INS_F2_DFADD,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = dfadd(,)",
	},
	{
		// 11101000001sssssPP0ttttt011ddddd | Rdd = dfmax(Rss,Rtt)
		.encoding = { .mask = 0xffe020e0, .op = 0xe8200060 },
		.id = HEX_INS_F2_DFMAX,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = dfmax(,)",
	},
	{
		// 11101000110sssssPP0ttttt011ddddd | Rdd = dfmin(Rss,Rtt)
		.encoding = { .mask = 0xffe020e0, .op = 0xe8c00060 },
		.id = HEX_INS_F2_DFMIN,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = dfmin(,)",
	},
	{
		// 11101000010sssssPP0ttttt011ddddd | Rdd = dfmpyfix(Rss,Rtt)
		.encoding = { .mask = 0xffe020e0, .op = 0xe8400060 },
		.id = HEX_INS_F2_DFMPYFIX,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = dfmpyfix(,)",
	},
	{
		// 11101010100sssssPP0ttttt011xxxxx | Rxx += dfmpyhh(Rss,Rtt)
		.encoding = { .mask = 0xffe020e0, .op = 0xea800060 },
		.id = HEX_INS_F2_DFMPYHH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += dfmpyhh(,)",
	},
	{
		// 11101010000sssssPP0ttttt011xxxxx | Rxx += dfmpylh(Rss,Rtt)
		.encoding = { .mask = 0xffe020e0, .op = 0xea000060 },
		.id = HEX_INS_F2_DFMPYLH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += dfmpylh(,)",
	},
	{
		// 11101000101sssssPP0ttttt011ddddd | Rdd = dfmpyll(Rss,Rtt)
		.encoding = { .mask = 0xffe020e0, .op = 0xe8a00060 },
		.id = HEX_INS_F2_DFMPYLL,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = dfmpyll(,)",
	},
	{
		// 11101000100sssssPP0ttttt011ddddd | Rdd = dfsub(Rss,Rtt)
		.encoding = { .mask = 0xffe020e0, .op = 0xe8800060 },
		.id = HEX_INS_F2_DFSUB,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = dfsub(,)",
	},
	{
		// 11101011000sssssPP0ttttt000ddddd | Rd = sfadd(Rs,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xeb000000 },
		.id = HEX_INS_F2_SFADD,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = sfadd(,)",
	},
	{
		// 11101011110sssssPP0ttttt001ddddd | Rd = sffixupd(Rs,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xebc00020 },
		.id = HEX_INS_F2_SFFIXUPD,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = sffixupd(,)",
	},
	{
		// 11101011110sssssPP0ttttt000ddddd | Rd = sffixupn(Rs,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xebc00000 },
		.id = HEX_INS_F2_SFFIXUPN,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = sffixupn(,)",
	},
	{
		// 11101111000sssssPP0ttttt100xxxxx | Rx += sfmpy(Rs,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xef000080 },
		.id = HEX_INS_F2_SFFMA,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += sfmpy(,)",
	},
	{
		// 11101111000sssssPP0ttttt110xxxxx | Rx += sfmpy(Rs,Rt):lib
		.encoding = { .mask = 0xffe020e0, .op = 0xef0000c0 },
		.id = HEX_INS_F2_SFFMA_LIB,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += sfmpy(,):lib",
	},
	{
		// 11101111011sssssPP0ttttt1uuxxxxx | Rx += sfmpy(Rs,Rt,Pu):scale
		.encoding = { .mask = 0xffe02080, .op = 0xef600080 },
		.id = HEX_INS_F2_SFFMA_SC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 5 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += sfmpy(,,):scale",
	},
	{
		// 11101111000sssssPP0ttttt101xxxxx | Rx -= sfmpy(Rs,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xef0000a0 },
		.id = HEX_INS_F2_SFFMS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " -= sfmpy(,)",
	},
	{
		// 11101111000sssssPP0ttttt111xxxxx | Rx -= sfmpy(Rs,Rt):lib
		.encoding = { .mask = 0xffe020e0, .op = 0xef0000e0 },
		.id = HEX_INS_F2_SFFMS_LIB,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " -= sfmpy(,):lib",
	},
	{
		// 11101011100sssssPP0ttttt000ddddd | Rd = sfmax(Rs,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xeb800000 },
		.id = HEX_INS_F2_SFMAX,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = sfmax(,)",
	},
	{
		// 11101011100sssssPP0ttttt001ddddd | Rd = sfmin(Rs,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xeb800020 },
		.id = HEX_INS_F2_SFMIN,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = sfmin(,)",
	},
	{
		// 11101011010sssssPP0ttttt000ddddd | Rd = sfmpy(Rs,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xeb400000 },
		.id = HEX_INS_F2_SFMPY,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = sfmpy(,)",
	},
	{
		// 11101011111sssssPP0ttttt1eeddddd | Rd,Pe = sfrecipa(Rs,Rt)
		.encoding = { .mask = 0xffe02080, .op = 0xebe00080 },
		.id = HEX_INS_F2_SFRECIPA,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 5 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 1 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = ", = sfrecipa(,)",
	},
	{
		// 11101011000sssssPP0ttttt001ddddd | Rd = sfsub(Rs,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xeb000020 },
		.id = HEX_INS_F2_SFSUB,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = sfsub(,)",
	},
	{
		// 11101111000sssssPP0ttttt001xxxxx | Rx += add(Rs,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xef000020 },
		.id = HEX_INS_M2_ACCI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += add(,)",
	},
	{
		// 11100010000sssssPP0iiiiiiiixxxxx | Rx += add(Rs,Ii)
		.encoding = { .mask = 0xffe02000, .op = 0xe2000000 },
		.id = HEX_INS_M2_ACCII,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x8, 5 } }, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += add(,)",
	},
	{
		// 11100111000sssssPP0ttttt001xxxxx | Rxx += cmpyi(Rs,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xe7000020 },
		.id = HEX_INS_M2_CMACI_S0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += cmpyi(,)",
	},
	{
		// 11100111000sssssPP0ttttt010xxxxx | Rxx += cmpyr(Rs,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xe7000040 },
		.id = HEX_INS_M2_CMACR_S0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += cmpyr(,)",
	},
	{
		// 11100111000sssssPP0ttttt110xxxxx | Rxx += cmpy(Rs,Rt):sat
		.encoding = { .mask = 0xffe020e0, .op = 0xe70000c0 },
		.id = HEX_INS_M2_CMACS_S0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += cmpy(,):sat",
	},
	{
		// 11100111100sssssPP0ttttt110xxxxx | Rxx += cmpy(Rs,Rt):<<1:sat
		.encoding = { .mask = 0xffe020e0, .op = 0xe78000c0 },
		.id = HEX_INS_M2_CMACS_S1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += cmpy(,):<<1:sat",
	},
	{
		// 11100111010sssssPP0ttttt110xxxxx | Rxx += cmpy(Rs,Rt*):sat
		.encoding = { .mask = 0xffe020e0, .op = 0xe74000c0 },
		.id = HEX_INS_M2_CMACSC_S0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += cmpy(,*):sat",
	},
	{
		// 11100111110sssssPP0ttttt110xxxxx | Rxx += cmpy(Rs,Rt*):<<1:sat
		.encoding = { .mask = 0xffe020e0, .op = 0xe7c000c0 },
		.id = HEX_INS_M2_CMACSC_S1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += cmpy(,*):<<1:sat",
	},
	{
		// 11100101000sssssPP0ttttt001ddddd | Rdd = cmpyi(Rs,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xe5000020 },
		.id = HEX_INS_M2_CMPYI_S0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = cmpyi(,)",
	},
	{
		// 11100101000sssssPP0ttttt010ddddd | Rdd = cmpyr(Rs,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xe5000040 },
		.id = HEX_INS_M2_CMPYR_S0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = cmpyr(,)",
	},
	{
		// 11101101001sssssPP0ttttt110ddddd | Rd = cmpy(Rs,Rt):rnd:sat
		.encoding = { .mask = 0xffe020e0, .op = 0xed2000c0 },
		.id = HEX_INS_M2_CMPYRS_S0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = cmpy(,):rnd:sat",
	},
	{
		// 11101101101sssssPP0ttttt110ddddd | Rd = cmpy(Rs,Rt):<<1:rnd:sat
		.encoding = { .mask = 0xffe020e0, .op = 0xeda000c0 },
		.id = HEX_INS_M2_CMPYRS_S1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = cmpy(,):<<1:rnd:sat",
	},
	{
		// 11101101011sssssPP0ttttt110ddddd | Rd = cmpy(Rs,Rt*):rnd:sat
		.encoding = { .mask = 0xffe020e0, .op = 0xed6000c0 },
		.id = HEX_INS_M2_CMPYRSC_S0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = cmpy(,*):rnd:sat",
	},
	{
		// 11101101111sssssPP0ttttt110ddddd | Rd = cmpy(Rs,Rt*):<<1:rnd:sat
		.encoding = { .mask = 0xffe020e0, .op = 0xede000c0 },
		.id = HEX_INS_M2_CMPYRSC_S1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = cmpy(,*):<<1:rnd:sat",
	},
	{
		// 11100101000sssssPP0ttttt110ddddd | Rdd = cmpy(Rs,Rt):sat
		.encoding = { .mask = 0xffe020e0, .op = 0xe50000c0 },
		.id = HEX_INS_M2_CMPYS_S0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = cmpy(,):sat",
	},
	{
		// 11100101100sssssPP0ttttt110ddddd | Rdd = cmpy(Rs,Rt):<<1:sat
		.encoding = { .mask = 0xffe020e0, .op = 0xe58000c0 },
		.id = HEX_INS_M2_CMPYS_S1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = cmpy(,):<<1:sat",
	},
	{
		// 11100101010sssssPP0ttttt110ddddd | Rdd = cmpy(Rs,Rt*):sat
		.encoding = { .mask = 0xffe020e0, .op = 0xe54000c0 },
		.id = HEX_INS_M2_CMPYSC_S0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = cmpy(,*):sat",
	},
	{
		// 11100101110sssssPP0ttttt110ddddd | Rdd = cmpy(Rs,Rt*):<<1:sat
		.encoding = { .mask = 0xffe020e0, .op = 0xe5c000c0 },
		.id = HEX_INS_M2_CMPYSC_S1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = cmpy(,*):<<1:sat",
	},
	{
		// 11100111000sssssPP0ttttt111xxxxx | Rxx -= cmpy(Rs,Rt):sat
		.encoding = { .mask = 0xffe020e0, .op = 0xe70000e0 },
		.id = HEX_INS_M2_CNACS_S0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " -= cmpy(,):sat",
	},
	{
		// 11100111100sssssPP0ttttt111xxxxx | Rxx -= cmpy(Rs,Rt):<<1:sat
		.encoding = { .mask = 0xffe020e0, .op = 0xe78000e0 },
		.id = HEX_INS_M2_CNACS_S1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " -= cmpy(,):<<1:sat",
	},
	{
		// 11100111010sssssPP0ttttt111xxxxx | Rxx -= cmpy(Rs,Rt*):sat
		.encoding = { .mask = 0xffe020e0, .op = 0xe74000e0 },
		.id = HEX_INS_M2_CNACSC_S0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " -= cmpy(,*):sat",
	},
	{
		// 11100111110sssssPP0ttttt111xxxxx | Rxx -= cmpy(Rs,Rt*):<<1:sat
		.encoding = { .mask = 0xffe020e0, .op = 0xe7c000e0 },
		.id = HEX_INS_M2_CNACSC_S1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " -= cmpy(,*):<<1:sat",
	},
	{
		// 11100111000sssssPP0ttttt000xxxxx | Rxx += mpy(Rs,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xe7000000 },
		.id = HEX_INS_M2_DPMPYSS_ACC_S0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += mpy(,)",
	},
	{
		// 11100111001sssssPP0ttttt000xxxxx | Rxx -= mpy(Rs,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xe7200000 },
		.id = HEX_INS_M2_DPMPYSS_NAC_S0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " -= mpy(,)",
	},
	{
		// 11101101001sssssPP0ttttt001ddddd | Rd = mpy(Rs,Rt):rnd
		.encoding = { .mask = 0xffe020e0, .op = 0xed200020 },
		.id = HEX_INS_M2_DPMPYSS_RND_S0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = mpy(,):rnd",
	},
	{
		// 11100101000sssssPP0ttttt000ddddd | Rdd = mpy(Rs,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xe5000000 },
		.id = HEX_INS_M2_DPMPYSS_S0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = mpy(,)",
	},
	{
		// 11100111010sssssPP0ttttt000xxxxx | Rxx += mpyu(Rs,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xe7400000 },
		.id = HEX_INS_M2_DPMPYUU_ACC_S0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += mpyu(,)",
	},
	{
		// 11100111011sssssPP0ttttt000xxxxx | Rxx -= mpyu(Rs,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xe7600000 },
		.id = HEX_INS_M2_DPMPYUU_NAC_S0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " -= mpyu(,)",
	},
	{
		// 11100101010sssssPP0ttttt000ddddd | Rdd = mpyu(Rs,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xe5400000 },
		.id = HEX_INS_M2_DPMPYUU_S0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = mpyu(,)",
	},
	{
		// 11101101101sssssPP0ttttt100ddddd | Rd = mpy(Rs,Rt.h):<<1:rnd:sat
		.encoding = { .mask = 0xffe020e0, .op = 0xeda00080 },
		.id = HEX_INS_M2_HMMPYH_RS1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = mpy(,.h):<<1:rnd:sat",
	},
	{
		// 11101101101sssssPP0ttttt000ddddd | Rd = mpy(Rs,Rt.h):<<1:sat
		.encoding = { .mask = 0xffe020e0, .op = 0xeda00000 },
		.id = HEX_INS_M2_HMMPYH_S1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = mpy(,.h):<<1:sat",
	},
	{
		// 11101101111sssssPP0ttttt100ddddd | Rd = mpy(Rs,Rt.l):<<1:rnd:sat
		.encoding = { .mask = 0xffe020e0, .op = 0xede00080 },
		.id = HEX_INS_M2_HMMPYL_RS1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = mpy(,.l):<<1:rnd:sat",
	},
	{
		// 11101101101sssssPP0ttttt001ddddd | Rd = mpy(Rs,Rt.l):<<1:sat
		.encoding = { .mask = 0xffe020e0, .op = 0xeda00020 },
		.id = HEX_INS_M2_HMMPYL_S1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = mpy(,.l):<<1:sat",
	},
	{
		// 11101111000sssssPP0ttttt000xxxxx | Rx += mpyi(Rs,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xef000000 },
		.id = HEX_INS_M2_MACI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += mpyi(,)",
	},
	{
		// 11100001100sssssPP0iiiiiiiixxxxx | Rx -= mpyi(Rs,Ii)
		.encoding = { .mask = 0xffe02000, .op = 0xe1800000 },
		.id = HEX_INS_M2_MACSIN,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x8, 5 } }, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " -= mpyi(,)",
	},
	{
		// 11100001000sssssPP0iiiiiiiixxxxx | Rx += mpyi(Rs,Ii)
		.encoding = { .mask = 0xffe02000, .op = 0xe1000000 },
		.id = HEX_INS_M2_MACSIP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x8, 5 } }, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += mpyi(,)",
	},
	{
		// 11101010001sssssPP0ttttt111xxxxx | Rxx += vmpywoh(Rss,Rtt):rnd:sat
		.encoding = { .mask = 0xffe020e0, .op = 0xea2000e0 },
		.id = HEX_INS_M2_MMACHS_RS0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += vmpywoh(,):rnd:sat",
	},
	{
		// 11101010101sssssPP0ttttt111xxxxx | Rxx += vmpywoh(Rss,Rtt):<<1:rnd:sat
		.encoding = { .mask = 0xffe020e0, .op = 0xeaa000e0 },
		.id = HEX_INS_M2_MMACHS_RS1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += vmpywoh(,):<<1:rnd:sat",
	},
	{
		// 11101010000sssssPP0ttttt111xxxxx | Rxx += vmpywoh(Rss,Rtt):sat
		.encoding = { .mask = 0xffe020e0, .op = 0xea0000e0 },
		.id = HEX_INS_M2_MMACHS_S0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += vmpywoh(,):sat",
	},
	{
		// 11101010100sssssPP0ttttt111xxxxx | Rxx += vmpywoh(Rss,Rtt):<<1:sat
		.encoding = { .mask = 0xffe020e0, .op = 0xea8000e0 },
		.id = HEX_INS_M2_MMACHS_S1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += vmpywoh(,):<<1:sat",
	},
	{
		// 11101010001sssssPP0ttttt101xxxxx | Rxx += vmpyweh(Rss,Rtt):rnd:sat
		.encoding = { .mask = 0xffe020e0, .op = 0xea2000a0 },
		.id = HEX_INS_M2_MMACLS_RS0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += vmpyweh(,):rnd:sat",
	},
	{
		// 11101010101sssssPP0ttttt101xxxxx | Rxx += vmpyweh(Rss,Rtt):<<1:rnd:sat
		.encoding = { .mask = 0xffe020e0, .op = 0xeaa000a0 },
		.id = HEX_INS_M2_MMACLS_RS1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += vmpyweh(,):<<1:rnd:sat",
	},
	{
		// 11101010000sssssPP0ttttt101xxxxx | Rxx += vmpyweh(Rss,Rtt):sat
		.encoding = { .mask = 0xffe020e0, .op = 0xea0000a0 },
		.id = HEX_INS_M2_MMACLS_S0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += vmpyweh(,):sat",
	},
	{
		// 11101010100sssssPP0ttttt101xxxxx | Rxx += vmpyweh(Rss,Rtt):<<1:sat
		.encoding = { .mask = 0xffe020e0, .op = 0xea8000a0 },
		.id = HEX_INS_M2_MMACLS_S1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += vmpyweh(,):<<1:sat",
	},
	{
		// 11101010011sssssPP0ttttt111xxxxx | Rxx += vmpywouh(Rss,Rtt):rnd:sat
		.encoding = { .mask = 0xffe020e0, .op = 0xea6000e0 },
		.id = HEX_INS_M2_MMACUHS_RS0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += vmpywouh(,):rnd:sat",
	},
	{
		// 11101010111sssssPP0ttttt111xxxxx | Rxx += vmpywouh(Rss,Rtt):<<1:rnd:sat
		.encoding = { .mask = 0xffe020e0, .op = 0xeae000e0 },
		.id = HEX_INS_M2_MMACUHS_RS1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += vmpywouh(,):<<1:rnd:sat",
	},
	{
		// 11101010010sssssPP0ttttt111xxxxx | Rxx += vmpywouh(Rss,Rtt):sat
		.encoding = { .mask = 0xffe020e0, .op = 0xea4000e0 },
		.id = HEX_INS_M2_MMACUHS_S0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += vmpywouh(,):sat",
	},
	{
		// 11101010110sssssPP0ttttt111xxxxx | Rxx += vmpywouh(Rss,Rtt):<<1:sat
		.encoding = { .mask = 0xffe020e0, .op = 0xeac000e0 },
		.id = HEX_INS_M2_MMACUHS_S1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += vmpywouh(,):<<1:sat",
	},
	{
		// 11101010011sssssPP0ttttt101xxxxx | Rxx += vmpyweuh(Rss,Rtt):rnd:sat
		.encoding = { .mask = 0xffe020e0, .op = 0xea6000a0 },
		.id = HEX_INS_M2_MMACULS_RS0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += vmpyweuh(,):rnd:sat",
	},
	{
		// 11101010111sssssPP0ttttt101xxxxx | Rxx += vmpyweuh(Rss,Rtt):<<1:rnd:sat
		.encoding = { .mask = 0xffe020e0, .op = 0xeae000a0 },
		.id = HEX_INS_M2_MMACULS_RS1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += vmpyweuh(,):<<1:rnd:sat",
	},
	{
		// 11101010010sssssPP0ttttt101xxxxx | Rxx += vmpyweuh(Rss,Rtt):sat
		.encoding = { .mask = 0xffe020e0, .op = 0xea4000a0 },
		.id = HEX_INS_M2_MMACULS_S0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += vmpyweuh(,):sat",
	},
	{
		// 11101010110sssssPP0ttttt101xxxxx | Rxx += vmpyweuh(Rss,Rtt):<<1:sat
		.encoding = { .mask = 0xffe020e0, .op = 0xeac000a0 },
		.id = HEX_INS_M2_MMACULS_S1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += vmpyweuh(,):<<1:sat",
	},
	{
		// 11101000001sssssPP0ttttt111ddddd | Rdd = vmpywoh(Rss,Rtt):rnd:sat
		.encoding = { .mask = 0xffe020e0, .op = 0xe82000e0 },
		.id = HEX_INS_M2_MMPYH_RS0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vmpywoh(,):rnd:sat",
	},
	{
		// 11101000101sssssPP0ttttt111ddddd | Rdd = vmpywoh(Rss,Rtt):<<1:rnd:sat
		.encoding = { .mask = 0xffe020e0, .op = 0xe8a000e0 },
		.id = HEX_INS_M2_MMPYH_RS1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vmpywoh(,):<<1:rnd:sat",
	},
	{
		// 11101000000sssssPP0ttttt111ddddd | Rdd = vmpywoh(Rss,Rtt):sat
		.encoding = { .mask = 0xffe020e0, .op = 0xe80000e0 },
		.id = HEX_INS_M2_MMPYH_S0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vmpywoh(,):sat",
	},
	{
		// 11101000100sssssPP0ttttt111ddddd | Rdd = vmpywoh(Rss,Rtt):<<1:sat
		.encoding = { .mask = 0xffe020e0, .op = 0xe88000e0 },
		.id = HEX_INS_M2_MMPYH_S1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vmpywoh(,):<<1:sat",
	},
	{
		// 11101000001sssssPP0ttttt101ddddd | Rdd = vmpyweh(Rss,Rtt):rnd:sat
		.encoding = { .mask = 0xffe020e0, .op = 0xe82000a0 },
		.id = HEX_INS_M2_MMPYL_RS0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vmpyweh(,):rnd:sat",
	},
	{
		// 11101000101sssssPP0ttttt101ddddd | Rdd = vmpyweh(Rss,Rtt):<<1:rnd:sat
		.encoding = { .mask = 0xffe020e0, .op = 0xe8a000a0 },
		.id = HEX_INS_M2_MMPYL_RS1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vmpyweh(,):<<1:rnd:sat",
	},
	{
		// 11101000000sssssPP0ttttt101ddddd | Rdd = vmpyweh(Rss,Rtt):sat
		.encoding = { .mask = 0xffe020e0, .op = 0xe80000a0 },
		.id = HEX_INS_M2_MMPYL_S0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vmpyweh(,):sat",
	},
	{
		// 11101000100sssssPP0ttttt101ddddd | Rdd = vmpyweh(Rss,Rtt):<<1:sat
		.encoding = { .mask = 0xffe020e0, .op = 0xe88000a0 },
		.id = HEX_INS_M2_MMPYL_S1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vmpyweh(,):<<1:sat",
	},
	{
		// 11101000011sssssPP0ttttt111ddddd | Rdd = vmpywouh(Rss,Rtt):rnd:sat
		.encoding = { .mask = 0xffe020e0, .op = 0xe86000e0 },
		.id = HEX_INS_M2_MMPYUH_RS0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vmpywouh(,):rnd:sat",
	},
	{
		// 11101000111sssssPP0ttttt111ddddd | Rdd = vmpywouh(Rss,Rtt):<<1:rnd:sat
		.encoding = { .mask = 0xffe020e0, .op = 0xe8e000e0 },
		.id = HEX_INS_M2_MMPYUH_RS1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vmpywouh(,):<<1:rnd:sat",
	},
	{
		// 11101000010sssssPP0ttttt111ddddd | Rdd = vmpywouh(Rss,Rtt):sat
		.encoding = { .mask = 0xffe020e0, .op = 0xe84000e0 },
		.id = HEX_INS_M2_MMPYUH_S0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vmpywouh(,):sat",
	},
	{
		// 11101000110sssssPP0ttttt111ddddd | Rdd = vmpywouh(Rss,Rtt):<<1:sat
		.encoding = { .mask = 0xffe020e0, .op = 0xe8c000e0 },
		.id = HEX_INS_M2_MMPYUH_S1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vmpywouh(,):<<1:sat",
	},
	{
		// 11101000011sssssPP0ttttt101ddddd | Rdd = vmpyweuh(Rss,Rtt):rnd:sat
		.encoding = { .mask = 0xffe020e0, .op = 0xe86000a0 },
		.id = HEX_INS_M2_MMPYUL_RS0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vmpyweuh(,):rnd:sat",
	},
	{
		// 11101000111sssssPP0ttttt101ddddd | Rdd = vmpyweuh(Rss,Rtt):<<1:rnd:sat
		.encoding = { .mask = 0xffe020e0, .op = 0xe8e000a0 },
		.id = HEX_INS_M2_MMPYUL_RS1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vmpyweuh(,):<<1:rnd:sat",
	},
	{
		// 11101000010sssssPP0ttttt101ddddd | Rdd = vmpyweuh(Rss,Rtt):sat
		.encoding = { .mask = 0xffe020e0, .op = 0xe84000a0 },
		.id = HEX_INS_M2_MMPYUL_S0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vmpyweuh(,):sat",
	},
	{
		// 11101000110sssssPP0ttttt101ddddd | Rdd = vmpyweuh(Rss,Rtt):<<1:sat
		.encoding = { .mask = 0xffe020e0, .op = 0xe8c000a0 },
		.id = HEX_INS_M2_MMPYUL_S1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vmpyweuh(,):<<1:sat",
	},
	{
		// 11101111100sssssPP0ttttt000xxxxx | Rx -= mpyi(Rs,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xef800000 },
		.id = HEX_INS_M2_MNACI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " -= mpyi(,)",
	},
	{
		// 11101110000sssssPP0ttttt011xxxxx | Rx += mpy(Rs.h,Rt.h)
		.encoding = { .mask = 0xffe020e0, .op = 0xee000060 },
		.id = HEX_INS_M2_MPY_ACC_HH_S0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += mpy(.h,.h)",
	},
	{
		// 11101110100sssssPP0ttttt011xxxxx | Rx += mpy(Rs.h,Rt.h):<<1
		.encoding = { .mask = 0xffe020e0, .op = 0xee800060 },
		.id = HEX_INS_M2_MPY_ACC_HH_S1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += mpy(.h,.h):<<1",
	},
	{
		// 11101110000sssssPP0ttttt010xxxxx | Rx += mpy(Rs.h,Rt.l)
		.encoding = { .mask = 0xffe020e0, .op = 0xee000040 },
		.id = HEX_INS_M2_MPY_ACC_HL_S0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += mpy(.h,.l)",
	},
	{
		// 11101110100sssssPP0ttttt010xxxxx | Rx += mpy(Rs.h,Rt.l):<<1
		.encoding = { .mask = 0xffe020e0, .op = 0xee800040 },
		.id = HEX_INS_M2_MPY_ACC_HL_S1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += mpy(.h,.l):<<1",
	},
	{
		// 11101110000sssssPP0ttttt001xxxxx | Rx += mpy(Rs.l,Rt.h)
		.encoding = { .mask = 0xffe020e0, .op = 0xee000020 },
		.id = HEX_INS_M2_MPY_ACC_LH_S0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += mpy(.l,.h)",
	},
	{
		// 11101110100sssssPP0ttttt001xxxxx | Rx += mpy(Rs.l,Rt.h):<<1
		.encoding = { .mask = 0xffe020e0, .op = 0xee800020 },
		.id = HEX_INS_M2_MPY_ACC_LH_S1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += mpy(.l,.h):<<1",
	},
	{
		// 11101110000sssssPP0ttttt000xxxxx | Rx += mpy(Rs.l,Rt.l)
		.encoding = { .mask = 0xffe020e0, .op = 0xee000000 },
		.id = HEX_INS_M2_MPY_ACC_LL_S0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += mpy(.l,.l)",
	},
	{
		// 11101110100sssssPP0ttttt000xxxxx | Rx += mpy(Rs.l,Rt.l):<<1
		.encoding = { .mask = 0xffe020e0, .op = 0xee800000 },
		.id = HEX_INS_M2_MPY_ACC_LL_S1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += mpy(.l,.l):<<1",
	},
	{
		// 11101110000sssssPP0ttttt111xxxxx | Rx += mpy(Rs.h,Rt.h):sat
		.encoding = { .mask = 0xffe020e0, .op = 0xee0000e0 },
		.id = HEX_INS_M2_MPY_ACC_SAT_HH_S0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += mpy(.h,.h):sat",
	},
	{
		// 11101110100sssssPP0ttttt111xxxxx | Rx += mpy(Rs.h,Rt.h):<<1:sat
		.encoding = { .mask = 0xffe020e0, .op = 0xee8000e0 },
		.id = HEX_INS_M2_MPY_ACC_SAT_HH_S1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += mpy(.h,.h):<<1:sat",
	},
	{
		// 11101110000sssssPP0ttttt110xxxxx | Rx += mpy(Rs.h,Rt.l):sat
		.encoding = { .mask = 0xffe020e0, .op = 0xee0000c0 },
		.id = HEX_INS_M2_MPY_ACC_SAT_HL_S0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += mpy(.h,.l):sat",
	},
	{
		// 11101110100sssssPP0ttttt110xxxxx | Rx += mpy(Rs.h,Rt.l):<<1:sat
		.encoding = { .mask = 0xffe020e0, .op = 0xee8000c0 },
		.id = HEX_INS_M2_MPY_ACC_SAT_HL_S1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += mpy(.h,.l):<<1:sat",
	},
	{
		// 11101110000sssssPP0ttttt101xxxxx | Rx += mpy(Rs.l,Rt.h):sat
		.encoding = { .mask = 0xffe020e0, .op = 0xee0000a0 },
		.id = HEX_INS_M2_MPY_ACC_SAT_LH_S0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += mpy(.l,.h):sat",
	},
	{
		// 11101110100sssssPP0ttttt101xxxxx | Rx += mpy(Rs.l,Rt.h):<<1:sat
		.encoding = { .mask = 0xffe020e0, .op = 0xee8000a0 },
		.id = HEX_INS_M2_MPY_ACC_SAT_LH_S1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += mpy(.l,.h):<<1:sat",
	},
	{
		// 11101110000sssssPP0ttttt100xxxxx | Rx += mpy(Rs.l,Rt.l):sat
		.encoding = { .mask = 0xffe020e0, .op = 0xee000080 },
		.id = HEX_INS_M2_MPY_ACC_SAT_LL_S0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += mpy(.l,.l):sat",
	},
	{
		// 11101110100sssssPP0ttttt100xxxxx | Rx += mpy(Rs.l,Rt.l):<<1:sat
		.encoding = { .mask = 0xffe020e0, .op = 0xee800080 },
		.id = HEX_INS_M2_MPY_ACC_SAT_LL_S1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += mpy(.l,.l):<<1:sat",
	},
	{
		// 11101100000sssssPP0ttttt011ddddd | Rd = mpy(Rs.h,Rt.h)
		.encoding = { .mask = 0xffe020e0, .op = 0xec000060 },
		.id = HEX_INS_M2_MPY_HH_S0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = mpy(.h,.h)",
	},
	{
		// 11101100100sssssPP0ttttt011ddddd | Rd = mpy(Rs.h,Rt.h):<<1
		.encoding = { .mask = 0xffe020e0, .op = 0xec800060 },
		.id = HEX_INS_M2_MPY_HH_S1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = mpy(.h,.h):<<1",
	},
	{
		// 11101100000sssssPP0ttttt010ddddd | Rd = mpy(Rs.h,Rt.l)
		.encoding = { .mask = 0xffe020e0, .op = 0xec000040 },
		.id = HEX_INS_M2_MPY_HL_S0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = mpy(.h,.l)",
	},
	{
		// 11101100100sssssPP0ttttt010ddddd | Rd = mpy(Rs.h,Rt.l):<<1
		.encoding = { .mask = 0xffe020e0, .op = 0xec800040 },
		.id = HEX_INS_M2_MPY_HL_S1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = mpy(.h,.l):<<1",
	},
	{
		// 11101100000sssssPP0ttttt001ddddd | Rd = mpy(Rs.l,Rt.h)
		.encoding = { .mask = 0xffe020e0, .op = 0xec000020 },
		.id = HEX_INS_M2_MPY_LH_S0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = mpy(.l,.h)",
	},
	{
		// 11101100100sssssPP0ttttt001ddddd | Rd = mpy(Rs.l,Rt.h):<<1
		.encoding = { .mask = 0xffe020e0, .op = 0xec800020 },
		.id = HEX_INS_M2_MPY_LH_S1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = mpy(.l,.h):<<1",
	},
	{
		// 11101100000sssssPP0ttttt000ddddd | Rd = mpy(Rs.l,Rt.l)
		.encoding = { .mask = 0xffe020e0, .op = 0xec000000 },
		.id = HEX_INS_M2_MPY_LL_S0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = mpy(.l,.l)",
	},
	{
		// 11101100100sssssPP0ttttt000ddddd | Rd = mpy(Rs.l,Rt.l):<<1
		.encoding = { .mask = 0xffe020e0, .op = 0xec800000 },
		.id = HEX_INS_M2_MPY_LL_S1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = mpy(.l,.l):<<1",
	},
	{
		// 11101110001sssssPP0ttttt011xxxxx | Rx -= mpy(Rs.h,Rt.h)
		.encoding = { .mask = 0xffe020e0, .op = 0xee200060 },
		.id = HEX_INS_M2_MPY_NAC_HH_S0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " -= mpy(.h,.h)",
	},
	{
		// 11101110101sssssPP0ttttt011xxxxx | Rx -= mpy(Rs.h,Rt.h):<<1
		.encoding = { .mask = 0xffe020e0, .op = 0xeea00060 },
		.id = HEX_INS_M2_MPY_NAC_HH_S1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " -= mpy(.h,.h):<<1",
	},
	{
		// 11101110001sssssPP0ttttt010xxxxx | Rx -= mpy(Rs.h,Rt.l)
		.encoding = { .mask = 0xffe020e0, .op = 0xee200040 },
		.id = HEX_INS_M2_MPY_NAC_HL_S0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " -= mpy(.h,.l)",
	},
	{
		// 11101110101sssssPP0ttttt010xxxxx | Rx -= mpy(Rs.h,Rt.l):<<1
		.encoding = { .mask = 0xffe020e0, .op = 0xeea00040 },
		.id = HEX_INS_M2_MPY_NAC_HL_S1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " -= mpy(.h,.l):<<1",
	},
	{
		// 11101110001sssssPP0ttttt001xxxxx | Rx -= mpy(Rs.l,Rt.h)
		.encoding = { .mask = 0xffe020e0, .op = 0xee200020 },
		.id = HEX_INS_M2_MPY_NAC_LH_S0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " -= mpy(.l,.h)",
	},
	{
		// 11101110101sssssPP0ttttt001xxxxx | Rx -= mpy(Rs.l,Rt.h):<<1
		.encoding = { .mask = 0xffe020e0, .op = 0xeea00020 },
		.id = HEX_INS_M2_MPY_NAC_LH_S1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " -= mpy(.l,.h):<<1",
	},
	{
		// 11101110001sssssPP0ttttt000xxxxx | Rx -= mpy(Rs.l,Rt.l)
		.encoding = { .mask = 0xffe020e0, .op = 0xee200000 },
		.id = HEX_INS_M2_MPY_NAC_LL_S0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " -= mpy(.l,.l)",
	},
	{
		// 11101110101sssssPP0ttttt000xxxxx | Rx -= mpy(Rs.l,Rt.l):<<1
		.encoding = { .mask = 0xffe020e0, .op = 0xeea00000 },
		.id = HEX_INS_M2_MPY_NAC_LL_S1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " -= mpy(.l,.l):<<1",
	},
	{
		// 11101110001sssssPP0ttttt111xxxxx | Rx -= mpy(Rs.h,Rt.h):sat
		.encoding = { .mask = 0xffe020e0, .op = 0xee2000e0 },
		.id = HEX_INS_M2_MPY_NAC_SAT_HH_S0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " -= mpy(.h,.h):sat",
	},
	{
		// 11101110101sssssPP0ttttt111xxxxx | Rx -= mpy(Rs.h,Rt.h):<<1:sat
		.encoding = { .mask = 0xffe020e0, .op = 0xeea000e0 },
		.id = HEX_INS_M2_MPY_NAC_SAT_HH_S1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " -= mpy(.h,.h):<<1:sat",
	},
	{
		// 11101110001sssssPP0ttttt110xxxxx | Rx -= mpy(Rs.h,Rt.l):sat
		.encoding = { .mask = 0xffe020e0, .op = 0xee2000c0 },
		.id = HEX_INS_M2_MPY_NAC_SAT_HL_S0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " -= mpy(.h,.l):sat",
	},
	{
		// 11101110101sssssPP0ttttt110xxxxx | Rx -= mpy(Rs.h,Rt.l):<<1:sat
		.encoding = { .mask = 0xffe020e0, .op = 0xeea000c0 },
		.id = HEX_INS_M2_MPY_NAC_SAT_HL_S1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " -= mpy(.h,.l):<<1:sat",
	},
	{
		// 11101110001sssssPP0ttttt101xxxxx | Rx -= mpy(Rs.l,Rt.h):sat
		.encoding = { .mask = 0xffe020e0, .op = 0xee2000a0 },
		.id = HEX_INS_M2_MPY_NAC_SAT_LH_S0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " -= mpy(.l,.h):sat",
	},
	{
		// 11101110101sssssPP0ttttt101xxxxx | Rx -= mpy(Rs.l,Rt.h):<<1:sat
		.encoding = { .mask = 0xffe020e0, .op = 0xeea000a0 },
		.id = HEX_INS_M2_MPY_NAC_SAT_LH_S1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " -= mpy(.l,.h):<<1:sat",
	},
	{
		// 11101110001sssssPP0ttttt100xxxxx | Rx -= mpy(Rs.l,Rt.l):sat
		.encoding = { .mask = 0xffe020e0, .op = 0xee200080 },
		.id = HEX_INS_M2_MPY_NAC_SAT_LL_S0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " -= mpy(.l,.l):sat",
	},
	{
		// 11101110101sssssPP0ttttt100xxxxx | Rx -= mpy(Rs.l,Rt.l):<<1:sat
		.encoding = { .mask = 0xffe020e0, .op = 0xeea00080 },
		.id = HEX_INS_M2_MPY_NAC_SAT_LL_S1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " -= mpy(.l,.l):<<1:sat",
	},
	{
		// 11101100001sssssPP0ttttt011ddddd | Rd = mpy(Rs.h,Rt.h):rnd
		.encoding = { .mask = 0xffe020e0, .op = 0xec200060 },
		.id = HEX_INS_M2_MPY_RND_HH_S0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = mpy(.h,.h):rnd",
	},
	{
		// 11101100101sssssPP0ttttt011ddddd | Rd = mpy(Rs.h,Rt.h):<<1:rnd
		.encoding = { .mask = 0xffe020e0, .op = 0xeca00060 },
		.id = HEX_INS_M2_MPY_RND_HH_S1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = mpy(.h,.h):<<1:rnd",
	},
	{
		// 11101100001sssssPP0ttttt010ddddd | Rd = mpy(Rs.h,Rt.l):rnd
		.encoding = { .mask = 0xffe020e0, .op = 0xec200040 },
		.id = HEX_INS_M2_MPY_RND_HL_S0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = mpy(.h,.l):rnd",
	},
	{
		// 11101100101sssssPP0ttttt010ddddd | Rd = mpy(Rs.h,Rt.l):<<1:rnd
		.encoding = { .mask = 0xffe020e0, .op = 0xeca00040 },
		.id = HEX_INS_M2_MPY_RND_HL_S1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = mpy(.h,.l):<<1:rnd",
	},
	{
		// 11101100001sssssPP0ttttt001ddddd | Rd = mpy(Rs.l,Rt.h):rnd
		.encoding = { .mask = 0xffe020e0, .op = 0xec200020 },
		.id = HEX_INS_M2_MPY_RND_LH_S0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = mpy(.l,.h):rnd",
	},
	{
		// 11101100101sssssPP0ttttt001ddddd | Rd = mpy(Rs.l,Rt.h):<<1:rnd
		.encoding = { .mask = 0xffe020e0, .op = 0xeca00020 },
		.id = HEX_INS_M2_MPY_RND_LH_S1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = mpy(.l,.h):<<1:rnd",
	},
	{
		// 11101100001sssssPP0ttttt000ddddd | Rd = mpy(Rs.l,Rt.l):rnd
		.encoding = { .mask = 0xffe020e0, .op = 0xec200000 },
		.id = HEX_INS_M2_MPY_RND_LL_S0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = mpy(.l,.l):rnd",
	},
	{
		// 11101100101sssssPP0ttttt000ddddd | Rd = mpy(Rs.l,Rt.l):<<1:rnd
		.encoding = { .mask = 0xffe020e0, .op = 0xeca00000 },
		.id = HEX_INS_M2_MPY_RND_LL_S1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = mpy(.l,.l):<<1:rnd",
	},
	{
		// 11101100000sssssPP0ttttt111ddddd | Rd = mpy(Rs.h,Rt.h):sat
		.encoding = { .mask = 0xffe020e0, .op = 0xec0000e0 },
		.id = HEX_INS_M2_MPY_SAT_HH_S0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = mpy(.h,.h):sat",
	},
	{
		// 11101100100sssssPP0ttttt111ddddd | Rd = mpy(Rs.h,Rt.h):<<1:sat
		.encoding = { .mask = 0xffe020e0, .op = 0xec8000e0 },
		.id = HEX_INS_M2_MPY_SAT_HH_S1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = mpy(.h,.h):<<1:sat",
	},
	{
		// 11101100000sssssPP0ttttt110ddddd | Rd = mpy(Rs.h,Rt.l):sat
		.encoding = { .mask = 0xffe020e0, .op = 0xec0000c0 },
		.id = HEX_INS_M2_MPY_SAT_HL_S0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = mpy(.h,.l):sat",
	},
	{
		// 11101100100sssssPP0ttttt110ddddd | Rd = mpy(Rs.h,Rt.l):<<1:sat
		.encoding = { .mask = 0xffe020e0, .op = 0xec8000c0 },
		.id = HEX_INS_M2_MPY_SAT_HL_S1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = mpy(.h,.l):<<1:sat",
	},
	{
		// 11101100000sssssPP0ttttt101ddddd | Rd = mpy(Rs.l,Rt.h):sat
		.encoding = { .mask = 0xffe020e0, .op = 0xec0000a0 },
		.id = HEX_INS_M2_MPY_SAT_LH_S0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = mpy(.l,.h):sat",
	},
	{
		// 11101100100sssssPP0ttttt101ddddd | Rd = mpy(Rs.l,Rt.h):<<1:sat
		.encoding = { .mask = 0xffe020e0, .op = 0xec8000a0 },
		.id = HEX_INS_M2_MPY_SAT_LH_S1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = mpy(.l,.h):<<1:sat",
	},
	{
		// 11101100000sssssPP0ttttt100ddddd | Rd = mpy(Rs.l,Rt.l):sat
		.encoding = { .mask = 0xffe020e0, .op = 0xec000080 },
		.id = HEX_INS_M2_MPY_SAT_LL_S0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = mpy(.l,.l):sat",
	},
	{
		// 11101100100sssssPP0ttttt100ddddd | Rd = mpy(Rs.l,Rt.l):<<1:sat
		.encoding = { .mask = 0xffe020e0, .op = 0xec800080 },
		.id = HEX_INS_M2_MPY_SAT_LL_S1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = mpy(.l,.l):<<1:sat",
	},
	{
		// 11101100001sssssPP0ttttt111ddddd | Rd = mpy(Rs.h,Rt.h):rnd:sat
		.encoding = { .mask = 0xffe020e0, .op = 0xec2000e0 },
		.id = HEX_INS_M2_MPY_SAT_RND_HH_S0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = mpy(.h,.h):rnd:sat",
	},
	{
		// 11101100101sssssPP0ttttt111ddddd | Rd = mpy(Rs.h,Rt.h):<<1:rnd:sat
		.encoding = { .mask = 0xffe020e0, .op = 0xeca000e0 },
		.id = HEX_INS_M2_MPY_SAT_RND_HH_S1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = mpy(.h,.h):<<1:rnd:sat",
	},
	{
		// 11101100001sssssPP0ttttt110ddddd | Rd = mpy(Rs.h,Rt.l):rnd:sat
		.encoding = { .mask = 0xffe020e0, .op = 0xec2000c0 },
		.id = HEX_INS_M2_MPY_SAT_RND_HL_S0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = mpy(.h,.l):rnd:sat",
	},
	{
		// 11101100101sssssPP0ttttt110ddddd | Rd = mpy(Rs.h,Rt.l):<<1:rnd:sat
		.encoding = { .mask = 0xffe020e0, .op = 0xeca000c0 },
		.id = HEX_INS_M2_MPY_SAT_RND_HL_S1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = mpy(.h,.l):<<1:rnd:sat",
	},
	{
		// 11101100001sssssPP0ttttt101ddddd | Rd = mpy(Rs.l,Rt.h):rnd:sat
		.encoding = { .mask = 0xffe020e0, .op = 0xec2000a0 },
		.id = HEX_INS_M2_MPY_SAT_RND_LH_S0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = mpy(.l,.h):rnd:sat",
	},
	{
		// 11101100101sssssPP0ttttt101ddddd | Rd = mpy(Rs.l,Rt.h):<<1:rnd:sat
		.encoding = { .mask = 0xffe020e0, .op = 0xeca000a0 },
		.id = HEX_INS_M2_MPY_SAT_RND_LH_S1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = mpy(.l,.h):<<1:rnd:sat",
	},
	{
		// 11101100001sssssPP0ttttt100ddddd | Rd = mpy(Rs.l,Rt.l):rnd:sat
		.encoding = { .mask = 0xffe020e0, .op = 0xec200080 },
		.id = HEX_INS_M2_MPY_SAT_RND_LL_S0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = mpy(.l,.l):rnd:sat",
	},
	{
		// 11101100101sssssPP0ttttt100ddddd | Rd = mpy(Rs.l,Rt.l):<<1:rnd:sat
		.encoding = { .mask = 0xffe020e0, .op = 0xeca00080 },
		.id = HEX_INS_M2_MPY_SAT_RND_LL_S1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = mpy(.l,.l):<<1:rnd:sat",
	},
	{
		// 11101101000sssssPP0ttttt001ddddd | Rd = mpy(Rs,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xed000020 },
		.id = HEX_INS_M2_MPY_UP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = mpy(,)",
	},
	{
		// 11101101101sssssPP0ttttt010ddddd | Rd = mpy(Rs,Rt):<<1
		.encoding = { .mask = 0xffe020e0, .op = 0xeda00040 },
		.id = HEX_INS_M2_MPY_UP_S1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = mpy(,):<<1",
	},
	{
		// 11101101111sssssPP0ttttt000ddddd | Rd = mpy(Rs,Rt):<<1:sat
		.encoding = { .mask = 0xffe020e0, .op = 0xede00000 },
		.id = HEX_INS_M2_MPY_UP_S1_SAT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = mpy(,):<<1:sat",
	},
	{
		// 11100110000sssssPP0ttttt011xxxxx | Rxx += mpy(Rs.h,Rt.h)
		.encoding = { .mask = 0xffe020e0, .op = 0xe6000060 },
		.id = HEX_INS_M2_MPYD_ACC_HH_S0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += mpy(.h,.h)",
	},
	{
		// 11100110100sssssPP0ttttt011xxxxx | Rxx += mpy(Rs.h,Rt.h):<<1
		.encoding = { .mask = 0xffe020e0, .op = 0xe6800060 },
		.id = HEX_INS_M2_MPYD_ACC_HH_S1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += mpy(.h,.h):<<1",
	},
	{
		// 11100110000sssssPP0ttttt010xxxxx | Rxx += mpy(Rs.h,Rt.l)
		.encoding = { .mask = 0xffe020e0, .op = 0xe6000040 },
		.id = HEX_INS_M2_MPYD_ACC_HL_S0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += mpy(.h,.l)",
	},
	{
		// 11100110100sssssPP0ttttt010xxxxx | Rxx += mpy(Rs.h,Rt.l):<<1
		.encoding = { .mask = 0xffe020e0, .op = 0xe6800040 },
		.id = HEX_INS_M2_MPYD_ACC_HL_S1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += mpy(.h,.l):<<1",
	},
	{
		// 11100110000sssssPP0ttttt001xxxxx | Rxx += mpy(Rs.l,Rt.h)
		.encoding = { .mask = 0xffe020e0, .op = 0xe6000020 },
		.id = HEX_INS_M2_MPYD_ACC_LH_S0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += mpy(.l,.h)",
	},
	{
		// 11100110100sssssPP0ttttt001xxxxx | Rxx += mpy(Rs.l,Rt.h):<<1
		.encoding = { .mask = 0xffe020e0, .op = 0xe6800020 },
		.id = HEX_INS_M2_MPYD_ACC_LH_S1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += mpy(.l,.h):<<1",
	},
	{
		// 11100110000sssssPP0ttttt000xxxxx | Rxx += mpy(Rs.l,Rt.l)
		.encoding = { .mask = 0xffe020e0, .op = 0xe6000000 },
		.id = HEX_INS_M2_MPYD_ACC_LL_S0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += mpy(.l,.l)",
	},
	{
		// 11100110100sssssPP0ttttt000xxxxx | Rxx += mpy(Rs.l,Rt.l):<<1
		.encoding = { .mask = 0xffe020e0, .op = 0xe6800000 },
		.id = HEX_INS_M2_MPYD_ACC_LL_S1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += mpy(.l,.l):<<1",
	},
	{
		// 11100100000sssssPP0ttttt011ddddd | Rdd = mpy(Rs.h,Rt.h)
		.encoding = { .mask = 0xffe020e0, .op = 0xe4000060 },
		.id = HEX_INS_M2_MPYD_HH_S0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = mpy(.h,.h)",
	},
	{
		// 11100100100sssssPP0ttttt011ddddd | Rdd = mpy(Rs.h,Rt.h):<<1
		.encoding = { .mask = 0xffe020e0, .op = 0xe4800060 },
		.id = HEX_INS_M2_MPYD_HH_S1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = mpy(.h,.h):<<1",
	},
	{
		// 11100100000sssssPP0ttttt010ddddd | Rdd = mpy(Rs.h,Rt.l)
		.encoding = { .mask = 0xffe020e0, .op = 0xe4000040 },
		.id = HEX_INS_M2_MPYD_HL_S0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = mpy(.h,.l)",
	},
	{
		// 11100100100sssssPP0ttttt010ddddd | Rdd = mpy(Rs.h,Rt.l):<<1
		.encoding = { .mask = 0xffe020e0, .op = 0xe4800040 },
		.id = HEX_INS_M2_MPYD_HL_S1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = mpy(.h,.l):<<1",
	},
	{
		// 11100100000sssssPP0ttttt001ddddd | Rdd = mpy(Rs.l,Rt.h)
		.encoding = { .mask = 0xffe020e0, .op = 0xe4000020 },
		.id = HEX_INS_M2_MPYD_LH_S0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = mpy(.l,.h)",
	},
	{
		// 11100100100sssssPP0ttttt001ddddd | Rdd = mpy(Rs.l,Rt.h):<<1
		.encoding = { .mask = 0xffe020e0, .op = 0xe4800020 },
		.id = HEX_INS_M2_MPYD_LH_S1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = mpy(.l,.h):<<1",
	},
	{
		// 11100100000sssssPP0ttttt000ddddd | Rdd = mpy(Rs.l,Rt.l)
		.encoding = { .mask = 0xffe020e0, .op = 0xe4000000 },
		.id = HEX_INS_M2_MPYD_LL_S0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = mpy(.l,.l)",
	},
	{
		// 11100100100sssssPP0ttttt000ddddd | Rdd = mpy(Rs.l,Rt.l):<<1
		.encoding = { .mask = 0xffe020e0, .op = 0xe4800000 },
		.id = HEX_INS_M2_MPYD_LL_S1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = mpy(.l,.l):<<1",
	},
	{
		// 11100110001sssssPP0ttttt011xxxxx | Rxx -= mpy(Rs.h,Rt.h)
		.encoding = { .mask = 0xffe020e0, .op = 0xe6200060 },
		.id = HEX_INS_M2_MPYD_NAC_HH_S0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " -= mpy(.h,.h)",
	},
	{
		// 11100110101sssssPP0ttttt011xxxxx | Rxx -= mpy(Rs.h,Rt.h):<<1
		.encoding = { .mask = 0xffe020e0, .op = 0xe6a00060 },
		.id = HEX_INS_M2_MPYD_NAC_HH_S1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " -= mpy(.h,.h):<<1",
	},
	{
		// 11100110001sssssPP0ttttt010xxxxx | Rxx -= mpy(Rs.h,Rt.l)
		.encoding = { .mask = 0xffe020e0, .op = 0xe6200040 },
		.id = HEX_INS_M2_MPYD_NAC_HL_S0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " -= mpy(.h,.l)",
	},
	{
		// 11100110101sssssPP0ttttt010xxxxx | Rxx -= mpy(Rs.h,Rt.l):<<1
		.encoding = { .mask = 0xffe020e0, .op = 0xe6a00040 },
		.id = HEX_INS_M2_MPYD_NAC_HL_S1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " -= mpy(.h,.l):<<1",
	},
	{
		// 11100110001sssssPP0ttttt001xxxxx | Rxx -= mpy(Rs.l,Rt.h)
		.encoding = { .mask = 0xffe020e0, .op = 0xe6200020 },
		.id = HEX_INS_M2_MPYD_NAC_LH_S0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " -= mpy(.l,.h)",
	},
	{
		// 11100110101sssssPP0ttttt001xxxxx | Rxx -= mpy(Rs.l,Rt.h):<<1
		.encoding = { .mask = 0xffe020e0, .op = 0xe6a00020 },
		.id = HEX_INS_M2_MPYD_NAC_LH_S1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " -= mpy(.l,.h):<<1",
	},
	{
		// 11100110001sssssPP0ttttt000xxxxx | Rxx -= mpy(Rs.l,Rt.l)
		.encoding = { .mask = 0xffe020e0, .op = 0xe6200000 },
		.id = HEX_INS_M2_MPYD_NAC_LL_S0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " -= mpy(.l,.l)",
	},
	{
		// 11100110101sssssPP0ttttt000xxxxx | Rxx -= mpy(Rs.l,Rt.l):<<1
		.encoding = { .mask = 0xffe020e0, .op = 0xe6a00000 },
		.id = HEX_INS_M2_MPYD_NAC_LL_S1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " -= mpy(.l,.l):<<1",
	},
	{
		// 11100100001sssssPP0ttttt011ddddd | Rdd = mpy(Rs.h,Rt.h):rnd
		.encoding = { .mask = 0xffe020e0, .op = 0xe4200060 },
		.id = HEX_INS_M2_MPYD_RND_HH_S0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = mpy(.h,.h):rnd",
	},
	{
		// 11100100101sssssPP0ttttt011ddddd | Rdd = mpy(Rs.h,Rt.h):<<1:rnd
		.encoding = { .mask = 0xffe020e0, .op = 0xe4a00060 },
		.id = HEX_INS_M2_MPYD_RND_HH_S1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = mpy(.h,.h):<<1:rnd",
	},
	{
		// 11100100001sssssPP0ttttt010ddddd | Rdd = mpy(Rs.h,Rt.l):rnd
		.encoding = { .mask = 0xffe020e0, .op = 0xe4200040 },
		.id = HEX_INS_M2_MPYD_RND_HL_S0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = mpy(.h,.l):rnd",
	},
	{
		// 11100100101sssssPP0ttttt010ddddd | Rdd = mpy(Rs.h,Rt.l):<<1:rnd
		.encoding = { .mask = 0xffe020e0, .op = 0xe4a00040 },
		.id = HEX_INS_M2_MPYD_RND_HL_S1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = mpy(.h,.l):<<1:rnd",
	},
	{
		// 11100100001sssssPP0ttttt001ddddd | Rdd = mpy(Rs.l,Rt.h):rnd
		.encoding = { .mask = 0xffe020e0, .op = 0xe4200020 },
		.id = HEX_INS_M2_MPYD_RND_LH_S0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = mpy(.l,.h):rnd",
	},
	{
		// 11100100101sssssPP0ttttt001ddddd | Rdd = mpy(Rs.l,Rt.h):<<1:rnd
		.encoding = { .mask = 0xffe020e0, .op = 0xe4a00020 },
		.id = HEX_INS_M2_MPYD_RND_LH_S1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = mpy(.l,.h):<<1:rnd",
	},
	{
		// 11100100001sssssPP0ttttt000ddddd | Rdd = mpy(Rs.l,Rt.l):rnd
		.encoding = { .mask = 0xffe020e0, .op = 0xe4200000 },
		.id = HEX_INS_M2_MPYD_RND_LL_S0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = mpy(.l,.l):rnd",
	},
	{
		// 11100100101sssssPP0ttttt000ddddd | Rdd = mpy(Rs.l,Rt.l):<<1:rnd
		.encoding = { .mask = 0xffe020e0, .op = 0xe4a00000 },
		.id = HEX_INS_M2_MPYD_RND_LL_S1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = mpy(.l,.l):<<1:rnd",
	},
	{
		// 11101101000sssssPP0ttttt000ddddd | Rd = mpyi(Rs,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xed000000 },
		.id = HEX_INS_M2_MPYI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = mpyi(,)",
	},
	{
		// 11100000100sssssPP0iiiiiiiiddddd | Rd = -mpyi(Rs,Ii)
		.encoding = { .mask = 0xffe02000, .op = 0xe0800000 },
		.id = HEX_INS_M2_MPYSIN,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE, .masks = { { 0x8, 5 } }, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = -mpyi(,)",
	},
	{
		// 11100000000sssssPP0iiiiiiiiddddd | Rd = +mpyi(Rs,Ii)
		.encoding = { .mask = 0xffe02000, .op = 0xe0000000 },
		.id = HEX_INS_M2_MPYSIP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x8, 5 } }, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = +mpyi(,)",
	},
	{
		// 11101101011sssssPP0ttttt001ddddd | Rd = mpysu(Rs,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xed600020 },
		.id = HEX_INS_M2_MPYSU_UP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = mpysu(,)",
	},
	{
		// 11101110010sssssPP0ttttt011xxxxx | Rx += mpyu(Rs.h,Rt.h)
		.encoding = { .mask = 0xffe020e0, .op = 0xee400060 },
		.id = HEX_INS_M2_MPYU_ACC_HH_S0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += mpyu(.h,.h)",
	},
	{
		// 11101110110sssssPP0ttttt011xxxxx | Rx += mpyu(Rs.h,Rt.h):<<1
		.encoding = { .mask = 0xffe020e0, .op = 0xeec00060 },
		.id = HEX_INS_M2_MPYU_ACC_HH_S1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += mpyu(.h,.h):<<1",
	},
	{
		// 11101110010sssssPP0ttttt010xxxxx | Rx += mpyu(Rs.h,Rt.l)
		.encoding = { .mask = 0xffe020e0, .op = 0xee400040 },
		.id = HEX_INS_M2_MPYU_ACC_HL_S0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += mpyu(.h,.l)",
	},
	{
		// 11101110110sssssPP0ttttt010xxxxx | Rx += mpyu(Rs.h,Rt.l):<<1
		.encoding = { .mask = 0xffe020e0, .op = 0xeec00040 },
		.id = HEX_INS_M2_MPYU_ACC_HL_S1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += mpyu(.h,.l):<<1",
	},
	{
		// 11101110010sssssPP0ttttt001xxxxx | Rx += mpyu(Rs.l,Rt.h)
		.encoding = { .mask = 0xffe020e0, .op = 0xee400020 },
		.id = HEX_INS_M2_MPYU_ACC_LH_S0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += mpyu(.l,.h)",
	},
	{
		// 11101110110sssssPP0ttttt001xxxxx | Rx += mpyu(Rs.l,Rt.h):<<1
		.encoding = { .mask = 0xffe020e0, .op = 0xeec00020 },
		.id = HEX_INS_M2_MPYU_ACC_LH_S1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += mpyu(.l,.h):<<1",
	},
	{
		// 11101110010sssssPP0ttttt000xxxxx | Rx += mpyu(Rs.l,Rt.l)
		.encoding = { .mask = 0xffe020e0, .op = 0xee400000 },
		.id = HEX_INS_M2_MPYU_ACC_LL_S0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += mpyu(.l,.l)",
	},
	{
		// 11101110110sssssPP0ttttt000xxxxx | Rx += mpyu(Rs.l,Rt.l):<<1
		.encoding = { .mask = 0xffe020e0, .op = 0xeec00000 },
		.id = HEX_INS_M2_MPYU_ACC_LL_S1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += mpyu(.l,.l):<<1",
	},
	{
		// 11101100010sssssPP0ttttt011ddddd | Rd = mpyu(Rs.h,Rt.h)
		.encoding = { .mask = 0xffe020e0, .op = 0xec400060 },
		.id = HEX_INS_M2_MPYU_HH_S0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = mpyu(.h,.h)",
	},
	{
		// 11101100110sssssPP0ttttt011ddddd | Rd = mpyu(Rs.h,Rt.h):<<1
		.encoding = { .mask = 0xffe020e0, .op = 0xecc00060 },
		.id = HEX_INS_M2_MPYU_HH_S1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = mpyu(.h,.h):<<1",
	},
	{
		// 11101100010sssssPP0ttttt010ddddd | Rd = mpyu(Rs.h,Rt.l)
		.encoding = { .mask = 0xffe020e0, .op = 0xec400040 },
		.id = HEX_INS_M2_MPYU_HL_S0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = mpyu(.h,.l)",
	},
	{
		// 11101100110sssssPP0ttttt010ddddd | Rd = mpyu(Rs.h,Rt.l):<<1
		.encoding = { .mask = 0xffe020e0, .op = 0xecc00040 },
		.id = HEX_INS_M2_MPYU_HL_S1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = mpyu(.h,.l):<<1",
	},
	{
		// 11101100010sssssPP0ttttt001ddddd | Rd = mpyu(Rs.l,Rt.h)
		.encoding = { .mask = 0xffe020e0, .op = 0xec400020 },
		.id = HEX_INS_M2_MPYU_LH_S0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = mpyu(.l,.h)",
	},
	{
		// 11101100110sssssPP0ttttt001ddddd | Rd = mpyu(Rs.l,Rt.h):<<1
		.encoding = { .mask = 0xffe020e0, .op = 0xecc00020 },
		.id = HEX_INS_M2_MPYU_LH_S1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = mpyu(.l,.h):<<1",
	},
	{
		// 11101100010sssssPP0ttttt000ddddd | Rd = mpyu(Rs.l,Rt.l)
		.encoding = { .mask = 0xffe020e0, .op = 0xec400000 },
		.id = HEX_INS_M2_MPYU_LL_S0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = mpyu(.l,.l)",
	},
	{
		// 11101100110sssssPP0ttttt000ddddd | Rd = mpyu(Rs.l,Rt.l):<<1
		.encoding = { .mask = 0xffe020e0, .op = 0xecc00000 },
		.id = HEX_INS_M2_MPYU_LL_S1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = mpyu(.l,.l):<<1",
	},
	{
		// 11101110011sssssPP0ttttt011xxxxx | Rx -= mpyu(Rs.h,Rt.h)
		.encoding = { .mask = 0xffe020e0, .op = 0xee600060 },
		.id = HEX_INS_M2_MPYU_NAC_HH_S0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " -= mpyu(.h,.h)",
	},
	{
		// 11101110111sssssPP0ttttt011xxxxx | Rx -= mpyu(Rs.h,Rt.h):<<1
		.encoding = { .mask = 0xffe020e0, .op = 0xeee00060 },
		.id = HEX_INS_M2_MPYU_NAC_HH_S1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " -= mpyu(.h,.h):<<1",
	},
	{
		// 11101110011sssssPP0ttttt010xxxxx | Rx -= mpyu(Rs.h,Rt.l)
		.encoding = { .mask = 0xffe020e0, .op = 0xee600040 },
		.id = HEX_INS_M2_MPYU_NAC_HL_S0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " -= mpyu(.h,.l)",
	},
	{
		// 11101110111sssssPP0ttttt010xxxxx | Rx -= mpyu(Rs.h,Rt.l):<<1
		.encoding = { .mask = 0xffe020e0, .op = 0xeee00040 },
		.id = HEX_INS_M2_MPYU_NAC_HL_S1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " -= mpyu(.h,.l):<<1",
	},
	{
		// 11101110011sssssPP0ttttt001xxxxx | Rx -= mpyu(Rs.l,Rt.h)
		.encoding = { .mask = 0xffe020e0, .op = 0xee600020 },
		.id = HEX_INS_M2_MPYU_NAC_LH_S0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " -= mpyu(.l,.h)",
	},
	{
		// 11101110111sssssPP0ttttt001xxxxx | Rx -= mpyu(Rs.l,Rt.h):<<1
		.encoding = { .mask = 0xffe020e0, .op = 0xeee00020 },
		.id = HEX_INS_M2_MPYU_NAC_LH_S1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " -= mpyu(.l,.h):<<1",
	},
	{
		// 11101110011sssssPP0ttttt000xxxxx | Rx -= mpyu(Rs.l,Rt.l)
		.encoding = { .mask = 0xffe020e0, .op = 0xee600000 },
		.id = HEX_INS_M2_MPYU_NAC_LL_S0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " -= mpyu(.l,.l)",
	},
	{
		// 11101110111sssssPP0ttttt000xxxxx | Rx -= mpyu(Rs.l,Rt.l):<<1
		.encoding = { .mask = 0xffe020e0, .op = 0xeee00000 },
		.id = HEX_INS_M2_MPYU_NAC_LL_S1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " -= mpyu(.l,.l):<<1",
	},
	{
		// 11101101010sssssPP0ttttt001ddddd | Rd = mpyu(Rs,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xed400020 },
		.id = HEX_INS_M2_MPYU_UP,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = mpyu(,)",
	},
	{
		// 11100110010sssssPP0ttttt011xxxxx | Rxx += mpyu(Rs.h,Rt.h)
		.encoding = { .mask = 0xffe020e0, .op = 0xe6400060 },
		.id = HEX_INS_M2_MPYUD_ACC_HH_S0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += mpyu(.h,.h)",
	},
	{
		// 11100110110sssssPP0ttttt011xxxxx | Rxx += mpyu(Rs.h,Rt.h):<<1
		.encoding = { .mask = 0xffe020e0, .op = 0xe6c00060 },
		.id = HEX_INS_M2_MPYUD_ACC_HH_S1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += mpyu(.h,.h):<<1",
	},
	{
		// 11100110010sssssPP0ttttt010xxxxx | Rxx += mpyu(Rs.h,Rt.l)
		.encoding = { .mask = 0xffe020e0, .op = 0xe6400040 },
		.id = HEX_INS_M2_MPYUD_ACC_HL_S0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += mpyu(.h,.l)",
	},
	{
		// 11100110110sssssPP0ttttt010xxxxx | Rxx += mpyu(Rs.h,Rt.l):<<1
		.encoding = { .mask = 0xffe020e0, .op = 0xe6c00040 },
		.id = HEX_INS_M2_MPYUD_ACC_HL_S1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += mpyu(.h,.l):<<1",
	},
	{
		// 11100110010sssssPP0ttttt001xxxxx | Rxx += mpyu(Rs.l,Rt.h)
		.encoding = { .mask = 0xffe020e0, .op = 0xe6400020 },
		.id = HEX_INS_M2_MPYUD_ACC_LH_S0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += mpyu(.l,.h)",
	},
	{
		// 11100110110sssssPP0ttttt001xxxxx | Rxx += mpyu(Rs.l,Rt.h):<<1
		.encoding = { .mask = 0xffe020e0, .op = 0xe6c00020 },
		.id = HEX_INS_M2_MPYUD_ACC_LH_S1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += mpyu(.l,.h):<<1",
	},
	{
		// 11100110010sssssPP0ttttt000xxxxx | Rxx += mpyu(Rs.l,Rt.l)
		.encoding = { .mask = 0xffe020e0, .op = 0xe6400000 },
		.id = HEX_INS_M2_MPYUD_ACC_LL_S0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += mpyu(.l,.l)",
	},
	{
		// 11100110110sssssPP0ttttt000xxxxx | Rxx += mpyu(Rs.l,Rt.l):<<1
		.encoding = { .mask = 0xffe020e0, .op = 0xe6c00000 },
		.id = HEX_INS_M2_MPYUD_ACC_LL_S1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += mpyu(.l,.l):<<1",
	},
	{
		// 11100100010sssssPP0ttttt011ddddd | Rdd = mpyu(Rs.h,Rt.h)
		.encoding = { .mask = 0xffe020e0, .op = 0xe4400060 },
		.id = HEX_INS_M2_MPYUD_HH_S0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = mpyu(.h,.h)",
	},
	{
		// 11100100110sssssPP0ttttt011ddddd | Rdd = mpyu(Rs.h,Rt.h):<<1
		.encoding = { .mask = 0xffe020e0, .op = 0xe4c00060 },
		.id = HEX_INS_M2_MPYUD_HH_S1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = mpyu(.h,.h):<<1",
	},
	{
		// 11100100010sssssPP0ttttt010ddddd | Rdd = mpyu(Rs.h,Rt.l)
		.encoding = { .mask = 0xffe020e0, .op = 0xe4400040 },
		.id = HEX_INS_M2_MPYUD_HL_S0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = mpyu(.h,.l)",
	},
	{
		// 11100100110sssssPP0ttttt010ddddd | Rdd = mpyu(Rs.h,Rt.l):<<1
		.encoding = { .mask = 0xffe020e0, .op = 0xe4c00040 },
		.id = HEX_INS_M2_MPYUD_HL_S1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = mpyu(.h,.l):<<1",
	},
	{
		// 11100100010sssssPP0ttttt001ddddd | Rdd = mpyu(Rs.l,Rt.h)
		.encoding = { .mask = 0xffe020e0, .op = 0xe4400020 },
		.id = HEX_INS_M2_MPYUD_LH_S0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = mpyu(.l,.h)",
	},
	{
		// 11100100110sssssPP0ttttt001ddddd | Rdd = mpyu(Rs.l,Rt.h):<<1
		.encoding = { .mask = 0xffe020e0, .op = 0xe4c00020 },
		.id = HEX_INS_M2_MPYUD_LH_S1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = mpyu(.l,.h):<<1",
	},
	{
		// 11100100010sssssPP0ttttt000ddddd | Rdd = mpyu(Rs.l,Rt.l)
		.encoding = { .mask = 0xffe020e0, .op = 0xe4400000 },
		.id = HEX_INS_M2_MPYUD_LL_S0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = mpyu(.l,.l)",
	},
	{
		// 11100100110sssssPP0ttttt000ddddd | Rdd = mpyu(Rs.l,Rt.l):<<1
		.encoding = { .mask = 0xffe020e0, .op = 0xe4c00000 },
		.id = HEX_INS_M2_MPYUD_LL_S1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = mpyu(.l,.l):<<1",
	},
	{
		// 11100110011sssssPP0ttttt011xxxxx | Rxx -= mpyu(Rs.h,Rt.h)
		.encoding = { .mask = 0xffe020e0, .op = 0xe6600060 },
		.id = HEX_INS_M2_MPYUD_NAC_HH_S0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " -= mpyu(.h,.h)",
	},
	{
		// 11100110111sssssPP0ttttt011xxxxx | Rxx -= mpyu(Rs.h,Rt.h):<<1
		.encoding = { .mask = 0xffe020e0, .op = 0xe6e00060 },
		.id = HEX_INS_M2_MPYUD_NAC_HH_S1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " -= mpyu(.h,.h):<<1",
	},
	{
		// 11100110011sssssPP0ttttt010xxxxx | Rxx -= mpyu(Rs.h,Rt.l)
		.encoding = { .mask = 0xffe020e0, .op = 0xe6600040 },
		.id = HEX_INS_M2_MPYUD_NAC_HL_S0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " -= mpyu(.h,.l)",
	},
	{
		// 11100110111sssssPP0ttttt010xxxxx | Rxx -= mpyu(Rs.h,Rt.l):<<1
		.encoding = { .mask = 0xffe020e0, .op = 0xe6e00040 },
		.id = HEX_INS_M2_MPYUD_NAC_HL_S1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " -= mpyu(.h,.l):<<1",
	},
	{
		// 11100110011sssssPP0ttttt001xxxxx | Rxx -= mpyu(Rs.l,Rt.h)
		.encoding = { .mask = 0xffe020e0, .op = 0xe6600020 },
		.id = HEX_INS_M2_MPYUD_NAC_LH_S0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " -= mpyu(.l,.h)",
	},
	{
		// 11100110111sssssPP0ttttt001xxxxx | Rxx -= mpyu(Rs.l,Rt.h):<<1
		.encoding = { .mask = 0xffe020e0, .op = 0xe6e00020 },
		.id = HEX_INS_M2_MPYUD_NAC_LH_S1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " -= mpyu(.l,.h):<<1",
	},
	{
		// 11100110011sssssPP0ttttt000xxxxx | Rxx -= mpyu(Rs.l,Rt.l)
		.encoding = { .mask = 0xffe020e0, .op = 0xe6600000 },
		.id = HEX_INS_M2_MPYUD_NAC_LL_S0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " -= mpyu(.l,.l)",
	},
	{
		// 11100110111sssssPP0ttttt000xxxxx | Rxx -= mpyu(Rs.l,Rt.l):<<1
		.encoding = { .mask = 0xffe020e0, .op = 0xe6e00000 },
		.id = HEX_INS_M2_MPYUD_NAC_LL_S1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " -= mpyu(.l,.l):<<1",
	},
	{
		// 11101111100sssssPP0ttttt001xxxxx | Rx -= add(Rs,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xef800020 },
		.id = HEX_INS_M2_NACCI,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " -= add(,)",
	},
	{
		// 11100010100sssssPP0iiiiiiiixxxxx | Rx -= add(Rs,Ii)
		.encoding = { .mask = 0xffe02000, .op = 0xe2800000 },
		.id = HEX_INS_M2_NACCII,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_IMM | HEX_OP_TEMPLATE_FLAG_IMM_SIGNED | HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE | HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH, .masks = { { 0x8, 5 } }, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " -= add(,)",
	},
	{
		// 11101111000sssssPP0ttttt011xxxxx | Rx += sub(Rt,Rs)
		.encoding = { .mask = 0xffe020e0, .op = 0xef000060 },
		.id = HEX_INS_M2_SUBACC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += sub(,)",
	},
	{
		// 11101000011sssssPP0ttttt000ddddd | Rdd = vabsdiffh(Rtt,Rss)
		.encoding = { .mask = 0xffe020e0, .op = 0xe8600000 },
		.id = HEX_INS_M2_VABSDIFFH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vabsdiffh(,)",
	},
	{
		// 11101000001sssssPP0ttttt000ddddd | Rdd = vabsdiffw(Rtt,Rss)
		.encoding = { .mask = 0xffe020e0, .op = 0xe8200000 },
		.id = HEX_INS_M2_VABSDIFFW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vabsdiffw(,)",
	},
	{
		// 11101010010sssssPP0ttttt100xxxxx | Rxx += vcmpyi(Rss,Rtt):sat
		.encoding = { .mask = 0xffe020e0, .op = 0xea400080 },
		.id = HEX_INS_M2_VCMAC_S0_SAT_I,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += vcmpyi(,):sat",
	},
	{
		// 11101010001sssssPP0ttttt100xxxxx | Rxx += vcmpyr(Rss,Rtt):sat
		.encoding = { .mask = 0xffe020e0, .op = 0xea200080 },
		.id = HEX_INS_M2_VCMAC_S0_SAT_R,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += vcmpyr(,):sat",
	},
	{
		// 11101000010sssssPP0ttttt110ddddd | Rdd = vcmpyi(Rss,Rtt):sat
		.encoding = { .mask = 0xffe020e0, .op = 0xe84000c0 },
		.id = HEX_INS_M2_VCMPY_S0_SAT_I,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vcmpyi(,):sat",
	},
	{
		// 11101000001sssssPP0ttttt110ddddd | Rdd = vcmpyr(Rss,Rtt):sat
		.encoding = { .mask = 0xffe020e0, .op = 0xe82000c0 },
		.id = HEX_INS_M2_VCMPY_S0_SAT_R,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vcmpyr(,):sat",
	},
	{
		// 11101000110sssssPP0ttttt110ddddd | Rdd = vcmpyi(Rss,Rtt):<<1:sat
		.encoding = { .mask = 0xffe020e0, .op = 0xe8c000c0 },
		.id = HEX_INS_M2_VCMPY_S1_SAT_I,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vcmpyi(,):<<1:sat",
	},
	{
		// 11101000101sssssPP0ttttt110ddddd | Rdd = vcmpyr(Rss,Rtt):<<1:sat
		.encoding = { .mask = 0xffe020e0, .op = 0xe8a000c0 },
		.id = HEX_INS_M2_VCMPY_S1_SAT_R,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vcmpyr(,):<<1:sat",
	},
	{
		// 11101010000sssssPP0ttttt100xxxxx | Rxx += vdmpy(Rss,Rtt):sat
		.encoding = { .mask = 0xffe020e0, .op = 0xea000080 },
		.id = HEX_INS_M2_VDMACS_S0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += vdmpy(,):sat",
	},
	{
		// 11101010100sssssPP0ttttt100xxxxx | Rxx += vdmpy(Rss,Rtt):<<1:sat
		.encoding = { .mask = 0xffe020e0, .op = 0xea800080 },
		.id = HEX_INS_M2_VDMACS_S1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += vdmpy(,):<<1:sat",
	},
	{
		// 11101001000sssssPP0ttttt000ddddd | Rd = vdmpy(Rss,Rtt):rnd:sat
		.encoding = { .mask = 0xffe020e0, .op = 0xe9000000 },
		.id = HEX_INS_M2_VDMPYRS_S0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vdmpy(,):rnd:sat",
	},
	{
		// 11101001100sssssPP0ttttt000ddddd | Rd = vdmpy(Rss,Rtt):<<1:rnd:sat
		.encoding = { .mask = 0xffe020e0, .op = 0xe9800000 },
		.id = HEX_INS_M2_VDMPYRS_S1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vdmpy(,):<<1:rnd:sat",
	},
	{
		// 11101000000sssssPP0ttttt100ddddd | Rdd = vdmpy(Rss,Rtt):sat
		.encoding = { .mask = 0xffe020e0, .op = 0xe8000080 },
		.id = HEX_INS_M2_VDMPYS_S0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vdmpy(,):sat",
	},
	{
		// 11101000100sssssPP0ttttt100ddddd | Rdd = vdmpy(Rss,Rtt):<<1:sat
		.encoding = { .mask = 0xffe020e0, .op = 0xe8800080 },
		.id = HEX_INS_M2_VDMPYS_S1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vdmpy(,):<<1:sat",
	},
	{
		// 11100111001sssssPP0ttttt001xxxxx | Rxx += vmpyh(Rs,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xe7200020 },
		.id = HEX_INS_M2_VMAC2,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += vmpyh(,)",
	},
	{
		// 11101010001sssssPP0ttttt010xxxxx | Rxx += vmpyeh(Rss,Rtt)
		.encoding = { .mask = 0xffe020e0, .op = 0xea200040 },
		.id = HEX_INS_M2_VMAC2ES,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += vmpyeh(,)",
	},
	{
		// 11101010000sssssPP0ttttt110xxxxx | Rxx += vmpyeh(Rss,Rtt):sat
		.encoding = { .mask = 0xffe020e0, .op = 0xea0000c0 },
		.id = HEX_INS_M2_VMAC2ES_S0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += vmpyeh(,):sat",
	},
	{
		// 11101010100sssssPP0ttttt110xxxxx | Rxx += vmpyeh(Rss,Rtt):<<1:sat
		.encoding = { .mask = 0xffe020e0, .op = 0xea8000c0 },
		.id = HEX_INS_M2_VMAC2ES_S1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += vmpyeh(,):<<1:sat",
	},
	{
		// 11100111000sssssPP0ttttt101xxxxx | Rxx += vmpyh(Rs,Rt):sat
		.encoding = { .mask = 0xffe020e0, .op = 0xe70000a0 },
		.id = HEX_INS_M2_VMAC2S_S0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += vmpyh(,):sat",
	},
	{
		// 11100111100sssssPP0ttttt101xxxxx | Rxx += vmpyh(Rs,Rt):<<1:sat
		.encoding = { .mask = 0xffe020e0, .op = 0xe78000a0 },
		.id = HEX_INS_M2_VMAC2S_S1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += vmpyh(,):<<1:sat",
	},
	{
		// 11100111011sssssPP0ttttt101xxxxx | Rxx += vmpyhsu(Rs,Rt):sat
		.encoding = { .mask = 0xffe020e0, .op = 0xe76000a0 },
		.id = HEX_INS_M2_VMAC2SU_S0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += vmpyhsu(,):sat",
	},
	{
		// 11100111111sssssPP0ttttt101xxxxx | Rxx += vmpyhsu(Rs,Rt):<<1:sat
		.encoding = { .mask = 0xffe020e0, .op = 0xe7e000a0 },
		.id = HEX_INS_M2_VMAC2SU_S1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += vmpyhsu(,):<<1:sat",
	},
	{
		// 11101000000sssssPP0ttttt110ddddd | Rdd = vmpyeh(Rss,Rtt):sat
		.encoding = { .mask = 0xffe020e0, .op = 0xe80000c0 },
		.id = HEX_INS_M2_VMPY2ES_S0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vmpyeh(,):sat",
	},
	{
		// 11101000100sssssPP0ttttt110ddddd | Rdd = vmpyeh(Rss,Rtt):<<1:sat
		.encoding = { .mask = 0xffe020e0, .op = 0xe88000c0 },
		.id = HEX_INS_M2_VMPY2ES_S1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vmpyeh(,):<<1:sat",
	},
	{
		// 11100101000sssssPP0ttttt101ddddd | Rdd = vmpyh(Rs,Rt):sat
		.encoding = { .mask = 0xffe020e0, .op = 0xe50000a0 },
		.id = HEX_INS_M2_VMPY2S_S0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vmpyh(,):sat",
	},
	{
		// 11101101001sssssPP0ttttt111ddddd | Rd = vmpyh(Rs,Rt):rnd:sat
		.encoding = { .mask = 0xffe020e0, .op = 0xed2000e0 },
		.id = HEX_INS_M2_VMPY2S_S0PACK,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vmpyh(,):rnd:sat",
	},
	{
		// 11100101100sssssPP0ttttt101ddddd | Rdd = vmpyh(Rs,Rt):<<1:sat
		.encoding = { .mask = 0xffe020e0, .op = 0xe58000a0 },
		.id = HEX_INS_M2_VMPY2S_S1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vmpyh(,):<<1:sat",
	},
	{
		// 11101101101sssssPP0ttttt111ddddd | Rd = vmpyh(Rs,Rt):<<1:rnd:sat
		.encoding = { .mask = 0xffe020e0, .op = 0xeda000e0 },
		.id = HEX_INS_M2_VMPY2S_S1PACK,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vmpyh(,):<<1:rnd:sat",
	},
	{
		// 11100101000sssssPP0ttttt111ddddd | Rdd = vmpyhsu(Rs,Rt):sat
		.encoding = { .mask = 0xffe020e0, .op = 0xe50000e0 },
		.id = HEX_INS_M2_VMPY2SU_S0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vmpyhsu(,):sat",
	},
	{
		// 11100101100sssssPP0ttttt111ddddd | Rdd = vmpyhsu(Rs,Rt):<<1:sat
		.encoding = { .mask = 0xffe020e0, .op = 0xe58000e0 },
		.id = HEX_INS_M2_VMPY2SU_S1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vmpyhsu(,):<<1:sat",
	},
	{
		// 11101001001sssssPP0ttttt111ddddd | Rd = vraddh(Rss,Rtt)
		.encoding = { .mask = 0xffe020e0, .op = 0xe92000e0 },
		.id = HEX_INS_M2_VRADDH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vraddh(,)",
	},
	{
		// 11101001000sssssPP0ttttt001ddddd | Rd = vradduh(Rss,Rtt)
		.encoding = { .mask = 0xffe020e0, .op = 0xe9000020 },
		.id = HEX_INS_M2_VRADDUH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vradduh(,)",
	},
	{
		// 11101010000sssssPP0ttttt000xxxxx | Rxx += vrcmpyi(Rss,Rtt)
		.encoding = { .mask = 0xffe020e0, .op = 0xea000000 },
		.id = HEX_INS_M2_VRCMACI_S0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += vrcmpyi(,)",
	},
	{
		// 11101010010sssssPP0ttttt000xxxxx | Rxx += vrcmpyi(Rss,Rtt*)
		.encoding = { .mask = 0xffe020e0, .op = 0xea400000 },
		.id = HEX_INS_M2_VRCMACI_S0C,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += vrcmpyi(,*)",
	},
	{
		// 11101010000sssssPP0ttttt001xxxxx | Rxx += vrcmpyr(Rss,Rtt)
		.encoding = { .mask = 0xffe020e0, .op = 0xea000020 },
		.id = HEX_INS_M2_VRCMACR_S0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += vrcmpyr(,)",
	},
	{
		// 11101010011sssssPP0ttttt001xxxxx | Rxx += vrcmpyr(Rss,Rtt*)
		.encoding = { .mask = 0xffe020e0, .op = 0xea600020 },
		.id = HEX_INS_M2_VRCMACR_S0C,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += vrcmpyr(,*)",
	},
	{
		// 11101000000sssssPP0ttttt000ddddd | Rdd = vrcmpyi(Rss,Rtt)
		.encoding = { .mask = 0xffe020e0, .op = 0xe8000000 },
		.id = HEX_INS_M2_VRCMPYI_S0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vrcmpyi(,)",
	},
	{
		// 11101000010sssssPP0ttttt000ddddd | Rdd = vrcmpyi(Rss,Rtt*)
		.encoding = { .mask = 0xffe020e0, .op = 0xe8400000 },
		.id = HEX_INS_M2_VRCMPYI_S0C,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vrcmpyi(,*)",
	},
	{
		// 11101000000sssssPP0ttttt001ddddd | Rdd = vrcmpyr(Rss,Rtt)
		.encoding = { .mask = 0xffe020e0, .op = 0xe8000020 },
		.id = HEX_INS_M2_VRCMPYR_S0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vrcmpyr(,)",
	},
	{
		// 11101000011sssssPP0ttttt001ddddd | Rdd = vrcmpyr(Rss,Rtt*)
		.encoding = { .mask = 0xffe020e0, .op = 0xe8600020 },
		.id = HEX_INS_M2_VRCMPYR_S0C,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vrcmpyr(,*)",
	},
	{
		// 11101010101sssssPP0ttttt100xxxxx | Rxx += vrcmpys(Rss,Rtt):<<1:sat:raw:hi
		.encoding = { .mask = 0xffe020e0, .op = 0xeaa00080 },
		.id = HEX_INS_M2_VRCMPYS_ACC_S1_H,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += vrcmpys(,):<<1:sat:raw:hi",
	},
	{
		// 11101010111sssssPP0ttttt100xxxxx | Rxx += vrcmpys(Rss,Rtt):<<1:sat:raw:lo
		.encoding = { .mask = 0xffe020e0, .op = 0xeae00080 },
		.id = HEX_INS_M2_VRCMPYS_ACC_S1_L,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += vrcmpys(,):<<1:sat:raw:lo",
	},
	{
		// 11101000101sssssPP0ttttt100ddddd | Rdd = vrcmpys(Rss,Rtt):<<1:sat:raw:hi
		.encoding = { .mask = 0xffe020e0, .op = 0xe8a00080 },
		.id = HEX_INS_M2_VRCMPYS_S1_H,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vrcmpys(,):<<1:sat:raw:hi",
	},
	{
		// 11101000111sssssPP0ttttt100ddddd | Rdd = vrcmpys(Rss,Rtt):<<1:sat:raw:lo
		.encoding = { .mask = 0xffe020e0, .op = 0xe8e00080 },
		.id = HEX_INS_M2_VRCMPYS_S1_L,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vrcmpys(,):<<1:sat:raw:lo",
	},
	{
		// 11101001101sssssPP0ttttt110ddddd | Rd = vrcmpys(Rss,Rtt):<<1:rnd:sat:raw:hi
		.encoding = { .mask = 0xffe020e0, .op = 0xe9a000c0 },
		.id = HEX_INS_M2_VRCMPYS_S1RP_H,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vrcmpys(,):<<1:rnd:sat:raw:hi",
	},
	{
		// 11101001101sssssPP0ttttt111ddddd | Rd = vrcmpys(Rss,Rtt):<<1:rnd:sat:raw:lo
		.encoding = { .mask = 0xffe020e0, .op = 0xe9a000e0 },
		.id = HEX_INS_M2_VRCMPYS_S1RP_L,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vrcmpys(,):<<1:rnd:sat:raw:lo",
	},
	{
		// 11101010000sssssPP0ttttt010xxxxx | Rxx += vrmpyh(Rss,Rtt)
		.encoding = { .mask = 0xffe020e0, .op = 0xea000040 },
		.id = HEX_INS_M2_VRMAC_S0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += vrmpyh(,)",
	},
	{
		// 11101000000sssssPP0ttttt010ddddd | Rdd = vrmpyh(Rss,Rtt)
		.encoding = { .mask = 0xffe020e0, .op = 0xe8000040 },
		.id = HEX_INS_M2_VRMPY_S0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vrmpyh(,)",
	},
	{
		// 11101111100sssssPP0ttttt011xxxxx | Rx ^= xor(Rs,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xef800060 },
		.id = HEX_INS_M2_XOR_XACC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " ^= xor(,)",
	},
	{
		// 11101111010sssssPP0ttttt000xxxxx | Rx &= and(Rs,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xef400000 },
		.id = HEX_INS_M4_AND_AND,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " &= and(,)",
	},
	{
		// 11101111001sssssPP0ttttt001xxxxx | Rx &= and(Rs,~Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xef200020 },
		.id = HEX_INS_M4_AND_ANDN,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " &= and(,~)",
	},
	{
		// 11101111010sssssPP0ttttt001xxxxx | Rx &= or(Rs,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xef400020 },
		.id = HEX_INS_M4_AND_OR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " &= or(,)",
	},
	{
		// 11101111010sssssPP0ttttt010xxxxx | Rx &= xor(Rs,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xef400040 },
		.id = HEX_INS_M4_AND_XOR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " &= xor(,)",
	},
	{
		// 11101111011sssssPP0ttttt000xxxxx | Rx += mpy(Rs,Rt):<<1:sat
		.encoding = { .mask = 0xffe020e0, .op = 0xef600000 },
		.id = HEX_INS_M4_MAC_UP_S1_SAT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += mpy(,):<<1:sat",
	},
	{
		// 11100011000sssssPP0yyyyy000uuuuu | Ry = add(Ru,mpyi(Ryin,Rs))
		.encoding = { .mask = 0xffe020e0, .op = 0xe3000000 },
		.id = HEX_INS_M4_MPYRR_ADDR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,mpyi(,))",
	},
	{
		// 11101111011sssssPP0ttttt001xxxxx | Rx -= mpy(Rs,Rt):<<1:sat
		.encoding = { .mask = 0xffe020e0, .op = 0xef600020 },
		.id = HEX_INS_M4_NAC_UP_S1_SAT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " -= mpy(,):<<1:sat",
	},
	{
		// 11101111010sssssPP0ttttt011xxxxx | Rx |= and(Rs,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xef400060 },
		.id = HEX_INS_M4_OR_AND,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " |= and(,)",
	},
	{
		// 11101111001sssssPP0ttttt000xxxxx | Rx |= and(Rs,~Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xef200000 },
		.id = HEX_INS_M4_OR_ANDN,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " |= and(,~)",
	},
	{
		// 11101111110sssssPP0ttttt000xxxxx | Rx |= or(Rs,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xefc00000 },
		.id = HEX_INS_M4_OR_OR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " |= or(,)",
	},
	{
		// 11101111110sssssPP0ttttt001xxxxx | Rx |= xor(Rs,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xefc00020 },
		.id = HEX_INS_M4_OR_XOR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " |= xor(,)",
	},
	{
		// 11100101010sssssPP0ttttt111ddddd | Rdd = pmpyw(Rs,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xe54000e0 },
		.id = HEX_INS_M4_PMPYW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = pmpyw(,)",
	},
	{
		// 11100111001sssssPP0ttttt111xxxxx | Rxx ^= pmpyw(Rs,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xe72000e0 },
		.id = HEX_INS_M4_PMPYW_ACC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " ^= pmpyw(,)",
	},
	{
		// 11100101110sssssPP0ttttt111ddddd | Rdd = vpmpyh(Rs,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xe5c000e0 },
		.id = HEX_INS_M4_VPMPYH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vpmpyh(,)",
	},
	{
		// 11100111101sssssPP0ttttt111xxxxx | Rxx ^= vpmpyh(Rs,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xe7a000e0 },
		.id = HEX_INS_M4_VPMPYH_ACC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " ^= vpmpyh(,)",
	},
	{
		// 11101010001sssssPP0ttttt110xxxxx | Rxx += vrmpyweh(Rss,Rtt)
		.encoding = { .mask = 0xffe020e0, .op = 0xea2000c0 },
		.id = HEX_INS_M4_VRMPYEH_ACC_S0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += vrmpyweh(,)",
	},
	{
		// 11101010101sssssPP0ttttt110xxxxx | Rxx += vrmpyweh(Rss,Rtt):<<1
		.encoding = { .mask = 0xffe020e0, .op = 0xeaa000c0 },
		.id = HEX_INS_M4_VRMPYEH_ACC_S1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += vrmpyweh(,):<<1",
	},
	{
		// 11101000010sssssPP0ttttt100ddddd | Rdd = vrmpyweh(Rss,Rtt)
		.encoding = { .mask = 0xffe020e0, .op = 0xe8400080 },
		.id = HEX_INS_M4_VRMPYEH_S0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vrmpyweh(,)",
	},
	{
		// 11101000110sssssPP0ttttt100ddddd | Rdd = vrmpyweh(Rss,Rtt):<<1
		.encoding = { .mask = 0xffe020e0, .op = 0xe8c00080 },
		.id = HEX_INS_M4_VRMPYEH_S1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vrmpyweh(,):<<1",
	},
	{
		// 11101010011sssssPP0ttttt110xxxxx | Rxx += vrmpywoh(Rss,Rtt)
		.encoding = { .mask = 0xffe020e0, .op = 0xea6000c0 },
		.id = HEX_INS_M4_VRMPYOH_ACC_S0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += vrmpywoh(,)",
	},
	{
		// 11101010111sssssPP0ttttt110xxxxx | Rxx += vrmpywoh(Rss,Rtt):<<1
		.encoding = { .mask = 0xffe020e0, .op = 0xeae000c0 },
		.id = HEX_INS_M4_VRMPYOH_ACC_S1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += vrmpywoh(,):<<1",
	},
	{
		// 11101000001sssssPP0ttttt010ddddd | Rdd = vrmpywoh(Rss,Rtt)
		.encoding = { .mask = 0xffe020e0, .op = 0xe8200040 },
		.id = HEX_INS_M4_VRMPYOH_S0,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vrmpywoh(,)",
	},
	{
		// 11101000101sssssPP0ttttt010ddddd | Rdd = vrmpywoh(Rss,Rtt):<<1
		.encoding = { .mask = 0xffe020e0, .op = 0xe8a00040 },
		.id = HEX_INS_M4_VRMPYOH_S1,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vrmpywoh(,):<<1",
	},
	{
		// 11101111110sssssPP0ttttt010xxxxx | Rx ^= and(Rs,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xefc00040 },
		.id = HEX_INS_M4_XOR_AND,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " ^= and(,)",
	},
	{
		// 11101111001sssssPP0ttttt010xxxxx | Rx ^= and(Rs,~Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xef200040 },
		.id = HEX_INS_M4_XOR_ANDN,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " ^= and(,~)",
	},
	{
		// 11101111110sssssPP0ttttt011xxxxx | Rx ^= or(Rs,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xefc00060 },
		.id = HEX_INS_M4_XOR_OR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " ^= or(,)",
	},
	{
		// 11101010001sssssPP0ttttt001xxxxx | Rxx += vdmpybsu(Rss,Rtt):sat
		.encoding = { .mask = 0xffe020e0, .op = 0xea200020 },
		.id = HEX_INS_M5_VDMACBSU,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += vdmpybsu(,):sat",
	},
	{
		// 11101000101sssssPP0ttttt001ddddd | Rdd = vdmpybsu(Rss,Rtt):sat
		.encoding = { .mask = 0xffe020e0, .op = 0xe8a00020 },
		.id = HEX_INS_M5_VDMPYBSU,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vdmpybsu(,):sat",
	},
	{
		// 11100111110sssssPP0ttttt001xxxxx | Rxx += vmpybsu(Rs,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xe7c00020 },
		.id = HEX_INS_M5_VMACBSU,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += vmpybsu(,)",
	},
	{
		// 11100111100sssssPP0ttttt001xxxxx | Rxx += vmpybu(Rs,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xe7800020 },
		.id = HEX_INS_M5_VMACBUU,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += vmpybu(,)",
	},
	{
		// 11100101010sssssPP0ttttt001ddddd | Rdd = vmpybsu(Rs,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xe5400020 },
		.id = HEX_INS_M5_VMPYBSU,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vmpybsu(,)",
	},
	{
		// 11100101100sssssPP0ttttt001ddddd | Rdd = vmpybu(Rs,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xe5800020 },
		.id = HEX_INS_M5_VMPYBUU,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vmpybu(,)",
	},
	{
		// 11101010110sssssPP0ttttt001xxxxx | Rxx += vrmpybsu(Rss,Rtt)
		.encoding = { .mask = 0xffe020e0, .op = 0xeac00020 },
		.id = HEX_INS_M5_VRMACBSU,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += vrmpybsu(,)",
	},
	{
		// 11101010100sssssPP0ttttt001xxxxx | Rxx += vrmpybu(Rss,Rtt)
		.encoding = { .mask = 0xffe020e0, .op = 0xea800020 },
		.id = HEX_INS_M5_VRMACBUU,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += vrmpybu(,)",
	},
	{
		// 11101000110sssssPP0ttttt001ddddd | Rdd = vrmpybsu(Rss,Rtt)
		.encoding = { .mask = 0xffe020e0, .op = 0xe8c00020 },
		.id = HEX_INS_M5_VRMPYBSU,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vrmpybsu(,)",
	},
	{
		// 11101000100sssssPP0ttttt001ddddd | Rdd = vrmpybu(Rss,Rtt)
		.encoding = { .mask = 0xffe020e0, .op = 0xe8800020 },
		.id = HEX_INS_M5_VRMPYBUU,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vrmpybu(,)",
	},
	{
		// 11101000111sssssPP0ttttt000ddddd | Rdd = vabsdiffb(Rtt,Rss)
		.encoding = { .mask = 0xffe020e0, .op = 0xe8e00000 },
		.id = HEX_INS_M6_VABSDIFFB,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vabsdiffb(,)",
	},
	{
		// 11101000101sssssPP0ttttt000ddddd | Rdd = vabsdiffub(Rtt,Rss)
		.encoding = { .mask = 0xffe020e0, .op = 0xe8a00000 },
		.id = HEX_INS_M6_VABSDIFFUB,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 15 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vabsdiffub(,)",
	},
	{
		// 11101000011sssssPP0ttttt010ddddd | Rdd = cmpyiw(Rss,Rtt)
		.encoding = { .mask = 0xffe020e0, .op = 0xe8600040 },
		.id = HEX_INS_M7_DCMPYIW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = cmpyiw(,)",
	},
	{
		// 11101010011sssssPP0ttttt010xxxxx | Rxx += cmpyiw(Rss,Rtt)
		.encoding = { .mask = 0xffe020e0, .op = 0xea600040 },
		.id = HEX_INS_M7_DCMPYIW_ACC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += cmpyiw(,)",
	},
	{
		// 11101000111sssssPP0ttttt010ddddd | Rdd = cmpyiw(Rss,Rtt*)
		.encoding = { .mask = 0xffe020e0, .op = 0xe8e00040 },
		.id = HEX_INS_M7_DCMPYIWC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = cmpyiw(,*)",
	},
	{
		// 11101010010sssssPP0ttttt110xxxxx | Rxx += cmpyiw(Rss,Rtt*)
		.encoding = { .mask = 0xffe020e0, .op = 0xea4000c0 },
		.id = HEX_INS_M7_DCMPYIWC_ACC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += cmpyiw(,*)",
	},
	{
		// 11101000100sssssPP0ttttt010ddddd | Rdd = cmpyrw(Rss,Rtt)
		.encoding = { .mask = 0xffe020e0, .op = 0xe8800040 },
		.id = HEX_INS_M7_DCMPYRW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = cmpyrw(,)",
	},
	{
		// 11101010100sssssPP0ttttt010xxxxx | Rxx += cmpyrw(Rss,Rtt)
		.encoding = { .mask = 0xffe020e0, .op = 0xea800040 },
		.id = HEX_INS_M7_DCMPYRW_ACC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += cmpyrw(,)",
	},
	{
		// 11101000110sssssPP0ttttt010ddddd | Rdd = cmpyrw(Rss,Rtt*)
		.encoding = { .mask = 0xffe020e0, .op = 0xe8c00040 },
		.id = HEX_INS_M7_DCMPYRWC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = cmpyrw(,*)",
	},
	{
		// 11101010110sssssPP0ttttt010xxxxx | Rxx += cmpyrw(Rss,Rtt*)
		.encoding = { .mask = 0xffe020e0, .op = 0xeac00040 },
		.id = HEX_INS_M7_DCMPYRWC_ACC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " += cmpyrw(,*)",
	},
	{
		// 11101001001sssssPP0ttttt000ddddd | Rd = cmpyiw(Rss,Rtt):<<1:sat
		.encoding = { .mask = 0xffe020e0, .op = 0xe9200000 },
		.id = HEX_INS_M7_WCMPYIW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = cmpyiw(,):<<1:sat",
	},
	{
		// 11101001101sssssPP0ttttt000ddddd | Rd = cmpyiw(Rss,Rtt):<<1:rnd:sat
		.encoding = { .mask = 0xffe020e0, .op = 0xe9a00000 },
		.id = HEX_INS_M7_WCMPYIW_RND,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = cmpyiw(,):<<1:rnd:sat",
	},
	{
		// 11101001000sssssPP0ttttt100ddddd | Rd = cmpyiw(Rss,Rtt*):<<1:sat
		.encoding = { .mask = 0xffe020e0, .op = 0xe9000080 },
		.id = HEX_INS_M7_WCMPYIWC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = cmpyiw(,*):<<1:sat",
	},
	{
		// 11101001100sssssPP0ttttt100ddddd | Rd = cmpyiw(Rss,Rtt*):<<1:rnd:sat
		.encoding = { .mask = 0xffe020e0, .op = 0xe9800080 },
		.id = HEX_INS_M7_WCMPYIWC_RND,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = cmpyiw(,*):<<1:rnd:sat",
	},
	{
		// 11101001010sssssPP0ttttt000ddddd | Rd = cmpyrw(Rss,Rtt):<<1:sat
		.encoding = { .mask = 0xffe020e0, .op = 0xe9400000 },
		.id = HEX_INS_M7_WCMPYRW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = cmpyrw(,):<<1:sat",
	},
	{
		// 11101001110sssssPP0ttttt000ddddd | Rd = cmpyrw(Rss,Rtt):<<1:rnd:sat
		.encoding = { .mask = 0xffe020e0, .op = 0xe9c00000 },
		.id = HEX_INS_M7_WCMPYRW_RND,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = cmpyrw(,):<<1:rnd:sat",
	},
	{
		// 11101001011sssssPP0ttttt000ddddd | Rd = cmpyrw(Rss,Rtt*):<<1:sat
		.encoding = { .mask = 0xffe020e0, .op = 0xe9600000 },
		.id = HEX_INS_M7_WCMPYRWC,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = cmpyrw(,*):<<1:sat",
	},
	{
		// 11101001111sssssPP0ttttt000ddddd | Rd = cmpyrw(Rss,Rtt*):<<1:rnd:sat
		.encoding = { .mask = 0xffe020e0, .op = 0xe9e00000 },
		.id = HEX_INS_M7_WCMPYRWC_RND,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = cmpyrw(,*):<<1:rnd:sat",
	},
	{ { 0 } },
};

static const HexInsnTemplate templates_normal_0xf[] = {
	{
		// 11110011000sssssPP0ttttt000ddddd | Rd = add(Rs,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xf3000000 },
		.id = HEX_INS_A2_ADD,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,)",
	},
	{
		// 11110110010sssssPP0ttttt000ddddd | Rd = add(Rs,Rt):sat
		.encoding = { .mask = 0xffe020e0, .op = 0xf6400000 },
		.id = HEX_INS_A2_ADDSAT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = add(,):sat",
	},
	{
		// 11110001000sssssPP0ttttt000ddddd | Rd = and(Rs,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xf1000000 },
		.id = HEX_INS_A2_AND,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = and(,)",
	},
	{
		// 11110011100sssssPP0ttttt000ddddd | Rd = combine(Rt.h,Rs.h)
		.encoding = { .mask = 0xffe020e0, .op = 0xf3800000 },
		.id = HEX_INS_A2_COMBINE_HH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(.h,.h)",
	},
	{
		// 11110011101sssssPP0ttttt000ddddd | Rd = combine(Rt.h,Rs.l)
		.encoding = { .mask = 0xffe020e0, .op = 0xf3a00000 },
		.id = HEX_INS_A2_COMBINE_HL,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(.h,.l)",
	},
	{
		// 11110011110sssssPP0ttttt000ddddd | Rd = combine(Rt.l,Rs.h)
		.encoding = { .mask = 0xffe020e0, .op = 0xf3c00000 },
		.id = HEX_INS_A2_COMBINE_LH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(.l,.h)",
	},
	{
		// 11110011111sssssPP0ttttt000ddddd | Rd = combine(Rt.l,Rs.l)
		.encoding = { .mask = 0xffe020e0, .op = 0xf3e00000 },
		.id = HEX_INS_A2_COMBINE_LL,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 14 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(.l,.l)",
	},
	{
		// 11110101000sssssPP0ttttt000ddddd | Rdd = combine(Rs,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xf5000000 },
		.id = HEX_INS_A2_COMBINEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = combine(,)",
	},
	{
		// 11110001001sssssPP0ttttt000ddddd | Rd = or(Rs,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xf1200000 },
		.id = HEX_INS_A2_OR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = or(,)",
	},
	{
		// 11111011000sssssPP0ttttt1uuddddd | if (!Pu) Rd = add(Rs,Rt)
		.encoding = { .mask = 0xffe02080, .op = 0xfb000080 },
		.id = HEX_INS_A2_PADDF,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 5 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 15 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!)  = add(,)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 11111011000sssssPP1ttttt1uuddddd | if (!Pu.new) Rd = add(Rs,Rt)
		.encoding = { .mask = 0xffe02080, .op = 0xfb002080 },
		.id = HEX_INS_A2_PADDFNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 5 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 19 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!.new)  = add(,)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 11111011000sssssPP0ttttt0uuddddd | if (Pu) Rd = add(Rs,Rt)
		.encoding = { .mask = 0xffe02080, .op = 0xfb000000 },
		.id = HEX_INS_A2_PADDT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 5 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 14 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if ()  = add(,)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 11111011000sssssPP1ttttt0uuddddd | if (Pu.new) Rd = add(Rs,Rt)
		.encoding = { .mask = 0xffe02080, .op = 0xfb002000 },
		.id = HEX_INS_A2_PADDTNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 5 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 18 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (.new)  = add(,)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 11111001000sssssPP0ttttt1uuddddd | if (!Pu) Rd = and(Rs,Rt)
		.encoding = { .mask = 0xffe02080, .op = 0xf9000080 },
		.id = HEX_INS_A2_PANDF,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 5 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 15 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!)  = and(,)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 11111001000sssssPP1ttttt1uuddddd | if (!Pu.new) Rd = and(Rs,Rt)
		.encoding = { .mask = 0xffe02080, .op = 0xf9002080 },
		.id = HEX_INS_A2_PANDFNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 5 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 19 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!.new)  = and(,)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 11111001000sssssPP0ttttt0uuddddd | if (Pu) Rd = and(Rs,Rt)
		.encoding = { .mask = 0xffe02080, .op = 0xf9000000 },
		.id = HEX_INS_A2_PANDT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 5 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 14 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if ()  = and(,)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 11111001000sssssPP1ttttt0uuddddd | if (Pu.new) Rd = and(Rs,Rt)
		.encoding = { .mask = 0xffe02080, .op = 0xf9002000 },
		.id = HEX_INS_A2_PANDTNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 5 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 18 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (.new)  = and(,)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 11111001001sssssPP0ttttt1uuddddd | if (!Pu) Rd = or(Rs,Rt)
		.encoding = { .mask = 0xffe02080, .op = 0xf9200080 },
		.id = HEX_INS_A2_PORF,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 5 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 14 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!)  = or(,)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 11111001001sssssPP1ttttt1uuddddd | if (!Pu.new) Rd = or(Rs,Rt)
		.encoding = { .mask = 0xffe02080, .op = 0xf9202080 },
		.id = HEX_INS_A2_PORFNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 5 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 18 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!.new)  = or(,)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 11111001001sssssPP0ttttt0uuddddd | if (Pu) Rd = or(Rs,Rt)
		.encoding = { .mask = 0xffe02080, .op = 0xf9200000 },
		.id = HEX_INS_A2_PORT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 5 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 13 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if ()  = or(,)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 11111001001sssssPP1ttttt0uuddddd | if (Pu.new) Rd = or(Rs,Rt)
		.encoding = { .mask = 0xffe02080, .op = 0xf9202000 },
		.id = HEX_INS_A2_PORTNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 5 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 16 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 17 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (.new)  = or(,)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 11111011001sssssPP0ttttt1uuddddd | if (!Pu) Rd = sub(Rt,Rs)
		.encoding = { .mask = 0xffe02080, .op = 0xfb200080 },
		.id = HEX_INS_A2_PSUBF,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 5 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 15 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!)  = sub(,)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 11111011001sssssPP1ttttt1uuddddd | if (!Pu.new) Rd = sub(Rt,Rs)
		.encoding = { .mask = 0xffe02080, .op = 0xfb202080 },
		.id = HEX_INS_A2_PSUBFNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 5 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 19 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!.new)  = sub(,)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 11111011001sssssPP0ttttt0uuddddd | if (Pu) Rd = sub(Rt,Rs)
		.encoding = { .mask = 0xffe02080, .op = 0xfb200000 },
		.id = HEX_INS_A2_PSUBT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 5 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 14 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if ()  = sub(,)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 11111011001sssssPP1ttttt0uuddddd | if (Pu.new) Rd = sub(Rt,Rs)
		.encoding = { .mask = 0xffe02080, .op = 0xfb202000 },
		.id = HEX_INS_A2_PSUBTNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 5 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 18 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (.new)  = sub(,)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 11111001011sssssPP0ttttt1uuddddd | if (!Pu) Rd = xor(Rs,Rt)
		.encoding = { .mask = 0xffe02080, .op = 0xf9600080 },
		.id = HEX_INS_A2_PXORF,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 5 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 14 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 15 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!)  = xor(,)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 11111001011sssssPP1ttttt1uuddddd | if (!Pu.new) Rd = xor(Rs,Rt)
		.encoding = { .mask = 0xffe02080, .op = 0xf9602080 },
		.id = HEX_INS_A2_PXORFNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 5 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 19 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!.new)  = xor(,)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 11111001011sssssPP0ttttt0uuddddd | if (Pu) Rd = xor(Rs,Rt)
		.encoding = { .mask = 0xffe02080, .op = 0xf9600000 },
		.id = HEX_INS_A2_PXORT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 5 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 13 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 14 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if ()  = xor(,)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 11111001011sssssPP1ttttt0uuddddd | if (Pu.new) Rd = xor(Rs,Rt)
		.encoding = { .mask = 0xffe02080, .op = 0xf9602000 },
		.id = HEX_INS_A2_PXORTNEW,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 5 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 18 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (.new)  = xor(,)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 11110011001sssssPP0ttttt000ddddd | Rd = sub(Rt,Rs)
		.encoding = { .mask = 0xffe020e0, .op = 0xf3200000 },
		.id = HEX_INS_A2_SUB,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = sub(,)",
	},
	{
		// 11110110110sssssPP0ttttt000ddddd | Rd = sub(Rt,Rs):sat
		.encoding = { .mask = 0xffe020e0, .op = 0xf6c00000 },
		.id = HEX_INS_A2_SUBSAT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = sub(,):sat",
	},
	{
		// 11110110000sssssPP0ttttt000ddddd | Rd = vaddh(Rs,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xf6000000 },
		.id = HEX_INS_A2_SVADDH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vaddh(,)",
	},
	{
		// 11110110001sssssPP0ttttt000ddddd | Rd = vaddh(Rs,Rt):sat
		.encoding = { .mask = 0xffe020e0, .op = 0xf6200000 },
		.id = HEX_INS_A2_SVADDHS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vaddh(,):sat",
	},
	{
		// 11110110011sssssPP0ttttt000ddddd | Rd = vadduh(Rs,Rt):sat
		.encoding = { .mask = 0xffe020e0, .op = 0xf6600000 },
		.id = HEX_INS_A2_SVADDUHS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vadduh(,):sat",
	},
	{
		// 11110111000sssssPP0ttttt000ddddd | Rd = vavgh(Rs,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xf7000000 },
		.id = HEX_INS_A2_SVAVGH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vavgh(,)",
	},
	{
		// 11110111001sssssPP0ttttt000ddddd | Rd = vavgh(Rs,Rt):rnd
		.encoding = { .mask = 0xffe020e0, .op = 0xf7200000 },
		.id = HEX_INS_A2_SVAVGHS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vavgh(,):rnd",
	},
	{
		// 11110111011sssssPP0ttttt000ddddd | Rd = vnavgh(Rt,Rs)
		.encoding = { .mask = 0xffe020e0, .op = 0xf7600000 },
		.id = HEX_INS_A2_SVNAVGH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vnavgh(,)",
	},
	{
		// 11110110100sssssPP0ttttt000ddddd | Rd = vsubh(Rt,Rs)
		.encoding = { .mask = 0xffe020e0, .op = 0xf6800000 },
		.id = HEX_INS_A2_SVSUBH,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vsubh(,)",
	},
	{
		// 11110110101sssssPP0ttttt000ddddd | Rd = vsubh(Rt,Rs):sat
		.encoding = { .mask = 0xffe020e0, .op = 0xf6a00000 },
		.id = HEX_INS_A2_SVSUBHS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vsubh(,):sat",
	},
	{
		// 11110110111sssssPP0ttttt000ddddd | Rd = vsubuh(Rt,Rs):sat
		.encoding = { .mask = 0xffe020e0, .op = 0xf6e00000 },
		.id = HEX_INS_A2_SVSUBUHS,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = vsubuh(,):sat",
	},
	{
		// 11110001011sssssPP0ttttt000ddddd | Rd = xor(Rs,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xf1600000 },
		.id = HEX_INS_A2_XOR,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = xor(,)",
	},
	{
		// 11110001100sssssPP0ttttt000ddddd | Rd = and(Rt,~Rs)
		.encoding = { .mask = 0xffe020e0, .op = 0xf1800000 },
		.id = HEX_INS_A4_ANDN,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = and(,~)",
	},
	{
		// 11110001101sssssPP0ttttt000ddddd | Rd = or(Rt,~Rs)
		.encoding = { .mask = 0xffe020e0, .op = 0xf1a00000 },
		.id = HEX_INS_A4_ORN,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = or(,~)",
	},
	{
		// 11110011010sssssPP0ttttt000ddddd | Rd = cmp.eq(Rs,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xf3400000 },
		.id = HEX_INS_A4_RCMPEQ,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = cmp.eq(,)",
	},
	{
		// 11110011011sssssPP0ttttt000ddddd | Rd = !cmp.eq(Rs,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xf3600000 },
		.id = HEX_INS_A4_RCMPNEQ,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = !cmp.eq(,)",
	},
	{
		// 11111101000sssssPP0ttttt1uuddddd | if (!Pu) Rdd = combine(Rs,Rt)
		.encoding = { .mask = 0xffe02080, .op = 0xfd000080 },
		.id = HEX_INS_C2_CCOMBINEWF,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 5 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 18 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 19 },
		},
		.pred = HEX_PRED_FALSE,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!)  = combine(,)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 11111101000sssssPP1ttttt1uuddddd | if (!Pu.new) Rdd = combine(Rs,Rt)
		.encoding = { .mask = 0xffe02080, .op = 0xfd002080 },
		.id = HEX_INS_C2_CCOMBINEWNEWF,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 5 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 5 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 22 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 23 },
		},
		.pred = HEX_PRED_FALSE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_FALSE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (!.new)  = combine(,)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 11111101000sssssPP1ttttt0uuddddd | if (Pu.new) Rdd = combine(Rs,Rt)
		.encoding = { .mask = 0xffe02080, .op = 0xfd002000 },
		.id = HEX_INS_C2_CCOMBINEWNEWT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 5 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 21 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 22 },
		},
		.pred = HEX_PRED_TRUE | HEX_PRED_NEW,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if (.new)  = combine(,)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 11111101000sssssPP0ttttt0uuddddd | if (Pu) Rdd = combine(Rs,Rt)
		.encoding = { .mask = 0xffe02080, .op = 0xfd000000 },
		.id = HEX_INS_C2_CCOMBINEWT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 5 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 4 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 6 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 17 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 18 },
		},
		.pred = HEX_PRED_TRUE,
		.cond = RZ_TYPE_COND_HEX_SCL_TRUE,
		.type = RZ_ANALYSIS_OP_TYPE_COND,
		.syntax = "if ()  = combine(,)",
		.flags = HEX_INSN_TEMPLATE_FLAG_PREDICATED,
	},
	{
		// 11110010000sssssPP0ttttt000000dd | Pd = cmp.eq(Rs,Rt)
		.encoding = { .mask = 0xffe020fc, .op = 0xf2000000 },
		.id = HEX_INS_C2_CMPEQ,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = cmp.eq(,)",
	},
	{
		// 11110010010sssssPP0ttttt000000dd | Pd = cmp.gt(Rs,Rt)
		.encoding = { .mask = 0xffe020fc, .op = 0xf2400000 },
		.id = HEX_INS_C2_CMPGT,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = cmp.gt(,)",
	},
	{
		// 11110010011sssssPP0ttttt000000dd | Pd = cmp.gtu(Rs,Rt)
		.encoding = { .mask = 0xffe020fc, .op = 0xf2600000 },
		.id = HEX_INS_C2_CMPGTU,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = cmp.gtu(,)",
	},
	{
		// 11110100000sssssPP0ttttt0uuddddd | Rd = mux(Pu,Rs,Rt)
		.encoding = { .mask = 0xffe02080, .op = 0xf4000000 },
		.id = HEX_INS_C2_MUX,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x2, 5 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 7 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 8 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 9 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = mux(,,)",
	},
	{
		// 11110010010sssssPP0ttttt000100dd | Pd = !cmp.gt(Rs,Rt)
		.encoding = { .mask = 0xffe020fc, .op = 0xf2400010 },
		.id = HEX_INS_C4_CMPLTE,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = !cmp.gt(,)",
	},
	{
		// 11110010011sssssPP0ttttt000100dd | Pd = !cmp.gtu(Rs,Rt)
		.encoding = { .mask = 0xffe020fc, .op = 0xf2600010 },
		.id = HEX_INS_C4_CMPLTEU,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 13 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = !cmp.gtu(,)",
	},
	{
		// 11110010000sssssPP0ttttt000100dd | Pd = !cmp.eq(Rs,Rt)
		.encoding = { .mask = 0xffe020fc, .op = 0xf2000010 },
		.id = HEX_INS_C4_CMPNEQ,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT, .masks = { { 0x2, 0 } }, .reg_cls = HEX_REG_CLASS_PRED_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 12 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = !cmp.eq(,)",
	},
	{
		// 11110101100sssssPP0ttttt000ddddd | Rdd = packhl(Rs,Rt)
		.encoding = { .mask = 0xffe020e0, .op = 0xf5800000 },
		.id = HEX_INS_S2_PACKHL,
		.ops = {
			{ .info = HEX_OP_TEMPLATE_TYPE_REG | HEX_OP_TEMPLATE_FLAG_REG_OUT | HEX_OP_TEMPLATE_FLAG_REG_PAIR, .masks = { { 0x5, 0 } }, .reg_cls = HEX_REG_CLASS_DOUBLE_REGS, .syntax = 0 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 16 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 10 },
			{ .info = HEX_OP_TEMPLATE_TYPE_REG, .masks = { { 0x5, 8 } }, .reg_cls = HEX_REG_CLASS_INT_REGS, .syntax = 11 },
		},
		.pred = HEX_NOPRED,
		.cond = RZ_TYPE_COND_AL,
		.type = RZ_ANALYSIS_OP_TYPE_NULL,
		.syntax = " = packhl(,)",
	},
	{ { 0 } },
};

static const HexInsnTemplate *templates_normal[] = {
	templates_normal_0x0,
	templates_normal_0x1,
	templates_normal_0x2,
	templates_normal_0x3,
	templates_normal_0x4,
	templates_normal_0x5,
	templates_normal_0x6,
	templates_normal_0x7,
	templates_normal_0x8,
	templates_normal_0x9,
	templates_normal_0xa,
	templates_normal_0xb,
	templates_normal_0xc,
	templates_normal_0xd,
	templates_normal_0xe,
	templates_normal_0xf
};

static inline bool is_last_instr(const ut8 parse_bits) {
	// Duplex instr. (parse bits = 0) are always the last.
	return ((parse_bits == 0x3) || (parse_bits == 0x0));
}

/**
 * \param masks array of exactly HEX_OP_MASKS_MAX items, ordered ascending by shift,
 *		optionally terminated earlier by an entry with bits = 0
 */
static ut32 hex_op_masks_extract(const HexOpMask *masks, ut32 val, RZ_OUT ut32 *bits_total) {
	ut8 off = 0;
	ut32 r = 0;
	for (size_t i = 0; i < HEX_OP_MASKS_MAX; i++) {
		const HexOpMask *m = &masks[i];
		if (!m->bits) {
			break;
		}
		r |= ((val >> m->shift) & rz_num_bitmask(m->bits)) << off;
		off += m->bits;
	}
	if (bits_total) {
		*bits_total = off;
	}
	return r;
}

/**
 * \return the index of the immediate operand used as the jump target or -1 if there is none.
 */
static int get_jmp_target_imm_op_index(const HexInsnTemplate *tpl) {
	if (!(tpl->flags & HEX_INSN_TEMPLATE_FLAG_HAS_JMP_TGT)) {
		return -1;
	}
	bool has_imm = false;
	size_t i;
	for (i = 0; i < HEX_MAX_OPERANDS; i++) {
		const HexOpTemplate *op = &tpl->ops[i];
		HexOpTemplateType type = op->info & HEX_OP_TEMPLATE_TYPE_MASK;
		if (type == HEX_OP_TEMPLATE_TYPE_NONE) {
			break;
		}
		if (type == HEX_OP_TEMPLATE_TYPE_IMM) {
			has_imm = true;
			if (op->info & HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE) {
				return i;
			}
		}
	}
	return has_imm && i == 1 ? 0 : -1;
}

static void hex_disasm_with_templates(const HexInsnTemplate *tpl, HexState *state, ut32 hi_u32, RZ_INOUT HexInsn *hi, ut64 addr, HexPkt *pkt) {
	bool print_reg_alias = rz_config_get_b(state->cfg, "plugins.hexagon.reg.alias");
	bool show_hash = rz_config_get_b(state->cfg, "plugins.hexagon.imm.hash");
	bool sign_nums = rz_config_get_b(state->cfg, "plugins.hexagon.imm.sign");
	char signed_imm[HEX_MAX_OPERANDS][32];
	// Find the right template
	for (; tpl->id; tpl++) {
		if ((hi_u32 & tpl->encoding.mask) == tpl->encoding.op) {
			break;
		}
	}
	if (!tpl->id) {
		// unknown/invalid
		return;
	}
	hi->instruction = tpl->id;
	hi->opcode = hi_u32;
	hi->parse_bits = (hi_u32 & HEX_PARSE_BITS_MASK) >> 14;
	hi->pred = tpl->pred;

	// textual disasm is built by copying tpl->syntax while inserting the ops at the right positions
	RzStrBuf sb;
	rz_strbuf_init(&sb);
	size_t syntax_cur = 0;
	size_t syntax_len = strlen(tpl->syntax);

	hi->op_count = 0;
	for (size_t i = 0; i < HEX_MAX_OPERANDS; i++) {
		const HexOpTemplate *op = &tpl->ops[i];
		HexOpTemplateType type = op->info & HEX_OP_TEMPLATE_TYPE_MASK;
		if (type == HEX_OP_TEMPLATE_TYPE_NONE) {
			break;
		}

		if (op->syntax > syntax_cur && op->syntax <= syntax_len) {
			rz_strbuf_append_n(&sb, tpl->syntax + syntax_cur, op->syntax - syntax_cur);
			syntax_cur = op->syntax;
		}

		hi->op_count++;
		hi->ops[i].attr = 0;
		switch (type) {
		case HEX_OP_TEMPLATE_TYPE_IMM: {
			hi->ops[i].type = HEX_OP_TYPE_IMM;
			ut32 bits_total;
			hi->ops[i].op.imm = hex_op_masks_extract(op->masks, hi_u32, &bits_total) << op->imm_scale;
			hi->ops[i].shift = op->imm_scale;
			if (op->imm_scale) {
				hi->ops[i].attr |= HEX_OP_IMM_SCALED;
			}
			if (op->info & HEX_OP_TEMPLATE_FLAG_IMM_SIGNED) {
				ut32 shift = bits_total + op->imm_scale - 1;
				rz_warn_if_fail(shift < 64);
				if (hi->ops[i].op.imm & (1ull << shift)) {
					hi->ops[i].op.imm |= UT64_MAX << shift;
				}
			}
			if (op->info & HEX_OP_TEMPLATE_FLAG_IMM_EXTENDABLE) {
				hex_extend_op(state, &hi->ops[i], false, addr);
			}
			// textual disasm
			const char *h = show_hash ? ((op->info & HEX_OP_TEMPLATE_FLAG_IMM_DOUBLE_HASH) ? "##" : "#") : "";
			if (op->info & HEX_OP_TEMPLATE_FLAG_IMM_PC_RELATIVE) {
				rz_strbuf_appendf(&sb, "0x%" PFMT32x, pkt->pkt_addr + (st32)hi->ops[i].op.imm);
			} else if (op->info & HEX_OP_TEMPLATE_FLAG_IMM_SIGNED) {
				if (sign_nums && ((st32)hi->ops[i].op.imm) < 0) {
					char tmp[28] = { 0 };
					rz_hex_ut2st_str(hi->ops[i].op.imm, tmp, 28);
					snprintf(signed_imm[i], sizeof(signed_imm[i]), "%s%s", h, tmp);
				} else {
					snprintf(signed_imm[i], sizeof(signed_imm[i]), "%s0x%" PFMT32x, h, (st32)hi->ops[i].op.imm);
				}
				rz_strbuf_append(&sb, signed_imm[i]);
			} else {
				rz_strbuf_appendf(&sb, "%s0x%" PFMT32x, h, (ut32)hi->ops[i].op.imm);
			}
			break;
		}
		case HEX_OP_TEMPLATE_TYPE_IMM_CONST:
			hi->ops[i].type = HEX_OP_TYPE_IMM;
			hi->ops[i].op.imm = -1;
			// textual disasm
			rz_strbuf_append(&sb, "-1");
			break;
		case HEX_OP_TEMPLATE_TYPE_REG:
			hi->ops[i].type = HEX_OP_TYPE_REG;
			hi->ops[i].op.reg = hex_op_masks_extract(op->masks, hi_u32, NULL);
			if (op->info & HEX_OP_TEMPLATE_FLAG_REG_OUT) {
				hi->ops[i].attr |= HEX_OP_REG_OUT;
			}
			if (op->info & HEX_OP_TEMPLATE_FLAG_REG_PAIR) {
				hi->ops[i].attr |= HEX_OP_REG_PAIR;
			}
			if (op->info & HEX_OP_TEMPLATE_FLAG_REG_QUADRUPLE) {
				hi->ops[i].attr |= HEX_OP_REG_QUADRUPLE;
			}
			// textual disasm
			int regidx = hi->ops[i].op.reg;
			if (op->info & HEX_OP_TEMPLATE_FLAG_REG_N_REG) {
				regidx = resolve_n_register(hi->ops[i].op.reg, hi->addr, pkt);
			}
			rz_strbuf_append(&sb, hex_get_reg_in_class(op->reg_cls, regidx, print_reg_alias));
			break;
		default:
			rz_warn_if_reached();
			break;
		}
	}

	// Textual disassembly
	if (syntax_len > syntax_cur) {
		rz_strbuf_append_n(&sb, tpl->syntax + syntax_cur, syntax_len - syntax_cur);
	}
	strncpy(hi->mnem_infix, rz_strbuf_get(&sb), sizeof(hi->mnem_infix) - 1);
	snprintf(hi->mnem, sizeof(hi->mnem), "%s%s%s", hi->pkt_info.mnem_prefix, hi->mnem_infix, hi->pkt_info.mnem_postfix);

	// RzAnalysisOp contents
	hi->ana_op.addr = hi->addr;
	hi->ana_op.id = hi->instruction;
	hi->ana_op.size = 4;
	hi->ana_op.cond = tpl->cond;
	hi->ana_op.type = hi->ana_op.prefix == RZ_ANALYSIS_OP_PREFIX_HWLOOP_END ? RZ_ANALYSIS_OP_TYPE_CJMP : tpl->type;
	int jmp_target_imm_op_index = get_jmp_target_imm_op_index(tpl);
	if (jmp_target_imm_op_index >= 0) {
		if (!(tpl->flags & HEX_INSN_TEMPLATE_FLAG_CALL) && !(tpl->flags & HEX_INSN_TEMPLATE_FLAG_PREDICATED)) {
			pkt->is_eob = true;
		}
		hi->ana_op.jump = pkt->pkt_addr + (st32)hi->ops[jmp_target_imm_op_index].op.imm;
		if (tpl->flags & HEX_INSN_TEMPLATE_FLAG_PREDICATED) {
			hi->ana_op.fail = hi->ana_op.addr + 4;
		}
		if (tpl->flags & HEX_INSN_TEMPLATE_FLAG_LOOP_BEGIN) {
			if (tpl->flags & HEX_INSN_TEMPLATE_FLAG_LOOP_0) {
				pkt->hw_loop0_addr = hi->ana_op.jump;
			} else if (tpl->flags & HEX_INSN_TEMPLATE_FLAG_LOOP_1) {
				pkt->hw_loop1_addr = hi->ana_op.jump;
			}
		}
	}
	for (size_t i = 0; i < RZ_MIN(hi->op_count, RZ_ARRAY_SIZE(hi->ana_op.analysis_vals)); i++) {
		const HexOpTemplate *op = &tpl->ops[i];
		HexOpTemplateType type = op->info & HEX_OP_TEMPLATE_TYPE_MASK;
		if (jmp_target_imm_op_index >= 0 && type == HEX_OP_TEMPLATE_TYPE_IMM) {
			hi->ana_op.val = hi->ana_op.jump;
			hi->ana_op.analysis_vals[i].imm = hi->ana_op.jump;
		} else if (tpl->id == HEX_INS_J2_JUMPR) {
			// jumpr Rs is sometimes used as jumpr R31.
			// Block analysis needs to check it to recognize if this jump is a return.
			hi->ana_op.analysis_vals[0].plugin_specific = hi->ops[0].op.reg;
		} else if (type == HEX_OP_TEMPLATE_TYPE_IMM) {
			hi->ana_op.analysis_vals[i].imm = hi->ops[i].op.imm;
		}
	}

	if (tpl->id == HEX_INS_A4_EXT) {
		hex_extend_op(state, &(hi->ops[0]), true, addr);
	}
}

int hexagon_disasm_instruction(HexState *state, const ut32 hi_u32, RZ_INOUT HexInsn *hi, HexPkt *pkt) {
	ut32 addr = hi->addr;
	if (hi->pkt_info.last_insn) {
		switch (hex_get_loop_flag(pkt)) {
		default: break;
		case HEX_LOOP_01:
			hi->ana_op.prefix = RZ_ANALYSIS_OP_PREFIX_HWLOOP_END;
			hi->ana_op.fail = pkt->hw_loop0_addr;
			hi->ana_op.jump = pkt->hw_loop1_addr;
			hi->ana_op.val = hi->ana_op.jump;
			break;
		case HEX_LOOP_0:
			hi->ana_op.prefix = RZ_ANALYSIS_OP_PREFIX_HWLOOP_END;
			hi->ana_op.jump = pkt->hw_loop0_addr;
			hi->ana_op.val = hi->ana_op.jump;
			break;
		case HEX_LOOP_1:
			hi->ana_op.prefix = RZ_ANALYSIS_OP_PREFIX_HWLOOP_END;
			hi->ana_op.jump = pkt->hw_loop1_addr;
			hi->ana_op.val = hi->ana_op.jump;
			break;
		}
	}
	if (hi_u32 != 0x00000000) {
		if (((hi_u32 >> 14) & 0x3) == 0) {
			// DUPLEXES
			ut32 cat = (((hi_u32 >> 29) & 0xF) << 1) | ((hi_u32 >> 13) & 1);
			if (cat < 0xf) {
				hex_disasm_with_templates(templates_duplex[cat], state, hi_u32, hi, addr, pkt);
				hi->duplex = true;
			}
		} else {
			ut32 cat = (hi_u32 >> 28) & 0xF;
			hex_disasm_with_templates(templates_normal[cat], state, hi_u32, hi, addr, pkt);
		}
	}
	if (pkt->is_eob && is_last_instr(hi->parse_bits)) {
		hi->ana_op.eob = true;
	}
	if (hi->instruction == HEX_INS_INVALID_DECODE) {
		hi->parse_bits = ((hi_u32)&0xc000) >> 14;
		hi->ana_op.type = RZ_ANALYSIS_OP_TYPE_ILL;
		sprintf(hi->mnem_infix, "invalid");
		sprintf(hi->mnem, "%s%s%s", hi->pkt_info.mnem_prefix, hi->mnem_infix, hi->pkt_info.mnem_postfix);
	}
	return 4;
}
