diff --git a/.github/workflows/auto-sync.yml b/.github/workflows/auto-sync.yml
index 4082c0b42..7d98e1972 100644
--- a/.github/workflows/auto-sync.yml
+++ b/.github/workflows/auto-sync.yml
@@ -79,6 +79,7 @@ jobs:
./src/autosync/ASUpdater.py -d -a LoongArch -s IncGen
./src/autosync/ASUpdater.py -d -a Mips -s IncGen
./src/autosync/ASUpdater.py -d -a SystemZ -s IncGen
+ ./src/autosync/ASUpdater.py -d -a Xtensa -s IncGen
- name: CppTranslator - Patch tests
run: |
@@ -96,3 +97,4 @@ jobs:
./src/autosync/ASUpdater.py --ci -d -a LoongArch -s Translate
./src/autosync/ASUpdater.py --ci -d -a Mips -s Translate
./src/autosync/ASUpdater.py --ci -d -a SystemZ -s Translate
+ ./src/autosync/ASUpdater.py --ci -d -a Xtensa -s Translate
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 7e8ea5469..edc49fbbf 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -5,6 +5,8 @@ if(CMAKE_SOURCE_DIR STREQUAL CMAKE_BINARY_DIR)
message(FATAL_ERROR "In-tree builds are not supported. Run CMake from a separate directory: cmake -B build")
endif()
+set(BUILD_RPATH_USE_ORIGIN true)
+
# Detect whether capstone is compiled as top-level or a subdirectory
set(PROJECT_IS_TOP_LEVEL OFF)
if(CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_SOURCE_DIR)
@@ -85,8 +87,8 @@ if(APPLE AND NOT CAPSTONE_BUILD_MACOS_THIN)
set(CMAKE_OSX_ARCHITECTURES "x86_64;arm64")
endif()
-set(SUPPORTED_ARCHITECTURES ARM AARCH64 M68K MIPS PPC SPARC SYSTEMZ XCORE X86 TMS320C64X M680X EVM MOS65XX WASM BPF RISCV SH TRICORE ALPHA HPPA LOONGARCH)
-set(SUPPORTED_ARCHITECTURE_LABELS ARM AARCH64 M68K MIPS PowerPC Sparc SystemZ XCore x86 TMS320C64x M680x EVM MOS65XX WASM BPF RISCV SH TriCore Alpha HPPA LoongArch)
+set(SUPPORTED_ARCHITECTURES ARM AARCH64 M68K MIPS PPC SPARC SYSTEMZ XCORE X86 TMS320C64X M680X EVM MOS65XX WASM BPF RISCV SH TRICORE ALPHA HPPA LOONGARCH XTENSA)
+set(SUPPORTED_ARCHITECTURE_LABELS ARM AARCH64 M68K MIPS PowerPC Sparc SystemZ XCore x86 TMS320C64x M680x EVM MOS65XX WASM BPF RISCV SH TriCore Alpha HPPA LoongArch Xtensa)
# If building for OSX it's best to allow CMake to handle building both architectures
if(APPLE AND NOT CAPSTONE_BUILD_MACOS_THIN)
@@ -211,6 +213,7 @@ set(HEADERS_COMMON
include/capstone/alpha.h
include/capstone/hppa.h
include/capstone/loongarch.h
+ include/capstone/xtensa.h
)
## architecture support
@@ -680,6 +683,22 @@ if (CAPSTONE_LOONGARCH_SUPPORT)
)
endif ()
+if(CAPSTONE_XTENSA_SUPPORT)
+ add_definitions(-DCAPSTONE_HAS_XTENSA)
+ set(SOURCES_XTENSA
+ arch/Xtensa/XtensaDisassembler.c
+ arch/Xtensa/XtensaInstPrinter.c
+ arch/Xtensa/XtensaMapping.c
+ arch/Xtensa/XtensaModule.c
+ )
+ set(HEADERS_XTENSA
+ arch/Xtensa/XtensaDisassembler.h
+ arch/Xtensa/XtensaInstPrinter.h
+ arch/Xtensa/XtensaMapping.h
+ arch/Xtensa/XtensaModule.h
+ )
+endif()
+
if (CAPSTONE_OSXKERNEL_SUPPORT)
add_definitions(-DCAPSTONE_HAS_OSXKERNEL)
endif()
@@ -707,6 +726,7 @@ set(ALL_SOURCES
${SOURCES_ALPHA}
${SOURCES_HPPA}
${SOURCES_LOONGARCH}
+ ${SOURCES_XTENSA}
)
set(ALL_HEADERS
@@ -733,6 +753,7 @@ set(ALL_HEADERS
${HEADERS_ALPHA}
${HEADERS_HPPA}
${HEADERS_LOONGARCH}
+ ${HEADERS_XTENSA}
)
## properties
@@ -785,6 +806,7 @@ source_group("Source\\TriCore" FILES ${SOURCES_TRICORE})
source_group("Source\\Alpha" FILES ${SOURCES_ALPHA})
source_group("Source\\HPPA" FILES ${SOURCES_HPPA})
source_group("Source\\LoongArch" FILES ${SOURCES_LOONGARCH})
+source_group("Source\\Xtensa" FILES ${SOURCES_XTENSA})
source_group("Include\\Common" FILES ${HEADERS_COMMON})
source_group("Include\\Engine" FILES ${HEADERS_ENGINE})
@@ -809,6 +831,7 @@ source_group("Include\\TriCore" FILES ${HEADERS_TRICORE})
source_group("Include\\Alpha" FILES ${HEADERS_ALPHA})
source_group("Include\\HPPA" FILES ${HEADERS_HPPA})
source_group("Include\\LoongArch" FILES ${HEADERS_LOONGARCH})
+source_group("Include\\Xtensa" FILES ${HEADERS_XTENSA})
## installation
if(CAPSTONE_INSTALL)
diff --git a/CREDITS.TXT b/CREDITS.TXT
index e725a2c31..6f4aff5af 100644
--- a/CREDITS.TXT
+++ b/CREDITS.TXT
@@ -87,6 +87,7 @@ david942j: BPF (both classic and extended) architecture.
fanfuqiang & citypw & porto703 : RISCV architecture.
Josh "blacktop" Maine: Arm64 architecture improvements.
Finn Wilkinson: AArch64 update to Armv9.2-a (SME + SVE2 support)
-Billow & Sidneyp : TriCore architecture.
+Billow & Sidneyp: TriCore architecture.
Dmitry Sibirtsev: Alpha & HPPA architecture.
-Jiajie Chen & Yanglin Xun: LoongArch architecture.
\ No newline at end of file
+Jiajie Chen & Yanglin Xun: LoongArch architecture.
+Billow: Xtensa architecture.
diff --git a/MCInst.h b/MCInst.h
index 1c69c7564..7e67321a2 100644
--- a/MCInst.h
+++ b/MCInst.h
@@ -27,7 +27,7 @@
typedef struct MCInst MCInst;
typedef struct cs_struct cs_struct;
typedef struct MCOperand MCOperand;
-typedef unsigned MCRegister;
+typedef void MCExpr;
/// MCOperand - Instances of this class represent operands of the MCInst class.
/// This is a simple discriminated union.
diff --git a/MCRegisterInfo.h b/MCRegisterInfo.h
index 8432e5e2c..ab755b45c 100644
--- a/MCRegisterInfo.h
+++ b/MCRegisterInfo.h
@@ -20,11 +20,13 @@
#define CS_LLVM_MC_MCREGISTERINFO_H
#include "capstone/platform.h"
+#include "SStream.h"
/// An unsigned integer type large enough to represent all physical registers,
/// but not necessarily virtual registers.
typedef int16_t MCPhysReg;
typedef const MCPhysReg* iterator;
+typedef uint16_t MCRegister;
typedef struct MCRegisterClass2 {
iterator RegsBegin;
diff --git a/Makefile b/Makefile
index 12214c28d..198bc3031 100644
--- a/Makefile
+++ b/Makefile
@@ -355,11 +355,21 @@ ifneq (,$(findstring loongarch,$(CAPSTONE_ARCHS)))
LIBOBJ_LOONGARCH += $(LIBSRC_LOONGARCH:%.c=$(OBJDIR)/%.o)
endif
+DEP_XTENSA =
+DEP_XTENSA += $(wildcard arch/Xtensa/Xtensa*.inc)
+
+LIBOBJ_XTENSA =
+ifneq (,$(findstring xtensa,$(CAPSTONE_ARCHS)))
+ CFLAGS += -DCAPSTONE_HAS_XTENSA
+ LIBSRC_XTENSA += $(wildcard arch/Xtensa/Xtensa*.c)
+ LIBOBJ_XTENSA += $(LIBSRC_XTENSA:%.c=$(OBJDIR)/%.o)
+endif
+
LIBOBJ =
LIBOBJ += $(OBJDIR)/cs.o $(OBJDIR)/utils.o $(OBJDIR)/SStream.o $(OBJDIR)/MCInstrDesc.o $(OBJDIR)/MCRegisterInfo.o $(OBJDIR)/MCInst.o $(OBJDIR)/MCInstPrinter.o $(OBJDIR)/Mapping.o
LIBOBJ += $(LIBOBJ_ARM) $(LIBOBJ_AARCH64) $(LIBOBJ_M68K) $(LIBOBJ_MIPS) $(LIBOBJ_PPC) $(LIBOBJ_RISCV) $(LIBOBJ_SPARC) $(LIBOBJ_SYSZ) $(LIBOBJ_SH)
LIBOBJ += $(LIBOBJ_X86) $(LIBOBJ_XCORE) $(LIBOBJ_TMS320C64X) $(LIBOBJ_M680X) $(LIBOBJ_EVM) $(LIBOBJ_MOS65XX) $(LIBOBJ_WASM) $(LIBOBJ_BPF)
-LIBOBJ += $(LIBOBJ_TRICORE) $(LIBOBJ_ALPHA) $(LIBOBJ_HPPA) $(LIBOBJ_LOONGARCH)
+LIBOBJ += $(LIBOBJ_TRICORE) $(LIBOBJ_ALPHA) $(LIBOBJ_HPPA) $(LIBOBJ_LOONGARCH) $(LIBOBJ_XTENSA)
ifeq ($(PKG_EXTRA),)
@@ -492,6 +502,7 @@ $(LIBOBJ_TRICORE): $(DEP_TRICORE)
$(LIBOBJ_ALPHA): $(DEP_ALPHA)
$(LIBOBJ_HPPA): $(DEP_HPPA)
$(LIBOBJ_LOONGARCH): $(DEP_LOONGARCH)
+$(LIBOBJ_XTENSA): $(DEP_XTENSA)
ifeq ($(CAPSTONE_STATIC),yes)
$(ARCHIVE): $(LIBOBJ)
diff --git a/Mapping.c b/Mapping.c
index d0303f862..1fa4d3a54 100644
--- a/Mapping.c
+++ b/Mapping.c
@@ -347,6 +347,7 @@ DEFINE_get_detail_op(loongarch, LoongArch);
DEFINE_get_detail_op(mips, Mips);
DEFINE_get_detail_op(riscv, RISCV);
DEFINE_get_detail_op(systemz, SystemZ);
+DEFINE_get_detail_op(xtensa, Xtensa);
/// Returns true if for this architecture the
/// alias operands should be filled.
diff --git a/Mapping.h b/Mapping.h
index a27cab833..f06c2cf0f 100644
--- a/Mapping.h
+++ b/Mapping.h
@@ -142,6 +142,7 @@ DECL_get_detail_op(loongarch, LoongArch);
DECL_get_detail_op(mips, Mips);
DECL_get_detail_op(riscv, RISCV);
DECL_get_detail_op(systemz, SystemZ);
+DECL_get_detail_op(xtensa, Xtensa);
/// Increments the detail->arch.op_count by one.
#define DEFINE_inc_detail_op_count(arch, ARCH) \
@@ -177,6 +178,8 @@ DEFINE_inc_detail_op_count(riscv, RISCV);
DEFINE_dec_detail_op_count(riscv, RISCV);
DEFINE_inc_detail_op_count(systemz, SystemZ);
DEFINE_dec_detail_op_count(systemz, SystemZ);
+DEFINE_inc_detail_op_count(xtensa, Xtensa);
+DEFINE_dec_detail_op_count(xtensa, Xtensa);
/// Returns true if a memory operand is currently edited.
static inline bool doing_mem(const MCInst *MI)
@@ -208,6 +211,7 @@ DEFINE_get_arch_detail(loongarch, LoongArch);
DEFINE_get_arch_detail(mips, Mips);
DEFINE_get_arch_detail(riscv, RISCV);
DEFINE_get_arch_detail(systemz, SystemZ);
+DEFINE_get_arch_detail(xtensa, Xtensa);
#define DEFINE_check_safe_inc(Arch, ARCH) \
static inline void Arch##_check_safe_inc(const MCInst *MI) { \
diff --git a/MathExtras.h b/MathExtras.h
index 19dfba4f6..847b56602 100644
--- a/MathExtras.h
+++ b/MathExtras.h
@@ -53,9 +53,9 @@ static inline bool isUIntN(unsigned N, uint64_t x) {
/// isIntN - Checks if an signed integer fits into the given (dynamic)
/// bit width.
-//static inline bool isIntN(unsigned N, int64_t x) {
-// return N >= 64 || (-(INT64_C(1)<<(N-1)) <= x && x < (INT64_C(1)<<(N-1)));
-//}
+static inline bool isIntN(unsigned N, int64_t x) {
+ return N >= 64 || (-(INT64_C(1)<<(N-1)) <= x && x < (INT64_C(1)<<(N-1)));
+}
/// isMask_32 - This function returns true if the argument is a sequence of ones
/// starting at the least significant bit with the remainder zero (32 bit
diff --git a/README.md b/README.md
index 313dc3f2e..e56293847 100644
--- a/README.md
+++ b/README.md
@@ -7,7 +7,8 @@ Capstone Engine
[![oss-fuzz Status](https://oss-fuzz-build-logs.storage.googleapis.com/badges/capstone.svg)](https://bugs.chromium.org/p/oss-fuzz/issues/list?sort=-opened&can=1&q=proj:capstone)
> [!TIP]
-> Welcome to join our community group! [](https://t.me/CapstoneEngine)
+> Welcome to join our community group!
+> [](https://t.me/CapstoneEngine)
Capstone is a disassembly framework with the target of becoming the ultimate
disasm engine for binary analysis and reversing in the security community.
@@ -17,7 +18,7 @@ Capstone offers some unparalleled features:
- Support multiple hardware architectures: ARM, AArch64, Alpha, BPF, Ethereum VM,
LoongArch, HP PA-RISC (HPPA), M68K, M680X, Mips, MOS65XX, PPC, RISC-V(rv32G/rv64G), SH,
- Sparc, SystemZ, TMS320C64X, TriCore, Webassembly, XCore and X86 (16, 32, 64).
+ Sparc, SystemZ, TMS320C64X, TriCore, Webassembly, XCore and X86 (16, 32, 64), Xtensa.
- Having clean/simple/lightweight/intuitive architecture-neutral API.
diff --git a/arch/SystemZ/SystemZDisassembler.c b/arch/SystemZ/SystemZDisassembler.c
index 359e11be7..448e6cb0b 100644
--- a/arch/SystemZ/SystemZDisassembler.c
+++ b/arch/SystemZ/SystemZDisassembler.c
@@ -381,10 +381,16 @@ static DecodeStatus getInstruction(MCInst *MI, uint16_t *Size, const uint8_t *By
Table = DecoderTable16;
Inst = readBytes16(MI, Bytes);
} else if (Bytes[0] < 0xc0) {
+ if (BytesLen < 4) {
+ return MCDisassembler_Fail;
+ }
*Size = 4;
Table = DecoderTable32;
Inst = readBytes32(MI, Bytes);
} else {
+ if (BytesLen < 6) {
+ return MCDisassembler_Fail;
+ }
*Size = 6;
Table = DecoderTable48;
Inst = readBytes48(MI, Bytes);
diff --git a/arch/Xtensa/XtensaDisassembler.c b/arch/Xtensa/XtensaDisassembler.c
new file mode 100644
index 000000000..df56c75aa
--- /dev/null
+++ b/arch/Xtensa/XtensaDisassembler.c
@@ -0,0 +1,298 @@
+/* Capstone Disassembly Engine, http://www.capstone-engine.org */
+/* By Nguyen Anh Quynh , 2013-2022, */
+/* Rot127 2022-2023 */
+/* Automatically translated source file from LLVM. */
+
+/* LLVM-commit: */
+/* LLVM-tag: */
+
+/* Only small edits allowed. */
+/* For multiple similar edits, please create a Patch for the translator. */
+
+/* Capstone's C++ file translator: */
+/* https://github.com/capstone-engine/capstone/tree/next/suite/auto-sync */
+
+//===-- XtensaDisassembler.cpp - Disassembler for Xtensa ------------------===//
+//
+// The LLVM Compiler Infrastructure
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+//
+// This file implements the XtensaDisassembler class.
+//
+//===----------------------------------------------------------------------===//
+
+#include
+#include
+#include
+#include
+
+#include "../../MathExtras.h"
+#include "../../MCDisassembler.h"
+#include "../../MCFixedLenDisassembler.h"
+#include "../../SStream.h"
+#include "../../cs_priv.h"
+#include "../../utils.h"
+#include "priv.h"
+
+#define GET_INSTRINFO_MC_DESC
+#include "XtensaGenInstrInfo.inc"
+
+#define CONCAT(a, b) CONCAT_(a, b)
+#define CONCAT_(a, b) a##_##b
+
+#define DEBUG_TYPE "Xtensa-disassembler"
+
+static const unsigned ARDecoderTable[] = {
+ Xtensa_A0, Xtensa_SP, Xtensa_A2, Xtensa_A3, Xtensa_A4, Xtensa_A5,
+ Xtensa_A6, Xtensa_A7, Xtensa_A8, Xtensa_A9, Xtensa_A10, Xtensa_A11,
+ Xtensa_A12, Xtensa_A13, Xtensa_A14, Xtensa_A15
+};
+
+static DecodeStatus DecodeARRegisterClass(MCInst *Inst, uint64_t RegNo,
+ uint64_t Address, const void *Decoder)
+{
+ if (RegNo >= ARR_SIZE(ARDecoderTable))
+ return MCDisassembler_Fail;
+
+ unsigned Reg = ARDecoderTable[RegNo];
+ MCOperand_CreateReg0(Inst, (Reg));
+ return MCDisassembler_Success;
+}
+
+static const unsigned SRDecoderTable[] = { Xtensa_SAR, 3 };
+
+static DecodeStatus DecodeSRRegisterClass(MCInst *Inst, uint64_t RegNo,
+ uint64_t Address, const void *Decoder)
+{
+ if (RegNo > 255)
+ return MCDisassembler_Fail;
+
+ for (unsigned i = 0; i + 1 < ARR_SIZE(SRDecoderTable); i += 2) {
+ if (SRDecoderTable[i + 1] == RegNo) {
+ unsigned Reg = SRDecoderTable[i];
+ MCOperand_CreateReg0(Inst, (Reg));
+ return MCDisassembler_Success;
+ }
+ }
+
+ return MCDisassembler_Fail;
+}
+
+static bool tryAddingSymbolicOperand(int64_t Value, bool isBranch,
+ uint64_t Address, uint64_t Offset,
+ uint64_t InstSize, MCInst *MI,
+ const void *Decoder)
+{
+ // return Dis->tryAddingSymbolicOperand(MI, Value, Address, isBranch,
+ // Offset, /*OpSize=*/0, InstSize);
+ return true;
+}
+
+static DecodeStatus decodeCallOperand(MCInst *Inst, uint64_t Imm,
+ int64_t Address, const void *Decoder)
+{
+ CS_ASSERT(isUIntN(18, Imm) && "Invalid immediate");
+ MCOperand_CreateImm0(Inst, (SignExtend64((Imm << 2), 20)));
+ return MCDisassembler_Success;
+}
+
+static DecodeStatus decodeJumpOperand(MCInst *Inst, uint64_t Imm,
+ int64_t Address, const void *Decoder)
+{
+ CS_ASSERT(isUIntN(18, Imm) && "Invalid immediate");
+ MCOperand_CreateImm0(Inst, (SignExtend64((Imm), 18)));
+ return MCDisassembler_Success;
+}
+
+static DecodeStatus decodeBranchOperand(MCInst *Inst, uint64_t Imm,
+ int64_t Address, const void *Decoder)
+{
+ switch (MCInst_getOpcode(Inst)) {
+ case Xtensa_BEQZ:
+ case Xtensa_BGEZ:
+ case Xtensa_BLTZ:
+ case Xtensa_BNEZ:
+ CS_ASSERT(isUIntN(12, Imm) && "Invalid immediate");
+ if (!tryAddingSymbolicOperand(
+ SignExtend64((Imm), 12) + 4 + Address, true,
+ Address, 0, 3, Inst, Decoder))
+ MCOperand_CreateImm0(Inst, (SignExtend64((Imm), 12)));
+ break;
+ default:
+ CS_ASSERT(isUIntN(8, Imm) && "Invalid immediate");
+ if (!tryAddingSymbolicOperand(
+ SignExtend64((Imm), 8) + 4 + Address, true, Address,
+ 0, 3, Inst, Decoder))
+ MCOperand_CreateImm0(Inst, (SignExtend64((Imm), 8)));
+ }
+ return MCDisassembler_Success;
+}
+
+static DecodeStatus decodeL32ROperand(MCInst *Inst, uint64_t Imm,
+ int64_t Address, const void *Decoder)
+{
+ CS_ASSERT(isUIntN(16, Imm) && "Invalid immediate");
+ MCOperand_CreateImm0(
+ Inst,
+ (SignExtend64(((Imm << 2) + 0x40000 + (Address & 0x3)), 17)));
+ return MCDisassembler_Success;
+}
+
+static DecodeStatus decodeImm8Operand(MCInst *Inst, uint64_t Imm,
+ int64_t Address, const void *Decoder)
+{
+ CS_ASSERT(isUIntN(8, Imm) && "Invalid immediate");
+ MCOperand_CreateImm0(Inst, (SignExtend64((Imm), 8)));
+ return MCDisassembler_Success;
+}
+
+static DecodeStatus decodeImm8_sh8Operand(MCInst *Inst, uint64_t Imm,
+ int64_t Address, const void *Decoder)
+{
+ CS_ASSERT(isUIntN(8, Imm) && "Invalid immediate");
+ MCOperand_CreateImm0(Inst, (SignExtend64((Imm << 8), 16)));
+ return MCDisassembler_Success;
+}
+
+static DecodeStatus decodeImm12Operand(MCInst *Inst, uint64_t Imm,
+ int64_t Address, const void *Decoder)
+{
+ CS_ASSERT(isUIntN(12, Imm) && "Invalid immediate");
+ MCOperand_CreateImm0(Inst, (SignExtend64((Imm), 12)));
+ return MCDisassembler_Success;
+}
+
+static DecodeStatus decodeUimm4Operand(MCInst *Inst, uint64_t Imm,
+ int64_t Address, const void *Decoder)
+{
+ CS_ASSERT(isUIntN(4, Imm) && "Invalid immediate");
+ MCOperand_CreateImm0(Inst, (Imm));
+ return MCDisassembler_Success;
+}
+
+static DecodeStatus decodeUimm5Operand(MCInst *Inst, uint64_t Imm,
+ int64_t Address, const void *Decoder)
+{
+ CS_ASSERT(isUIntN(5, Imm) && "Invalid immediate");
+ MCOperand_CreateImm0(Inst, (Imm));
+ return MCDisassembler_Success;
+}
+
+static DecodeStatus decodeImm1_16Operand(MCInst *Inst, uint64_t Imm,
+ int64_t Address, const void *Decoder)
+{
+ CS_ASSERT(isUIntN(4, Imm) && "Invalid immediate");
+ MCOperand_CreateImm0(Inst, (Imm + 1));
+ return MCDisassembler_Success;
+}
+
+static DecodeStatus decodeShimm1_31Operand(MCInst *Inst, uint64_t Imm,
+ int64_t Address, const void *Decoder)
+{
+ CS_ASSERT(isUIntN(5, Imm) && "Invalid immediate");
+ MCOperand_CreateImm0(Inst, (32 - Imm));
+ return MCDisassembler_Success;
+}
+
+static int64_t TableB4const[16] = { -1, 1, 2, 3, 4, 5, 6, 7,
+ 8, 10, 12, 16, 32, 64, 128, 256 };
+static DecodeStatus decodeB4constOperand(MCInst *Inst, uint64_t Imm,
+ int64_t Address, const void *Decoder)
+{
+ CS_ASSERT(isUIntN(4, Imm) && "Invalid immediate");
+
+ MCOperand_CreateImm0(Inst, (TableB4const[Imm]));
+ return MCDisassembler_Success;
+}
+
+static int64_t TableB4constu[16] = { 32768, 65536, 2, 3, 4, 5, 6, 7,
+ 8, 10, 12, 16, 32, 64, 128, 256 };
+static DecodeStatus decodeB4constuOperand(MCInst *Inst, uint64_t Imm,
+ int64_t Address, const void *Decoder)
+{
+ CS_ASSERT(isUIntN(4, Imm) && "Invalid immediate");
+
+ MCOperand_CreateImm0(Inst, (TableB4constu[Imm]));
+ return MCDisassembler_Success;
+}
+
+static DecodeStatus decodeMem8Operand(MCInst *Inst, uint64_t Imm,
+ int64_t Address, const void *Decoder)
+{
+ CS_ASSERT(isUIntN(12, Imm) && "Invalid immediate");
+ DecodeARRegisterClass(Inst, Imm & 0xf, Address, Decoder);
+ MCOperand_CreateImm0(Inst, ((Imm >> 4) & 0xff));
+ return MCDisassembler_Success;
+}
+
+static DecodeStatus decodeMem16Operand(MCInst *Inst, uint64_t Imm,
+ int64_t Address, const void *Decoder)
+{
+ CS_ASSERT(isUIntN(12, Imm) && "Invalid immediate");
+ DecodeARRegisterClass(Inst, Imm & 0xf, Address, Decoder);
+ MCOperand_CreateImm0(Inst, ((Imm >> 3) & 0x1fe));
+ return MCDisassembler_Success;
+}
+
+static DecodeStatus decodeMem32Operand(MCInst *Inst, uint64_t Imm,
+ int64_t Address, const void *Decoder)
+{
+ CS_ASSERT(isUIntN(12, Imm) && "Invalid immediate");
+ DecodeARRegisterClass(Inst, Imm & 0xf, Address, Decoder);
+ MCOperand_CreateImm0(Inst, ((Imm >> 2) & 0x3fc));
+ return MCDisassembler_Success;
+}
+
+/// Read three bytes from the ArrayRef and return 24 bit data
+static DecodeStatus readInstruction24(MCInst *MI, uint64_t *SizeOut,
+ const uint8_t *Bytes,
+ const unsigned BytesSize, uint32_t *Insn)
+{
+ // We want to read exactly 3 Bytes of data.
+ if (BytesSize < 3) {
+ *SizeOut = 0;
+ return MCDisassembler_Fail;
+ }
+
+ *Insn = readBytes24(MI, Bytes);
+ *SizeOut = 3;
+ return MCDisassembler_Success;
+}
+
+#include "XtensaGenDisassemblerTables.inc"
+
+FieldFromInstruction(field_from_inst, uint32_t);
+DecodeToMCInst(decode_to_MCInst, field_from_inst, uint32_t);
+DecodeInstruction(decodeInstruction, field_from_inst, decode_to_MCInst,
+ uint32_t);
+
+static DecodeStatus getInstruction(MCInst *MI, uint64_t *SizeOut,
+ const uint8_t *Bytes, unsigned BytesSize,
+ uint64_t Address)
+{
+ uint32_t Insn;
+ DecodeStatus Result;
+
+ Result = readInstruction24(MI, SizeOut, Bytes, BytesSize, &Insn);
+ if (Result == MCDisassembler_Fail)
+ return MCDisassembler_Fail;
+ Result = decodeInstruction(DecoderTable24, MI, Insn, Address, NULL);
+ return Result;
+}
+
+DecodeStatus Xtensa_LLVM_getInstruction(MCInst *MI, uint16_t *size16,
+ const uint8_t *Bytes,
+ unsigned BytesSize, uint64_t Address)
+{
+ uint64_t size64;
+ DecodeStatus status =
+ getInstruction(MI, &size64, Bytes, BytesSize, Address);
+ CS_ASSERT_RET_VAL(size64 < 0xffff, MCDisassembler_Fail);
+ *size16 = size64;
+ return status;
+}
diff --git a/arch/Xtensa/XtensaDisassembler.h b/arch/Xtensa/XtensaDisassembler.h
new file mode 100644
index 000000000..0fae55376
--- /dev/null
+++ b/arch/Xtensa/XtensaDisassembler.h
@@ -0,0 +1,13 @@
+/* Capstone Disassembly Engine */
+/* By billow , 2024 */
+
+#ifndef XTENSA_DISASSEMBLER_H
+#define XTENSA_DISASSEMBLER_H
+
+#include "../../MCDisassembler.h"
+
+DecodeStatus Xtensa_LLVM_getInstruction(MCInst *MI, uint16_t *Size,
+ const uint8_t *Bytes,
+ unsigned BytesSize, uint64_t Address);
+
+#endif
diff --git a/arch/Xtensa/XtensaGenAsmWriter.inc b/arch/Xtensa/XtensaGenAsmWriter.inc
new file mode 100644
index 000000000..3bf2f06f2
--- /dev/null
+++ b/arch/Xtensa/XtensaGenAsmWriter.inc
@@ -0,0 +1,1066 @@
+/* Capstone Disassembly Engine, https://www.capstone-engine.org */
+/* By Nguyen Anh Quynh , 2013-2022, */
+/* Rot127 2022-2024 */
+/* Automatically generated file by Capstone's LLVM TableGen Disassembler Backend. */
+
+/* LLVM-commit: */
+/* LLVM-tag: */
+
+/* Do not edit. */
+
+/* Capstone's LLVM TableGen Backends: */
+/* https://github.com/capstone-engine/llvm-capstone */
+
+#include
+#include
+
+/// getMnemonic - This method is automatically generated by tablegen
+/// from the instruction set description.
+static MnemonicBitsInfo getMnemonic(MCInst *MI, SStream *O) {
+#ifndef CAPSTONE_DIET
+ static const char AsmStrs[] = {
+ /* 0 */ "call0\t\0"
+ /* 7 */ "callx0\t\0"
+ /* 15 */ "subx2\t\0"
+ /* 22 */ "addx2\t\0"
+ /* 29 */ "subx4\t\0"
+ /* 36 */ "addx4\t\0"
+ /* 43 */ "subx8\t\0"
+ /* 50 */ "addx8\t\0"
+ /* 57 */ "sra\t\0"
+ /* 62 */ "sub\t\0"
+ /* 67 */ "bbc\t\0"
+ /* 72 */ "src\t\0"
+ /* 77 */ "add\t\0"
+ /* 82 */ "and\t\0"
+ /* 87 */ "bge\t\0"
+ /* 92 */ "bne\t\0"
+ /* 97 */ "bnone\t\0"
+ /* 104 */ "neg\t\0"
+ /* 109 */ "l32i\t\0"
+ /* 115 */ "s32i\t\0"
+ /* 121 */ "s16i\t\0"
+ /* 127 */ "s8i\t\0"
+ /* 132 */ "srai\t\0"
+ /* 138 */ "ssai\t\0"
+ /* 144 */ "bbci\t\0"
+ /* 150 */ "addi\t\0"
+ /* 156 */ "bgei\t\0"
+ /* 162 */ "bnei\t\0"
+ /* 168 */ "slli\t\0"
+ /* 174 */ "srli\t\0"
+ /* 180 */ "addmi\t\0"
+ /* 187 */ "beqi\t\0"
+ /* 193 */ "l16si\t\0"
+ /* 200 */ "bbsi\t\0"
+ /* 206 */ "blti\t\0"
+ /* 212 */ "l16ui\t\0"
+ /* 219 */ "l8ui\t\0"
+ /* 225 */ "bgeui\t\0"
+ /* 232 */ "bltui\t\0"
+ /* 239 */ "extui\t\0"
+ /* 246 */ "movi\t\0"
+ /* 252 */ "j\t\0"
+ /* 255 */ "ssa8l\t\0"
+ /* 262 */ "ball\t\0"
+ /* 268 */ "bnall\t\0"
+ /* 275 */ "sll\t\0"
+ /* 280 */ "srl\t\0"
+ /* 285 */ "ssl\t\0"
+ /* 290 */ "beq\t\0"
+ /* 295 */ "l32r\t\0"
+ /* 301 */ "xor\t\0"
+ /* 306 */ "rsr\t\0"
+ /* 311 */ "ssr\t\0"
+ /* 316 */ "wsr\t\0"
+ /* 321 */ "xsr\t\0"
+ /* 326 */ "abs\t\0"
+ /* 331 */ "bbs\t\0"
+ /* 336 */ "blt\t\0"
+ /* 341 */ "bgeu\t\0"
+ /* 347 */ "bltu\t\0"
+ /* 353 */ "jx\t\0"
+ /* 357 */ "bany\t\0"
+ /* 363 */ "bgez\t\0"
+ /* 369 */ "movgez\t\0"
+ /* 377 */ "bnez\t\0"
+ /* 383 */ "movnez\t\0"
+ /* 391 */ "beqz\t\0"
+ /* 397 */ "moveqz\t\0"
+ /* 405 */ "bltz\t\0"
+ /* 411 */ "movltz\t\0"
+ /* 419 */ "# XRay Function Patchable RET.\0"
+ /* 450 */ "# XRay Typed Event Log.\0"
+ /* 474 */ "# XRay Custom Event Log.\0"
+ /* 499 */ "# XRay Function Enter.\0"
+ /* 522 */ "# XRay Tail Call Exit.\0"
+ /* 545 */ "# XRay Function Exit.\0"
+ /* 567 */ "LIFETIME_END\0"
+ /* 580 */ "PSEUDO_PROBE\0"
+ /* 593 */ "BUNDLE\0"
+ /* 600 */ "DBG_VALUE\0"
+ /* 610 */ "DBG_INSTR_REF\0"
+ /* 624 */ "DBG_PHI\0"
+ /* 632 */ "DBG_LABEL\0"
+ /* 642 */ "LIFETIME_START\0"
+ /* 657 */ "DBG_VALUE_LIST\0"
+ /* 672 */ "dsync\0"
+ /* 678 */ "esync\0"
+ /* 684 */ "isync\0"
+ /* 690 */ "rsync\0"
+ /* 696 */ "# FEntry call\0"
+ /* 710 */ "nop\0"
+ /* 714 */ "ret\0"
+ /* 718 */ "memw\0"
+ /* 723 */ "extw\0"
+};
+#endif // CAPSTONE_DIET
+
+ static const uint16_t OpInfo0[] = {
+ 0U, // PHI
+ 0U, // INLINEASM
+ 0U, // INLINEASM_BR
+ 0U, // CFI_INSTRUCTION
+ 0U, // EH_LABEL
+ 0U, // GC_LABEL
+ 0U, // ANNOTATION_LABEL
+ 0U, // KILL
+ 0U, // EXTRACT_SUBREG
+ 0U, // INSERT_SUBREG
+ 0U, // IMPLICIT_DEF
+ 0U, // SUBREG_TO_REG
+ 0U, // COPY_TO_REGCLASS
+ 601U, // DBG_VALUE
+ 658U, // DBG_VALUE_LIST
+ 611U, // DBG_INSTR_REF
+ 625U, // DBG_PHI
+ 633U, // DBG_LABEL
+ 0U, // REG_SEQUENCE
+ 0U, // COPY
+ 594U, // BUNDLE
+ 643U, // LIFETIME_START
+ 568U, // LIFETIME_END
+ 581U, // PSEUDO_PROBE
+ 0U, // ARITH_FENCE
+ 0U, // STACKMAP
+ 697U, // FENTRY_CALL
+ 0U, // PATCHPOINT
+ 0U, // LOAD_STACK_GUARD
+ 0U, // PREALLOCATED_SETUP
+ 0U, // PREALLOCATED_ARG
+ 0U, // STATEPOINT
+ 0U, // LOCAL_ESCAPE
+ 0U, // FAULTING_OP
+ 0U, // PATCHABLE_OP
+ 500U, // PATCHABLE_FUNCTION_ENTER
+ 420U, // PATCHABLE_RET
+ 546U, // PATCHABLE_FUNCTION_EXIT
+ 523U, // PATCHABLE_TAIL_CALL
+ 475U, // PATCHABLE_EVENT_CALL
+ 451U, // PATCHABLE_TYPED_EVENT_CALL
+ 0U, // ICALL_BRANCH_FUNNEL
+ 0U, // MEMBARRIER
+ 0U, // JUMP_TABLE_DEBUG_INFO
+ 0U, // G_ASSERT_SEXT
+ 0U, // G_ASSERT_ZEXT
+ 0U, // G_ASSERT_ALIGN
+ 0U, // G_ADD
+ 0U, // G_SUB
+ 0U, // G_MUL
+ 0U, // G_SDIV
+ 0U, // G_UDIV
+ 0U, // G_SREM
+ 0U, // G_UREM
+ 0U, // G_SDIVREM
+ 0U, // G_UDIVREM
+ 0U, // G_AND
+ 0U, // G_OR
+ 0U, // G_XOR
+ 0U, // G_IMPLICIT_DEF
+ 0U, // G_PHI
+ 0U, // G_FRAME_INDEX
+ 0U, // G_GLOBAL_VALUE
+ 0U, // G_CONSTANT_POOL
+ 0U, // G_EXTRACT
+ 0U, // G_UNMERGE_VALUES
+ 0U, // G_INSERT
+ 0U, // G_MERGE_VALUES
+ 0U, // G_BUILD_VECTOR
+ 0U, // G_BUILD_VECTOR_TRUNC
+ 0U, // G_CONCAT_VECTORS
+ 0U, // G_PTRTOINT
+ 0U, // G_INTTOPTR
+ 0U, // G_BITCAST
+ 0U, // G_FREEZE
+ 0U, // G_CONSTANT_FOLD_BARRIER
+ 0U, // G_INTRINSIC_FPTRUNC_ROUND
+ 0U, // G_INTRINSIC_TRUNC
+ 0U, // G_INTRINSIC_ROUND
+ 0U, // G_INTRINSIC_LRINT
+ 0U, // G_INTRINSIC_ROUNDEVEN
+ 0U, // G_READCYCLECOUNTER
+ 0U, // G_LOAD
+ 0U, // G_SEXTLOAD
+ 0U, // G_ZEXTLOAD
+ 0U, // G_INDEXED_LOAD
+ 0U, // G_INDEXED_SEXTLOAD
+ 0U, // G_INDEXED_ZEXTLOAD
+ 0U, // G_STORE
+ 0U, // G_INDEXED_STORE
+ 0U, // G_ATOMIC_CMPXCHG_WITH_SUCCESS
+ 0U, // G_ATOMIC_CMPXCHG
+ 0U, // G_ATOMICRMW_XCHG
+ 0U, // G_ATOMICRMW_ADD
+ 0U, // G_ATOMICRMW_SUB
+ 0U, // G_ATOMICRMW_AND
+ 0U, // G_ATOMICRMW_NAND
+ 0U, // G_ATOMICRMW_OR
+ 0U, // G_ATOMICRMW_XOR
+ 0U, // G_ATOMICRMW_MAX
+ 0U, // G_ATOMICRMW_MIN
+ 0U, // G_ATOMICRMW_UMAX
+ 0U, // G_ATOMICRMW_UMIN
+ 0U, // G_ATOMICRMW_FADD
+ 0U, // G_ATOMICRMW_FSUB
+ 0U, // G_ATOMICRMW_FMAX
+ 0U, // G_ATOMICRMW_FMIN
+ 0U, // G_ATOMICRMW_UINC_WRAP
+ 0U, // G_ATOMICRMW_UDEC_WRAP
+ 0U, // G_FENCE
+ 0U, // G_PREFETCH
+ 0U, // G_BRCOND
+ 0U, // G_BRINDIRECT
+ 0U, // G_INVOKE_REGION_START
+ 0U, // G_INTRINSIC
+ 0U, // G_INTRINSIC_W_SIDE_EFFECTS
+ 0U, // G_INTRINSIC_CONVERGENT
+ 0U, // G_INTRINSIC_CONVERGENT_W_SIDE_EFFECTS
+ 0U, // G_ANYEXT
+ 0U, // G_TRUNC
+ 0U, // G_CONSTANT
+ 0U, // G_FCONSTANT
+ 0U, // G_VASTART
+ 0U, // G_VAARG
+ 0U, // G_SEXT
+ 0U, // G_SEXT_INREG
+ 0U, // G_ZEXT
+ 0U, // G_SHL
+ 0U, // G_LSHR
+ 0U, // G_ASHR
+ 0U, // G_FSHL
+ 0U, // G_FSHR
+ 0U, // G_ROTR
+ 0U, // G_ROTL
+ 0U, // G_ICMP
+ 0U, // G_FCMP
+ 0U, // G_SELECT
+ 0U, // G_UADDO
+ 0U, // G_UADDE
+ 0U, // G_USUBO
+ 0U, // G_USUBE
+ 0U, // G_SADDO
+ 0U, // G_SADDE
+ 0U, // G_SSUBO
+ 0U, // G_SSUBE
+ 0U, // G_UMULO
+ 0U, // G_SMULO
+ 0U, // G_UMULH
+ 0U, // G_SMULH
+ 0U, // G_UADDSAT
+ 0U, // G_SADDSAT
+ 0U, // G_USUBSAT
+ 0U, // G_SSUBSAT
+ 0U, // G_USHLSAT
+ 0U, // G_SSHLSAT
+ 0U, // G_SMULFIX
+ 0U, // G_UMULFIX
+ 0U, // G_SMULFIXSAT
+ 0U, // G_UMULFIXSAT
+ 0U, // G_SDIVFIX
+ 0U, // G_UDIVFIX
+ 0U, // G_SDIVFIXSAT
+ 0U, // G_UDIVFIXSAT
+ 0U, // G_FADD
+ 0U, // G_FSUB
+ 0U, // G_FMUL
+ 0U, // G_FMA
+ 0U, // G_FMAD
+ 0U, // G_FDIV
+ 0U, // G_FREM
+ 0U, // G_FPOW
+ 0U, // G_FPOWI
+ 0U, // G_FEXP
+ 0U, // G_FEXP2
+ 0U, // G_FEXP10
+ 0U, // G_FLOG
+ 0U, // G_FLOG2
+ 0U, // G_FLOG10
+ 0U, // G_FLDEXP
+ 0U, // G_FFREXP
+ 0U, // G_FNEG
+ 0U, // G_FPEXT
+ 0U, // G_FPTRUNC
+ 0U, // G_FPTOSI
+ 0U, // G_FPTOUI
+ 0U, // G_SITOFP
+ 0U, // G_UITOFP
+ 0U, // G_FABS
+ 0U, // G_FCOPYSIGN
+ 0U, // G_IS_FPCLASS
+ 0U, // G_FCANONICALIZE
+ 0U, // G_FMINNUM
+ 0U, // G_FMAXNUM
+ 0U, // G_FMINNUM_IEEE
+ 0U, // G_FMAXNUM_IEEE
+ 0U, // G_FMINIMUM
+ 0U, // G_FMAXIMUM
+ 0U, // G_GET_FPENV
+ 0U, // G_SET_FPENV
+ 0U, // G_RESET_FPENV
+ 0U, // G_GET_FPMODE
+ 0U, // G_SET_FPMODE
+ 0U, // G_RESET_FPMODE
+ 0U, // G_PTR_ADD
+ 0U, // G_PTRMASK
+ 0U, // G_SMIN
+ 0U, // G_SMAX
+ 0U, // G_UMIN
+ 0U, // G_UMAX
+ 0U, // G_ABS
+ 0U, // G_LROUND
+ 0U, // G_LLROUND
+ 0U, // G_BR
+ 0U, // G_BRJT
+ 0U, // G_INSERT_VECTOR_ELT
+ 0U, // G_EXTRACT_VECTOR_ELT
+ 0U, // G_SHUFFLE_VECTOR
+ 0U, // G_CTTZ
+ 0U, // G_CTTZ_ZERO_UNDEF
+ 0U, // G_CTLZ
+ 0U, // G_CTLZ_ZERO_UNDEF
+ 0U, // G_CTPOP
+ 0U, // G_BSWAP
+ 0U, // G_BITREVERSE
+ 0U, // G_FCEIL
+ 0U, // G_FCOS
+ 0U, // G_FSIN
+ 0U, // G_FSQRT
+ 0U, // G_FFLOOR
+ 0U, // G_FRINT
+ 0U, // G_FNEARBYINT
+ 0U, // G_ADDRSPACE_CAST
+ 0U, // G_BLOCK_ADDR
+ 0U, // G_JUMP_TABLE
+ 0U, // G_DYN_STACKALLOC
+ 0U, // G_STACKSAVE
+ 0U, // G_STACKRESTORE
+ 0U, // G_STRICT_FADD
+ 0U, // G_STRICT_FSUB
+ 0U, // G_STRICT_FMUL
+ 0U, // G_STRICT_FDIV
+ 0U, // G_STRICT_FREM
+ 0U, // G_STRICT_FMA
+ 0U, // G_STRICT_FSQRT
+ 0U, // G_STRICT_FLDEXP
+ 0U, // G_READ_REGISTER
+ 0U, // G_WRITE_REGISTER
+ 0U, // G_MEMCPY
+ 0U, // G_MEMCPY_INLINE
+ 0U, // G_MEMMOVE
+ 0U, // G_MEMSET
+ 0U, // G_BZERO
+ 0U, // G_VECREDUCE_SEQ_FADD
+ 0U, // G_VECREDUCE_SEQ_FMUL
+ 0U, // G_VECREDUCE_FADD
+ 0U, // G_VECREDUCE_FMUL
+ 0U, // G_VECREDUCE_FMAX
+ 0U, // G_VECREDUCE_FMIN
+ 0U, // G_VECREDUCE_FMAXIMUM
+ 0U, // G_VECREDUCE_FMINIMUM
+ 0U, // G_VECREDUCE_ADD
+ 0U, // G_VECREDUCE_MUL
+ 0U, // G_VECREDUCE_AND
+ 0U, // G_VECREDUCE_OR
+ 0U, // G_VECREDUCE_XOR
+ 0U, // G_VECREDUCE_SMAX
+ 0U, // G_VECREDUCE_SMIN
+ 0U, // G_VECREDUCE_UMAX
+ 0U, // G_VECREDUCE_UMIN
+ 0U, // G_SBFX
+ 0U, // G_UBFX
+ 1351U, // ABS
+ 1102U, // ADD
+ 1175U, // ADDI
+ 1205U, // ADDMI
+ 1047U, // ADDX2
+ 1061U, // ADDX4
+ 1075U, // ADDX8
+ 1107U, // AND
+ 1287U, // BALL
+ 1382U, // BANY
+ 1092U, // BBC
+ 17553U, // BBCI
+ 1356U, // BBS
+ 17609U, // BBSI
+ 1315U, // BEQ
+ 33980U, // BEQI
+ 50568U, // BEQZ
+ 1112U, // BGE
+ 33949U, // BGEI
+ 1366U, // BGEU
+ 1250U, // BGEUI
+ 50540U, // BGEZ
+ 1361U, // BLT
+ 33999U, // BLTI
+ 1372U, // BLTU
+ 1257U, // BLTUI
+ 50582U, // BLTZ
+ 1293U, // BNALL
+ 1117U, // BNE
+ 33955U, // BNEI
+ 50554U, // BNEZ
+ 1122U, // BNONE
+ 2049U, // CALL0
+ 9224U, // CALLX0
+ 673U, // DSYNC
+ 679U, // ESYNC
+ 1264U, // EXTUI
+ 724U, // EXTW
+ 685U, // ISYNC
+ 3325U, // J
+ 9570U, // JX
+ 17602U, // L16SI
+ 17621U, // L16UI
+ 17518U, // L32I
+ 34088U, // L32R
+ 17628U, // L8UI
+ 719U, // MEMW
+ 1422U, // MOVEQZ
+ 1394U, // MOVGEZ
+ 50423U, // MOVI
+ 1436U, // MOVLTZ
+ 1408U, // MOVNEZ
+ 1129U, // NEG
+ 711U, // NOP
+ 1327U, // OR
+ 715U, // RET
+ 1331U, // RSR
+ 691U, // RSYNC
+ 17530U, // S16I
+ 17524U, // S32I
+ 17536U, // S8I
+ 1300U, // SLL
+ 1193U, // SLLI
+ 1082U, // SRA
+ 1157U, // SRAI
+ 1097U, // SRC
+ 1305U, // SRL
+ 1199U, // SRLI
+ 9472U, // SSA8L
+ 4235U, // SSAI
+ 9502U, // SSL
+ 9528U, // SSR
+ 1087U, // SUB
+ 1040U, // SUBX2
+ 1054U, // SUBX4
+ 1068U, // SUBX8
+ 5437U, // WSR
+ 1326U, // XOR
+ 6466U, // XSR
+ };
+
+ static const uint8_t OpInfo1[] = {
+ 0U, // PHI
+ 0U, // INLINEASM
+ 0U, // INLINEASM_BR
+ 0U, // CFI_INSTRUCTION
+ 0U, // EH_LABEL
+ 0U, // GC_LABEL
+ 0U, // ANNOTATION_LABEL
+ 0U, // KILL
+ 0U, // EXTRACT_SUBREG
+ 0U, // INSERT_SUBREG
+ 0U, // IMPLICIT_DEF
+ 0U, // SUBREG_TO_REG
+ 0U, // COPY_TO_REGCLASS
+ 0U, // DBG_VALUE
+ 0U, // DBG_VALUE_LIST
+ 0U, // DBG_INSTR_REF
+ 0U, // DBG_PHI
+ 0U, // DBG_LABEL
+ 0U, // REG_SEQUENCE
+ 0U, // COPY
+ 0U, // BUNDLE
+ 0U, // LIFETIME_START
+ 0U, // LIFETIME_END
+ 0U, // PSEUDO_PROBE
+ 0U, // ARITH_FENCE
+ 0U, // STACKMAP
+ 0U, // FENTRY_CALL
+ 0U, // PATCHPOINT
+ 0U, // LOAD_STACK_GUARD
+ 0U, // PREALLOCATED_SETUP
+ 0U, // PREALLOCATED_ARG
+ 0U, // STATEPOINT
+ 0U, // LOCAL_ESCAPE
+ 0U, // FAULTING_OP
+ 0U, // PATCHABLE_OP
+ 0U, // PATCHABLE_FUNCTION_ENTER
+ 0U, // PATCHABLE_RET
+ 0U, // PATCHABLE_FUNCTION_EXIT
+ 0U, // PATCHABLE_TAIL_CALL
+ 0U, // PATCHABLE_EVENT_CALL
+ 0U, // PATCHABLE_TYPED_EVENT_CALL
+ 0U, // ICALL_BRANCH_FUNNEL
+ 0U, // MEMBARRIER
+ 0U, // JUMP_TABLE_DEBUG_INFO
+ 0U, // G_ASSERT_SEXT
+ 0U, // G_ASSERT_ZEXT
+ 0U, // G_ASSERT_ALIGN
+ 0U, // G_ADD
+ 0U, // G_SUB
+ 0U, // G_MUL
+ 0U, // G_SDIV
+ 0U, // G_UDIV
+ 0U, // G_SREM
+ 0U, // G_UREM
+ 0U, // G_SDIVREM
+ 0U, // G_UDIVREM
+ 0U, // G_AND
+ 0U, // G_OR
+ 0U, // G_XOR
+ 0U, // G_IMPLICIT_DEF
+ 0U, // G_PHI
+ 0U, // G_FRAME_INDEX
+ 0U, // G_GLOBAL_VALUE
+ 0U, // G_CONSTANT_POOL
+ 0U, // G_EXTRACT
+ 0U, // G_UNMERGE_VALUES
+ 0U, // G_INSERT
+ 0U, // G_MERGE_VALUES
+ 0U, // G_BUILD_VECTOR
+ 0U, // G_BUILD_VECTOR_TRUNC
+ 0U, // G_CONCAT_VECTORS
+ 0U, // G_PTRTOINT
+ 0U, // G_INTTOPTR
+ 0U, // G_BITCAST
+ 0U, // G_FREEZE
+ 0U, // G_CONSTANT_FOLD_BARRIER
+ 0U, // G_INTRINSIC_FPTRUNC_ROUND
+ 0U, // G_INTRINSIC_TRUNC
+ 0U, // G_INTRINSIC_ROUND
+ 0U, // G_INTRINSIC_LRINT
+ 0U, // G_INTRINSIC_ROUNDEVEN
+ 0U, // G_READCYCLECOUNTER
+ 0U, // G_LOAD
+ 0U, // G_SEXTLOAD
+ 0U, // G_ZEXTLOAD
+ 0U, // G_INDEXED_LOAD
+ 0U, // G_INDEXED_SEXTLOAD
+ 0U, // G_INDEXED_ZEXTLOAD
+ 0U, // G_STORE
+ 0U, // G_INDEXED_STORE
+ 0U, // G_ATOMIC_CMPXCHG_WITH_SUCCESS
+ 0U, // G_ATOMIC_CMPXCHG
+ 0U, // G_ATOMICRMW_XCHG
+ 0U, // G_ATOMICRMW_ADD
+ 0U, // G_ATOMICRMW_SUB
+ 0U, // G_ATOMICRMW_AND
+ 0U, // G_ATOMICRMW_NAND
+ 0U, // G_ATOMICRMW_OR
+ 0U, // G_ATOMICRMW_XOR
+ 0U, // G_ATOMICRMW_MAX
+ 0U, // G_ATOMICRMW_MIN
+ 0U, // G_ATOMICRMW_UMAX
+ 0U, // G_ATOMICRMW_UMIN
+ 0U, // G_ATOMICRMW_FADD
+ 0U, // G_ATOMICRMW_FSUB
+ 0U, // G_ATOMICRMW_FMAX
+ 0U, // G_ATOMICRMW_FMIN
+ 0U, // G_ATOMICRMW_UINC_WRAP
+ 0U, // G_ATOMICRMW_UDEC_WRAP
+ 0U, // G_FENCE
+ 0U, // G_PREFETCH
+ 0U, // G_BRCOND
+ 0U, // G_BRINDIRECT
+ 0U, // G_INVOKE_REGION_START
+ 0U, // G_INTRINSIC
+ 0U, // G_INTRINSIC_W_SIDE_EFFECTS
+ 0U, // G_INTRINSIC_CONVERGENT
+ 0U, // G_INTRINSIC_CONVERGENT_W_SIDE_EFFECTS
+ 0U, // G_ANYEXT
+ 0U, // G_TRUNC
+ 0U, // G_CONSTANT
+ 0U, // G_FCONSTANT
+ 0U, // G_VASTART
+ 0U, // G_VAARG
+ 0U, // G_SEXT
+ 0U, // G_SEXT_INREG
+ 0U, // G_ZEXT
+ 0U, // G_SHL
+ 0U, // G_LSHR
+ 0U, // G_ASHR
+ 0U, // G_FSHL
+ 0U, // G_FSHR
+ 0U, // G_ROTR
+ 0U, // G_ROTL
+ 0U, // G_ICMP
+ 0U, // G_FCMP
+ 0U, // G_SELECT
+ 0U, // G_UADDO
+ 0U, // G_UADDE
+ 0U, // G_USUBO
+ 0U, // G_USUBE
+ 0U, // G_SADDO
+ 0U, // G_SADDE
+ 0U, // G_SSUBO
+ 0U, // G_SSUBE
+ 0U, // G_UMULO
+ 0U, // G_SMULO
+ 0U, // G_UMULH
+ 0U, // G_SMULH
+ 0U, // G_UADDSAT
+ 0U, // G_SADDSAT
+ 0U, // G_USUBSAT
+ 0U, // G_SSUBSAT
+ 0U, // G_USHLSAT
+ 0U, // G_SSHLSAT
+ 0U, // G_SMULFIX
+ 0U, // G_UMULFIX
+ 0U, // G_SMULFIXSAT
+ 0U, // G_UMULFIXSAT
+ 0U, // G_SDIVFIX
+ 0U, // G_UDIVFIX
+ 0U, // G_SDIVFIXSAT
+ 0U, // G_UDIVFIXSAT
+ 0U, // G_FADD
+ 0U, // G_FSUB
+ 0U, // G_FMUL
+ 0U, // G_FMA
+ 0U, // G_FMAD
+ 0U, // G_FDIV
+ 0U, // G_FREM
+ 0U, // G_FPOW
+ 0U, // G_FPOWI
+ 0U, // G_FEXP
+ 0U, // G_FEXP2
+ 0U, // G_FEXP10
+ 0U, // G_FLOG
+ 0U, // G_FLOG2
+ 0U, // G_FLOG10
+ 0U, // G_FLDEXP
+ 0U, // G_FFREXP
+ 0U, // G_FNEG
+ 0U, // G_FPEXT
+ 0U, // G_FPTRUNC
+ 0U, // G_FPTOSI
+ 0U, // G_FPTOUI
+ 0U, // G_SITOFP
+ 0U, // G_UITOFP
+ 0U, // G_FABS
+ 0U, // G_FCOPYSIGN
+ 0U, // G_IS_FPCLASS
+ 0U, // G_FCANONICALIZE
+ 0U, // G_FMINNUM
+ 0U, // G_FMAXNUM
+ 0U, // G_FMINNUM_IEEE
+ 0U, // G_FMAXNUM_IEEE
+ 0U, // G_FMINIMUM
+ 0U, // G_FMAXIMUM
+ 0U, // G_GET_FPENV
+ 0U, // G_SET_FPENV
+ 0U, // G_RESET_FPENV
+ 0U, // G_GET_FPMODE
+ 0U, // G_SET_FPMODE
+ 0U, // G_RESET_FPMODE
+ 0U, // G_PTR_ADD
+ 0U, // G_PTRMASK
+ 0U, // G_SMIN
+ 0U, // G_SMAX
+ 0U, // G_UMIN
+ 0U, // G_UMAX
+ 0U, // G_ABS
+ 0U, // G_LROUND
+ 0U, // G_LLROUND
+ 0U, // G_BR
+ 0U, // G_BRJT
+ 0U, // G_INSERT_VECTOR_ELT
+ 0U, // G_EXTRACT_VECTOR_ELT
+ 0U, // G_SHUFFLE_VECTOR
+ 0U, // G_CTTZ
+ 0U, // G_CTTZ_ZERO_UNDEF
+ 0U, // G_CTLZ
+ 0U, // G_CTLZ_ZERO_UNDEF
+ 0U, // G_CTPOP
+ 0U, // G_BSWAP
+ 0U, // G_BITREVERSE
+ 0U, // G_FCEIL
+ 0U, // G_FCOS
+ 0U, // G_FSIN
+ 0U, // G_FSQRT
+ 0U, // G_FFLOOR
+ 0U, // G_FRINT
+ 0U, // G_FNEARBYINT
+ 0U, // G_ADDRSPACE_CAST
+ 0U, // G_BLOCK_ADDR
+ 0U, // G_JUMP_TABLE
+ 0U, // G_DYN_STACKALLOC
+ 0U, // G_STACKSAVE
+ 0U, // G_STACKRESTORE
+ 0U, // G_STRICT_FADD
+ 0U, // G_STRICT_FSUB
+ 0U, // G_STRICT_FMUL
+ 0U, // G_STRICT_FDIV
+ 0U, // G_STRICT_FREM
+ 0U, // G_STRICT_FMA
+ 0U, // G_STRICT_FSQRT
+ 0U, // G_STRICT_FLDEXP
+ 0U, // G_READ_REGISTER
+ 0U, // G_WRITE_REGISTER
+ 0U, // G_MEMCPY
+ 0U, // G_MEMCPY_INLINE
+ 0U, // G_MEMMOVE
+ 0U, // G_MEMSET
+ 0U, // G_BZERO
+ 0U, // G_VECREDUCE_SEQ_FADD
+ 0U, // G_VECREDUCE_SEQ_FMUL
+ 0U, // G_VECREDUCE_FADD
+ 0U, // G_VECREDUCE_FMUL
+ 0U, // G_VECREDUCE_FMAX
+ 0U, // G_VECREDUCE_FMIN
+ 0U, // G_VECREDUCE_FMAXIMUM
+ 0U, // G_VECREDUCE_FMINIMUM
+ 0U, // G_VECREDUCE_ADD
+ 0U, // G_VECREDUCE_MUL
+ 0U, // G_VECREDUCE_AND
+ 0U, // G_VECREDUCE_OR
+ 0U, // G_VECREDUCE_XOR
+ 0U, // G_VECREDUCE_SMAX
+ 0U, // G_VECREDUCE_SMIN
+ 0U, // G_VECREDUCE_UMAX
+ 0U, // G_VECREDUCE_UMIN
+ 0U, // G_SBFX
+ 0U, // G_UBFX
+ 0U, // ABS
+ 2U, // ADD
+ 6U, // ADDI
+ 10U, // ADDMI
+ 2U, // ADDX2
+ 2U, // ADDX4
+ 2U, // ADDX8
+ 2U, // AND
+ 14U, // BALL
+ 14U, // BANY
+ 14U, // BBC
+ 0U, // BBCI
+ 14U, // BBS
+ 0U, // BBSI
+ 14U, // BEQ
+ 0U, // BEQI
+ 0U, // BEQZ
+ 14U, // BGE
+ 0U, // BGEI
+ 14U, // BGEU
+ 1U, // BGEUI
+ 0U, // BGEZ
+ 14U, // BLT
+ 0U, // BLTI
+ 14U, // BLTU
+ 1U, // BLTUI
+ 0U, // BLTZ
+ 14U, // BNALL
+ 14U, // BNE
+ 0U, // BNEI
+ 0U, // BNEZ
+ 14U, // BNONE
+ 0U, // CALL0
+ 0U, // CALLX0
+ 0U, // DSYNC
+ 0U, // ESYNC
+ 18U, // EXTUI
+ 0U, // EXTW
+ 0U, // ISYNC
+ 0U, // J
+ 0U, // JX
+ 1U, // L16SI
+ 1U, // L16UI
+ 1U, // L32I
+ 1U, // L32R
+ 1U, // L8UI
+ 0U, // MEMW
+ 2U, // MOVEQZ
+ 2U, // MOVGEZ
+ 1U, // MOVI
+ 2U, // MOVLTZ
+ 2U, // MOVNEZ
+ 0U, // NEG
+ 0U, // NOP
+ 2U, // OR
+ 0U, // RET
+ 0U, // RSR
+ 0U, // RSYNC
+ 1U, // S16I
+ 1U, // S32I
+ 1U, // S8I
+ 0U, // SLL
+ 22U, // SLLI
+ 0U, // SRA
+ 50U, // SRAI
+ 2U, // SRC
+ 0U, // SRL
+ 26U, // SRLI
+ 0U, // SSA8L
+ 0U, // SSAI
+ 0U, // SSL
+ 0U, // SSR
+ 2U, // SUB
+ 2U, // SUBX2
+ 2U, // SUBX4
+ 2U, // SUBX8
+ 0U, // WSR
+ 2U, // XOR
+ 0U, // XSR
+ };
+
+ // Emit the opcode for the instruction.
+ uint32_t Bits = 0;
+ Bits |= OpInfo0[MCInst_getOpcode(MI)] << 0;
+ Bits |= OpInfo1[MCInst_getOpcode(MI)] << 16;
+ MnemonicBitsInfo MBI = {
+#ifndef CAPSTONE_DIET
+ AsmStrs+(Bits & 1023)-1,
+#else
+ NULL,
+#endif // CAPSTONE_DIET
+ Bits
+ };
+ return MBI;
+}
+
+/// printInstruction - This method is automatically generated by tablegen
+/// from the instruction set description.
+static void printInstruction(MCInst *MI, uint64_t Address, SStream *O) {
+ SStream_concat0(O, "");
+ MnemonicBitsInfo MnemonicInfo = getMnemonic(MI, O);
+
+ SStream_concat0(O, MnemonicInfo.first);
+
+ uint32_t Bits = MnemonicInfo.second;
+ assert(Bits != 0 && "Cannot print this instruction.");
+
+ // Fragment 0 encoded into 3 bits for 7 unique commands.
+ switch ((Bits >> 10) & 7) {
+ default: assert(0 && "Invalid command number.");
+ case 0:
+ // DBG_VALUE, DBG_VALUE_LIST, DBG_INSTR_REF, DBG_PHI, DBG_LABEL, BUNDLE, ...
+ return;
+ break;
+ case 1:
+ // ABS, ADD, ADDI, ADDMI, ADDX2, ADDX4, ADDX8, AND, BALL, BANY, BBC, BBCI...
+ printOperand(MI, 0, O);
+ break;
+ case 2:
+ // CALL0
+ printCallOperand(MI, 0, O);
+ return;
+ break;
+ case 3:
+ // J
+ printJumpTarget(MI, 0, O);
+ return;
+ break;
+ case 4:
+ // SSAI
+ printUimm5_AsmOperand(MI, 0, O);
+ return;
+ break;
+ case 5:
+ // WSR
+ printOperand(MI, 1, O);
+ SStream_concat0(O, ", ");
+ printOperand(MI, 0, O);
+ return;
+ break;
+ case 6:
+ // XSR
+ printOperand(MI, 2, O);
+ SStream_concat0(O, ", ");
+ printOperand(MI, 3, O);
+ return;
+ break;
+ }
+
+
+ // Fragment 1 encoded into 1 bits for 2 unique commands.
+ if ((Bits >> 13) & 1) {
+ // CALLX0, JX, SSA8L, SSL, SSR
+ return;
+ } else {
+ // ABS, ADD, ADDI, ADDMI, ADDX2, ADDX4, ADDX8, AND, BALL, BANY, BBC, BBCI...
+ SStream_concat0(O, ", ");
+ }
+
+
+ // Fragment 2 encoded into 3 bits for 8 unique commands.
+ switch ((Bits >> 14) & 7) {
+ default: assert(0 && "Invalid command number.");
+ case 0:
+ // ABS, ADD, ADDI, ADDMI, ADDX2, ADDX4, ADDX8, AND, BALL, BANY, BBC, BBS,...
+ printOperand(MI, 1, O);
+ break;
+ case 1:
+ // BBCI, BBSI
+ printUimm5_AsmOperand(MI, 1, O);
+ SStream_concat0(O, ", ");
+ printBranchTarget(MI, 2, O);
+ return;
+ break;
+ case 2:
+ // BEQI, BGEI, BLTI, BNEI
+ printB4const_AsmOperand(MI, 1, O);
+ SStream_concat0(O, ", ");
+ printBranchTarget(MI, 2, O);
+ return;
+ break;
+ case 3:
+ // BEQZ, BGEZ, BLTZ, BNEZ
+ printBranchTarget(MI, 1, O);
+ return;
+ break;
+ case 4:
+ // BGEUI, BLTUI
+ printB4constu_AsmOperand(MI, 1, O);
+ SStream_concat0(O, ", ");
+ printBranchTarget(MI, 2, O);
+ return;
+ break;
+ case 5:
+ // L16SI, L16UI, L32I, L8UI, S16I, S32I, S8I
+ printMemOperand(MI, 1, O);
+ return;
+ break;
+ case 6:
+ // L32R
+ printL32RTarget(MI, 1, O);
+ return;
+ break;
+ case 7:
+ // MOVI
+ printImm12m_AsmOperand(MI, 1, O);
+ return;
+ break;
+ }
+
+
+ // Fragment 3 encoded into 1 bits for 2 unique commands.
+ if ((Bits >> 17) & 1) {
+ // ADD, ADDI, ADDMI, ADDX2, ADDX4, ADDX8, AND, BALL, BANY, BBC, BBS, BEQ,...
+ SStream_concat0(O, ", ");
+ } else {
+ // ABS, NEG, RSR, SLL, SRA, SRL
+ return;
+ }
+
+
+ // Fragment 4 encoded into 3 bits for 7 unique commands.
+ switch ((Bits >> 18) & 7) {
+ default: assert(0 && "Invalid command number.");
+ case 0:
+ // ADD, ADDX2, ADDX4, ADDX8, AND, MOVEQZ, MOVGEZ, MOVLTZ, MOVNEZ, OR, SRC...
+ printOperand(MI, 2, O);
+ return;
+ break;
+ case 1:
+ // ADDI
+ printImm8_AsmOperand(MI, 2, O);
+ return;
+ break;
+ case 2:
+ // ADDMI
+ printImm8_sh8_AsmOperand(MI, 2, O);
+ return;
+ break;
+ case 3:
+ // BALL, BANY, BBC, BBS, BEQ, BGE, BGEU, BLT, BLTU, BNALL, BNE, BNONE
+ printBranchTarget(MI, 2, O);
+ return;
+ break;
+ case 4:
+ // EXTUI, SRAI
+ printUimm5_AsmOperand(MI, 2, O);
+ break;
+ case 5:
+ // SLLI
+ printShimm1_31_AsmOperand(MI, 2, O);
+ return;
+ break;
+ case 6:
+ // SRLI
+ printUimm4_AsmOperand(MI, 2, O);
+ return;
+ break;
+ }
+
+
+ // Fragment 5 encoded into 1 bits for 2 unique commands.
+ if ((Bits >> 21) & 1) {
+ // SRAI
+ return;
+ } else {
+ // EXTUI
+ SStream_concat0(O, ", ");
+ printImm1_16_AsmOperand(MI, 3, O);
+ return;
+ }
+
+}
+
+
+/// getRegisterName - This method is automatically generated by tblgen
+/// from the register set description. This returns the assembler name
+/// for the specified register.
+static const char *getRegisterName(unsigned RegNo) {
+#ifndef CAPSTONE_DIET
+ assert(RegNo && RegNo < 18 && "Invalid register number!");
+
+ static const char AsmStrs[] = {
+ /* 0 */ "a10\0"
+ /* 4 */ "a0\0"
+ /* 7 */ "a11\0"
+ /* 11 */ "a1\0"
+ /* 14 */ "a12\0"
+ /* 18 */ "a2\0"
+ /* 21 */ "a13\0"
+ /* 25 */ "a3\0"
+ /* 28 */ "a14\0"
+ /* 32 */ "a4\0"
+ /* 35 */ "a15\0"
+ /* 39 */ "a5\0"
+ /* 42 */ "a6\0"
+ /* 45 */ "a7\0"
+ /* 48 */ "a8\0"
+ /* 51 */ "a9\0"
+ /* 54 */ "sar\0"
+};
+ static const uint8_t RegAsmOffset[] = {
+ 54, 11, 4, 18, 25, 32, 39, 42, 45, 48, 51, 0, 7, 14,
+ 21, 28, 35,
+ };
+
+ assert (*(AsmStrs+RegAsmOffset[RegNo-1]) &&
+ "Invalid alt name index for register!");
+ return AsmStrs+RegAsmOffset[RegNo-1];
+#else
+ return NULL;
+#endif // CAPSTONE_DIET
+}
+#ifdef PRINT_ALIAS_INSTR
+#undef PRINT_ALIAS_INSTR
+
+static bool printAliasInstr(MCInst *MI, uint64_t Address, SStream *OS) {
+#ifndef CAPSTONE_DIET
+ return false;
+#endif // CAPSTONE_DIET
+}
+
+#endif // PRINT_ALIAS_INSTR
diff --git a/arch/Xtensa/XtensaGenCSFeatureName.inc b/arch/Xtensa/XtensaGenCSFeatureName.inc
new file mode 100644
index 000000000..6302541aa
--- /dev/null
+++ b/arch/Xtensa/XtensaGenCSFeatureName.inc
@@ -0,0 +1,14 @@
+/* Capstone Disassembly Engine, https://www.capstone-engine.org */
+/* By Nguyen Anh Quynh , 2013-2022, */
+/* Rot127 2022-2024 */
+/* Automatically generated file by Capstone's LLVM TableGen Disassembler Backend. */
+
+/* LLVM-commit: */
+/* LLVM-tag: */
+
+/* Do not edit. */
+
+/* Capstone's LLVM TableGen Backends: */
+/* https://github.com/capstone-engine/llvm-capstone */
+
+{ XTENSA_FEATURE_HASDENSITY, "HasDensity" },
diff --git a/arch/Xtensa/XtensaGenCSMappingInsn.inc b/arch/Xtensa/XtensaGenCSMappingInsn.inc
new file mode 100644
index 000000000..58c8d4b8d
--- /dev/null
+++ b/arch/Xtensa/XtensaGenCSMappingInsn.inc
@@ -0,0 +1,2542 @@
+/* Capstone Disassembly Engine, https://www.capstone-engine.org */
+/* By Nguyen Anh Quynh , 2013-2022, */
+/* Rot127 2022-2024 */
+/* Automatically generated file by Capstone's LLVM TableGen Disassembler Backend. */
+
+/* LLVM-commit: */
+/* LLVM-tag: */
+
+/* Do not edit. */
+
+/* Capstone's LLVM TableGen Backends: */
+/* https://github.com/capstone-engine/llvm-capstone */
+
+{
+ /* PHINODE */
+ Xtensa_PHI /* 0 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_INLINEASM /* 1 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_INLINEASM_BR /* 2 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_CFI_INSTRUCTION /* 3 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_EH_LABEL /* 4 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_GC_LABEL /* 5 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_ANNOTATION_LABEL /* 6 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_KILL /* 7 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_EXTRACT_SUBREG /* 8 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_INSERT_SUBREG /* 9 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_IMPLICIT_DEF /* 10 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_SUBREG_TO_REG /* 11 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_COPY_TO_REGCLASS /* 12 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* DBG_VALUE */
+ Xtensa_DBG_VALUE /* 13 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* DBG_VALUE_LIST */
+ Xtensa_DBG_VALUE_LIST /* 14 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* DBG_INSTR_REF */
+ Xtensa_DBG_INSTR_REF /* 15 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* DBG_PHI */
+ Xtensa_DBG_PHI /* 16 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* DBG_LABEL */
+ Xtensa_DBG_LABEL /* 17 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_REG_SEQUENCE /* 18 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_COPY /* 19 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* BUNDLE */
+ Xtensa_BUNDLE /* 20 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* LIFETIME_START */
+ Xtensa_LIFETIME_START /* 21 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* LIFETIME_END */
+ Xtensa_LIFETIME_END /* 22 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* PSEUDO_PROBE */
+ Xtensa_PSEUDO_PROBE /* 23 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_ARITH_FENCE /* 24 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_STACKMAP /* 25 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* # FEntry call */
+ Xtensa_FENTRY_CALL /* 26 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_PATCHPOINT /* 27 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_LOAD_STACK_GUARD /* 28 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_PREALLOCATED_SETUP /* 29 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_PREALLOCATED_ARG /* 30 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_STATEPOINT /* 31 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_LOCAL_ESCAPE /* 32 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_FAULTING_OP /* 33 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_PATCHABLE_OP /* 34 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* # XRay Function Enter. */
+ Xtensa_PATCHABLE_FUNCTION_ENTER /* 35 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* # XRay Function Patchable RET. */
+ Xtensa_PATCHABLE_RET /* 36 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* # XRay Function Exit. */
+ Xtensa_PATCHABLE_FUNCTION_EXIT /* 37 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* # XRay Tail Call Exit. */
+ Xtensa_PATCHABLE_TAIL_CALL /* 38 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* # XRay Custom Event Log. */
+ Xtensa_PATCHABLE_EVENT_CALL /* 39 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* # XRay Typed Event Log. */
+ Xtensa_PATCHABLE_TYPED_EVENT_CALL /* 40 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_ICALL_BRANCH_FUNNEL /* 41 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_MEMBARRIER /* 42 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_JUMP_TABLE_DEBUG_INFO /* 43 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_ASSERT_SEXT /* 44 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_ASSERT_ZEXT /* 45 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_ASSERT_ALIGN /* 46 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_ADD /* 47 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_SUB /* 48 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_MUL /* 49 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_SDIV /* 50 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_UDIV /* 51 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_SREM /* 52 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_UREM /* 53 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_SDIVREM /* 54 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_UDIVREM /* 55 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_AND /* 56 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_OR /* 57 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_XOR /* 58 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_IMPLICIT_DEF /* 59 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_PHI /* 60 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_FRAME_INDEX /* 61 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_GLOBAL_VALUE /* 62 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_CONSTANT_POOL /* 63 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_EXTRACT /* 64 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_UNMERGE_VALUES /* 65 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_INSERT /* 66 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_MERGE_VALUES /* 67 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_BUILD_VECTOR /* 68 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_BUILD_VECTOR_TRUNC /* 69 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_CONCAT_VECTORS /* 70 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_PTRTOINT /* 71 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_INTTOPTR /* 72 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_BITCAST /* 73 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_FREEZE /* 74 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_CONSTANT_FOLD_BARRIER /* 75 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_INTRINSIC_FPTRUNC_ROUND /* 76 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_INTRINSIC_TRUNC /* 77 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_INTRINSIC_ROUND /* 78 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_INTRINSIC_LRINT /* 79 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_INTRINSIC_ROUNDEVEN /* 80 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_READCYCLECOUNTER /* 81 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_LOAD /* 82 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_SEXTLOAD /* 83 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_ZEXTLOAD /* 84 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_INDEXED_LOAD /* 85 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_INDEXED_SEXTLOAD /* 86 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_INDEXED_ZEXTLOAD /* 87 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_STORE /* 88 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_INDEXED_STORE /* 89 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_ATOMIC_CMPXCHG_WITH_SUCCESS /* 90 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_ATOMIC_CMPXCHG /* 91 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_ATOMICRMW_XCHG /* 92 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_ATOMICRMW_ADD /* 93 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_ATOMICRMW_SUB /* 94 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_ATOMICRMW_AND /* 95 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_ATOMICRMW_NAND /* 96 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_ATOMICRMW_OR /* 97 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_ATOMICRMW_XOR /* 98 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_ATOMICRMW_MAX /* 99 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_ATOMICRMW_MIN /* 100 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_ATOMICRMW_UMAX /* 101 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_ATOMICRMW_UMIN /* 102 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_ATOMICRMW_FADD /* 103 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_ATOMICRMW_FSUB /* 104 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_ATOMICRMW_FMAX /* 105 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_ATOMICRMW_FMIN /* 106 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_ATOMICRMW_UINC_WRAP /* 107 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_ATOMICRMW_UDEC_WRAP /* 108 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_FENCE /* 109 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_PREFETCH /* 110 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_BRCOND /* 111 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_BRINDIRECT /* 112 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_INVOKE_REGION_START /* 113 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_INTRINSIC /* 114 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_INTRINSIC_W_SIDE_EFFECTS /* 115 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_INTRINSIC_CONVERGENT /* 116 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_INTRINSIC_CONVERGENT_W_SIDE_EFFECTS /* 117 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_ANYEXT /* 118 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_TRUNC /* 119 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_CONSTANT /* 120 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_FCONSTANT /* 121 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_VASTART /* 122 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_VAARG /* 123 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_SEXT /* 124 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_SEXT_INREG /* 125 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_ZEXT /* 126 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_SHL /* 127 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_LSHR /* 128 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_ASHR /* 129 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_FSHL /* 130 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_FSHR /* 131 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_ROTR /* 132 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_ROTL /* 133 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_ICMP /* 134 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_FCMP /* 135 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_SELECT /* 136 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_UADDO /* 137 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_UADDE /* 138 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_USUBO /* 139 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_USUBE /* 140 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_SADDO /* 141 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_SADDE /* 142 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_SSUBO /* 143 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_SSUBE /* 144 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_UMULO /* 145 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_SMULO /* 146 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_UMULH /* 147 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_SMULH /* 148 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_UADDSAT /* 149 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_SADDSAT /* 150 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_USUBSAT /* 151 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_SSUBSAT /* 152 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_USHLSAT /* 153 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_SSHLSAT /* 154 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_SMULFIX /* 155 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_UMULFIX /* 156 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_SMULFIXSAT /* 157 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_UMULFIXSAT /* 158 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_SDIVFIX /* 159 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_UDIVFIX /* 160 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_SDIVFIXSAT /* 161 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_UDIVFIXSAT /* 162 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_FADD /* 163 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_FSUB /* 164 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_FMUL /* 165 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_FMA /* 166 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_FMAD /* 167 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_FDIV /* 168 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_FREM /* 169 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_FPOW /* 170 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_FPOWI /* 171 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_FEXP /* 172 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_FEXP2 /* 173 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_FEXP10 /* 174 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_FLOG /* 175 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_FLOG2 /* 176 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_FLOG10 /* 177 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_FLDEXP /* 178 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_FFREXP /* 179 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_FNEG /* 180 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_FPEXT /* 181 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_FPTRUNC /* 182 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_FPTOSI /* 183 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_FPTOUI /* 184 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_SITOFP /* 185 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_UITOFP /* 186 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_FABS /* 187 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_FCOPYSIGN /* 188 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_IS_FPCLASS /* 189 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_FCANONICALIZE /* 190 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_FMINNUM /* 191 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_FMAXNUM /* 192 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_FMINNUM_IEEE /* 193 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_FMAXNUM_IEEE /* 194 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_FMINIMUM /* 195 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_FMAXIMUM /* 196 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_GET_FPENV /* 197 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_SET_FPENV /* 198 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_RESET_FPENV /* 199 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_GET_FPMODE /* 200 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_SET_FPMODE /* 201 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_RESET_FPMODE /* 202 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_PTR_ADD /* 203 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_PTRMASK /* 204 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_SMIN /* 205 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_SMAX /* 206 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_UMIN /* 207 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_UMAX /* 208 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_ABS /* 209 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_LROUND /* 210 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_LLROUND /* 211 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_BR /* 212 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_BRJT /* 213 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_INSERT_VECTOR_ELT /* 214 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_EXTRACT_VECTOR_ELT /* 215 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_SHUFFLE_VECTOR /* 216 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_CTTZ /* 217 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_CTTZ_ZERO_UNDEF /* 218 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_CTLZ /* 219 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_CTLZ_ZERO_UNDEF /* 220 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_CTPOP /* 221 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_BSWAP /* 222 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_BITREVERSE /* 223 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_FCEIL /* 224 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_FCOS /* 225 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_FSIN /* 226 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_FSQRT /* 227 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_FFLOOR /* 228 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_FRINT /* 229 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_FNEARBYINT /* 230 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_ADDRSPACE_CAST /* 231 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_BLOCK_ADDR /* 232 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_JUMP_TABLE /* 233 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_DYN_STACKALLOC /* 234 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_STACKSAVE /* 235 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_STACKRESTORE /* 236 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_STRICT_FADD /* 237 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_STRICT_FSUB /* 238 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_STRICT_FMUL /* 239 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_STRICT_FDIV /* 240 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_STRICT_FREM /* 241 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_STRICT_FMA /* 242 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_STRICT_FSQRT /* 243 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_STRICT_FLDEXP /* 244 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_READ_REGISTER /* 245 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_WRITE_REGISTER /* 246 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /* */
+ Xtensa_G_MEMCPY /* 247 */, XTENSA_INS_INVALID,
+ #ifndef CAPSTONE_DIET
+ { 0 }, { 0 }, { 0 }, 0, 0, {{ 0 }}
+ #endif
+},
+{
+ /*