/* SPDX-FileCopyrightText: © 2022-2025 Decompollaborate */
/* SPDX-License-Identifier: MIT */

/* Automatically generated. DO NOT MODIFY */

use crate::encoded_field_mask::EncodedFieldMask;
use crate::operands::{OperandDescriptor, OperandDisplay, OPERAND_COUNT};
use crate::registers::*;
use crate::vram::{Vram, VramOffset};
use core::fmt;
use core::num::NonZeroU16;
#[cfg(feature = "R4000ALLEGREX")]
use ordered_float::OrderedFloat;
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq, PartialOrd, Ord)]
#[allow(non_camel_case_types)]
pub enum Operand {
    ALL_EMPTY,
    core_rs,
    core_rt,
    core_rd,
    core_sa,
    core_zero,
    core_cop0d,
    core_cop0cd,
    core_fs,
    core_ft,
    core_fd,
    core_cop1cs,
    core_cop2t,
    core_cop2d,
    core_cop2cd,
    core_op,
    core_hint,
    core_code,
    core_code_lower,
    core_copraw,
    core_label,
    core_imm_i16,
    core_imm_u16,
    core_branch_target_label,
    core_imm_rs,
    core_maybe_rd_rs,
    core_maybe_zero_rs,
    #[cfg(feature = "RSP")]
    rsp_cop0d,
    #[cfg(feature = "RSP")]
    rsp_cop2cd,
    #[cfg(feature = "RSP")]
    rsp_vs,
    #[cfg(feature = "RSP")]
    rsp_vd,
    #[cfg(feature = "RSP")]
    rsp_vt_elementhigh,
    #[cfg(feature = "RSP")]
    rsp_vt_elementlow,
    #[cfg(feature = "RSP")]
    rsp_vd_de,
    #[cfg(feature = "RSP")]
    rsp_vs_index,
    #[cfg(feature = "RSP")]
    rsp_offset7_rs,
    #[cfg(feature = "RSP")]
    rsp_offset8_rs,
    #[cfg(feature = "RSP")]
    rsp_offset9_rs,
    #[cfg(feature = "RSP")]
    rsp_offset10_rs,
    #[cfg(feature = "RSP")]
    rsp_offset11_rs,
    #[cfg(feature = "R3000GTE")]
    r3000gte_gbg,
    #[cfg(feature = "R3000GTE")]
    r3000gte_sf,
    #[cfg(feature = "R3000GTE")]
    r3000gte_mx,
    #[cfg(feature = "R3000GTE")]
    r3000gte_v,
    #[cfg(feature = "R3000GTE")]
    r3000gte_cv,
    #[cfg(feature = "R3000GTE")]
    r3000gte_lm,
    #[cfg(feature = "R4000ALLEGREX")]
    r4000allegrex_s_vs,
    #[cfg(feature = "R4000ALLEGREX")]
    r4000allegrex_s_vt,
    #[cfg(feature = "R4000ALLEGREX")]
    r4000allegrex_s_vd,
    #[cfg(feature = "R4000ALLEGREX")]
    r4000allegrex_s_vt_imm,
    #[cfg(feature = "R4000ALLEGREX")]
    r4000allegrex_s_vd_imm,
    #[cfg(feature = "R4000ALLEGREX")]
    r4000allegrex_p_vs,
    #[cfg(feature = "R4000ALLEGREX")]
    r4000allegrex_p_vt,
    #[cfg(feature = "R4000ALLEGREX")]
    r4000allegrex_p_vd,
    #[cfg(feature = "R4000ALLEGREX")]
    r4000allegrex_t_vs,
    #[cfg(feature = "R4000ALLEGREX")]
    r4000allegrex_t_vt,
    #[cfg(feature = "R4000ALLEGREX")]
    r4000allegrex_t_vd,
    #[cfg(feature = "R4000ALLEGREX")]
    r4000allegrex_q_vs,
    #[cfg(feature = "R4000ALLEGREX")]
    r4000allegrex_q_vt,
    #[cfg(feature = "R4000ALLEGREX")]
    r4000allegrex_q_vd,
    #[cfg(feature = "R4000ALLEGREX")]
    r4000allegrex_q_vt_imm,
    #[cfg(feature = "R4000ALLEGREX")]
    r4000allegrex_mp_vs,
    #[cfg(feature = "R4000ALLEGREX")]
    r4000allegrex_mp_vt,
    #[cfg(feature = "R4000ALLEGREX")]
    r4000allegrex_mp_vd,
    #[cfg(feature = "R4000ALLEGREX")]
    r4000allegrex_mp_vs_transpose,
    #[cfg(feature = "R4000ALLEGREX")]
    r4000allegrex_mt_vs,
    #[cfg(feature = "R4000ALLEGREX")]
    r4000allegrex_mt_vt,
    #[cfg(feature = "R4000ALLEGREX")]
    r4000allegrex_mt_vd,
    #[cfg(feature = "R4000ALLEGREX")]
    r4000allegrex_mt_vs_transpose,
    #[cfg(feature = "R4000ALLEGREX")]
    r4000allegrex_mq_vs,
    #[cfg(feature = "R4000ALLEGREX")]
    r4000allegrex_mq_vt,
    #[cfg(feature = "R4000ALLEGREX")]
    r4000allegrex_mq_vd,
    #[cfg(feature = "R4000ALLEGREX")]
    r4000allegrex_mq_vs_transpose,
    #[cfg(feature = "R4000ALLEGREX")]
    r4000allegrex_cop2cs,
    #[cfg(feature = "R4000ALLEGREX")]
    r4000allegrex_cop2cd,
    #[cfg(feature = "R4000ALLEGREX")]
    r4000allegrex_pos,
    #[cfg(feature = "R4000ALLEGREX")]
    r4000allegrex_size,
    #[cfg(feature = "R4000ALLEGREX")]
    r4000allegrex_size_plus_pos,
    #[cfg(feature = "R4000ALLEGREX")]
    r4000allegrex_imm3,
    #[cfg(feature = "R4000ALLEGREX")]
    r4000allegrex_offset14_rs,
    #[cfg(feature = "R4000ALLEGREX")]
    r4000allegrex_offset14_rs_maybe_wb,
    #[cfg(feature = "R4000ALLEGREX")]
    r4000allegrex_vcmp_cond_s_maybe_vs_maybe_vt,
    #[cfg(feature = "R4000ALLEGREX")]
    r4000allegrex_vcmp_cond_p_maybe_vs_maybe_vt,
    #[cfg(feature = "R4000ALLEGREX")]
    r4000allegrex_vcmp_cond_t_maybe_vs_maybe_vt,
    #[cfg(feature = "R4000ALLEGREX")]
    r4000allegrex_vcmp_cond_q_maybe_vs_maybe_vt,
    #[cfg(feature = "R4000ALLEGREX")]
    r4000allegrex_vconstant,
    #[cfg(feature = "R4000ALLEGREX")]
    r4000allegrex_power_of_two,
    #[cfg(feature = "R4000ALLEGREX")]
    r4000allegrex_vfpu_cc_bit,
    #[cfg(feature = "R4000ALLEGREX")]
    r4000allegrex_bn,
    #[cfg(feature = "R4000ALLEGREX")]
    r4000allegrex_int16,
    #[cfg(feature = "R4000ALLEGREX")]
    r4000allegrex_float16,
    #[cfg(feature = "R4000ALLEGREX")]
    r4000allegrex_p_vrot_code,
    #[cfg(feature = "R4000ALLEGREX")]
    r4000allegrex_t_vrot_code,
    #[cfg(feature = "R4000ALLEGREX")]
    r4000allegrex_q_vrot_code,
    #[cfg(feature = "R4000ALLEGREX")]
    r4000allegrex_wpx,
    #[cfg(feature = "R4000ALLEGREX")]
    r4000allegrex_wpy,
    #[cfg(feature = "R4000ALLEGREX")]
    r4000allegrex_wpz,
    #[cfg(feature = "R4000ALLEGREX")]
    r4000allegrex_wpw,
    #[cfg(feature = "R4000ALLEGREX")]
    r4000allegrex_rpx,
    #[cfg(feature = "R4000ALLEGREX")]
    r4000allegrex_rpy,
    #[cfg(feature = "R4000ALLEGREX")]
    r4000allegrex_rpz,
    #[cfg(feature = "R4000ALLEGREX")]
    r4000allegrex_rpw,
    #[cfg(feature = "R5900EE")]
    r5900ee_I,
    #[cfg(feature = "R5900EE")]
    r5900ee_Q,
    #[cfg(feature = "R5900EE")]
    r5900ee_R,
    #[cfg(feature = "R5900EE")]
    r5900ee_ACC,
    #[cfg(feature = "R5900EE")]
    r5900ee_imm5,
    #[cfg(feature = "R5900EE")]
    r5900ee_imm15,
    #[cfg(feature = "R5900EE")]
    r5900ee_vfs,
    #[cfg(feature = "R5900EE")]
    r5900ee_vft,
    #[cfg(feature = "R5900EE")]
    r5900ee_vfd,
    #[cfg(feature = "R5900EE")]
    r5900ee_vis,
    #[cfg(feature = "R5900EE")]
    r5900ee_vit,
    #[cfg(feature = "R5900EE")]
    r5900ee_vid,
    #[cfg(feature = "R5900EE")]
    r5900ee_ACCxyzw,
    #[cfg(feature = "R5900EE")]
    r5900ee_vfsxyzw,
    #[cfg(feature = "R5900EE")]
    r5900ee_vftxyzw,
    #[cfg(feature = "R5900EE")]
    r5900ee_vfdxyzw,
    #[cfg(feature = "R5900EE")]
    r5900ee_vfsxyzw_inv_vft,
    #[cfg(feature = "R5900EE")]
    r5900ee_vftxyzw_inv_vfs,
    #[cfg(feature = "R5900EE")]
    r5900ee_vftn,
    #[cfg(feature = "R5900EE")]
    r5900ee_vfsl,
    #[cfg(feature = "R5900EE")]
    r5900ee_vftm,
    #[cfg(feature = "R5900EE")]
    r5900ee_vis_predecr,
    #[cfg(feature = "R5900EE")]
    r5900ee_vit_predecr,
    #[cfg(feature = "R5900EE")]
    r5900ee_vis_postincr,
    #[cfg(feature = "R5900EE")]
    r5900ee_vit_postincr,
    #[cfg(feature = "R5900EE")]
    r5900ee_vis_parenthesis,
}
pub static OPERANDS: [OperandDescriptor; OPERAND_COUNT] = {
    let mut table = [OperandDescriptor::default(); OPERAND_COUNT];
    {
        table[Operand::ALL_EMPTY as usize] =
            OperandDescriptor::new(concat!("ALL", "_", "EMPTY"), EncodedFieldMask::empty());
    }
    {
        table[Operand::core_rs as usize] =
            OperandDescriptor::new(concat!("core", "_", "rs"), EncodedFieldMask::rs);
    }
    {
        table[Operand::core_rt as usize] =
            OperandDescriptor::new(concat!("core", "_", "rt"), EncodedFieldMask::rt);
    }
    {
        table[Operand::core_rd as usize] =
            OperandDescriptor::new(concat!("core", "_", "rd"), EncodedFieldMask::rd);
    }
    {
        table[Operand::core_sa as usize] =
            OperandDescriptor::new(concat!("core", "_", "sa"), EncodedFieldMask::sa);
    }
    {
        table[Operand::core_zero as usize] =
            OperandDescriptor::new(concat!("core", "_", "zero"), EncodedFieldMask::empty());
    }
    {
        table[Operand::core_cop0d as usize] =
            OperandDescriptor::new(concat!("core", "_", "cop0d"), EncodedFieldMask::cop0d);
    }
    {
        table[Operand::core_cop0cd as usize] =
            OperandDescriptor::new(concat!("core", "_", "cop0cd"), EncodedFieldMask::cop0cd);
    }
    {
        table[Operand::core_fs as usize] =
            OperandDescriptor::new(concat!("core", "_", "fs"), EncodedFieldMask::fs);
    }
    {
        table[Operand::core_ft as usize] =
            OperandDescriptor::new(concat!("core", "_", "ft"), EncodedFieldMask::ft);
    }
    {
        table[Operand::core_fd as usize] =
            OperandDescriptor::new(concat!("core", "_", "fd"), EncodedFieldMask::fd);
    }
    {
        table[Operand::core_cop1cs as usize] =
            OperandDescriptor::new(concat!("core", "_", "cop1cs"), EncodedFieldMask::cop1cs);
    }
    {
        table[Operand::core_cop2t as usize] =
            OperandDescriptor::new(concat!("core", "_", "cop2t"), EncodedFieldMask::cop2t);
    }
    {
        table[Operand::core_cop2d as usize] =
            OperandDescriptor::new(concat!("core", "_", "cop2d"), EncodedFieldMask::cop2d);
    }
    {
        table[Operand::core_cop2cd as usize] =
            OperandDescriptor::new(concat!("core", "_", "cop2cd"), EncodedFieldMask::cop2cd);
    }
    {
        table[Operand::core_op as usize] =
            OperandDescriptor::new(concat!("core", "_", "op"), EncodedFieldMask::op);
    }
    {
        table[Operand::core_hint as usize] =
            OperandDescriptor::new(concat!("core", "_", "hint"), EncodedFieldMask::hint);
    }
    {
        table[Operand::core_code as usize] =
            OperandDescriptor::new(concat!("core", "_", "code"), EncodedFieldMask::code);
    }
    {
        table[Operand::core_code_lower as usize] = OperandDescriptor::new(
            concat!("core", "_", "code_lower"),
            EncodedFieldMask::code_lower,
        );
    }
    {
        table[Operand::core_copraw as usize] =
            OperandDescriptor::new(concat!("core", "_", "copraw"), EncodedFieldMask::copraw);
    }
    {
        table[Operand::core_label as usize] =
            OperandDescriptor::new(concat!("core", "_", "label"), EncodedFieldMask::instr_index);
    }
    {
        table[Operand::core_imm_i16 as usize] =
            OperandDescriptor::new(concat!("core", "_", "imm_i16"), EncodedFieldMask::immediate);
    }
    {
        table[Operand::core_imm_u16 as usize] =
            OperandDescriptor::new(concat!("core", "_", "imm_u16"), EncodedFieldMask::immediate);
    }
    {
        table[Operand::core_branch_target_label as usize] = OperandDescriptor::new(
            concat!("core", "_", "branch_target_label"),
            EncodedFieldMask::immediate,
        );
    }
    {
        table[Operand::core_imm_rs as usize] = OperandDescriptor::new(
            concat!("core", "_", "imm_rs"),
            EncodedFieldMask::immediate.union(EncodedFieldMask::rs),
        );
    }
    {
        table[Operand::core_maybe_rd_rs as usize] = OperandDescriptor::new(
            concat!("core", "_", "maybe_rd_rs"),
            EncodedFieldMask::rd.union(EncodedFieldMask::rs),
        );
    }
    {
        table[Operand::core_maybe_zero_rs as usize] = OperandDescriptor::new(
            concat!("core", "_", "maybe_zero_rs"),
            EncodedFieldMask::empty().union(EncodedFieldMask::rs),
        );
    }
    #[cfg(feature = "RSP")]
    {
        table[Operand::rsp_cop0d as usize] =
            OperandDescriptor::new(concat!("rsp", "_", "cop0d"), EncodedFieldMask::cop0d);
    }
    #[cfg(feature = "RSP")]
    {
        table[Operand::rsp_cop2cd as usize] =
            OperandDescriptor::new(concat!("rsp", "_", "cop2cd"), EncodedFieldMask::cop2cd);
    }
    #[cfg(feature = "RSP")]
    {
        table[Operand::rsp_vs as usize] =
            OperandDescriptor::new(concat!("rsp", "_", "vs"), EncodedFieldMask::rsp_vs);
    }
    #[cfg(feature = "RSP")]
    {
        table[Operand::rsp_vd as usize] =
            OperandDescriptor::new(concat!("rsp", "_", "vd"), EncodedFieldMask::rsp_vd);
    }
    #[cfg(feature = "RSP")]
    {
        table[Operand::rsp_vt_elementhigh as usize] = OperandDescriptor::new(
            concat!("rsp", "_", "vt_elementhigh"),
            EncodedFieldMask::rsp_vt.union(EncodedFieldMask::rsp_elementhigh),
        );
    }
    #[cfg(feature = "RSP")]
    {
        table[Operand::rsp_vt_elementlow as usize] = OperandDescriptor::new(
            concat!("rsp", "_", "vt_elementlow"),
            EncodedFieldMask::rsp_vt.union(EncodedFieldMask::rsp_elementlow),
        );
    }
    #[cfg(feature = "RSP")]
    {
        table[Operand::rsp_vd_de as usize] = OperandDescriptor::new(
            concat!("rsp", "_", "vd_de"),
            EncodedFieldMask::rsp_vd.union(EncodedFieldMask::rsp_de),
        );
    }
    #[cfg(feature = "RSP")]
    {
        table[Operand::rsp_vs_index as usize] = OperandDescriptor::new(
            concat!("rsp", "_", "vs_index"),
            EncodedFieldMask::rsp_vs.union(EncodedFieldMask::rsp_index),
        );
    }
    #[cfg(feature = "RSP")]
    {
        table[Operand::rsp_offset7_rs as usize] = OperandDescriptor::new(
            concat!("rsp", "_", "offset7_rs"),
            EncodedFieldMask::rsp_offset.union(EncodedFieldMask::rs),
        );
    }
    #[cfg(feature = "RSP")]
    {
        table[Operand::rsp_offset8_rs as usize] = OperandDescriptor::new(
            concat!("rsp", "_", "offset8_rs"),
            EncodedFieldMask::rsp_offset.union(EncodedFieldMask::rs),
        );
    }
    #[cfg(feature = "RSP")]
    {
        table[Operand::rsp_offset9_rs as usize] = OperandDescriptor::new(
            concat!("rsp", "_", "offset9_rs"),
            EncodedFieldMask::rsp_offset.union(EncodedFieldMask::rs),
        );
    }
    #[cfg(feature = "RSP")]
    {
        table[Operand::rsp_offset10_rs as usize] = OperandDescriptor::new(
            concat!("rsp", "_", "offset10_rs"),
            EncodedFieldMask::rsp_offset.union(EncodedFieldMask::rs),
        );
    }
    #[cfg(feature = "RSP")]
    {
        table[Operand::rsp_offset11_rs as usize] = OperandDescriptor::new(
            concat!("rsp", "_", "offset11_rs"),
            EncodedFieldMask::rsp_offset.union(EncodedFieldMask::rs),
        );
    }
    #[cfg(feature = "R3000GTE")]
    {
        table[Operand::r3000gte_gbg as usize] = OperandDescriptor::new(
            concat!("r3000gte", "_", "gbg"),
            EncodedFieldMask::r3000gte_gbg,
        );
    }
    #[cfg(feature = "R3000GTE")]
    {
        table[Operand::r3000gte_sf as usize] = OperandDescriptor::new(
            concat!("r3000gte", "_", "sf"),
            EncodedFieldMask::r3000gte_sf,
        );
    }
    #[cfg(feature = "R3000GTE")]
    {
        table[Operand::r3000gte_mx as usize] = OperandDescriptor::new(
            concat!("r3000gte", "_", "mx"),
            EncodedFieldMask::r3000gte_mx,
        );
    }
    #[cfg(feature = "R3000GTE")]
    {
        table[Operand::r3000gte_v as usize] =
            OperandDescriptor::new(concat!("r3000gte", "_", "v"), EncodedFieldMask::r3000gte_v);
    }
    #[cfg(feature = "R3000GTE")]
    {
        table[Operand::r3000gte_cv as usize] = OperandDescriptor::new(
            concat!("r3000gte", "_", "cv"),
            EncodedFieldMask::r3000gte_cv,
        );
    }
    #[cfg(feature = "R3000GTE")]
    {
        table[Operand::r3000gte_lm as usize] = OperandDescriptor::new(
            concat!("r3000gte", "_", "lm"),
            EncodedFieldMask::r3000gte_lm,
        );
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Operand::r4000allegrex_s_vs as usize] = OperandDescriptor::new(
            concat!("r4000allegrex", "_", "s_vs"),
            EncodedFieldMask::r4000allegrex_vs,
        );
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Operand::r4000allegrex_s_vt as usize] = OperandDescriptor::new(
            concat!("r4000allegrex", "_", "s_vt"),
            EncodedFieldMask::r4000allegrex_vt,
        );
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Operand::r4000allegrex_s_vd as usize] = OperandDescriptor::new(
            concat!("r4000allegrex", "_", "s_vd"),
            EncodedFieldMask::r4000allegrex_vd,
        );
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Operand::r4000allegrex_s_vt_imm as usize] = OperandDescriptor::new(
            concat!("r4000allegrex", "_", "s_vt_imm"),
            EncodedFieldMask::r4000allegrex_vt_imm,
        );
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Operand::r4000allegrex_s_vd_imm as usize] = OperandDescriptor::new(
            concat!("r4000allegrex", "_", "s_vd_imm"),
            EncodedFieldMask::r4000allegrex_vd_imm,
        );
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Operand::r4000allegrex_p_vs as usize] = OperandDescriptor::new(
            concat!("r4000allegrex", "_", "p_vs"),
            EncodedFieldMask::r4000allegrex_vs,
        );
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Operand::r4000allegrex_p_vt as usize] = OperandDescriptor::new(
            concat!("r4000allegrex", "_", "p_vt"),
            EncodedFieldMask::r4000allegrex_vt,
        );
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Operand::r4000allegrex_p_vd as usize] = OperandDescriptor::new(
            concat!("r4000allegrex", "_", "p_vd"),
            EncodedFieldMask::r4000allegrex_vd,
        );
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Operand::r4000allegrex_t_vs as usize] = OperandDescriptor::new(
            concat!("r4000allegrex", "_", "t_vs"),
            EncodedFieldMask::r4000allegrex_vs,
        );
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Operand::r4000allegrex_t_vt as usize] = OperandDescriptor::new(
            concat!("r4000allegrex", "_", "t_vt"),
            EncodedFieldMask::r4000allegrex_vt,
        );
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Operand::r4000allegrex_t_vd as usize] = OperandDescriptor::new(
            concat!("r4000allegrex", "_", "t_vd"),
            EncodedFieldMask::r4000allegrex_vd,
        );
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Operand::r4000allegrex_q_vs as usize] = OperandDescriptor::new(
            concat!("r4000allegrex", "_", "q_vs"),
            EncodedFieldMask::r4000allegrex_vs,
        );
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Operand::r4000allegrex_q_vt as usize] = OperandDescriptor::new(
            concat!("r4000allegrex", "_", "q_vt"),
            EncodedFieldMask::r4000allegrex_vt,
        );
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Operand::r4000allegrex_q_vd as usize] = OperandDescriptor::new(
            concat!("r4000allegrex", "_", "q_vd"),
            EncodedFieldMask::r4000allegrex_vd,
        );
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Operand::r4000allegrex_q_vt_imm as usize] = OperandDescriptor::new(
            concat!("r4000allegrex", "_", "q_vt_imm"),
            EncodedFieldMask::r4000allegrex_vt_6_imm,
        );
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Operand::r4000allegrex_mp_vs as usize] = OperandDescriptor::new(
            concat!("r4000allegrex", "_", "mp_vs"),
            EncodedFieldMask::r4000allegrex_vs,
        );
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Operand::r4000allegrex_mp_vt as usize] = OperandDescriptor::new(
            concat!("r4000allegrex", "_", "mp_vt"),
            EncodedFieldMask::r4000allegrex_vt,
        );
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Operand::r4000allegrex_mp_vd as usize] = OperandDescriptor::new(
            concat!("r4000allegrex", "_", "mp_vd"),
            EncodedFieldMask::r4000allegrex_vd,
        );
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Operand::r4000allegrex_mp_vs_transpose as usize] = OperandDescriptor::new(
            concat!("r4000allegrex", "_", "mp_vs_transpose"),
            EncodedFieldMask::r4000allegrex_vs,
        );
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Operand::r4000allegrex_mt_vs as usize] = OperandDescriptor::new(
            concat!("r4000allegrex", "_", "mt_vs"),
            EncodedFieldMask::r4000allegrex_vs,
        );
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Operand::r4000allegrex_mt_vt as usize] = OperandDescriptor::new(
            concat!("r4000allegrex", "_", "mt_vt"),
            EncodedFieldMask::r4000allegrex_vt,
        );
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Operand::r4000allegrex_mt_vd as usize] = OperandDescriptor::new(
            concat!("r4000allegrex", "_", "mt_vd"),
            EncodedFieldMask::r4000allegrex_vd,
        );
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Operand::r4000allegrex_mt_vs_transpose as usize] = OperandDescriptor::new(
            concat!("r4000allegrex", "_", "mt_vs_transpose"),
            EncodedFieldMask::r4000allegrex_vs,
        );
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Operand::r4000allegrex_mq_vs as usize] = OperandDescriptor::new(
            concat!("r4000allegrex", "_", "mq_vs"),
            EncodedFieldMask::r4000allegrex_vs,
        );
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Operand::r4000allegrex_mq_vt as usize] = OperandDescriptor::new(
            concat!("r4000allegrex", "_", "mq_vt"),
            EncodedFieldMask::r4000allegrex_vt,
        );
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Operand::r4000allegrex_mq_vd as usize] = OperandDescriptor::new(
            concat!("r4000allegrex", "_", "mq_vd"),
            EncodedFieldMask::r4000allegrex_vd,
        );
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Operand::r4000allegrex_mq_vs_transpose as usize] = OperandDescriptor::new(
            concat!("r4000allegrex", "_", "mq_vs_transpose"),
            EncodedFieldMask::r4000allegrex_vs,
        );
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Operand::r4000allegrex_cop2cs as usize] = OperandDescriptor::new(
            concat!("r4000allegrex", "_", "cop2cs"),
            EncodedFieldMask::r4000allegrex_cop2cs,
        );
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Operand::r4000allegrex_cop2cd as usize] = OperandDescriptor::new(
            concat!("r4000allegrex", "_", "cop2cd"),
            EncodedFieldMask::r4000allegrex_cop2cd,
        );
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Operand::r4000allegrex_pos as usize] = OperandDescriptor::new(
            concat!("r4000allegrex", "_", "pos"),
            EncodedFieldMask::r4000allegrex_pos,
        );
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Operand::r4000allegrex_size as usize] = OperandDescriptor::new(
            concat!("r4000allegrex", "_", "size"),
            EncodedFieldMask::r4000allegrex_size,
        );
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Operand::r4000allegrex_size_plus_pos as usize] = OperandDescriptor::new(
            concat!("r4000allegrex", "_", "size_plus_pos"),
            EncodedFieldMask::r4000allegrex_size_plus_pos,
        );
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Operand::r4000allegrex_imm3 as usize] = OperandDescriptor::new(
            concat!("r4000allegrex", "_", "imm3"),
            EncodedFieldMask::r4000allegrex_imm3,
        );
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Operand::r4000allegrex_offset14_rs as usize] = OperandDescriptor::new(
            concat!("r4000allegrex", "_", "offset14_rs"),
            EncodedFieldMask::r4000allegrex_offset14.union(EncodedFieldMask::rs),
        );
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Operand::r4000allegrex_offset14_rs_maybe_wb as usize] = OperandDescriptor::new(
            concat!("r4000allegrex", "_", "offset14_rs_maybe_wb"),
            EncodedFieldMask::r4000allegrex_offset14
                .union(EncodedFieldMask::rs)
                .union(EncodedFieldMask::r4000allegrex_wb),
        );
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Operand::r4000allegrex_vcmp_cond_s_maybe_vs_maybe_vt as usize] =
            OperandDescriptor::new(
                concat!("r4000allegrex", "_", "vcmp_cond_s_maybe_vs_maybe_vt"),
                EncodedFieldMask::r4000allegrex_vcmp_cond
                    .union(EncodedFieldMask::r4000allegrex_vs)
                    .union(EncodedFieldMask::r4000allegrex_vt),
            );
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Operand::r4000allegrex_vcmp_cond_p_maybe_vs_maybe_vt as usize] =
            OperandDescriptor::new(
                concat!("r4000allegrex", "_", "vcmp_cond_p_maybe_vs_maybe_vt"),
                EncodedFieldMask::r4000allegrex_vcmp_cond
                    .union(EncodedFieldMask::r4000allegrex_vs)
                    .union(EncodedFieldMask::r4000allegrex_vt),
            );
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Operand::r4000allegrex_vcmp_cond_t_maybe_vs_maybe_vt as usize] =
            OperandDescriptor::new(
                concat!("r4000allegrex", "_", "vcmp_cond_t_maybe_vs_maybe_vt"),
                EncodedFieldMask::r4000allegrex_vcmp_cond
                    .union(EncodedFieldMask::r4000allegrex_vs)
                    .union(EncodedFieldMask::r4000allegrex_vt),
            );
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Operand::r4000allegrex_vcmp_cond_q_maybe_vs_maybe_vt as usize] =
            OperandDescriptor::new(
                concat!("r4000allegrex", "_", "vcmp_cond_q_maybe_vs_maybe_vt"),
                EncodedFieldMask::r4000allegrex_vcmp_cond
                    .union(EncodedFieldMask::r4000allegrex_vs)
                    .union(EncodedFieldMask::r4000allegrex_vt),
            );
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Operand::r4000allegrex_vconstant as usize] = OperandDescriptor::new(
            concat!("r4000allegrex", "_", "vconstant"),
            EncodedFieldMask::r4000allegrex_vconstant,
        );
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Operand::r4000allegrex_power_of_two as usize] = OperandDescriptor::new(
            concat!("r4000allegrex", "_", "power_of_two"),
            EncodedFieldMask::r4000allegrex_power_of_two,
        );
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Operand::r4000allegrex_vfpu_cc_bit as usize] = OperandDescriptor::new(
            concat!("r4000allegrex", "_", "vfpu_cc_bit"),
            EncodedFieldMask::r4000allegrex_vfpu_cc_bit,
        );
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Operand::r4000allegrex_bn as usize] = OperandDescriptor::new(
            concat!("r4000allegrex", "_", "bn"),
            EncodedFieldMask::r4000allegrex_bn,
        );
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Operand::r4000allegrex_int16 as usize] = OperandDescriptor::new(
            concat!("r4000allegrex", "_", "int16"),
            EncodedFieldMask::r4000allegrex_intfloat16,
        );
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Operand::r4000allegrex_float16 as usize] = OperandDescriptor::new(
            concat!("r4000allegrex", "_", "float16"),
            EncodedFieldMask::r4000allegrex_intfloat16,
        );
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Operand::r4000allegrex_p_vrot_code as usize] = OperandDescriptor::new(
            concat!("r4000allegrex", "_", "p_vrot_code"),
            EncodedFieldMask::r4000allegrex_vrot_code,
        );
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Operand::r4000allegrex_t_vrot_code as usize] = OperandDescriptor::new(
            concat!("r4000allegrex", "_", "t_vrot_code"),
            EncodedFieldMask::r4000allegrex_vrot_code,
        );
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Operand::r4000allegrex_q_vrot_code as usize] = OperandDescriptor::new(
            concat!("r4000allegrex", "_", "q_vrot_code"),
            EncodedFieldMask::r4000allegrex_vrot_code,
        );
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Operand::r4000allegrex_wpx as usize] = OperandDescriptor::new(
            concat!("r4000allegrex", "_", "wpx"),
            EncodedFieldMask::r4000allegrex_wpx,
        );
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Operand::r4000allegrex_wpy as usize] = OperandDescriptor::new(
            concat!("r4000allegrex", "_", "wpy"),
            EncodedFieldMask::r4000allegrex_wpy,
        );
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Operand::r4000allegrex_wpz as usize] = OperandDescriptor::new(
            concat!("r4000allegrex", "_", "wpz"),
            EncodedFieldMask::r4000allegrex_wpz,
        );
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Operand::r4000allegrex_wpw as usize] = OperandDescriptor::new(
            concat!("r4000allegrex", "_", "wpw"),
            EncodedFieldMask::r4000allegrex_wpw,
        );
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Operand::r4000allegrex_rpx as usize] = OperandDescriptor::new(
            concat!("r4000allegrex", "_", "rpx"),
            EncodedFieldMask::r4000allegrex_rpx,
        );
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Operand::r4000allegrex_rpy as usize] = OperandDescriptor::new(
            concat!("r4000allegrex", "_", "rpy"),
            EncodedFieldMask::r4000allegrex_rpy,
        );
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Operand::r4000allegrex_rpz as usize] = OperandDescriptor::new(
            concat!("r4000allegrex", "_", "rpz"),
            EncodedFieldMask::r4000allegrex_rpz,
        );
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Operand::r4000allegrex_rpw as usize] = OperandDescriptor::new(
            concat!("r4000allegrex", "_", "rpw"),
            EncodedFieldMask::r4000allegrex_rpw,
        );
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Operand::r5900ee_I as usize] =
            OperandDescriptor::new(concat!("r5900ee", "_", "I"), EncodedFieldMask::empty());
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Operand::r5900ee_Q as usize] =
            OperandDescriptor::new(concat!("r5900ee", "_", "Q"), EncodedFieldMask::empty());
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Operand::r5900ee_R as usize] =
            OperandDescriptor::new(concat!("r5900ee", "_", "R"), EncodedFieldMask::empty());
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Operand::r5900ee_ACC as usize] =
            OperandDescriptor::new(concat!("r5900ee", "_", "ACC"), EncodedFieldMask::empty());
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Operand::r5900ee_imm5 as usize] = OperandDescriptor::new(
            concat!("r5900ee", "_", "imm5"),
            EncodedFieldMask::r5900ee_imm5,
        );
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Operand::r5900ee_imm15 as usize] = OperandDescriptor::new(
            concat!("r5900ee", "_", "imm15"),
            EncodedFieldMask::r5900ee_imm15,
        );
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Operand::r5900ee_vfs as usize] = OperandDescriptor::new(
            concat!("r5900ee", "_", "vfs"),
            EncodedFieldMask::r5900ee_vfs,
        );
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Operand::r5900ee_vft as usize] = OperandDescriptor::new(
            concat!("r5900ee", "_", "vft"),
            EncodedFieldMask::r5900ee_vft,
        );
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Operand::r5900ee_vfd as usize] = OperandDescriptor::new(
            concat!("r5900ee", "_", "vfd"),
            EncodedFieldMask::r5900ee_vfd,
        );
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Operand::r5900ee_vis as usize] = OperandDescriptor::new(
            concat!("r5900ee", "_", "vis"),
            EncodedFieldMask::r5900ee_vis,
        );
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Operand::r5900ee_vit as usize] = OperandDescriptor::new(
            concat!("r5900ee", "_", "vit"),
            EncodedFieldMask::r5900ee_vit,
        );
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Operand::r5900ee_vid as usize] = OperandDescriptor::new(
            concat!("r5900ee", "_", "vid"),
            EncodedFieldMask::r5900ee_vid,
        );
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Operand::r5900ee_ACCxyzw as usize] = OperandDescriptor::new(
            concat!("r5900ee", "_", "ACCxyzw"),
            EncodedFieldMask::r5900ee_xyzw_xyzw,
        );
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Operand::r5900ee_vfsxyzw as usize] = OperandDescriptor::new(
            concat!("r5900ee", "_", "vfsxyzw"),
            EncodedFieldMask::r5900ee_vfs.union(EncodedFieldMask::r5900ee_xyzw_xyzw),
        );
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Operand::r5900ee_vftxyzw as usize] = OperandDescriptor::new(
            concat!("r5900ee", "_", "vftxyzw"),
            EncodedFieldMask::r5900ee_vft.union(EncodedFieldMask::r5900ee_xyzw_xyzw),
        );
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Operand::r5900ee_vfdxyzw as usize] = OperandDescriptor::new(
            concat!("r5900ee", "_", "vfdxyzw"),
            EncodedFieldMask::r5900ee_vfd.union(EncodedFieldMask::r5900ee_xyzw_xyzw),
        );
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Operand::r5900ee_vfsxyzw_inv_vft as usize] = OperandDescriptor::new(
            concat!("r5900ee", "_", "vfsxyzw_inv_vft"),
            EncodedFieldMask::r5900ee_vfs
                .union(EncodedFieldMask::r5900ee_xyzw_xyzw)
                .union(EncodedFieldMask::r5900ee_vft),
        );
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Operand::r5900ee_vftxyzw_inv_vfs as usize] = OperandDescriptor::new(
            concat!("r5900ee", "_", "vftxyzw_inv_vfs"),
            EncodedFieldMask::r5900ee_vft
                .union(EncodedFieldMask::r5900ee_xyzw_xyzw)
                .union(EncodedFieldMask::r5900ee_vfs),
        );
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Operand::r5900ee_vftn as usize] = OperandDescriptor::new(
            concat!("r5900ee", "_", "vftn"),
            EncodedFieldMask::r5900ee_vft.union(EncodedFieldMask::r5900ee_n),
        );
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Operand::r5900ee_vfsl as usize] = OperandDescriptor::new(
            concat!("r5900ee", "_", "vfsl"),
            EncodedFieldMask::r5900ee_vfs.union(EncodedFieldMask::r5900ee_l),
        );
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Operand::r5900ee_vftm as usize] = OperandDescriptor::new(
            concat!("r5900ee", "_", "vftm"),
            EncodedFieldMask::r5900ee_vft.union(EncodedFieldMask::r5900ee_m),
        );
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Operand::r5900ee_vis_predecr as usize] = OperandDescriptor::new(
            concat!("r5900ee", "_", "vis_predecr"),
            EncodedFieldMask::r5900ee_vis,
        );
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Operand::r5900ee_vit_predecr as usize] = OperandDescriptor::new(
            concat!("r5900ee", "_", "vit_predecr"),
            EncodedFieldMask::r5900ee_vit,
        );
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Operand::r5900ee_vis_postincr as usize] = OperandDescriptor::new(
            concat!("r5900ee", "_", "vis_postincr"),
            EncodedFieldMask::r5900ee_vis,
        );
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Operand::r5900ee_vit_postincr as usize] = OperandDescriptor::new(
            concat!("r5900ee", "_", "vit_postincr"),
            EncodedFieldMask::r5900ee_vit,
        );
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Operand::r5900ee_vis_parenthesis as usize] = OperandDescriptor::new(
            concat!("r5900ee", "_", "vis_parenthesis"),
            EncodedFieldMask::r5900ee_vis,
        );
    }
    table
};
impl<T> OperandDisplay<'_, '_, T>
where
    T: fmt::Display,
{
    pub(crate) fn display_this_operand(
        &self,
        f: &mut fmt::Formatter<'_>, // '
    ) -> fmt::Result {
        match self.operand() {
            Operand::ALL_EMPTY => OperandDisplay::display_ALL_EMPTY(self, f),
            Operand::core_rs => OperandDisplay::display_core_rs(self, f),
            Operand::core_rt => OperandDisplay::display_core_rt(self, f),
            Operand::core_rd => OperandDisplay::display_core_rd(self, f),
            Operand::core_sa => OperandDisplay::display_core_sa(self, f),
            Operand::core_zero => OperandDisplay::display_core_zero(self, f),
            Operand::core_cop0d => OperandDisplay::display_core_cop0d(self, f),
            Operand::core_cop0cd => OperandDisplay::display_core_cop0cd(self, f),
            Operand::core_fs => OperandDisplay::display_core_fs(self, f),
            Operand::core_ft => OperandDisplay::display_core_ft(self, f),
            Operand::core_fd => OperandDisplay::display_core_fd(self, f),
            Operand::core_cop1cs => OperandDisplay::display_core_cop1cs(self, f),
            Operand::core_cop2t => OperandDisplay::display_core_cop2t(self, f),
            Operand::core_cop2d => OperandDisplay::display_core_cop2d(self, f),
            Operand::core_cop2cd => OperandDisplay::display_core_cop2cd(self, f),
            Operand::core_op => OperandDisplay::display_core_op(self, f),
            Operand::core_hint => OperandDisplay::display_core_hint(self, f),
            Operand::core_code => OperandDisplay::display_core_code(self, f),
            Operand::core_code_lower => OperandDisplay::display_core_code_lower(self, f),
            Operand::core_copraw => OperandDisplay::display_core_copraw(self, f),
            Operand::core_label => OperandDisplay::display_core_label(self, f),
            Operand::core_imm_i16 => OperandDisplay::display_core_imm_i16(self, f),
            Operand::core_imm_u16 => OperandDisplay::display_core_imm_u16(self, f),
            Operand::core_branch_target_label => {
                OperandDisplay::display_core_branch_target_label(self, f)
            }
            Operand::core_imm_rs => OperandDisplay::display_core_imm_rs(self, f),
            Operand::core_maybe_rd_rs => OperandDisplay::display_core_maybe_rd_rs(self, f),
            Operand::core_maybe_zero_rs => OperandDisplay::display_core_maybe_zero_rs(self, f),
            #[cfg(feature = "RSP")]
            Operand::rsp_cop0d => OperandDisplay::display_rsp_cop0d(self, f),
            #[cfg(feature = "RSP")]
            Operand::rsp_cop2cd => OperandDisplay::display_rsp_cop2cd(self, f),
            #[cfg(feature = "RSP")]
            Operand::rsp_vs => OperandDisplay::display_rsp_vs(self, f),
            #[cfg(feature = "RSP")]
            Operand::rsp_vd => OperandDisplay::display_rsp_vd(self, f),
            #[cfg(feature = "RSP")]
            Operand::rsp_vt_elementhigh => OperandDisplay::display_rsp_vt_elementhigh(self, f),
            #[cfg(feature = "RSP")]
            Operand::rsp_vt_elementlow => OperandDisplay::display_rsp_vt_elementlow(self, f),
            #[cfg(feature = "RSP")]
            Operand::rsp_vd_de => OperandDisplay::display_rsp_vd_de(self, f),
            #[cfg(feature = "RSP")]
            Operand::rsp_vs_index => OperandDisplay::display_rsp_vs_index(self, f),
            #[cfg(feature = "RSP")]
            Operand::rsp_offset7_rs => OperandDisplay::display_rsp_offset7_rs(self, f),
            #[cfg(feature = "RSP")]
            Operand::rsp_offset8_rs => OperandDisplay::display_rsp_offset8_rs(self, f),
            #[cfg(feature = "RSP")]
            Operand::rsp_offset9_rs => OperandDisplay::display_rsp_offset9_rs(self, f),
            #[cfg(feature = "RSP")]
            Operand::rsp_offset10_rs => OperandDisplay::display_rsp_offset10_rs(self, f),
            #[cfg(feature = "RSP")]
            Operand::rsp_offset11_rs => OperandDisplay::display_rsp_offset11_rs(self, f),
            #[cfg(feature = "R3000GTE")]
            Operand::r3000gte_gbg => OperandDisplay::display_r3000gte_gbg(self, f),
            #[cfg(feature = "R3000GTE")]
            Operand::r3000gte_sf => OperandDisplay::display_r3000gte_sf(self, f),
            #[cfg(feature = "R3000GTE")]
            Operand::r3000gte_mx => OperandDisplay::display_r3000gte_mx(self, f),
            #[cfg(feature = "R3000GTE")]
            Operand::r3000gte_v => OperandDisplay::display_r3000gte_v(self, f),
            #[cfg(feature = "R3000GTE")]
            Operand::r3000gte_cv => OperandDisplay::display_r3000gte_cv(self, f),
            #[cfg(feature = "R3000GTE")]
            Operand::r3000gte_lm => OperandDisplay::display_r3000gte_lm(self, f),
            #[cfg(feature = "R4000ALLEGREX")]
            Operand::r4000allegrex_s_vs => OperandDisplay::display_r4000allegrex_s_vs(self, f),
            #[cfg(feature = "R4000ALLEGREX")]
            Operand::r4000allegrex_s_vt => OperandDisplay::display_r4000allegrex_s_vt(self, f),
            #[cfg(feature = "R4000ALLEGREX")]
            Operand::r4000allegrex_s_vd => OperandDisplay::display_r4000allegrex_s_vd(self, f),
            #[cfg(feature = "R4000ALLEGREX")]
            Operand::r4000allegrex_s_vt_imm => {
                OperandDisplay::display_r4000allegrex_s_vt_imm(self, f)
            }
            #[cfg(feature = "R4000ALLEGREX")]
            Operand::r4000allegrex_s_vd_imm => {
                OperandDisplay::display_r4000allegrex_s_vd_imm(self, f)
            }
            #[cfg(feature = "R4000ALLEGREX")]
            Operand::r4000allegrex_p_vs => OperandDisplay::display_r4000allegrex_p_vs(self, f),
            #[cfg(feature = "R4000ALLEGREX")]
            Operand::r4000allegrex_p_vt => OperandDisplay::display_r4000allegrex_p_vt(self, f),
            #[cfg(feature = "R4000ALLEGREX")]
            Operand::r4000allegrex_p_vd => OperandDisplay::display_r4000allegrex_p_vd(self, f),
            #[cfg(feature = "R4000ALLEGREX")]
            Operand::r4000allegrex_t_vs => OperandDisplay::display_r4000allegrex_t_vs(self, f),
            #[cfg(feature = "R4000ALLEGREX")]
            Operand::r4000allegrex_t_vt => OperandDisplay::display_r4000allegrex_t_vt(self, f),
            #[cfg(feature = "R4000ALLEGREX")]
            Operand::r4000allegrex_t_vd => OperandDisplay::display_r4000allegrex_t_vd(self, f),
            #[cfg(feature = "R4000ALLEGREX")]
            Operand::r4000allegrex_q_vs => OperandDisplay::display_r4000allegrex_q_vs(self, f),
            #[cfg(feature = "R4000ALLEGREX")]
            Operand::r4000allegrex_q_vt => OperandDisplay::display_r4000allegrex_q_vt(self, f),
            #[cfg(feature = "R4000ALLEGREX")]
            Operand::r4000allegrex_q_vd => OperandDisplay::display_r4000allegrex_q_vd(self, f),
            #[cfg(feature = "R4000ALLEGREX")]
            Operand::r4000allegrex_q_vt_imm => {
                OperandDisplay::display_r4000allegrex_q_vt_imm(self, f)
            }
            #[cfg(feature = "R4000ALLEGREX")]
            Operand::r4000allegrex_mp_vs => OperandDisplay::display_r4000allegrex_mp_vs(self, f),
            #[cfg(feature = "R4000ALLEGREX")]
            Operand::r4000allegrex_mp_vt => OperandDisplay::display_r4000allegrex_mp_vt(self, f),
            #[cfg(feature = "R4000ALLEGREX")]
            Operand::r4000allegrex_mp_vd => OperandDisplay::display_r4000allegrex_mp_vd(self, f),
            #[cfg(feature = "R4000ALLEGREX")]
            Operand::r4000allegrex_mp_vs_transpose => {
                OperandDisplay::display_r4000allegrex_mp_vs_transpose(self, f)
            }
            #[cfg(feature = "R4000ALLEGREX")]
            Operand::r4000allegrex_mt_vs => OperandDisplay::display_r4000allegrex_mt_vs(self, f),
            #[cfg(feature = "R4000ALLEGREX")]
            Operand::r4000allegrex_mt_vt => OperandDisplay::display_r4000allegrex_mt_vt(self, f),
            #[cfg(feature = "R4000ALLEGREX")]
            Operand::r4000allegrex_mt_vd => OperandDisplay::display_r4000allegrex_mt_vd(self, f),
            #[cfg(feature = "R4000ALLEGREX")]
            Operand::r4000allegrex_mt_vs_transpose => {
                OperandDisplay::display_r4000allegrex_mt_vs_transpose(self, f)
            }
            #[cfg(feature = "R4000ALLEGREX")]
            Operand::r4000allegrex_mq_vs => OperandDisplay::display_r4000allegrex_mq_vs(self, f),
            #[cfg(feature = "R4000ALLEGREX")]
            Operand::r4000allegrex_mq_vt => OperandDisplay::display_r4000allegrex_mq_vt(self, f),
            #[cfg(feature = "R4000ALLEGREX")]
            Operand::r4000allegrex_mq_vd => OperandDisplay::display_r4000allegrex_mq_vd(self, f),
            #[cfg(feature = "R4000ALLEGREX")]
            Operand::r4000allegrex_mq_vs_transpose => {
                OperandDisplay::display_r4000allegrex_mq_vs_transpose(self, f)
            }
            #[cfg(feature = "R4000ALLEGREX")]
            Operand::r4000allegrex_cop2cs => OperandDisplay::display_r4000allegrex_cop2cs(self, f),
            #[cfg(feature = "R4000ALLEGREX")]
            Operand::r4000allegrex_cop2cd => OperandDisplay::display_r4000allegrex_cop2cd(self, f),
            #[cfg(feature = "R4000ALLEGREX")]
            Operand::r4000allegrex_pos => OperandDisplay::display_r4000allegrex_pos(self, f),
            #[cfg(feature = "R4000ALLEGREX")]
            Operand::r4000allegrex_size => OperandDisplay::display_r4000allegrex_size(self, f),
            #[cfg(feature = "R4000ALLEGREX")]
            Operand::r4000allegrex_size_plus_pos => {
                OperandDisplay::display_r4000allegrex_size_plus_pos(self, f)
            }
            #[cfg(feature = "R4000ALLEGREX")]
            Operand::r4000allegrex_imm3 => OperandDisplay::display_r4000allegrex_imm3(self, f),
            #[cfg(feature = "R4000ALLEGREX")]
            Operand::r4000allegrex_offset14_rs => {
                OperandDisplay::display_r4000allegrex_offset14_rs(self, f)
            }
            #[cfg(feature = "R4000ALLEGREX")]
            Operand::r4000allegrex_offset14_rs_maybe_wb => {
                OperandDisplay::display_r4000allegrex_offset14_rs_maybe_wb(self, f)
            }
            #[cfg(feature = "R4000ALLEGREX")]
            Operand::r4000allegrex_vcmp_cond_s_maybe_vs_maybe_vt => {
                OperandDisplay::display_r4000allegrex_vcmp_cond_s_maybe_vs_maybe_vt(self, f)
            }
            #[cfg(feature = "R4000ALLEGREX")]
            Operand::r4000allegrex_vcmp_cond_p_maybe_vs_maybe_vt => {
                OperandDisplay::display_r4000allegrex_vcmp_cond_p_maybe_vs_maybe_vt(self, f)
            }
            #[cfg(feature = "R4000ALLEGREX")]
            Operand::r4000allegrex_vcmp_cond_t_maybe_vs_maybe_vt => {
                OperandDisplay::display_r4000allegrex_vcmp_cond_t_maybe_vs_maybe_vt(self, f)
            }
            #[cfg(feature = "R4000ALLEGREX")]
            Operand::r4000allegrex_vcmp_cond_q_maybe_vs_maybe_vt => {
                OperandDisplay::display_r4000allegrex_vcmp_cond_q_maybe_vs_maybe_vt(self, f)
            }
            #[cfg(feature = "R4000ALLEGREX")]
            Operand::r4000allegrex_vconstant => {
                OperandDisplay::display_r4000allegrex_vconstant(self, f)
            }
            #[cfg(feature = "R4000ALLEGREX")]
            Operand::r4000allegrex_power_of_two => {
                OperandDisplay::display_r4000allegrex_power_of_two(self, f)
            }
            #[cfg(feature = "R4000ALLEGREX")]
            Operand::r4000allegrex_vfpu_cc_bit => {
                OperandDisplay::display_r4000allegrex_vfpu_cc_bit(self, f)
            }
            #[cfg(feature = "R4000ALLEGREX")]
            Operand::r4000allegrex_bn => OperandDisplay::display_r4000allegrex_bn(self, f),
            #[cfg(feature = "R4000ALLEGREX")]
            Operand::r4000allegrex_int16 => OperandDisplay::display_r4000allegrex_int16(self, f),
            #[cfg(feature = "R4000ALLEGREX")]
            Operand::r4000allegrex_float16 => {
                OperandDisplay::display_r4000allegrex_float16(self, f)
            }
            #[cfg(feature = "R4000ALLEGREX")]
            Operand::r4000allegrex_p_vrot_code => {
                OperandDisplay::display_r4000allegrex_p_vrot_code(self, f)
            }
            #[cfg(feature = "R4000ALLEGREX")]
            Operand::r4000allegrex_t_vrot_code => {
                OperandDisplay::display_r4000allegrex_t_vrot_code(self, f)
            }
            #[cfg(feature = "R4000ALLEGREX")]
            Operand::r4000allegrex_q_vrot_code => {
                OperandDisplay::display_r4000allegrex_q_vrot_code(self, f)
            }
            #[cfg(feature = "R4000ALLEGREX")]
            Operand::r4000allegrex_wpx => OperandDisplay::display_r4000allegrex_wpx(self, f),
            #[cfg(feature = "R4000ALLEGREX")]
            Operand::r4000allegrex_wpy => OperandDisplay::display_r4000allegrex_wpy(self, f),
            #[cfg(feature = "R4000ALLEGREX")]
            Operand::r4000allegrex_wpz => OperandDisplay::display_r4000allegrex_wpz(self, f),
            #[cfg(feature = "R4000ALLEGREX")]
            Operand::r4000allegrex_wpw => OperandDisplay::display_r4000allegrex_wpw(self, f),
            #[cfg(feature = "R4000ALLEGREX")]
            Operand::r4000allegrex_rpx => OperandDisplay::display_r4000allegrex_rpx(self, f),
            #[cfg(feature = "R4000ALLEGREX")]
            Operand::r4000allegrex_rpy => OperandDisplay::display_r4000allegrex_rpy(self, f),
            #[cfg(feature = "R4000ALLEGREX")]
            Operand::r4000allegrex_rpz => OperandDisplay::display_r4000allegrex_rpz(self, f),
            #[cfg(feature = "R4000ALLEGREX")]
            Operand::r4000allegrex_rpw => OperandDisplay::display_r4000allegrex_rpw(self, f),
            #[cfg(feature = "R5900EE")]
            Operand::r5900ee_I => OperandDisplay::display_r5900ee_I(self, f),
            #[cfg(feature = "R5900EE")]
            Operand::r5900ee_Q => OperandDisplay::display_r5900ee_Q(self, f),
            #[cfg(feature = "R5900EE")]
            Operand::r5900ee_R => OperandDisplay::display_r5900ee_R(self, f),
            #[cfg(feature = "R5900EE")]
            Operand::r5900ee_ACC => OperandDisplay::display_r5900ee_ACC(self, f),
            #[cfg(feature = "R5900EE")]
            Operand::r5900ee_imm5 => OperandDisplay::display_r5900ee_imm5(self, f),
            #[cfg(feature = "R5900EE")]
            Operand::r5900ee_imm15 => OperandDisplay::display_r5900ee_imm15(self, f),
            #[cfg(feature = "R5900EE")]
            Operand::r5900ee_vfs => OperandDisplay::display_r5900ee_vfs(self, f),
            #[cfg(feature = "R5900EE")]
            Operand::r5900ee_vft => OperandDisplay::display_r5900ee_vft(self, f),
            #[cfg(feature = "R5900EE")]
            Operand::r5900ee_vfd => OperandDisplay::display_r5900ee_vfd(self, f),
            #[cfg(feature = "R5900EE")]
            Operand::r5900ee_vis => OperandDisplay::display_r5900ee_vis(self, f),
            #[cfg(feature = "R5900EE")]
            Operand::r5900ee_vit => OperandDisplay::display_r5900ee_vit(self, f),
            #[cfg(feature = "R5900EE")]
            Operand::r5900ee_vid => OperandDisplay::display_r5900ee_vid(self, f),
            #[cfg(feature = "R5900EE")]
            Operand::r5900ee_ACCxyzw => OperandDisplay::display_r5900ee_ACCxyzw(self, f),
            #[cfg(feature = "R5900EE")]
            Operand::r5900ee_vfsxyzw => OperandDisplay::display_r5900ee_vfsxyzw(self, f),
            #[cfg(feature = "R5900EE")]
            Operand::r5900ee_vftxyzw => OperandDisplay::display_r5900ee_vftxyzw(self, f),
            #[cfg(feature = "R5900EE")]
            Operand::r5900ee_vfdxyzw => OperandDisplay::display_r5900ee_vfdxyzw(self, f),
            #[cfg(feature = "R5900EE")]
            Operand::r5900ee_vfsxyzw_inv_vft => {
                OperandDisplay::display_r5900ee_vfsxyzw_inv_vft(self, f)
            }
            #[cfg(feature = "R5900EE")]
            Operand::r5900ee_vftxyzw_inv_vfs => {
                OperandDisplay::display_r5900ee_vftxyzw_inv_vfs(self, f)
            }
            #[cfg(feature = "R5900EE")]
            Operand::r5900ee_vftn => OperandDisplay::display_r5900ee_vftn(self, f),
            #[cfg(feature = "R5900EE")]
            Operand::r5900ee_vfsl => OperandDisplay::display_r5900ee_vfsl(self, f),
            #[cfg(feature = "R5900EE")]
            Operand::r5900ee_vftm => OperandDisplay::display_r5900ee_vftm(self, f),
            #[cfg(feature = "R5900EE")]
            Operand::r5900ee_vis_predecr => OperandDisplay::display_r5900ee_vis_predecr(self, f),
            #[cfg(feature = "R5900EE")]
            Operand::r5900ee_vit_predecr => OperandDisplay::display_r5900ee_vit_predecr(self, f),
            #[cfg(feature = "R5900EE")]
            Operand::r5900ee_vis_postincr => OperandDisplay::display_r5900ee_vis_postincr(self, f),
            #[cfg(feature = "R5900EE")]
            Operand::r5900ee_vit_postincr => OperandDisplay::display_r5900ee_vit_postincr(self, f),
            #[cfg(feature = "R5900EE")]
            Operand::r5900ee_vis_parenthesis => {
                OperandDisplay::display_r5900ee_vis_parenthesis(self, f)
            }
        }
    }
}
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq, PartialOrd, Ord)]
#[allow(non_camel_case_types)]
pub enum ValuedOperand {
    ALL_EMPTY(),
    core_rs(Gpr),
    core_rt(Gpr),
    core_rd(Gpr),
    core_sa(u8),
    core_zero(),
    core_cop0d(Cop0),
    core_cop0cd(Cop0Control),
    core_fs(Cop1),
    core_ft(Cop1),
    core_fd(Cop1),
    core_cop1cs(Cop1Control),
    core_cop2t(Cop2),
    core_cop2d(Cop2),
    core_cop2cd(Cop2Control),
    core_op(u8),
    core_hint(u8),
    core_code(u16, Option<NonZeroU16>),
    core_code_lower(u16),
    core_copraw(u32),
    core_label(Vram),
    core_imm_i16(i16),
    core_imm_u16(u16),
    core_branch_target_label(VramOffset),
    core_imm_rs(i16, Gpr),
    core_maybe_rd_rs(Option<Gpr>, Gpr),
    core_maybe_zero_rs((), Gpr),
    #[cfg(feature = "RSP")]
    rsp_cop0d(RspCop0),
    #[cfg(feature = "RSP")]
    rsp_cop2cd(RspCop2),
    #[cfg(feature = "RSP")]
    rsp_vs(RspVector),
    #[cfg(feature = "RSP")]
    rsp_vd(RspVector),
    #[cfg(feature = "RSP")]
    rsp_vt_elementhigh(RspVector, u8),
    #[cfg(feature = "RSP")]
    rsp_vt_elementlow(RspVector, u8),
    #[cfg(feature = "RSP")]
    rsp_vd_de(RspVector, u8),
    #[cfg(feature = "RSP")]
    rsp_vs_index(RspVector, u8),
    #[cfg(feature = "RSP")]
    rsp_offset7_rs(u8, Gpr),
    #[cfg(feature = "RSP")]
    rsp_offset8_rs(u8, Gpr),
    #[cfg(feature = "RSP")]
    rsp_offset9_rs(u16, Gpr),
    #[cfg(feature = "RSP")]
    rsp_offset10_rs(u16, Gpr),
    #[cfg(feature = "RSP")]
    rsp_offset11_rs(u16, Gpr),
    #[cfg(feature = "R3000GTE")]
    r3000gte_gbg(u8),
    #[cfg(feature = "R3000GTE")]
    r3000gte_sf(u8),
    #[cfg(feature = "R3000GTE")]
    r3000gte_mx(u8),
    #[cfg(feature = "R3000GTE")]
    r3000gte_v(u8),
    #[cfg(feature = "R3000GTE")]
    r3000gte_cv(u8),
    #[cfg(feature = "R3000GTE")]
    r3000gte_lm(u8),
    #[cfg(feature = "R4000ALLEGREX")]
    r4000allegrex_s_vs(R4000AllegrexS),
    #[cfg(feature = "R4000ALLEGREX")]
    r4000allegrex_s_vt(R4000AllegrexS),
    #[cfg(feature = "R4000ALLEGREX")]
    r4000allegrex_s_vd(R4000AllegrexS),
    #[cfg(feature = "R4000ALLEGREX")]
    r4000allegrex_s_vt_imm(R4000AllegrexS),
    #[cfg(feature = "R4000ALLEGREX")]
    r4000allegrex_s_vd_imm(R4000AllegrexS),
    #[cfg(feature = "R4000ALLEGREX")]
    r4000allegrex_p_vs(R4000AllegrexV2D),
    #[cfg(feature = "R4000ALLEGREX")]
    r4000allegrex_p_vt(R4000AllegrexV2D),
    #[cfg(feature = "R4000ALLEGREX")]
    r4000allegrex_p_vd(R4000AllegrexV2D),
    #[cfg(feature = "R4000ALLEGREX")]
    r4000allegrex_t_vs(R4000AllegrexV3D),
    #[cfg(feature = "R4000ALLEGREX")]
    r4000allegrex_t_vt(R4000AllegrexV3D),
    #[cfg(feature = "R4000ALLEGREX")]
    r4000allegrex_t_vd(R4000AllegrexV3D),
    #[cfg(feature = "R4000ALLEGREX")]
    r4000allegrex_q_vs(R4000AllegrexV4D),
    #[cfg(feature = "R4000ALLEGREX")]
    r4000allegrex_q_vt(R4000AllegrexV4D),
    #[cfg(feature = "R4000ALLEGREX")]
    r4000allegrex_q_vd(R4000AllegrexV4D),
    #[cfg(feature = "R4000ALLEGREX")]
    r4000allegrex_q_vt_imm(R4000AllegrexV4D),
    #[cfg(feature = "R4000ALLEGREX")]
    r4000allegrex_mp_vs(R4000AllegrexM2x2),
    #[cfg(feature = "R4000ALLEGREX")]
    r4000allegrex_mp_vt(R4000AllegrexM2x2),
    #[cfg(feature = "R4000ALLEGREX")]
    r4000allegrex_mp_vd(R4000AllegrexM2x2),
    #[cfg(feature = "R4000ALLEGREX")]
    r4000allegrex_mp_vs_transpose(R4000AllegrexM2x2),
    #[cfg(feature = "R4000ALLEGREX")]
    r4000allegrex_mt_vs(R4000AllegrexM3x3),
    #[cfg(feature = "R4000ALLEGREX")]
    r4000allegrex_mt_vt(R4000AllegrexM3x3),
    #[cfg(feature = "R4000ALLEGREX")]
    r4000allegrex_mt_vd(R4000AllegrexM3x3),
    #[cfg(feature = "R4000ALLEGREX")]
    r4000allegrex_mt_vs_transpose(R4000AllegrexM3x3),
    #[cfg(feature = "R4000ALLEGREX")]
    r4000allegrex_mq_vs(R4000AllegrexM4x4),
    #[cfg(feature = "R4000ALLEGREX")]
    r4000allegrex_mq_vt(R4000AllegrexM4x4),
    #[cfg(feature = "R4000ALLEGREX")]
    r4000allegrex_mq_vd(R4000AllegrexM4x4),
    #[cfg(feature = "R4000ALLEGREX")]
    r4000allegrex_mq_vs_transpose(R4000AllegrexM4x4),
    #[cfg(feature = "R4000ALLEGREX")]
    r4000allegrex_cop2cs(R4000AllegrexVfpuControl),
    #[cfg(feature = "R4000ALLEGREX")]
    r4000allegrex_cop2cd(R4000AllegrexVfpuControl),
    #[cfg(feature = "R4000ALLEGREX")]
    r4000allegrex_pos(u8),
    #[cfg(feature = "R4000ALLEGREX")]
    r4000allegrex_size(u8),
    #[cfg(feature = "R4000ALLEGREX")]
    r4000allegrex_size_plus_pos(i8),
    #[cfg(feature = "R4000ALLEGREX")]
    r4000allegrex_imm3(u8),
    #[cfg(feature = "R4000ALLEGREX")]
    r4000allegrex_offset14_rs(u16, Gpr),
    #[cfg(feature = "R4000ALLEGREX")]
    r4000allegrex_offset14_rs_maybe_wb(u16, Gpr, bool),
    #[cfg(feature = "R4000ALLEGREX")]
    r4000allegrex_vcmp_cond_s_maybe_vs_maybe_vt(
        R4000AllegrexVCond,
        Option<R4000AllegrexS>,
        Option<R4000AllegrexS>,
    ),
    #[cfg(feature = "R4000ALLEGREX")]
    r4000allegrex_vcmp_cond_p_maybe_vs_maybe_vt(
        R4000AllegrexVCond,
        Option<R4000AllegrexV2D>,
        Option<R4000AllegrexV2D>,
    ),
    #[cfg(feature = "R4000ALLEGREX")]
    r4000allegrex_vcmp_cond_t_maybe_vs_maybe_vt(
        R4000AllegrexVCond,
        Option<R4000AllegrexV3D>,
        Option<R4000AllegrexV3D>,
    ),
    #[cfg(feature = "R4000ALLEGREX")]
    r4000allegrex_vcmp_cond_q_maybe_vs_maybe_vt(
        R4000AllegrexVCond,
        Option<R4000AllegrexV4D>,
        Option<R4000AllegrexV4D>,
    ),
    #[cfg(feature = "R4000ALLEGREX")]
    r4000allegrex_vconstant(R4000AllegrexVConstant),
    #[cfg(feature = "R4000ALLEGREX")]
    r4000allegrex_power_of_two(u8),
    #[cfg(feature = "R4000ALLEGREX")]
    r4000allegrex_vfpu_cc_bit(u8),
    #[cfg(feature = "R4000ALLEGREX")]
    r4000allegrex_bn(u8),
    #[cfg(feature = "R4000ALLEGREX")]
    r4000allegrex_int16(i16),
    #[cfg(feature = "R4000ALLEGREX")]
    r4000allegrex_float16(OrderedFloat<f32>),
    #[cfg(feature = "R4000ALLEGREX")]
    r4000allegrex_p_vrot_code(u8),
    #[cfg(feature = "R4000ALLEGREX")]
    r4000allegrex_t_vrot_code(u8),
    #[cfg(feature = "R4000ALLEGREX")]
    r4000allegrex_q_vrot_code(u8),
    #[cfg(feature = "R4000ALLEGREX")]
    r4000allegrex_wpx(R4000AllegrexPrefixDst),
    #[cfg(feature = "R4000ALLEGREX")]
    r4000allegrex_wpy(R4000AllegrexPrefixDst),
    #[cfg(feature = "R4000ALLEGREX")]
    r4000allegrex_wpz(R4000AllegrexPrefixDst),
    #[cfg(feature = "R4000ALLEGREX")]
    r4000allegrex_wpw(R4000AllegrexPrefixDst),
    #[cfg(feature = "R4000ALLEGREX")]
    r4000allegrex_rpx(R4000AllegrexPrefixSrc),
    #[cfg(feature = "R4000ALLEGREX")]
    r4000allegrex_rpy(R4000AllegrexPrefixSrc),
    #[cfg(feature = "R4000ALLEGREX")]
    r4000allegrex_rpz(R4000AllegrexPrefixSrc),
    #[cfg(feature = "R4000ALLEGREX")]
    r4000allegrex_rpw(R4000AllegrexPrefixSrc),
    #[cfg(feature = "R5900EE")]
    r5900ee_I(),
    #[cfg(feature = "R5900EE")]
    r5900ee_Q(),
    #[cfg(feature = "R5900EE")]
    r5900ee_R(),
    #[cfg(feature = "R5900EE")]
    r5900ee_ACC(),
    #[cfg(feature = "R5900EE")]
    r5900ee_imm5(i8),
    #[cfg(feature = "R5900EE")]
    r5900ee_imm15(u16),
    #[cfg(feature = "R5900EE")]
    r5900ee_vfs(R5900EEVF),
    #[cfg(feature = "R5900EE")]
    r5900ee_vft(R5900EEVF),
    #[cfg(feature = "R5900EE")]
    r5900ee_vfd(R5900EEVF),
    #[cfg(feature = "R5900EE")]
    r5900ee_vis(R5900EEVI),
    #[cfg(feature = "R5900EE")]
    r5900ee_vit(R5900EEVI),
    #[cfg(feature = "R5900EE")]
    r5900ee_vid(R5900EEVI),
    #[cfg(feature = "R5900EE")]
    r5900ee_ACCxyzw(bool, bool, bool, bool),
    #[cfg(feature = "R5900EE")]
    r5900ee_vfsxyzw(R5900EEVF, bool, bool, bool, bool),
    #[cfg(feature = "R5900EE")]
    r5900ee_vftxyzw(R5900EEVF, bool, bool, bool, bool),
    #[cfg(feature = "R5900EE")]
    r5900ee_vfdxyzw(R5900EEVF, bool, bool, bool, bool),
    #[cfg(feature = "R5900EE")]
    r5900ee_vfsxyzw_inv_vft(R5900EEVF, R5900EEVF, bool, bool, bool, bool),
    #[cfg(feature = "R5900EE")]
    r5900ee_vftxyzw_inv_vfs(R5900EEVF, R5900EEVF, bool, bool, bool, bool),
    #[cfg(feature = "R5900EE")]
    r5900ee_vftn(R5900EEVF, u8),
    #[cfg(feature = "R5900EE")]
    r5900ee_vfsl(R5900EEVF, u8),
    #[cfg(feature = "R5900EE")]
    r5900ee_vftm(R5900EEVF, u8),
    #[cfg(feature = "R5900EE")]
    r5900ee_vis_predecr((), R5900EEVI),
    #[cfg(feature = "R5900EE")]
    r5900ee_vit_predecr((), R5900EEVI),
    #[cfg(feature = "R5900EE")]
    r5900ee_vis_postincr(R5900EEVI, ()),
    #[cfg(feature = "R5900EE")]
    r5900ee_vit_postincr(R5900EEVI, ()),
    #[cfg(feature = "R5900EE")]
    r5900ee_vis_parenthesis(R5900EEVI),
}
impl Operand {
    #[must_use]
    pub const fn from_valued_operand(value: ValuedOperand) -> Self {
        match value {
            ValuedOperand::ALL_EMPTY(..) => Self::ALL_EMPTY,
            ValuedOperand::core_rs(..) => Self::core_rs,
            ValuedOperand::core_rt(..) => Self::core_rt,
            ValuedOperand::core_rd(..) => Self::core_rd,
            ValuedOperand::core_sa(..) => Self::core_sa,
            ValuedOperand::core_zero(..) => Self::core_zero,
            ValuedOperand::core_cop0d(..) => Self::core_cop0d,
            ValuedOperand::core_cop0cd(..) => Self::core_cop0cd,
            ValuedOperand::core_fs(..) => Self::core_fs,
            ValuedOperand::core_ft(..) => Self::core_ft,
            ValuedOperand::core_fd(..) => Self::core_fd,
            ValuedOperand::core_cop1cs(..) => Self::core_cop1cs,
            ValuedOperand::core_cop2t(..) => Self::core_cop2t,
            ValuedOperand::core_cop2d(..) => Self::core_cop2d,
            ValuedOperand::core_cop2cd(..) => Self::core_cop2cd,
            ValuedOperand::core_op(..) => Self::core_op,
            ValuedOperand::core_hint(..) => Self::core_hint,
            ValuedOperand::core_code(..) => Self::core_code,
            ValuedOperand::core_code_lower(..) => Self::core_code_lower,
            ValuedOperand::core_copraw(..) => Self::core_copraw,
            ValuedOperand::core_label(..) => Self::core_label,
            ValuedOperand::core_imm_i16(..) => Self::core_imm_i16,
            ValuedOperand::core_imm_u16(..) => Self::core_imm_u16,
            ValuedOperand::core_branch_target_label(..) => Self::core_branch_target_label,
            ValuedOperand::core_imm_rs(..) => Self::core_imm_rs,
            ValuedOperand::core_maybe_rd_rs(..) => Self::core_maybe_rd_rs,
            ValuedOperand::core_maybe_zero_rs(..) => Self::core_maybe_zero_rs,
            #[cfg(feature = "RSP")]
            ValuedOperand::rsp_cop0d(..) => Self::rsp_cop0d,
            #[cfg(feature = "RSP")]
            ValuedOperand::rsp_cop2cd(..) => Self::rsp_cop2cd,
            #[cfg(feature = "RSP")]
            ValuedOperand::rsp_vs(..) => Self::rsp_vs,
            #[cfg(feature = "RSP")]
            ValuedOperand::rsp_vd(..) => Self::rsp_vd,
            #[cfg(feature = "RSP")]
            ValuedOperand::rsp_vt_elementhigh(..) => Self::rsp_vt_elementhigh,
            #[cfg(feature = "RSP")]
            ValuedOperand::rsp_vt_elementlow(..) => Self::rsp_vt_elementlow,
            #[cfg(feature = "RSP")]
            ValuedOperand::rsp_vd_de(..) => Self::rsp_vd_de,
            #[cfg(feature = "RSP")]
            ValuedOperand::rsp_vs_index(..) => Self::rsp_vs_index,
            #[cfg(feature = "RSP")]
            ValuedOperand::rsp_offset7_rs(..) => Self::rsp_offset7_rs,
            #[cfg(feature = "RSP")]
            ValuedOperand::rsp_offset8_rs(..) => Self::rsp_offset8_rs,
            #[cfg(feature = "RSP")]
            ValuedOperand::rsp_offset9_rs(..) => Self::rsp_offset9_rs,
            #[cfg(feature = "RSP")]
            ValuedOperand::rsp_offset10_rs(..) => Self::rsp_offset10_rs,
            #[cfg(feature = "RSP")]
            ValuedOperand::rsp_offset11_rs(..) => Self::rsp_offset11_rs,
            #[cfg(feature = "R3000GTE")]
            ValuedOperand::r3000gte_gbg(..) => Self::r3000gte_gbg,
            #[cfg(feature = "R3000GTE")]
            ValuedOperand::r3000gte_sf(..) => Self::r3000gte_sf,
            #[cfg(feature = "R3000GTE")]
            ValuedOperand::r3000gte_mx(..) => Self::r3000gte_mx,
            #[cfg(feature = "R3000GTE")]
            ValuedOperand::r3000gte_v(..) => Self::r3000gte_v,
            #[cfg(feature = "R3000GTE")]
            ValuedOperand::r3000gte_cv(..) => Self::r3000gte_cv,
            #[cfg(feature = "R3000GTE")]
            ValuedOperand::r3000gte_lm(..) => Self::r3000gte_lm,
            #[cfg(feature = "R4000ALLEGREX")]
            ValuedOperand::r4000allegrex_s_vs(..) => Self::r4000allegrex_s_vs,
            #[cfg(feature = "R4000ALLEGREX")]
            ValuedOperand::r4000allegrex_s_vt(..) => Self::r4000allegrex_s_vt,
            #[cfg(feature = "R4000ALLEGREX")]
            ValuedOperand::r4000allegrex_s_vd(..) => Self::r4000allegrex_s_vd,
            #[cfg(feature = "R4000ALLEGREX")]
            ValuedOperand::r4000allegrex_s_vt_imm(..) => Self::r4000allegrex_s_vt_imm,
            #[cfg(feature = "R4000ALLEGREX")]
            ValuedOperand::r4000allegrex_s_vd_imm(..) => Self::r4000allegrex_s_vd_imm,
            #[cfg(feature = "R4000ALLEGREX")]
            ValuedOperand::r4000allegrex_p_vs(..) => Self::r4000allegrex_p_vs,
            #[cfg(feature = "R4000ALLEGREX")]
            ValuedOperand::r4000allegrex_p_vt(..) => Self::r4000allegrex_p_vt,
            #[cfg(feature = "R4000ALLEGREX")]
            ValuedOperand::r4000allegrex_p_vd(..) => Self::r4000allegrex_p_vd,
            #[cfg(feature = "R4000ALLEGREX")]
            ValuedOperand::r4000allegrex_t_vs(..) => Self::r4000allegrex_t_vs,
            #[cfg(feature = "R4000ALLEGREX")]
            ValuedOperand::r4000allegrex_t_vt(..) => Self::r4000allegrex_t_vt,
            #[cfg(feature = "R4000ALLEGREX")]
            ValuedOperand::r4000allegrex_t_vd(..) => Self::r4000allegrex_t_vd,
            #[cfg(feature = "R4000ALLEGREX")]
            ValuedOperand::r4000allegrex_q_vs(..) => Self::r4000allegrex_q_vs,
            #[cfg(feature = "R4000ALLEGREX")]
            ValuedOperand::r4000allegrex_q_vt(..) => Self::r4000allegrex_q_vt,
            #[cfg(feature = "R4000ALLEGREX")]
            ValuedOperand::r4000allegrex_q_vd(..) => Self::r4000allegrex_q_vd,
            #[cfg(feature = "R4000ALLEGREX")]
            ValuedOperand::r4000allegrex_q_vt_imm(..) => Self::r4000allegrex_q_vt_imm,
            #[cfg(feature = "R4000ALLEGREX")]
            ValuedOperand::r4000allegrex_mp_vs(..) => Self::r4000allegrex_mp_vs,
            #[cfg(feature = "R4000ALLEGREX")]
            ValuedOperand::r4000allegrex_mp_vt(..) => Self::r4000allegrex_mp_vt,
            #[cfg(feature = "R4000ALLEGREX")]
            ValuedOperand::r4000allegrex_mp_vd(..) => Self::r4000allegrex_mp_vd,
            #[cfg(feature = "R4000ALLEGREX")]
            ValuedOperand::r4000allegrex_mp_vs_transpose(..) => Self::r4000allegrex_mp_vs_transpose,
            #[cfg(feature = "R4000ALLEGREX")]
            ValuedOperand::r4000allegrex_mt_vs(..) => Self::r4000allegrex_mt_vs,
            #[cfg(feature = "R4000ALLEGREX")]
            ValuedOperand::r4000allegrex_mt_vt(..) => Self::r4000allegrex_mt_vt,
            #[cfg(feature = "R4000ALLEGREX")]
            ValuedOperand::r4000allegrex_mt_vd(..) => Self::r4000allegrex_mt_vd,
            #[cfg(feature = "R4000ALLEGREX")]
            ValuedOperand::r4000allegrex_mt_vs_transpose(..) => Self::r4000allegrex_mt_vs_transpose,
            #[cfg(feature = "R4000ALLEGREX")]
            ValuedOperand::r4000allegrex_mq_vs(..) => Self::r4000allegrex_mq_vs,
            #[cfg(feature = "R4000ALLEGREX")]
            ValuedOperand::r4000allegrex_mq_vt(..) => Self::r4000allegrex_mq_vt,
            #[cfg(feature = "R4000ALLEGREX")]
            ValuedOperand::r4000allegrex_mq_vd(..) => Self::r4000allegrex_mq_vd,
            #[cfg(feature = "R4000ALLEGREX")]
            ValuedOperand::r4000allegrex_mq_vs_transpose(..) => Self::r4000allegrex_mq_vs_transpose,
            #[cfg(feature = "R4000ALLEGREX")]
            ValuedOperand::r4000allegrex_cop2cs(..) => Self::r4000allegrex_cop2cs,
            #[cfg(feature = "R4000ALLEGREX")]
            ValuedOperand::r4000allegrex_cop2cd(..) => Self::r4000allegrex_cop2cd,
            #[cfg(feature = "R4000ALLEGREX")]
            ValuedOperand::r4000allegrex_pos(..) => Self::r4000allegrex_pos,
            #[cfg(feature = "R4000ALLEGREX")]
            ValuedOperand::r4000allegrex_size(..) => Self::r4000allegrex_size,
            #[cfg(feature = "R4000ALLEGREX")]
            ValuedOperand::r4000allegrex_size_plus_pos(..) => Self::r4000allegrex_size_plus_pos,
            #[cfg(feature = "R4000ALLEGREX")]
            ValuedOperand::r4000allegrex_imm3(..) => Self::r4000allegrex_imm3,
            #[cfg(feature = "R4000ALLEGREX")]
            ValuedOperand::r4000allegrex_offset14_rs(..) => Self::r4000allegrex_offset14_rs,
            #[cfg(feature = "R4000ALLEGREX")]
            ValuedOperand::r4000allegrex_offset14_rs_maybe_wb(..) => {
                Self::r4000allegrex_offset14_rs_maybe_wb
            }
            #[cfg(feature = "R4000ALLEGREX")]
            ValuedOperand::r4000allegrex_vcmp_cond_s_maybe_vs_maybe_vt(..) => {
                Self::r4000allegrex_vcmp_cond_s_maybe_vs_maybe_vt
            }
            #[cfg(feature = "R4000ALLEGREX")]
            ValuedOperand::r4000allegrex_vcmp_cond_p_maybe_vs_maybe_vt(..) => {
                Self::r4000allegrex_vcmp_cond_p_maybe_vs_maybe_vt
            }
            #[cfg(feature = "R4000ALLEGREX")]
            ValuedOperand::r4000allegrex_vcmp_cond_t_maybe_vs_maybe_vt(..) => {
                Self::r4000allegrex_vcmp_cond_t_maybe_vs_maybe_vt
            }
            #[cfg(feature = "R4000ALLEGREX")]
            ValuedOperand::r4000allegrex_vcmp_cond_q_maybe_vs_maybe_vt(..) => {
                Self::r4000allegrex_vcmp_cond_q_maybe_vs_maybe_vt
            }
            #[cfg(feature = "R4000ALLEGREX")]
            ValuedOperand::r4000allegrex_vconstant(..) => Self::r4000allegrex_vconstant,
            #[cfg(feature = "R4000ALLEGREX")]
            ValuedOperand::r4000allegrex_power_of_two(..) => Self::r4000allegrex_power_of_two,
            #[cfg(feature = "R4000ALLEGREX")]
            ValuedOperand::r4000allegrex_vfpu_cc_bit(..) => Self::r4000allegrex_vfpu_cc_bit,
            #[cfg(feature = "R4000ALLEGREX")]
            ValuedOperand::r4000allegrex_bn(..) => Self::r4000allegrex_bn,
            #[cfg(feature = "R4000ALLEGREX")]
            ValuedOperand::r4000allegrex_int16(..) => Self::r4000allegrex_int16,
            #[cfg(feature = "R4000ALLEGREX")]
            ValuedOperand::r4000allegrex_float16(..) => Self::r4000allegrex_float16,
            #[cfg(feature = "R4000ALLEGREX")]
            ValuedOperand::r4000allegrex_p_vrot_code(..) => Self::r4000allegrex_p_vrot_code,
            #[cfg(feature = "R4000ALLEGREX")]
            ValuedOperand::r4000allegrex_t_vrot_code(..) => Self::r4000allegrex_t_vrot_code,
            #[cfg(feature = "R4000ALLEGREX")]
            ValuedOperand::r4000allegrex_q_vrot_code(..) => Self::r4000allegrex_q_vrot_code,
            #[cfg(feature = "R4000ALLEGREX")]
            ValuedOperand::r4000allegrex_wpx(..) => Self::r4000allegrex_wpx,
            #[cfg(feature = "R4000ALLEGREX")]
            ValuedOperand::r4000allegrex_wpy(..) => Self::r4000allegrex_wpy,
            #[cfg(feature = "R4000ALLEGREX")]
            ValuedOperand::r4000allegrex_wpz(..) => Self::r4000allegrex_wpz,
            #[cfg(feature = "R4000ALLEGREX")]
            ValuedOperand::r4000allegrex_wpw(..) => Self::r4000allegrex_wpw,
            #[cfg(feature = "R4000ALLEGREX")]
            ValuedOperand::r4000allegrex_rpx(..) => Self::r4000allegrex_rpx,
            #[cfg(feature = "R4000ALLEGREX")]
            ValuedOperand::r4000allegrex_rpy(..) => Self::r4000allegrex_rpy,
            #[cfg(feature = "R4000ALLEGREX")]
            ValuedOperand::r4000allegrex_rpz(..) => Self::r4000allegrex_rpz,
            #[cfg(feature = "R4000ALLEGREX")]
            ValuedOperand::r4000allegrex_rpw(..) => Self::r4000allegrex_rpw,
            #[cfg(feature = "R5900EE")]
            ValuedOperand::r5900ee_I(..) => Self::r5900ee_I,
            #[cfg(feature = "R5900EE")]
            ValuedOperand::r5900ee_Q(..) => Self::r5900ee_Q,
            #[cfg(feature = "R5900EE")]
            ValuedOperand::r5900ee_R(..) => Self::r5900ee_R,
            #[cfg(feature = "R5900EE")]
            ValuedOperand::r5900ee_ACC(..) => Self::r5900ee_ACC,
            #[cfg(feature = "R5900EE")]
            ValuedOperand::r5900ee_imm5(..) => Self::r5900ee_imm5,
            #[cfg(feature = "R5900EE")]
            ValuedOperand::r5900ee_imm15(..) => Self::r5900ee_imm15,
            #[cfg(feature = "R5900EE")]
            ValuedOperand::r5900ee_vfs(..) => Self::r5900ee_vfs,
            #[cfg(feature = "R5900EE")]
            ValuedOperand::r5900ee_vft(..) => Self::r5900ee_vft,
            #[cfg(feature = "R5900EE")]
            ValuedOperand::r5900ee_vfd(..) => Self::r5900ee_vfd,
            #[cfg(feature = "R5900EE")]
            ValuedOperand::r5900ee_vis(..) => Self::r5900ee_vis,
            #[cfg(feature = "R5900EE")]
            ValuedOperand::r5900ee_vit(..) => Self::r5900ee_vit,
            #[cfg(feature = "R5900EE")]
            ValuedOperand::r5900ee_vid(..) => Self::r5900ee_vid,
            #[cfg(feature = "R5900EE")]
            ValuedOperand::r5900ee_ACCxyzw(..) => Self::r5900ee_ACCxyzw,
            #[cfg(feature = "R5900EE")]
            ValuedOperand::r5900ee_vfsxyzw(..) => Self::r5900ee_vfsxyzw,
            #[cfg(feature = "R5900EE")]
            ValuedOperand::r5900ee_vftxyzw(..) => Self::r5900ee_vftxyzw,
            #[cfg(feature = "R5900EE")]
            ValuedOperand::r5900ee_vfdxyzw(..) => Self::r5900ee_vfdxyzw,
            #[cfg(feature = "R5900EE")]
            ValuedOperand::r5900ee_vfsxyzw_inv_vft(..) => Self::r5900ee_vfsxyzw_inv_vft,
            #[cfg(feature = "R5900EE")]
            ValuedOperand::r5900ee_vftxyzw_inv_vfs(..) => Self::r5900ee_vftxyzw_inv_vfs,
            #[cfg(feature = "R5900EE")]
            ValuedOperand::r5900ee_vftn(..) => Self::r5900ee_vftn,
            #[cfg(feature = "R5900EE")]
            ValuedOperand::r5900ee_vfsl(..) => Self::r5900ee_vfsl,
            #[cfg(feature = "R5900EE")]
            ValuedOperand::r5900ee_vftm(..) => Self::r5900ee_vftm,
            #[cfg(feature = "R5900EE")]
            ValuedOperand::r5900ee_vis_predecr(..) => Self::r5900ee_vis_predecr,
            #[cfg(feature = "R5900EE")]
            ValuedOperand::r5900ee_vit_predecr(..) => Self::r5900ee_vit_predecr,
            #[cfg(feature = "R5900EE")]
            ValuedOperand::r5900ee_vis_postincr(..) => Self::r5900ee_vis_postincr,
            #[cfg(feature = "R5900EE")]
            ValuedOperand::r5900ee_vit_postincr(..) => Self::r5900ee_vit_postincr,
            #[cfg(feature = "R5900EE")]
            ValuedOperand::r5900ee_vis_parenthesis(..) => Self::r5900ee_vis_parenthesis,
        }
    }
}
#[cfg(test)]
mod tests {
    use super::*;
    #[test]
    fn check_descriptor_valid() {
        for x in OPERANDS {
            x.check_valid_entry();
        }
    }
}
