// SPDX-License-Identifier: MIT
// Copyright (C) 2018-present iced project and contributors

// ⚠️This file was generated by GENERATOR!🦹‍♂️

use crate::OpCodeOperandKind;

#[rustfmt::skip]
pub(super) static LEGACY_OP_KINDS: [OpCodeOperandKind; 76] = [
	OpCodeOperandKind::None,
	OpCodeOperandKind::farbr2_2,
	OpCodeOperandKind::farbr4_2,
	OpCodeOperandKind::mem_offs,
	OpCodeOperandKind::mem,
	OpCodeOperandKind::mem_mpx,
	OpCodeOperandKind::mem_mib,
	OpCodeOperandKind::r8_or_mem,
	OpCodeOperandKind::r16_or_mem,
	OpCodeOperandKind::r32_or_mem,
	OpCodeOperandKind::r32_or_mem_mpx,
	OpCodeOperandKind::r64_or_mem,
	OpCodeOperandKind::r64_or_mem_mpx,
	OpCodeOperandKind::mm_or_mem,
	OpCodeOperandKind::xmm_or_mem,
	OpCodeOperandKind::bnd_or_mem_mpx,
	OpCodeOperandKind::r8_reg,
	OpCodeOperandKind::r8_opcode,
	OpCodeOperandKind::r16_reg,
	OpCodeOperandKind::r16_reg_mem,
	OpCodeOperandKind::r16_rm,
	OpCodeOperandKind::r16_opcode,
	OpCodeOperandKind::r32_reg,
	OpCodeOperandKind::r32_reg_mem,
	OpCodeOperandKind::r32_rm,
	OpCodeOperandKind::r32_opcode,
	OpCodeOperandKind::r64_reg,
	OpCodeOperandKind::r64_reg_mem,
	OpCodeOperandKind::r64_rm,
	OpCodeOperandKind::r64_opcode,
	OpCodeOperandKind::seg_reg,
	OpCodeOperandKind::mm_reg,
	OpCodeOperandKind::mm_rm,
	OpCodeOperandKind::xmm_reg,
	OpCodeOperandKind::xmm_rm,
	OpCodeOperandKind::cr_reg,
	OpCodeOperandKind::dr_reg,
	OpCodeOperandKind::tr_reg,
	OpCodeOperandKind::bnd_reg,
	OpCodeOperandKind::es,
	OpCodeOperandKind::cs,
	OpCodeOperandKind::ss,
	OpCodeOperandKind::ds,
	OpCodeOperandKind::fs,
	OpCodeOperandKind::gs,
	OpCodeOperandKind::al,
	OpCodeOperandKind::cl,
	OpCodeOperandKind::ax,
	OpCodeOperandKind::dx,
	OpCodeOperandKind::eax,
	OpCodeOperandKind::rax,
	OpCodeOperandKind::st0,
	OpCodeOperandKind::sti_opcode,
	OpCodeOperandKind::imm8,
	OpCodeOperandKind::imm8_const_1,
	OpCodeOperandKind::imm8sex16,
	OpCodeOperandKind::imm8sex32,
	OpCodeOperandKind::imm8sex64,
	OpCodeOperandKind::imm16,
	OpCodeOperandKind::imm32,
	OpCodeOperandKind::imm32sex64,
	OpCodeOperandKind::imm64,
	OpCodeOperandKind::seg_rSI,
	OpCodeOperandKind::es_rDI,
	OpCodeOperandKind::seg_rDI,
	OpCodeOperandKind::seg_rBX_al,
	OpCodeOperandKind::br16_1,
	OpCodeOperandKind::br32_1,
	OpCodeOperandKind::br64_1,
	OpCodeOperandKind::br16_2,
	OpCodeOperandKind::br32_4,
	OpCodeOperandKind::br64_4,
	OpCodeOperandKind::xbegin_2,
	OpCodeOperandKind::xbegin_4,
	OpCodeOperandKind::brdisp_2,
	OpCodeOperandKind::brdisp_4,
];

#[rustfmt::skip]
#[cfg(not(feature = "no_vex"))]
pub(super) static VEX_OP_KINDS: [OpCodeOperandKind; 39] = [
	OpCodeOperandKind::None,
	OpCodeOperandKind::mem,
	OpCodeOperandKind::mem_vsib32x,
	OpCodeOperandKind::mem_vsib64x,
	OpCodeOperandKind::mem_vsib32y,
	OpCodeOperandKind::mem_vsib64y,
	OpCodeOperandKind::r32_or_mem,
	OpCodeOperandKind::r64_or_mem,
	OpCodeOperandKind::xmm_or_mem,
	OpCodeOperandKind::ymm_or_mem,
	OpCodeOperandKind::k_or_mem,
	OpCodeOperandKind::r32_reg,
	OpCodeOperandKind::r32_rm,
	OpCodeOperandKind::r32_vvvv,
	OpCodeOperandKind::r64_reg,
	OpCodeOperandKind::r64_rm,
	OpCodeOperandKind::r64_vvvv,
	OpCodeOperandKind::k_reg,
	OpCodeOperandKind::k_rm,
	OpCodeOperandKind::k_vvvv,
	OpCodeOperandKind::xmm_reg,
	OpCodeOperandKind::xmm_rm,
	OpCodeOperandKind::xmm_vvvv,
	OpCodeOperandKind::xmm_is4,
	OpCodeOperandKind::xmm_is5,
	OpCodeOperandKind::ymm_reg,
	OpCodeOperandKind::ymm_rm,
	OpCodeOperandKind::ymm_vvvv,
	OpCodeOperandKind::ymm_is4,
	OpCodeOperandKind::ymm_is5,
	OpCodeOperandKind::imm4_m2z,
	OpCodeOperandKind::imm8,
	OpCodeOperandKind::seg_rDI,
	OpCodeOperandKind::br64_1,
	OpCodeOperandKind::br64_4,
	OpCodeOperandKind::sibmem,
	OpCodeOperandKind::tmm_reg,
	OpCodeOperandKind::tmm_rm,
	OpCodeOperandKind::tmm_vvvv,
];

#[rustfmt::skip]
#[cfg(not(feature = "no_xop"))]
pub(super) static XOP_OP_KINDS: [OpCodeOperandKind; 19] = [
	OpCodeOperandKind::None,
	OpCodeOperandKind::r32_or_mem,
	OpCodeOperandKind::r64_or_mem,
	OpCodeOperandKind::xmm_or_mem,
	OpCodeOperandKind::ymm_or_mem,
	OpCodeOperandKind::r32_reg,
	OpCodeOperandKind::r32_rm,
	OpCodeOperandKind::r32_vvvv,
	OpCodeOperandKind::r64_reg,
	OpCodeOperandKind::r64_rm,
	OpCodeOperandKind::r64_vvvv,
	OpCodeOperandKind::xmm_reg,
	OpCodeOperandKind::xmm_vvvv,
	OpCodeOperandKind::xmm_is4,
	OpCodeOperandKind::ymm_reg,
	OpCodeOperandKind::ymm_vvvv,
	OpCodeOperandKind::ymm_is4,
	OpCodeOperandKind::imm8,
	OpCodeOperandKind::imm32,
];

#[rustfmt::skip]
#[cfg(not(feature = "no_evex"))]
pub(super) static EVEX_OP_KINDS: [OpCodeOperandKind; 32] = [
	OpCodeOperandKind::None,
	OpCodeOperandKind::mem,
	OpCodeOperandKind::mem_vsib32x,
	OpCodeOperandKind::mem_vsib64x,
	OpCodeOperandKind::mem_vsib32y,
	OpCodeOperandKind::mem_vsib64y,
	OpCodeOperandKind::mem_vsib32z,
	OpCodeOperandKind::mem_vsib64z,
	OpCodeOperandKind::r32_or_mem,
	OpCodeOperandKind::r64_or_mem,
	OpCodeOperandKind::xmm_or_mem,
	OpCodeOperandKind::ymm_or_mem,
	OpCodeOperandKind::zmm_or_mem,
	OpCodeOperandKind::r32_reg,
	OpCodeOperandKind::r32_rm,
	OpCodeOperandKind::r64_reg,
	OpCodeOperandKind::r64_rm,
	OpCodeOperandKind::k_reg,
	OpCodeOperandKind::kp1_reg,
	OpCodeOperandKind::k_rm,
	OpCodeOperandKind::xmm_reg,
	OpCodeOperandKind::xmm_rm,
	OpCodeOperandKind::xmm_vvvv,
	OpCodeOperandKind::xmmp3_vvvv,
	OpCodeOperandKind::ymm_reg,
	OpCodeOperandKind::ymm_rm,
	OpCodeOperandKind::ymm_vvvv,
	OpCodeOperandKind::zmm_reg,
	OpCodeOperandKind::zmm_rm,
	OpCodeOperandKind::zmm_vvvv,
	OpCodeOperandKind::zmmp3_vvvv,
	OpCodeOperandKind::imm8,
];

#[rustfmt::skip]
#[cfg(feature = "mvex")]
pub(super) static MVEX_OP_KINDS: [OpCodeOperandKind; 9] = [
	OpCodeOperandKind::None,
	OpCodeOperandKind::mem,
	OpCodeOperandKind::mem_vsib32z,
	OpCodeOperandKind::zmm_or_mem,
	OpCodeOperandKind::k_reg,
	OpCodeOperandKind::k_vvvv,
	OpCodeOperandKind::zmm_reg,
	OpCodeOperandKind::zmm_vvvv,
	OpCodeOperandKind::imm8,
];
