--- /dev/null
+#pragma once
+
+#include <stddef.h>
+#include <stdint.h>
+
+enum svp64_state {
+ SVP64_SUCCESS,
+ SVP64_ERROR_LOOKUP,
+ SVP64_ERROR_OPERAND_0,
+ SVP64_ERROR_OPERAND_1,
+ SVP64_ERROR_OPERAND_2,
+ SVP64_ERROR_OPERAND_3,
+ SVP64_ERROR_OPERAND_4,
+ SVP64_ERROR_OPERAND_5,
+ SVP64_ERROR_OPERAND_6,
+ SVP64_ERROR_OPERAND_7,
+};
+
+struct svp64_opcode {
+ uint32_t value;
+ uint32_t mask;
+};
+
+struct svp64_record {
+ struct svp64_opcode opcode;
+ uint8_t operands[8];
+ char name[16];
+};
+
+struct svp64_ctx {
+ struct svp64_record const *record;
+ int64_t operands[8];
+};
+
+enum svp64_state
+svp64_disassemble(struct svp64_ctx *ctx, uint32_t insn);
+
+struct svp64_record const *
+svp64_lookup_insn(uint32_t insn);