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

/* Automatically generated. DO NOT MODIFY */

use crate::access_type::AccessType;
use crate::instr::InstrType;
#[cfg(feature = "R5900EE")]
use crate::instr_suffixes::InstrSuffix;
#[cfg(any(
    feature = "RSP",
    feature = "R3000GTE",
    feature = "R4000ALLEGREX",
    feature = "R5900EE",
))]
use crate::isa::IsaExtension;
use crate::isa::IsaVersion;
use crate::opcodes::{Opcode, OpcodeCategory, OpcodeDescriptor, OPCODE_COUNT};
use crate::operands::Operand;
pub static OPCODES: [OpcodeDescriptor; OPCODE_COUNT] = {
    let mut table = [OpcodeDescriptor::default(); OPCODE_COUNT];
    {
        table[Opcode::ALL_INVALID as usize] = OpcodeDescriptor {
            is_invalid: true,
            ..OpcodeDescriptor::new(
                Opcode::ALL_INVALID,
                OpcodeCategory::CORE_NORMAL,
                !0,
                "INVALID",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    {
        table[Opcode::core_j as usize] = OpcodeDescriptor {
            operands: Operand::arr1(Operand::core_label),
            instr_type: InstrType::J,
            is_jump: true,
            is_jump_with_address: true,
            ..OpcodeDescriptor::new(
                Opcode::core_j,
                OpcodeCategory::CORE_NORMAL,
                0x02,
                "j",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    {
        table[Opcode::core_jal as usize] = OpcodeDescriptor {
            operands: Operand::arr1(Operand::core_label),
            instr_type: InstrType::J,
            is_jump: true,
            is_jump_with_address: true,
            does_link: true,
            ..OpcodeDescriptor::new(
                Opcode::core_jal,
                OpcodeCategory::CORE_NORMAL,
                0x03,
                "jal",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    {
        table[Opcode::core_beq as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::core_rs,
                Operand::core_rt,
                Operand::core_branch_target_label,
            ),
            instr_type: InstrType::I,
            is_branch: true,
            reads_rs: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::core_beq,
                OpcodeCategory::CORE_NORMAL,
                0x04,
                "beq",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    {
        table[Opcode::core_bne as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::core_rs,
                Operand::core_rt,
                Operand::core_branch_target_label,
            ),
            instr_type: InstrType::I,
            is_branch: true,
            reads_rs: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::core_bne,
                OpcodeCategory::CORE_NORMAL,
                0x05,
                "bne",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    #[cfg(feature = "MIPS_II")]
    {
        table[Opcode::core_beql as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::core_rs,
                Operand::core_rt,
                Operand::core_branch_target_label,
            ),
            instr_type: InstrType::I,
            is_branch: true,
            is_branch_likely: true,
            reads_rs: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::core_beql,
                OpcodeCategory::CORE_NORMAL,
                0x14,
                "beql",
                IsaVersion::MIPS_II,
                None,
            )
        };
    }
    #[cfg(feature = "MIPS_II")]
    {
        table[Opcode::core_bnel as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::core_rs,
                Operand::core_rt,
                Operand::core_branch_target_label,
            ),
            instr_type: InstrType::I,
            is_branch: true,
            is_branch_likely: true,
            reads_rs: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::core_bnel,
                OpcodeCategory::CORE_NORMAL,
                0x15,
                "bnel",
                IsaVersion::MIPS_II,
                None,
            )
        };
    }
    {
        table[Opcode::core_blez as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_rs, Operand::core_branch_target_label),
            instr_type: InstrType::I,
            is_branch: true,
            reads_rs: true,
            ..OpcodeDescriptor::new(
                Opcode::core_blez,
                OpcodeCategory::CORE_NORMAL,
                0x06,
                "blez",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    #[cfg(feature = "MIPS_II")]
    {
        table[Opcode::core_blezl as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_rs, Operand::core_branch_target_label),
            instr_type: InstrType::I,
            is_branch: true,
            is_branch_likely: true,
            reads_rs: true,
            ..OpcodeDescriptor::new(
                Opcode::core_blezl,
                OpcodeCategory::CORE_NORMAL,
                0x16,
                "blezl",
                IsaVersion::MIPS_II,
                None,
            )
        };
    }
    {
        table[Opcode::core_bgtz as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_rs, Operand::core_branch_target_label),
            instr_type: InstrType::I,
            is_branch: true,
            reads_rs: true,
            ..OpcodeDescriptor::new(
                Opcode::core_bgtz,
                OpcodeCategory::CORE_NORMAL,
                0x07,
                "bgtz",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    #[cfg(feature = "MIPS_II")]
    {
        table[Opcode::core_bgtzl as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_rs, Operand::core_branch_target_label),
            instr_type: InstrType::I,
            is_branch: true,
            is_branch_likely: true,
            reads_rs: true,
            ..OpcodeDescriptor::new(
                Opcode::core_bgtzl,
                OpcodeCategory::CORE_NORMAL,
                0x17,
                "bgtzl",
                IsaVersion::MIPS_II,
                None,
            )
        };
    }
    {
        table[Opcode::core_addi as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rt, Operand::core_rs, Operand::core_imm_i16),
            instr_type: InstrType::I,
            modifies_rt: true,
            reads_rs: true,
            not_emitted_by_compilers: true,
            can_be_lo: true,
            ..OpcodeDescriptor::new(
                Opcode::core_addi,
                OpcodeCategory::CORE_NORMAL,
                0x08,
                "addi",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    {
        table[Opcode::core_addiu as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rt, Operand::core_rs, Operand::core_imm_i16),
            instr_type: InstrType::I,
            modifies_rt: true,
            reads_rs: true,
            can_be_lo: true,
            ..OpcodeDescriptor::new(
                Opcode::core_addiu,
                OpcodeCategory::CORE_NORMAL,
                0x09,
                "addiu",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    {
        table[Opcode::core_slti as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rt, Operand::core_rs, Operand::core_imm_i16),
            instr_type: InstrType::I,
            modifies_rt: true,
            reads_rs: true,
            ..OpcodeDescriptor::new(
                Opcode::core_slti,
                OpcodeCategory::CORE_NORMAL,
                0x0A,
                "slti",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    {
        table[Opcode::core_sltiu as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rt, Operand::core_rs, Operand::core_imm_i16),
            instr_type: InstrType::I,
            modifies_rt: true,
            reads_rs: true,
            ..OpcodeDescriptor::new(
                Opcode::core_sltiu,
                OpcodeCategory::CORE_NORMAL,
                0x0B,
                "sltiu",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    {
        table[Opcode::core_andi as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rt, Operand::core_rs, Operand::core_imm_u16),
            instr_type: InstrType::I,
            modifies_rt: true,
            reads_rs: true,
            ..OpcodeDescriptor::new(
                Opcode::core_andi,
                OpcodeCategory::CORE_NORMAL,
                0x0C,
                "andi",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    {
        table[Opcode::core_ori as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rt, Operand::core_rs, Operand::core_imm_u16),
            instr_type: InstrType::I,
            modifies_rt: true,
            reads_rs: true,
            can_be_unsigned_lo: true,
            ..OpcodeDescriptor::new(
                Opcode::core_ori,
                OpcodeCategory::CORE_NORMAL,
                0x0D,
                "ori",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    {
        table[Opcode::core_xori as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rt, Operand::core_rs, Operand::core_imm_u16),
            instr_type: InstrType::I,
            modifies_rt: true,
            reads_rs: true,
            ..OpcodeDescriptor::new(
                Opcode::core_xori,
                OpcodeCategory::CORE_NORMAL,
                0x0E,
                "xori",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    #[cfg(feature = "MIPS_III")]
    {
        table[Opcode::core_daddi as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rt, Operand::core_rs, Operand::core_imm_i16),
            instr_type: InstrType::I,
            modifies_rt: true,
            reads_rs: true,
            can_be_lo: true,
            ..OpcodeDescriptor::new(
                Opcode::core_daddi,
                OpcodeCategory::CORE_NORMAL,
                0x18,
                "daddi",
                IsaVersion::MIPS_III,
                None,
            )
        };
    }
    #[cfg(feature = "MIPS_III")]
    {
        table[Opcode::core_daddiu as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rt, Operand::core_rs, Operand::core_imm_i16),
            instr_type: InstrType::I,
            modifies_rt: true,
            reads_rs: true,
            can_be_lo: true,
            ..OpcodeDescriptor::new(
                Opcode::core_daddiu,
                OpcodeCategory::CORE_NORMAL,
                0x19,
                "daddiu",
                IsaVersion::MIPS_III,
                None,
            )
        };
    }
    {
        table[Opcode::core_lui as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_rt, Operand::core_imm_u16),
            instr_type: InstrType::I,
            modifies_rt: true,
            can_be_hi: true,
            ..OpcodeDescriptor::new(
                Opcode::core_lui,
                OpcodeCategory::CORE_NORMAL,
                0x0F,
                "lui",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    #[cfg(feature = "MIPS_III")]
    {
        table[Opcode::core_ldl as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_rt, Operand::core_imm_rs),
            instr_type: InstrType::I,
            modifies_rt: true,
            reads_rs: true,
            can_be_lo: true,
            does_dereference: true,
            does_load: true,
            access_type: Some(AccessType::UNALIGNED_DOUBLEWORD_LEFT),
            ..OpcodeDescriptor::new(
                Opcode::core_ldl,
                OpcodeCategory::CORE_NORMAL,
                0x1A,
                "ldl",
                IsaVersion::MIPS_III,
                None,
            )
        };
    }
    #[cfg(feature = "MIPS_III")]
    {
        table[Opcode::core_ldr as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_rt, Operand::core_imm_rs),
            instr_type: InstrType::I,
            modifies_rt: true,
            reads_rs: true,
            can_be_lo: true,
            does_dereference: true,
            does_load: true,
            access_type: Some(AccessType::UNALIGNED_DOUBLEWORD_RIGHT),
            ..OpcodeDescriptor::new(
                Opcode::core_ldr,
                OpcodeCategory::CORE_NORMAL,
                0x1B,
                "ldr",
                IsaVersion::MIPS_III,
                None,
            )
        };
    }
    {
        table[Opcode::core_lb as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_rt, Operand::core_imm_rs),
            instr_type: InstrType::I,
            modifies_rt: true,
            reads_rs: true,
            can_be_lo: true,
            does_dereference: true,
            does_load: true,
            access_type: Some(AccessType::BYTE),
            ..OpcodeDescriptor::new(
                Opcode::core_lb,
                OpcodeCategory::CORE_NORMAL,
                0x20,
                "lb",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    {
        table[Opcode::core_lh as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_rt, Operand::core_imm_rs),
            instr_type: InstrType::I,
            modifies_rt: true,
            reads_rs: true,
            can_be_lo: true,
            does_dereference: true,
            does_load: true,
            access_type: Some(AccessType::SHORT),
            ..OpcodeDescriptor::new(
                Opcode::core_lh,
                OpcodeCategory::CORE_NORMAL,
                0x21,
                "lh",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    {
        table[Opcode::core_lwl as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_rt, Operand::core_imm_rs),
            instr_type: InstrType::I,
            modifies_rt: true,
            reads_rs: true,
            can_be_lo: true,
            does_dereference: true,
            does_load: true,
            access_type: Some(AccessType::UNALIGNED_WORD_LEFT),
            ..OpcodeDescriptor::new(
                Opcode::core_lwl,
                OpcodeCategory::CORE_NORMAL,
                0x22,
                "lwl",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    {
        table[Opcode::core_lw as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_rt, Operand::core_imm_rs),
            instr_type: InstrType::I,
            modifies_rt: true,
            reads_rs: true,
            can_be_lo: true,
            does_dereference: true,
            does_load: true,
            access_type: Some(AccessType::WORD),
            ..OpcodeDescriptor::new(
                Opcode::core_lw,
                OpcodeCategory::CORE_NORMAL,
                0x23,
                "lw",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    {
        table[Opcode::core_lbu as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_rt, Operand::core_imm_rs),
            instr_type: InstrType::I,
            modifies_rt: true,
            reads_rs: true,
            can_be_lo: true,
            does_dereference: true,
            does_load: true,
            access_type: Some(AccessType::BYTE),
            does_unsigned_memory_access: true,
            ..OpcodeDescriptor::new(
                Opcode::core_lbu,
                OpcodeCategory::CORE_NORMAL,
                0x24,
                "lbu",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    {
        table[Opcode::core_lhu as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_rt, Operand::core_imm_rs),
            instr_type: InstrType::I,
            modifies_rt: true,
            reads_rs: true,
            can_be_lo: true,
            does_dereference: true,
            does_load: true,
            access_type: Some(AccessType::SHORT),
            does_unsigned_memory_access: true,
            ..OpcodeDescriptor::new(
                Opcode::core_lhu,
                OpcodeCategory::CORE_NORMAL,
                0x25,
                "lhu",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    {
        table[Opcode::core_lwr as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_rt, Operand::core_imm_rs),
            instr_type: InstrType::I,
            modifies_rt: true,
            reads_rs: true,
            can_be_lo: true,
            does_dereference: true,
            does_load: true,
            access_type: Some(AccessType::UNALIGNED_WORD_RIGHT),
            ..OpcodeDescriptor::new(
                Opcode::core_lwr,
                OpcodeCategory::CORE_NORMAL,
                0x26,
                "lwr",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    #[cfg(feature = "MIPS_III")]
    {
        table[Opcode::core_lwu as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_rt, Operand::core_imm_rs),
            instr_type: InstrType::I,
            modifies_rt: true,
            reads_rs: true,
            can_be_lo: true,
            does_dereference: true,
            does_load: true,
            access_type: Some(AccessType::WORD),
            does_unsigned_memory_access: true,
            ..OpcodeDescriptor::new(
                Opcode::core_lwu,
                OpcodeCategory::CORE_NORMAL,
                0x27,
                "lwu",
                IsaVersion::MIPS_III,
                None,
            )
        };
    }
    {
        table[Opcode::core_sb as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_rt, Operand::core_imm_rs),
            instr_type: InstrType::I,
            reads_rs: true,
            reads_rt: true,
            can_be_lo: true,
            does_dereference: true,
            does_store: true,
            access_type: Some(AccessType::BYTE),
            ..OpcodeDescriptor::new(
                Opcode::core_sb,
                OpcodeCategory::CORE_NORMAL,
                0x28,
                "sb",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    {
        table[Opcode::core_sh as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_rt, Operand::core_imm_rs),
            instr_type: InstrType::I,
            reads_rs: true,
            reads_rt: true,
            can_be_lo: true,
            does_dereference: true,
            does_store: true,
            access_type: Some(AccessType::SHORT),
            ..OpcodeDescriptor::new(
                Opcode::core_sh,
                OpcodeCategory::CORE_NORMAL,
                0x29,
                "sh",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    {
        table[Opcode::core_swl as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_rt, Operand::core_imm_rs),
            instr_type: InstrType::I,
            reads_rs: true,
            reads_rt: true,
            can_be_lo: true,
            does_dereference: true,
            does_store: true,
            access_type: Some(AccessType::UNALIGNED_WORD_LEFT),
            ..OpcodeDescriptor::new(
                Opcode::core_swl,
                OpcodeCategory::CORE_NORMAL,
                0x2A,
                "swl",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    {
        table[Opcode::core_sw as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_rt, Operand::core_imm_rs),
            instr_type: InstrType::I,
            reads_rs: true,
            reads_rt: true,
            can_be_lo: true,
            does_dereference: true,
            does_store: true,
            access_type: Some(AccessType::WORD),
            ..OpcodeDescriptor::new(
                Opcode::core_sw,
                OpcodeCategory::CORE_NORMAL,
                0x2B,
                "sw",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    #[cfg(feature = "MIPS_III")]
    {
        table[Opcode::core_sdl as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_rt, Operand::core_imm_rs),
            instr_type: InstrType::I,
            reads_rs: true,
            reads_rt: true,
            can_be_lo: true,
            does_dereference: true,
            does_store: true,
            access_type: Some(AccessType::UNALIGNED_DOUBLEWORD_RIGHT),
            ..OpcodeDescriptor::new(
                Opcode::core_sdl,
                OpcodeCategory::CORE_NORMAL,
                0x2C,
                "sdl",
                IsaVersion::MIPS_III,
                None,
            )
        };
    }
    #[cfg(feature = "MIPS_III")]
    {
        table[Opcode::core_sdr as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_rt, Operand::core_imm_rs),
            instr_type: InstrType::I,
            reads_rs: true,
            reads_rt: true,
            can_be_lo: true,
            does_dereference: true,
            does_store: true,
            access_type: Some(AccessType::UNALIGNED_DOUBLEWORD_LEFT),
            ..OpcodeDescriptor::new(
                Opcode::core_sdr,
                OpcodeCategory::CORE_NORMAL,
                0x2D,
                "sdr",
                IsaVersion::MIPS_III,
                None,
            )
        };
    }
    {
        table[Opcode::core_swr as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_rt, Operand::core_imm_rs),
            instr_type: InstrType::I,
            reads_rs: true,
            reads_rt: true,
            can_be_lo: true,
            does_dereference: true,
            does_store: true,
            access_type: Some(AccessType::UNALIGNED_WORD_RIGHT),
            ..OpcodeDescriptor::new(
                Opcode::core_swr,
                OpcodeCategory::CORE_NORMAL,
                0x2E,
                "swr",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    #[cfg(feature = "MIPS_II")]
    {
        table[Opcode::core_ll as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_rt, Operand::core_imm_rs),
            instr_type: InstrType::I,
            modifies_rt: true,
            reads_rs: true,
            not_emitted_by_compilers: true,
            can_be_lo: true,
            does_dereference: true,
            does_load: true,
            access_type: Some(AccessType::LINKED_WORD_WORD),
            ..OpcodeDescriptor::new(
                Opcode::core_ll,
                OpcodeCategory::CORE_NORMAL,
                0x30,
                "ll",
                IsaVersion::MIPS_II,
                None,
            )
        };
    }
    #[cfg(feature = "MIPS_IV")]
    {
        table[Opcode::core_pref as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_hint, Operand::core_imm_rs),
            instr_type: InstrType::I,
            reads_rs: true,
            ..OpcodeDescriptor::new(
                Opcode::core_pref,
                OpcodeCategory::CORE_NORMAL,
                0x33,
                "pref",
                IsaVersion::MIPS_IV,
                None,
            )
        };
    }
    #[cfg(feature = "MIPS_III")]
    {
        table[Opcode::core_lld as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_rt, Operand::core_imm_rs),
            instr_type: InstrType::I,
            modifies_rt: true,
            reads_rs: true,
            not_emitted_by_compilers: true,
            can_be_lo: true,
            does_dereference: true,
            does_load: true,
            access_type: Some(AccessType::LINKED_WORD_DOUBLEWORD),
            ..OpcodeDescriptor::new(
                Opcode::core_lld,
                OpcodeCategory::CORE_NORMAL,
                0x34,
                "lld",
                IsaVersion::MIPS_III,
                None,
            )
        };
    }
    #[cfg(feature = "MIPS_III")]
    {
        table[Opcode::core_ld as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_rt, Operand::core_imm_rs),
            instr_type: InstrType::I,
            modifies_rt: true,
            reads_rs: true,
            can_be_lo: true,
            does_dereference: true,
            does_load: true,
            access_type: Some(AccessType::DOUBLEWORD),
            ..OpcodeDescriptor::new(
                Opcode::core_ld,
                OpcodeCategory::CORE_NORMAL,
                0x37,
                "ld",
                IsaVersion::MIPS_III,
                None,
            )
        };
    }
    #[cfg(feature = "MIPS_II")]
    {
        table[Opcode::core_sc as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_rt, Operand::core_imm_rs),
            instr_type: InstrType::I,
            reads_rs: true,
            reads_rt: true,
            not_emitted_by_compilers: true,
            can_be_lo: true,
            does_dereference: true,
            does_store: true,
            access_type: Some(AccessType::LINKED_WORD_WORD),
            ..OpcodeDescriptor::new(
                Opcode::core_sc,
                OpcodeCategory::CORE_NORMAL,
                0x38,
                "sc",
                IsaVersion::MIPS_II,
                None,
            )
        };
    }
    #[cfg(feature = "MIPS_III")]
    {
        table[Opcode::core_scd as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_rt, Operand::core_imm_rs),
            instr_type: InstrType::I,
            reads_rs: true,
            reads_rt: true,
            not_emitted_by_compilers: true,
            can_be_lo: true,
            does_dereference: true,
            does_store: true,
            access_type: Some(AccessType::LINKED_WORD_DOUBLEWORD),
            ..OpcodeDescriptor::new(
                Opcode::core_scd,
                OpcodeCategory::CORE_NORMAL,
                0x3C,
                "scd",
                IsaVersion::MIPS_III,
                None,
            )
        };
    }
    #[cfg(feature = "MIPS_III")]
    {
        table[Opcode::core_sd as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_rt, Operand::core_imm_rs),
            instr_type: InstrType::I,
            reads_rs: true,
            reads_rt: true,
            can_be_lo: true,
            does_dereference: true,
            does_store: true,
            access_type: Some(AccessType::DOUBLEWORD),
            ..OpcodeDescriptor::new(
                Opcode::core_sd,
                OpcodeCategory::CORE_NORMAL,
                0x3F,
                "sd",
                IsaVersion::MIPS_III,
                None,
            )
        };
    }
    #[cfg(feature = "MIPS_II")]
    {
        table[Opcode::core_cache as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_op, Operand::core_imm_rs),
            instr_type: InstrType::I,
            reads_rs: true,
            not_emitted_by_compilers: true,
            ..OpcodeDescriptor::new(
                Opcode::core_cache,
                OpcodeCategory::CORE_NORMAL,
                0x2F,
                "cache",
                IsaVersion::MIPS_II,
                None,
            )
        };
    }
    {
        table[Opcode::core_lwc1 as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_ft, Operand::core_imm_rs),
            instr_type: InstrType::I,
            is_float: true,
            reads_rs: true,
            modifies_ft: true,
            can_be_lo: true,
            does_dereference: true,
            does_load: true,
            access_type: Some(AccessType::FLOAT),
            ..OpcodeDescriptor::new(
                Opcode::core_lwc1,
                OpcodeCategory::CORE_NORMAL,
                0x31,
                "lwc1",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    #[cfg(feature = "MIPS_II")]
    {
        table[Opcode::core_ldc1 as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_ft, Operand::core_imm_rs),
            instr_type: InstrType::I,
            is_float: true,
            is_double: true,
            reads_rs: true,
            modifies_ft: true,
            can_be_lo: true,
            does_dereference: true,
            does_load: true,
            access_type: Some(AccessType::DOUBLEFLOAT),
            ..OpcodeDescriptor::new(
                Opcode::core_ldc1,
                OpcodeCategory::CORE_NORMAL,
                0x35,
                "ldc1",
                IsaVersion::MIPS_II,
                None,
            )
        };
    }
    {
        table[Opcode::core_swc1 as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_ft, Operand::core_imm_rs),
            instr_type: InstrType::I,
            is_float: true,
            reads_rs: true,
            reads_ft: true,
            can_be_lo: true,
            does_dereference: true,
            does_store: true,
            access_type: Some(AccessType::FLOAT),
            ..OpcodeDescriptor::new(
                Opcode::core_swc1,
                OpcodeCategory::CORE_NORMAL,
                0x39,
                "swc1",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    #[cfg(feature = "MIPS_II")]
    {
        table[Opcode::core_sdc1 as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_ft, Operand::core_imm_rs),
            instr_type: InstrType::I,
            is_float: true,
            is_double: true,
            reads_rs: true,
            reads_ft: true,
            can_be_lo: true,
            does_dereference: true,
            does_store: true,
            access_type: Some(AccessType::DOUBLEFLOAT),
            ..OpcodeDescriptor::new(
                Opcode::core_sdc1,
                OpcodeCategory::CORE_NORMAL,
                0x3D,
                "sdc1",
                IsaVersion::MIPS_II,
                None,
            )
        };
    }
    {
        table[Opcode::core_lwc2 as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_cop2t, Operand::core_imm_rs),
            instr_type: InstrType::I,
            reads_rs: true,
            not_emitted_by_compilers: true,
            can_be_lo: true,
            does_dereference: true,
            does_load: true,
            access_type: Some(AccessType::WORD_COP2),
            ..OpcodeDescriptor::new(
                Opcode::core_lwc2,
                OpcodeCategory::CORE_NORMAL,
                0x32,
                "lwc2",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    #[cfg(feature = "MIPS_II")]
    {
        table[Opcode::core_ldc2 as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_cop2t, Operand::core_imm_rs),
            instr_type: InstrType::I,
            reads_rs: true,
            not_emitted_by_compilers: true,
            can_be_lo: true,
            does_dereference: true,
            does_load: true,
            access_type: Some(AccessType::DOUBLEWORD_COP2),
            ..OpcodeDescriptor::new(
                Opcode::core_ldc2,
                OpcodeCategory::CORE_NORMAL,
                0x36,
                "ldc2",
                IsaVersion::MIPS_II,
                None,
            )
        };
    }
    {
        table[Opcode::core_swc2 as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_cop2t, Operand::core_imm_rs),
            instr_type: InstrType::I,
            reads_rs: true,
            not_emitted_by_compilers: true,
            can_be_lo: true,
            does_dereference: true,
            does_store: true,
            access_type: Some(AccessType::WORD_COP2),
            ..OpcodeDescriptor::new(
                Opcode::core_swc2,
                OpcodeCategory::CORE_NORMAL,
                0x3A,
                "swc2",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    #[cfg(feature = "MIPS_II")]
    {
        table[Opcode::core_sdc2 as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_cop2t, Operand::core_imm_rs),
            instr_type: InstrType::I,
            reads_rs: true,
            not_emitted_by_compilers: true,
            can_be_lo: true,
            does_dereference: true,
            does_store: true,
            access_type: Some(AccessType::DOUBLEWORD_COP2),
            ..OpcodeDescriptor::new(
                Opcode::core_sdc2,
                OpcodeCategory::CORE_NORMAL,
                0x3E,
                "sdc2",
                IsaVersion::MIPS_II,
                None,
            )
        };
    }
    {
        table[Opcode::core_b as usize] = OpcodeDescriptor {
            operands: Operand::arr1(Operand::core_branch_target_label),
            instr_type: InstrType::I,
            is_branch: true,
            is_pseudo: true,
            ..OpcodeDescriptor::new(
                Opcode::core_b,
                OpcodeCategory::CORE_NORMAL,
                0x04,
                "b",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    {
        table[Opcode::core_beqz as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_rs, Operand::core_branch_target_label),
            instr_type: InstrType::I,
            reads_rs: true,
            is_branch: true,
            is_pseudo: true,
            ..OpcodeDescriptor::new(
                Opcode::core_beqz,
                OpcodeCategory::CORE_NORMAL,
                0x04,
                "beqz",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    {
        table[Opcode::core_bnez as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_rs, Operand::core_branch_target_label),
            instr_type: InstrType::I,
            reads_rs: true,
            is_branch: true,
            is_pseudo: true,
            ..OpcodeDescriptor::new(
                Opcode::core_bnez,
                OpcodeCategory::CORE_NORMAL,
                0x05,
                "bnez",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    #[cfg(feature = "MIPS_II")]
    {
        table[Opcode::core_beqzl as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_rs, Operand::core_branch_target_label),
            instr_type: InstrType::I,
            is_branch: true,
            is_branch_likely: true,
            reads_rs: true,
            is_pseudo: true,
            ..OpcodeDescriptor::new(
                Opcode::core_beqzl,
                OpcodeCategory::CORE_NORMAL,
                0x14,
                "beqzl",
                IsaVersion::MIPS_II,
                None,
            )
        };
    }
    #[cfg(feature = "MIPS_II")]
    {
        table[Opcode::core_bnezl as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_rs, Operand::core_branch_target_label),
            instr_type: InstrType::I,
            is_branch: true,
            is_branch_likely: true,
            reads_rs: true,
            is_pseudo: true,
            ..OpcodeDescriptor::new(
                Opcode::core_bnezl,
                OpcodeCategory::CORE_NORMAL,
                0x15,
                "bnezl",
                IsaVersion::MIPS_II,
                None,
            )
        };
    }

    {
        table[Opcode::core_sll as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rd, Operand::core_rt, Operand::core_sa),
            instr_type: InstrType::R,
            modifies_rd: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::core_sll,
                OpcodeCategory::CORE_SPECIAL,
                0x00,
                "sll",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    {
        table[Opcode::core_srl as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rd, Operand::core_rt, Operand::core_sa),
            instr_type: InstrType::R,
            modifies_rd: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::core_srl,
                OpcodeCategory::CORE_SPECIAL,
                0x02,
                "srl",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    {
        table[Opcode::core_sra as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rd, Operand::core_rt, Operand::core_sa),
            instr_type: InstrType::R,
            modifies_rd: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::core_sra,
                OpcodeCategory::CORE_SPECIAL,
                0x03,
                "sra",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    #[cfg(feature = "MIPS_III")]
    {
        table[Opcode::core_dsll as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rd, Operand::core_rt, Operand::core_sa),
            instr_type: InstrType::R,
            modifies_rd: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::core_dsll,
                OpcodeCategory::CORE_SPECIAL,
                0x38,
                "dsll",
                IsaVersion::MIPS_III,
                None,
            )
        };
    }
    #[cfg(feature = "MIPS_III")]
    {
        table[Opcode::core_dsrl as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rd, Operand::core_rt, Operand::core_sa),
            instr_type: InstrType::R,
            modifies_rd: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::core_dsrl,
                OpcodeCategory::CORE_SPECIAL,
                0x3A,
                "dsrl",
                IsaVersion::MIPS_III,
                None,
            )
        };
    }
    #[cfg(feature = "MIPS_III")]
    {
        table[Opcode::core_dsra as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rd, Operand::core_rt, Operand::core_sa),
            instr_type: InstrType::R,
            modifies_rd: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::core_dsra,
                OpcodeCategory::CORE_SPECIAL,
                0x3B,
                "dsra",
                IsaVersion::MIPS_III,
                None,
            )
        };
    }
    #[cfg(feature = "MIPS_III")]
    {
        table[Opcode::core_dsll32 as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rd, Operand::core_rt, Operand::core_sa),
            instr_type: InstrType::R,
            modifies_rd: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::core_dsll32,
                OpcodeCategory::CORE_SPECIAL,
                0x3C,
                "dsll32",
                IsaVersion::MIPS_III,
                None,
            )
        };
    }
    #[cfg(feature = "MIPS_III")]
    {
        table[Opcode::core_dsrl32 as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rd, Operand::core_rt, Operand::core_sa),
            instr_type: InstrType::R,
            modifies_rd: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::core_dsrl32,
                OpcodeCategory::CORE_SPECIAL,
                0x3E,
                "dsrl32",
                IsaVersion::MIPS_III,
                None,
            )
        };
    }
    #[cfg(feature = "MIPS_III")]
    {
        table[Opcode::core_dsra32 as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rd, Operand::core_rt, Operand::core_sa),
            instr_type: InstrType::R,
            modifies_rd: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::core_dsra32,
                OpcodeCategory::CORE_SPECIAL,
                0x3F,
                "dsra32",
                IsaVersion::MIPS_III,
                None,
            )
        };
    }
    #[cfg(feature = "MIPS_III")]
    {
        table[Opcode::core_dsllv as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rd, Operand::core_rt, Operand::core_rs),
            instr_type: InstrType::R,
            modifies_rd: true,
            reads_rs: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::core_dsllv,
                OpcodeCategory::CORE_SPECIAL,
                0x14,
                "dsllv",
                IsaVersion::MIPS_III,
                None,
            )
        };
    }
    #[cfg(feature = "MIPS_III")]
    {
        table[Opcode::core_dsrlv as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rd, Operand::core_rt, Operand::core_rs),
            instr_type: InstrType::R,
            modifies_rd: true,
            reads_rs: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::core_dsrlv,
                OpcodeCategory::CORE_SPECIAL,
                0x16,
                "dsrlv",
                IsaVersion::MIPS_III,
                None,
            )
        };
    }
    #[cfg(feature = "MIPS_III")]
    {
        table[Opcode::core_dsrav as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rd, Operand::core_rt, Operand::core_rs),
            instr_type: InstrType::R,
            modifies_rd: true,
            reads_rs: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::core_dsrav,
                OpcodeCategory::CORE_SPECIAL,
                0x17,
                "dsrav",
                IsaVersion::MIPS_III,
                None,
            )
        };
    }
    {
        table[Opcode::core_sllv as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rd, Operand::core_rt, Operand::core_rs),
            instr_type: InstrType::R,
            modifies_rd: true,
            reads_rs: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::core_sllv,
                OpcodeCategory::CORE_SPECIAL,
                0x04,
                "sllv",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    {
        table[Opcode::core_srlv as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rd, Operand::core_rt, Operand::core_rs),
            instr_type: InstrType::R,
            modifies_rd: true,
            reads_rs: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::core_srlv,
                OpcodeCategory::CORE_SPECIAL,
                0x06,
                "srlv",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    {
        table[Opcode::core_srav as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rd, Operand::core_rt, Operand::core_rs),
            instr_type: InstrType::R,
            modifies_rd: true,
            reads_rs: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::core_srav,
                OpcodeCategory::CORE_SPECIAL,
                0x07,
                "srav",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    {
        table[Opcode::core_mthi as usize] = OpcodeDescriptor {
            operands: Operand::arr1(Operand::core_rs),
            instr_type: InstrType::R,
            reads_rs: true,
            modifies_hi: true,
            ..OpcodeDescriptor::new(
                Opcode::core_mthi,
                OpcodeCategory::CORE_SPECIAL,
                0x11,
                "mthi",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    {
        table[Opcode::core_mtlo as usize] = OpcodeDescriptor {
            operands: Operand::arr1(Operand::core_rs),
            instr_type: InstrType::R,
            reads_rs: true,
            modifies_lo: true,
            ..OpcodeDescriptor::new(
                Opcode::core_mtlo,
                OpcodeCategory::CORE_SPECIAL,
                0x13,
                "mtlo",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    {
        table[Opcode::core_jr as usize] = OpcodeDescriptor {
            operands: Operand::arr1(Operand::core_rs),
            instr_type: InstrType::R,
            is_jump: true,
            jumps_to_register: true,
            reads_rs: true,
            ..OpcodeDescriptor::new(
                Opcode::core_jr,
                OpcodeCategory::CORE_SPECIAL,
                0x08,
                "jr",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    {
        table[Opcode::core_jalr as usize] = OpcodeDescriptor {
            operands: Operand::arr1(Operand::core_maybe_rd_rs),
            instr_type: InstrType::R,
            is_jump: true,
            jumps_to_register: true,
            modifies_rd: true,
            reads_rs: true,
            does_link: true,
            ..OpcodeDescriptor::new(
                Opcode::core_jalr,
                OpcodeCategory::CORE_SPECIAL,
                0x09,
                "jalr",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    {
        table[Opcode::core_mfhi as usize] = OpcodeDescriptor {
            operands: Operand::arr1(Operand::core_rd),
            instr_type: InstrType::R,
            modifies_rd: true,
            reads_hi: true,
            ..OpcodeDescriptor::new(
                Opcode::core_mfhi,
                OpcodeCategory::CORE_SPECIAL,
                0x10,
                "mfhi",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    {
        table[Opcode::core_mflo as usize] = OpcodeDescriptor {
            operands: Operand::arr1(Operand::core_rd),
            instr_type: InstrType::R,
            modifies_rd: true,
            reads_lo: true,
            ..OpcodeDescriptor::new(
                Opcode::core_mflo,
                OpcodeCategory::CORE_SPECIAL,
                0x12,
                "mflo",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    #[cfg(feature = "MIPS_IV")]
    {
        table[Opcode::core_movz as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rd, Operand::core_rs, Operand::core_rt),
            instr_type: InstrType::R,
            modifies_rd: true,
            reads_rs: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::core_movz,
                OpcodeCategory::CORE_SPECIAL,
                0x0A,
                "movz",
                IsaVersion::MIPS_IV,
                None,
            )
        };
    }
    #[cfg(feature = "MIPS_IV")]
    {
        table[Opcode::core_movn as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rd, Operand::core_rs, Operand::core_rt),
            instr_type: InstrType::R,
            modifies_rd: true,
            reads_rs: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::core_movn,
                OpcodeCategory::CORE_SPECIAL,
                0x0B,
                "movn",
                IsaVersion::MIPS_IV,
                None,
            )
        };
    }
    {
        table[Opcode::core_div as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_maybe_zero_rs, Operand::core_rt),
            instr_type: InstrType::R,
            reads_rs: true,
            reads_rt: true,
            modifies_hi: true,
            modifies_lo: true,
            ..OpcodeDescriptor::new(
                Opcode::core_div,
                OpcodeCategory::CORE_SPECIAL,
                0x1A,
                "div",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    {
        table[Opcode::core_divu as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_maybe_zero_rs, Operand::core_rt),
            instr_type: InstrType::R,
            reads_rs: true,
            reads_rt: true,
            modifies_hi: true,
            modifies_lo: true,
            ..OpcodeDescriptor::new(
                Opcode::core_divu,
                OpcodeCategory::CORE_SPECIAL,
                0x1B,
                "divu",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    #[cfg(feature = "MIPS_III")]
    {
        table[Opcode::core_ddiv as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_maybe_zero_rs, Operand::core_rt),
            instr_type: InstrType::R,
            reads_rs: true,
            reads_rt: true,
            modifies_hi: true,
            modifies_lo: true,
            ..OpcodeDescriptor::new(
                Opcode::core_ddiv,
                OpcodeCategory::CORE_SPECIAL,
                0x1E,
                "ddiv",
                IsaVersion::MIPS_III,
                None,
            )
        };
    }
    #[cfg(feature = "MIPS_III")]
    {
        table[Opcode::core_ddivu as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_maybe_zero_rs, Operand::core_rt),
            instr_type: InstrType::R,
            reads_rs: true,
            reads_rt: true,
            modifies_hi: true,
            modifies_lo: true,
            ..OpcodeDescriptor::new(
                Opcode::core_ddivu,
                OpcodeCategory::CORE_SPECIAL,
                0x1F,
                "ddivu",
                IsaVersion::MIPS_III,
                None,
            )
        };
    }
    {
        table[Opcode::core_add as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rd, Operand::core_rs, Operand::core_rt),
            instr_type: InstrType::R,
            modifies_rd: true,
            reads_rs: true,
            reads_rt: true,
            adds_registers: true,
            not_emitted_by_compilers: true,
            ..OpcodeDescriptor::new(
                Opcode::core_add,
                OpcodeCategory::CORE_SPECIAL,
                0x20,
                "add",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    {
        table[Opcode::core_addu as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rd, Operand::core_rs, Operand::core_rt),
            instr_type: InstrType::R,
            modifies_rd: true,
            reads_rs: true,
            reads_rt: true,
            adds_registers: true,
            ..OpcodeDescriptor::new(
                Opcode::core_addu,
                OpcodeCategory::CORE_SPECIAL,
                0x21,
                "addu",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    {
        table[Opcode::core_sub as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rd, Operand::core_rs, Operand::core_rt),
            instr_type: InstrType::R,
            modifies_rd: true,
            not_emitted_by_compilers: true,
            reads_rs: true,
            reads_rt: true,
            subs_registers: true,
            ..OpcodeDescriptor::new(
                Opcode::core_sub,
                OpcodeCategory::CORE_SPECIAL,
                0x22,
                "sub",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    {
        table[Opcode::core_subu as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rd, Operand::core_rs, Operand::core_rt),
            instr_type: InstrType::R,
            modifies_rd: true,
            reads_rs: true,
            reads_rt: true,
            subs_registers: true,
            ..OpcodeDescriptor::new(
                Opcode::core_subu,
                OpcodeCategory::CORE_SPECIAL,
                0x23,
                "subu",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    {
        table[Opcode::core_and as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rd, Operand::core_rs, Operand::core_rt),
            instr_type: InstrType::R,
            modifies_rd: true,
            reads_rs: true,
            reads_rt: true,
            ands_registers: true,
            ..OpcodeDescriptor::new(
                Opcode::core_and,
                OpcodeCategory::CORE_SPECIAL,
                0x24,
                "and",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    {
        table[Opcode::core_or as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rd, Operand::core_rs, Operand::core_rt),
            instr_type: InstrType::R,
            modifies_rd: true,
            ors_registers: true,
            reads_rs: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::core_or,
                OpcodeCategory::CORE_SPECIAL,
                0x25,
                "or",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    {
        table[Opcode::core_xor as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rd, Operand::core_rs, Operand::core_rt),
            instr_type: InstrType::R,
            modifies_rd: true,
            reads_rs: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::core_xor,
                OpcodeCategory::CORE_SPECIAL,
                0x26,
                "xor",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    {
        table[Opcode::core_nor as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rd, Operand::core_rs, Operand::core_rt),
            instr_type: InstrType::R,
            modifies_rd: true,
            reads_rs: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::core_nor,
                OpcodeCategory::CORE_SPECIAL,
                0x27,
                "nor",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    {
        table[Opcode::core_slt as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rd, Operand::core_rs, Operand::core_rt),
            instr_type: InstrType::R,
            modifies_rd: true,
            reads_rs: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::core_slt,
                OpcodeCategory::CORE_SPECIAL,
                0x2A,
                "slt",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    {
        table[Opcode::core_sltu as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rd, Operand::core_rs, Operand::core_rt),
            instr_type: InstrType::R,
            modifies_rd: true,
            reads_rs: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::core_sltu,
                OpcodeCategory::CORE_SPECIAL,
                0x2B,
                "sltu",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    #[cfg(feature = "MIPS_III")]
    {
        table[Opcode::core_dadd as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rd, Operand::core_rs, Operand::core_rt),
            instr_type: InstrType::R,
            modifies_rd: true,
            reads_rs: true,
            reads_rt: true,
            adds_registers: true,
            ..OpcodeDescriptor::new(
                Opcode::core_dadd,
                OpcodeCategory::CORE_SPECIAL,
                0x2C,
                "dadd",
                IsaVersion::MIPS_III,
                None,
            )
        };
    }
    #[cfg(feature = "MIPS_III")]
    {
        table[Opcode::core_daddu as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rd, Operand::core_rs, Operand::core_rt),
            instr_type: InstrType::R,
            modifies_rd: true,
            reads_rs: true,
            reads_rt: true,
            adds_registers: true,
            ..OpcodeDescriptor::new(
                Opcode::core_daddu,
                OpcodeCategory::CORE_SPECIAL,
                0x2D,
                "daddu",
                IsaVersion::MIPS_III,
                None,
            )
        };
    }
    #[cfg(feature = "MIPS_III")]
    {
        table[Opcode::core_dsub as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rd, Operand::core_rs, Operand::core_rt),
            instr_type: InstrType::R,
            modifies_rd: true,
            reads_rs: true,
            reads_rt: true,
            subs_registers: true,
            ..OpcodeDescriptor::new(
                Opcode::core_dsub,
                OpcodeCategory::CORE_SPECIAL,
                0x2E,
                "dsub",
                IsaVersion::MIPS_III,
                None,
            )
        };
    }
    #[cfg(feature = "MIPS_III")]
    {
        table[Opcode::core_dsubu as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rd, Operand::core_rs, Operand::core_rt),
            instr_type: InstrType::R,
            modifies_rd: true,
            reads_rs: true,
            reads_rt: true,
            subs_registers: true,
            ..OpcodeDescriptor::new(
                Opcode::core_dsubu,
                OpcodeCategory::CORE_SPECIAL,
                0x2F,
                "dsubu",
                IsaVersion::MIPS_III,
                None,
            )
        };
    }
    {
        table[Opcode::core_syscall as usize] = OpcodeDescriptor {
            operands: Operand::arr1(Operand::core_code_lower),
            instr_type: InstrType::R,
            causes_exception: true,
            causes_unconditional_exception: true,
            causes_returnable_exception: true,
            not_emitted_by_compilers: true,
            ..OpcodeDescriptor::new(
                Opcode::core_syscall,
                OpcodeCategory::CORE_SPECIAL,
                0x0C,
                "syscall",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    {
        table[Opcode::core_break as usize] = OpcodeDescriptor {
            operands: Operand::arr1(Operand::core_code),
            causes_exception: true,
            causes_unconditional_exception: true,
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::core_break,
                OpcodeCategory::CORE_SPECIAL,
                0x0D,
                "break",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    #[cfg(feature = "MIPS_II")]
    {
        table[Opcode::core_sync as usize] = OpcodeDescriptor {
            operands: Operand::arr0(),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::core_sync,
                OpcodeCategory::CORE_SPECIAL,
                0x0F,
                "sync",
                IsaVersion::MIPS_II,
                None,
            )
        };
    }
    {
        table[Opcode::core_mult as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_rs, Operand::core_rt),
            instr_type: InstrType::R,
            reads_rs: true,
            reads_rt: true,
            modifies_hi: true,
            modifies_lo: true,
            ..OpcodeDescriptor::new(
                Opcode::core_mult,
                OpcodeCategory::CORE_SPECIAL,
                0x18,
                "mult",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    {
        table[Opcode::core_multu as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_rs, Operand::core_rt),
            instr_type: InstrType::R,
            reads_rs: true,
            reads_rt: true,
            modifies_hi: true,
            modifies_lo: true,
            ..OpcodeDescriptor::new(
                Opcode::core_multu,
                OpcodeCategory::CORE_SPECIAL,
                0x19,
                "multu",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    #[cfg(feature = "MIPS_III")]
    {
        table[Opcode::core_dmult as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_rs, Operand::core_rt),
            instr_type: InstrType::R,
            reads_rs: true,
            reads_rt: true,
            modifies_hi: true,
            modifies_lo: true,
            ..OpcodeDescriptor::new(
                Opcode::core_dmult,
                OpcodeCategory::CORE_SPECIAL,
                0x1C,
                "dmult",
                IsaVersion::MIPS_III,
                None,
            )
        };
    }
    #[cfg(feature = "MIPS_III")]
    {
        table[Opcode::core_dmultu as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_rs, Operand::core_rt),
            instr_type: InstrType::R,
            reads_rs: true,
            reads_rt: true,
            modifies_hi: true,
            modifies_lo: true,
            ..OpcodeDescriptor::new(
                Opcode::core_dmultu,
                OpcodeCategory::CORE_SPECIAL,
                0x1D,
                "dmultu",
                IsaVersion::MIPS_III,
                None,
            )
        };
    }
    #[cfg(feature = "MIPS_II")]
    {
        table[Opcode::core_tge as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rs, Operand::core_rt, Operand::core_code_lower),
            instr_type: InstrType::R,
            is_trap: true,
            causes_exception: true,
            causes_conditional_exception: true,
            reads_rs: true,
            reads_rt: true,
            not_emitted_by_compilers: true,
            ..OpcodeDescriptor::new(
                Opcode::core_tge,
                OpcodeCategory::CORE_SPECIAL,
                0x30,
                "tge",
                IsaVersion::MIPS_II,
                None,
            )
        };
    }
    #[cfg(feature = "MIPS_II")]
    {
        table[Opcode::core_tgeu as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rs, Operand::core_rt, Operand::core_code_lower),
            instr_type: InstrType::R,
            is_trap: true,
            causes_exception: true,
            causes_conditional_exception: true,
            reads_rs: true,
            reads_rt: true,
            not_emitted_by_compilers: true,
            ..OpcodeDescriptor::new(
                Opcode::core_tgeu,
                OpcodeCategory::CORE_SPECIAL,
                0x31,
                "tgeu",
                IsaVersion::MIPS_II,
                None,
            )
        };
    }
    #[cfg(feature = "MIPS_II")]
    {
        table[Opcode::core_tlt as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rs, Operand::core_rt, Operand::core_code_lower),
            instr_type: InstrType::R,
            is_trap: true,
            causes_exception: true,
            causes_conditional_exception: true,
            reads_rs: true,
            reads_rt: true,
            not_emitted_by_compilers: true,
            ..OpcodeDescriptor::new(
                Opcode::core_tlt,
                OpcodeCategory::CORE_SPECIAL,
                0x32,
                "tlt",
                IsaVersion::MIPS_II,
                None,
            )
        };
    }
    #[cfg(feature = "MIPS_II")]
    {
        table[Opcode::core_tltu as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rs, Operand::core_rt, Operand::core_code_lower),
            instr_type: InstrType::R,
            is_trap: true,
            causes_exception: true,
            causes_conditional_exception: true,
            reads_rs: true,
            reads_rt: true,
            not_emitted_by_compilers: true,
            ..OpcodeDescriptor::new(
                Opcode::core_tltu,
                OpcodeCategory::CORE_SPECIAL,
                0x33,
                "tltu",
                IsaVersion::MIPS_II,
                None,
            )
        };
    }
    #[cfg(feature = "MIPS_II")]
    {
        table[Opcode::core_teq as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rs, Operand::core_rt, Operand::core_code_lower),
            instr_type: InstrType::R,
            is_trap: true,
            causes_exception: true,
            causes_conditional_exception: true,
            reads_rs: true,
            reads_rt: true,
            not_emitted_by_compilers: true,
            ..OpcodeDescriptor::new(
                Opcode::core_teq,
                OpcodeCategory::CORE_SPECIAL,
                0x34,
                "teq",
                IsaVersion::MIPS_II,
                None,
            )
        };
    }
    #[cfg(feature = "MIPS_II")]
    {
        table[Opcode::core_tne as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rs, Operand::core_rt, Operand::core_code_lower),
            instr_type: InstrType::R,
            is_trap: true,
            causes_exception: true,
            causes_conditional_exception: true,
            reads_rs: true,
            reads_rt: true,
            not_emitted_by_compilers: true,
            ..OpcodeDescriptor::new(
                Opcode::core_tne,
                OpcodeCategory::CORE_SPECIAL,
                0x36,
                "tne",
                IsaVersion::MIPS_II,
                None,
            )
        };
    }
    {
        table[Opcode::core_nop as usize] = OpcodeDescriptor {
            operands: Operand::arr0(),
            instr_type: InstrType::R,
            is_pseudo: true,
            ..OpcodeDescriptor::new(
                Opcode::core_nop,
                OpcodeCategory::CORE_SPECIAL,
                0x00,
                "nop",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    {
        table[Opcode::core_not as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_rd, Operand::core_rs),
            instr_type: InstrType::R,
            modifies_rd: true,
            reads_rs: true,
            is_pseudo: true,
            ..OpcodeDescriptor::new(
                Opcode::core_not,
                OpcodeCategory::CORE_SPECIAL,
                0x27,
                "not",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    {
        table[Opcode::core_neg as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_rd, Operand::core_rt),
            instr_type: InstrType::R,
            not_emitted_by_compilers: true,
            modifies_rd: true,
            reads_rt: true,
            is_pseudo: true,
            ..OpcodeDescriptor::new(
                Opcode::core_neg,
                OpcodeCategory::CORE_SPECIAL,
                0x22,
                "neg",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    {
        table[Opcode::core_negu as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_rd, Operand::core_rt),
            instr_type: InstrType::R,
            modifies_rd: true,
            reads_rt: true,
            is_pseudo: true,
            ..OpcodeDescriptor::new(
                Opcode::core_negu,
                OpcodeCategory::CORE_SPECIAL,
                0x23,
                "negu",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    {
        table[Opcode::core_bltz as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_rs, Operand::core_branch_target_label),
            instr_type: InstrType::REGIMM,
            is_branch: true,
            reads_rs: true,
            ..OpcodeDescriptor::new(
                Opcode::core_bltz,
                OpcodeCategory::CORE_REGIMM,
                0x00,
                "bltz",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    {
        table[Opcode::core_bgez as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_rs, Operand::core_branch_target_label),
            instr_type: InstrType::REGIMM,
            is_branch: true,
            reads_rs: true,
            ..OpcodeDescriptor::new(
                Opcode::core_bgez,
                OpcodeCategory::CORE_REGIMM,
                0x01,
                "bgez",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    #[cfg(feature = "MIPS_II")]
    {
        table[Opcode::core_bltzl as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_rs, Operand::core_branch_target_label),
            instr_type: InstrType::REGIMM,
            is_branch: true,
            is_branch_likely: true,
            reads_rs: true,
            ..OpcodeDescriptor::new(
                Opcode::core_bltzl,
                OpcodeCategory::CORE_REGIMM,
                0x02,
                "bltzl",
                IsaVersion::MIPS_II,
                None,
            )
        };
    }
    #[cfg(feature = "MIPS_II")]
    {
        table[Opcode::core_bgezl as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_rs, Operand::core_branch_target_label),
            instr_type: InstrType::REGIMM,
            is_branch: true,
            is_branch_likely: true,
            reads_rs: true,
            ..OpcodeDescriptor::new(
                Opcode::core_bgezl,
                OpcodeCategory::CORE_REGIMM,
                0x03,
                "bgezl",
                IsaVersion::MIPS_II,
                None,
            )
        };
    }
    #[cfg(feature = "MIPS_II")]
    {
        table[Opcode::core_tgei as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_rs, Operand::core_imm_i16),
            instr_type: InstrType::REGIMM,
            is_trap: true,
            causes_exception: true,
            causes_conditional_exception: true,
            reads_rs: true,
            not_emitted_by_compilers: true,
            ..OpcodeDescriptor::new(
                Opcode::core_tgei,
                OpcodeCategory::CORE_REGIMM,
                0x08,
                "tgei",
                IsaVersion::MIPS_II,
                None,
            )
        };
    }
    #[cfg(feature = "MIPS_II")]
    {
        table[Opcode::core_tgeiu as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_rs, Operand::core_imm_i16),
            instr_type: InstrType::REGIMM,
            is_trap: true,
            causes_exception: true,
            causes_conditional_exception: true,
            reads_rs: true,
            not_emitted_by_compilers: true,
            ..OpcodeDescriptor::new(
                Opcode::core_tgeiu,
                OpcodeCategory::CORE_REGIMM,
                0x09,
                "tgeiu",
                IsaVersion::MIPS_II,
                None,
            )
        };
    }
    #[cfg(feature = "MIPS_II")]
    {
        table[Opcode::core_tlti as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_rs, Operand::core_imm_i16),
            instr_type: InstrType::REGIMM,
            is_trap: true,
            causes_exception: true,
            causes_conditional_exception: true,
            reads_rs: true,
            not_emitted_by_compilers: true,
            ..OpcodeDescriptor::new(
                Opcode::core_tlti,
                OpcodeCategory::CORE_REGIMM,
                0x0A,
                "tlti",
                IsaVersion::MIPS_II,
                None,
            )
        };
    }
    #[cfg(feature = "MIPS_II")]
    {
        table[Opcode::core_tltiu as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_rs, Operand::core_imm_i16),
            instr_type: InstrType::REGIMM,
            is_trap: true,
            causes_exception: true,
            causes_conditional_exception: true,
            reads_rs: true,
            not_emitted_by_compilers: true,
            ..OpcodeDescriptor::new(
                Opcode::core_tltiu,
                OpcodeCategory::CORE_REGIMM,
                0x0B,
                "tltiu",
                IsaVersion::MIPS_II,
                None,
            )
        };
    }
    #[cfg(feature = "MIPS_II")]
    {
        table[Opcode::core_teqi as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_rs, Operand::core_imm_i16),
            instr_type: InstrType::REGIMM,
            is_trap: true,
            causes_exception: true,
            causes_conditional_exception: true,
            reads_rs: true,
            not_emitted_by_compilers: true,
            ..OpcodeDescriptor::new(
                Opcode::core_teqi,
                OpcodeCategory::CORE_REGIMM,
                0x0C,
                "teqi",
                IsaVersion::MIPS_II,
                None,
            )
        };
    }
    #[cfg(feature = "MIPS_II")]
    {
        table[Opcode::core_tnei as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_rs, Operand::core_imm_i16),
            instr_type: InstrType::REGIMM,
            is_trap: true,
            causes_exception: true,
            causes_conditional_exception: true,
            reads_rs: true,
            not_emitted_by_compilers: true,
            ..OpcodeDescriptor::new(
                Opcode::core_tnei,
                OpcodeCategory::CORE_REGIMM,
                0x0E,
                "tnei",
                IsaVersion::MIPS_II,
                None,
            )
        };
    }
    {
        table[Opcode::core_bltzal as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_rs, Operand::core_branch_target_label),
            instr_type: InstrType::REGIMM,
            is_branch: true,
            reads_rs: true,
            does_link: true,
            ..OpcodeDescriptor::new(
                Opcode::core_bltzal,
                OpcodeCategory::CORE_REGIMM,
                0x10,
                "bltzal",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    {
        table[Opcode::core_bgezal as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_rs, Operand::core_branch_target_label),
            instr_type: InstrType::REGIMM,
            is_branch: true,
            reads_rs: true,
            does_link: true,
            ..OpcodeDescriptor::new(
                Opcode::core_bgezal,
                OpcodeCategory::CORE_REGIMM,
                0x11,
                "bgezal",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    #[cfg(feature = "MIPS_II")]
    {
        table[Opcode::core_bltzall as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_rs, Operand::core_branch_target_label),
            instr_type: InstrType::REGIMM,
            is_branch: true,
            is_branch_likely: true,
            reads_rs: true,
            does_link: true,
            ..OpcodeDescriptor::new(
                Opcode::core_bltzall,
                OpcodeCategory::CORE_REGIMM,
                0x12,
                "bltzall",
                IsaVersion::MIPS_II,
                None,
            )
        };
    }
    #[cfg(feature = "MIPS_II")]
    {
        table[Opcode::core_bgezall as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_rs, Operand::core_branch_target_label),
            instr_type: InstrType::REGIMM,
            is_branch: true,
            is_branch_likely: true,
            reads_rs: true,
            not_emitted_by_compilers: true,
            does_link: true,
            ..OpcodeDescriptor::new(
                Opcode::core_bgezall,
                OpcodeCategory::CORE_REGIMM,
                0x13,
                "bgezall",
                IsaVersion::MIPS_II,
                None,
            )
        };
    }
    {
        table[Opcode::core_bal as usize] = OpcodeDescriptor {
            operands: Operand::arr1(Operand::core_branch_target_label),
            instr_type: InstrType::REGIMM,
            is_branch: true,
            not_emitted_by_compilers: true,
            does_link: true,
            is_pseudo: true,
            ..OpcodeDescriptor::new(
                Opcode::core_bal,
                OpcodeCategory::CORE_REGIMM,
                0x11,
                "bal",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    {
        table[Opcode::core_mfc0 as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_rt, Operand::core_cop0d),
            instr_type: InstrType::UNKNOWN,
            modifies_rt: true,
            not_emitted_by_compilers: true,
            ..OpcodeDescriptor::new(
                Opcode::core_mfc0,
                OpcodeCategory::CORE_COP0,
                0x00,
                "mfc0",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    #[cfg(feature = "MIPS_III")]
    {
        table[Opcode::core_dmfc0 as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_rt, Operand::core_cop0d),
            instr_type: InstrType::UNKNOWN,
            modifies_rt: true,
            not_emitted_by_compilers: true,
            ..OpcodeDescriptor::new(
                Opcode::core_dmfc0,
                OpcodeCategory::CORE_COP0,
                0x01,
                "dmfc0",
                IsaVersion::MIPS_III,
                None,
            )
        };
    }
    {
        table[Opcode::core_cfc0 as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_rt, Operand::core_cop0cd),
            instr_type: InstrType::UNKNOWN,
            modifies_rt: true,
            not_emitted_by_compilers: true,
            ..OpcodeDescriptor::new(
                Opcode::core_cfc0,
                OpcodeCategory::CORE_COP0,
                0x02,
                "cfc0",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    {
        table[Opcode::core_mtc0 as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_rt, Operand::core_cop0d),
            instr_type: InstrType::UNKNOWN,
            reads_rt: true,
            not_emitted_by_compilers: true,
            ..OpcodeDescriptor::new(
                Opcode::core_mtc0,
                OpcodeCategory::CORE_COP0,
                0x04,
                "mtc0",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    #[cfg(feature = "MIPS_III")]
    {
        table[Opcode::core_dmtc0 as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_rt, Operand::core_cop0d),
            instr_type: InstrType::UNKNOWN,
            reads_rt: true,
            not_emitted_by_compilers: true,
            ..OpcodeDescriptor::new(
                Opcode::core_dmtc0,
                OpcodeCategory::CORE_COP0,
                0x05,
                "dmtc0",
                IsaVersion::MIPS_III,
                None,
            )
        };
    }
    {
        table[Opcode::core_ctc0 as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_rt, Operand::core_cop0cd),
            instr_type: InstrType::UNKNOWN,
            reads_rt: true,
            not_emitted_by_compilers: true,
            ..OpcodeDescriptor::new(
                Opcode::core_ctc0,
                OpcodeCategory::CORE_COP0,
                0x06,
                "ctc0",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }

    {
        table[Opcode::core_bc0f as usize] = OpcodeDescriptor {
            operands: Operand::arr1(Operand::core_branch_target_label),
            instr_type: InstrType::UNKNOWN,
            is_branch: true,
            ..OpcodeDescriptor::new(
                Opcode::core_bc0f,
                OpcodeCategory::CORE_COP0_BC0,
                0x00,
                "bc0f",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    {
        table[Opcode::core_bc0t as usize] = OpcodeDescriptor {
            operands: Operand::arr1(Operand::core_branch_target_label),
            instr_type: InstrType::UNKNOWN,
            is_branch: true,
            ..OpcodeDescriptor::new(
                Opcode::core_bc0t,
                OpcodeCategory::CORE_COP0_BC0,
                0x01,
                "bc0t",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    #[cfg(feature = "MIPS_II")]
    {
        table[Opcode::core_bc0fl as usize] = OpcodeDescriptor {
            operands: Operand::arr1(Operand::core_branch_target_label),
            instr_type: InstrType::UNKNOWN,
            is_branch: true,
            is_branch_likely: true,
            ..OpcodeDescriptor::new(
                Opcode::core_bc0fl,
                OpcodeCategory::CORE_COP0_BC0,
                0x02,
                "bc0fl",
                IsaVersion::MIPS_II,
                None,
            )
        };
    }
    #[cfg(feature = "MIPS_II")]
    {
        table[Opcode::core_bc0tl as usize] = OpcodeDescriptor {
            operands: Operand::arr1(Operand::core_branch_target_label),
            instr_type: InstrType::UNKNOWN,
            is_branch: true,
            is_branch_likely: true,
            ..OpcodeDescriptor::new(
                Opcode::core_bc0tl,
                OpcodeCategory::CORE_COP0_BC0,
                0x03,
                "bc0tl",
                IsaVersion::MIPS_II,
                None,
            )
        };
    }
    {
        table[Opcode::core_tlbr as usize] = OpcodeDescriptor {
            operands: Operand::arr0(),
            instr_type: InstrType::UNKNOWN,
            not_emitted_by_compilers: true,
            ..OpcodeDescriptor::new(
                Opcode::core_tlbr,
                OpcodeCategory::CORE_COP0_TLB,
                0x01,
                "tlbr",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    {
        table[Opcode::core_tlbwi as usize] = OpcodeDescriptor {
            operands: Operand::arr0(),
            instr_type: InstrType::UNKNOWN,
            not_emitted_by_compilers: true,
            ..OpcodeDescriptor::new(
                Opcode::core_tlbwi,
                OpcodeCategory::CORE_COP0_TLB,
                0x02,
                "tlbwi",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    {
        table[Opcode::core_tlbwr as usize] = OpcodeDescriptor {
            operands: Operand::arr0(),
            instr_type: InstrType::UNKNOWN,
            ..OpcodeDescriptor::new(
                Opcode::core_tlbwr,
                OpcodeCategory::CORE_COP0_TLB,
                0x06,
                "tlbwr",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    {
        table[Opcode::core_tlbp as usize] = OpcodeDescriptor {
            operands: Operand::arr0(),
            instr_type: InstrType::UNKNOWN,
            not_emitted_by_compilers: true,
            ..OpcodeDescriptor::new(
                Opcode::core_tlbp,
                OpcodeCategory::CORE_COP0_TLB,
                0x08,
                "tlbp",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    {
        table[Opcode::core_rfe as usize] = OpcodeDescriptor {
            operands: Operand::arr0(),
            instr_type: InstrType::UNKNOWN,
            not_emitted_by_compilers: true,
            ..OpcodeDescriptor::new(
                Opcode::core_rfe,
                OpcodeCategory::CORE_COP0_TLB,
                0x10,
                "rfe",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    #[cfg(feature = "MIPS_III")]
    {
        table[Opcode::core_eret as usize] = OpcodeDescriptor {
            operands: Operand::arr0(),
            instr_type: InstrType::UNKNOWN,
            causes_exception: true,
            causes_unconditional_exception: true,
            not_emitted_by_compilers: true,
            ..OpcodeDescriptor::new(
                Opcode::core_eret,
                OpcodeCategory::CORE_COP0_TLB,
                0x18,
                "eret",
                IsaVersion::MIPS_III,
                None,
            )
        };
    }
    {
        table[Opcode::core_mfc1 as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_rt, Operand::core_fs),
            instr_type: InstrType::UNKNOWN,
            is_float: true,
            modifies_rt: true,
            reads_fs: true,
            ..OpcodeDescriptor::new(
                Opcode::core_mfc1,
                OpcodeCategory::CORE_COP1,
                0x00,
                "mfc1",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    #[cfg(feature = "MIPS_III")]
    {
        table[Opcode::core_dmfc1 as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_rt, Operand::core_fs),
            instr_type: InstrType::UNKNOWN,
            is_float: true,
            modifies_rt: true,
            reads_fs: true,
            ..OpcodeDescriptor::new(
                Opcode::core_dmfc1,
                OpcodeCategory::CORE_COP1,
                0x01,
                "dmfc1",
                IsaVersion::MIPS_III,
                None,
            )
        };
    }
    {
        table[Opcode::core_mtc1 as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_rt, Operand::core_fs),
            instr_type: InstrType::UNKNOWN,
            is_float: true,
            reads_rt: true,
            modifies_fs: true,
            ..OpcodeDescriptor::new(
                Opcode::core_mtc1,
                OpcodeCategory::CORE_COP1,
                0x04,
                "mtc1",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    #[cfg(feature = "MIPS_III")]
    {
        table[Opcode::core_dmtc1 as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_rt, Operand::core_fs),
            instr_type: InstrType::UNKNOWN,
            is_float: true,
            reads_rt: true,
            modifies_fs: true,
            ..OpcodeDescriptor::new(
                Opcode::core_dmtc1,
                OpcodeCategory::CORE_COP1,
                0x05,
                "dmtc1",
                IsaVersion::MIPS_III,
                None,
            )
        };
    }
    {
        table[Opcode::core_cfc1 as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_rt, Operand::core_cop1cs),
            instr_type: InstrType::UNKNOWN,
            is_float: true,
            modifies_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::core_cfc1,
                OpcodeCategory::CORE_COP1,
                0x02,
                "cfc1",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    {
        table[Opcode::core_ctc1 as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_rt, Operand::core_cop1cs),
            instr_type: InstrType::UNKNOWN,
            is_float: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::core_ctc1,
                OpcodeCategory::CORE_COP1,
                0x06,
                "ctc1",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }

    {
        table[Opcode::core_bc1f as usize] = OpcodeDescriptor {
            operands: Operand::arr1(Operand::core_branch_target_label),
            instr_type: InstrType::UNKNOWN,
            is_branch: true,
            ..OpcodeDescriptor::new(
                Opcode::core_bc1f,
                OpcodeCategory::CORE_COP1_BC1,
                0x00,
                "bc1f",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    {
        table[Opcode::core_bc1t as usize] = OpcodeDescriptor {
            operands: Operand::arr1(Operand::core_branch_target_label),
            instr_type: InstrType::UNKNOWN,
            is_branch: true,
            ..OpcodeDescriptor::new(
                Opcode::core_bc1t,
                OpcodeCategory::CORE_COP1_BC1,
                0x01,
                "bc1t",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    #[cfg(feature = "MIPS_II")]
    {
        table[Opcode::core_bc1fl as usize] = OpcodeDescriptor {
            operands: Operand::arr1(Operand::core_branch_target_label),
            instr_type: InstrType::UNKNOWN,
            is_branch: true,
            is_branch_likely: true,
            ..OpcodeDescriptor::new(
                Opcode::core_bc1fl,
                OpcodeCategory::CORE_COP1_BC1,
                0x02,
                "bc1fl",
                IsaVersion::MIPS_II,
                None,
            )
        };
    }
    #[cfg(feature = "MIPS_II")]
    {
        table[Opcode::core_bc1tl as usize] = OpcodeDescriptor {
            operands: Operand::arr1(Operand::core_branch_target_label),
            instr_type: InstrType::UNKNOWN,
            is_branch: true,
            is_branch_likely: true,
            ..OpcodeDescriptor::new(
                Opcode::core_bc1tl,
                OpcodeCategory::CORE_COP1_BC1,
                0x03,
                "bc1tl",
                IsaVersion::MIPS_II,
                None,
            )
        };
    }
    {
        table[Opcode::core_add_s as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_fd, Operand::core_fs, Operand::core_ft),
            instr_type: InstrType::UNKNOWN,
            is_float: true,
            modifies_fd: true,
            reads_fs: true,
            reads_ft: true,
            ..OpcodeDescriptor::new(
                Opcode::core_add_s,
                OpcodeCategory::CORE_COP1_FPUS,
                0x00,
                "add.s",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    {
        table[Opcode::core_sub_s as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_fd, Operand::core_fs, Operand::core_ft),
            instr_type: InstrType::UNKNOWN,
            is_float: true,
            modifies_fd: true,
            reads_fs: true,
            reads_ft: true,
            ..OpcodeDescriptor::new(
                Opcode::core_sub_s,
                OpcodeCategory::CORE_COP1_FPUS,
                0x01,
                "sub.s",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    {
        table[Opcode::core_mul_s as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_fd, Operand::core_fs, Operand::core_ft),
            instr_type: InstrType::UNKNOWN,
            is_float: true,
            modifies_fd: true,
            reads_fs: true,
            reads_ft: true,
            ..OpcodeDescriptor::new(
                Opcode::core_mul_s,
                OpcodeCategory::CORE_COP1_FPUS,
                0x02,
                "mul.s",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    {
        table[Opcode::core_div_s as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_fd, Operand::core_fs, Operand::core_ft),
            instr_type: InstrType::UNKNOWN,
            is_float: true,
            modifies_fd: true,
            reads_fs: true,
            reads_ft: true,
            ..OpcodeDescriptor::new(
                Opcode::core_div_s,
                OpcodeCategory::CORE_COP1_FPUS,
                0x03,
                "div.s",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    #[cfg(feature = "MIPS_II")]
    {
        table[Opcode::core_sqrt_s as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_fd, Operand::core_fs),
            instr_type: InstrType::UNKNOWN,
            is_float: true,
            modifies_fd: true,
            reads_fs: true,
            ..OpcodeDescriptor::new(
                Opcode::core_sqrt_s,
                OpcodeCategory::CORE_COP1_FPUS,
                0x04,
                "sqrt.s",
                IsaVersion::MIPS_II,
                None,
            )
        };
    }
    {
        table[Opcode::core_abs_s as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_fd, Operand::core_fs),
            instr_type: InstrType::UNKNOWN,
            is_float: true,
            modifies_fd: true,
            reads_fs: true,
            ..OpcodeDescriptor::new(
                Opcode::core_abs_s,
                OpcodeCategory::CORE_COP1_FPUS,
                0x05,
                "abs.s",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    {
        table[Opcode::core_mov_s as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_fd, Operand::core_fs),
            instr_type: InstrType::UNKNOWN,
            is_float: true,
            modifies_fd: true,
            reads_fs: true,
            ..OpcodeDescriptor::new(
                Opcode::core_mov_s,
                OpcodeCategory::CORE_COP1_FPUS,
                0x06,
                "mov.s",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    {
        table[Opcode::core_neg_s as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_fd, Operand::core_fs),
            instr_type: InstrType::UNKNOWN,
            is_float: true,
            modifies_fd: true,
            reads_fs: true,
            ..OpcodeDescriptor::new(
                Opcode::core_neg_s,
                OpcodeCategory::CORE_COP1_FPUS,
                0x07,
                "neg.s",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    #[cfg(feature = "MIPS_III")]
    {
        table[Opcode::core_round_l_s as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_fd, Operand::core_fs),
            instr_type: InstrType::UNKNOWN,
            is_float: true,
            modifies_fd: true,
            reads_fs: true,
            ..OpcodeDescriptor::new(
                Opcode::core_round_l_s,
                OpcodeCategory::CORE_COP1_FPUS,
                0x08,
                "round.l.s",
                IsaVersion::MIPS_III,
                None,
            )
        };
    }
    #[cfg(feature = "MIPS_III")]
    {
        table[Opcode::core_trunc_l_s as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_fd, Operand::core_fs),
            instr_type: InstrType::UNKNOWN,
            is_float: true,
            modifies_fd: true,
            reads_fs: true,
            ..OpcodeDescriptor::new(
                Opcode::core_trunc_l_s,
                OpcodeCategory::CORE_COP1_FPUS,
                0x09,
                "trunc.l.s",
                IsaVersion::MIPS_III,
                None,
            )
        };
    }
    #[cfg(feature = "MIPS_III")]
    {
        table[Opcode::core_ceil_l_s as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_fd, Operand::core_fs),
            instr_type: InstrType::UNKNOWN,
            is_float: true,
            modifies_fd: true,
            reads_fs: true,
            ..OpcodeDescriptor::new(
                Opcode::core_ceil_l_s,
                OpcodeCategory::CORE_COP1_FPUS,
                0x0A,
                "ceil.l.s",
                IsaVersion::MIPS_III,
                None,
            )
        };
    }
    #[cfg(feature = "MIPS_III")]
    {
        table[Opcode::core_floor_l_s as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_fd, Operand::core_fs),
            instr_type: InstrType::UNKNOWN,
            is_float: true,
            modifies_fd: true,
            reads_fs: true,
            ..OpcodeDescriptor::new(
                Opcode::core_floor_l_s,
                OpcodeCategory::CORE_COP1_FPUS,
                0x0B,
                "floor.l.s",
                IsaVersion::MIPS_III,
                None,
            )
        };
    }
    #[cfg(feature = "MIPS_II")]
    {
        table[Opcode::core_round_w_s as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_fd, Operand::core_fs),
            instr_type: InstrType::UNKNOWN,
            is_float: true,
            modifies_fd: true,
            reads_fs: true,
            ..OpcodeDescriptor::new(
                Opcode::core_round_w_s,
                OpcodeCategory::CORE_COP1_FPUS,
                0x0C,
                "round.w.s",
                IsaVersion::MIPS_II,
                None,
            )
        };
    }
    #[cfg(feature = "MIPS_II")]
    {
        table[Opcode::core_trunc_w_s as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_fd, Operand::core_fs),
            instr_type: InstrType::UNKNOWN,
            is_float: true,
            modifies_fd: true,
            reads_fs: true,
            ..OpcodeDescriptor::new(
                Opcode::core_trunc_w_s,
                OpcodeCategory::CORE_COP1_FPUS,
                0x0D,
                "trunc.w.s",
                IsaVersion::MIPS_II,
                None,
            )
        };
    }
    #[cfg(feature = "MIPS_II")]
    {
        table[Opcode::core_ceil_w_s as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_fd, Operand::core_fs),
            instr_type: InstrType::UNKNOWN,
            is_float: true,
            modifies_fd: true,
            reads_fs: true,
            ..OpcodeDescriptor::new(
                Opcode::core_ceil_w_s,
                OpcodeCategory::CORE_COP1_FPUS,
                0x0E,
                "ceil.w.s",
                IsaVersion::MIPS_II,
                None,
            )
        };
    }
    #[cfg(feature = "MIPS_II")]
    {
        table[Opcode::core_floor_w_s as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_fd, Operand::core_fs),
            instr_type: InstrType::UNKNOWN,
            is_float: true,
            modifies_fd: true,
            reads_fs: true,
            ..OpcodeDescriptor::new(
                Opcode::core_floor_w_s,
                OpcodeCategory::CORE_COP1_FPUS,
                0x0F,
                "floor.w.s",
                IsaVersion::MIPS_II,
                None,
            )
        };
    }
    {
        table[Opcode::core_cvt_d_s as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_fd, Operand::core_fs),
            instr_type: InstrType::UNKNOWN,
            is_float: true,
            is_double: true,
            modifies_fd: true,
            reads_fs: true,
            ..OpcodeDescriptor::new(
                Opcode::core_cvt_d_s,
                OpcodeCategory::CORE_COP1_FPUS,
                0x21,
                "cvt.d.s",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    {
        table[Opcode::core_cvt_w_s as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_fd, Operand::core_fs),
            instr_type: InstrType::UNKNOWN,
            is_float: true,
            modifies_fd: true,
            reads_fs: true,
            ..OpcodeDescriptor::new(
                Opcode::core_cvt_w_s,
                OpcodeCategory::CORE_COP1_FPUS,
                0x24,
                "cvt.w.s",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    #[cfg(feature = "MIPS_III")]
    {
        table[Opcode::core_cvt_l_s as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_fd, Operand::core_fs),
            instr_type: InstrType::UNKNOWN,
            is_float: true,
            modifies_fd: true,
            reads_fs: true,
            ..OpcodeDescriptor::new(
                Opcode::core_cvt_l_s,
                OpcodeCategory::CORE_COP1_FPUS,
                0x25,
                "cvt.l.s",
                IsaVersion::MIPS_III,
                None,
            )
        };
    }
    {
        table[Opcode::core_c_f_s as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_fs, Operand::core_ft),
            instr_type: InstrType::UNKNOWN,
            is_float: true,
            reads_fs: true,
            reads_ft: true,
            ..OpcodeDescriptor::new(
                Opcode::core_c_f_s,
                OpcodeCategory::CORE_COP1_FPUS,
                0x30,
                "c.f.s",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    {
        table[Opcode::core_c_un_s as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_fs, Operand::core_ft),
            instr_type: InstrType::UNKNOWN,
            is_float: true,
            reads_fs: true,
            reads_ft: true,
            ..OpcodeDescriptor::new(
                Opcode::core_c_un_s,
                OpcodeCategory::CORE_COP1_FPUS,
                0x31,
                "c.un.s",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    {
        table[Opcode::core_c_eq_s as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_fs, Operand::core_ft),
            instr_type: InstrType::UNKNOWN,
            is_float: true,
            reads_fs: true,
            reads_ft: true,
            ..OpcodeDescriptor::new(
                Opcode::core_c_eq_s,
                OpcodeCategory::CORE_COP1_FPUS,
                0x32,
                "c.eq.s",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    {
        table[Opcode::core_c_ueq_s as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_fs, Operand::core_ft),
            instr_type: InstrType::UNKNOWN,
            is_float: true,
            reads_fs: true,
            reads_ft: true,
            ..OpcodeDescriptor::new(
                Opcode::core_c_ueq_s,
                OpcodeCategory::CORE_COP1_FPUS,
                0x33,
                "c.ueq.s",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    {
        table[Opcode::core_c_olt_s as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_fs, Operand::core_ft),
            instr_type: InstrType::UNKNOWN,
            is_float: true,
            reads_fs: true,
            reads_ft: true,
            ..OpcodeDescriptor::new(
                Opcode::core_c_olt_s,
                OpcodeCategory::CORE_COP1_FPUS,
                0x34,
                "c.olt.s",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    {
        table[Opcode::core_c_ult_s as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_fs, Operand::core_ft),
            instr_type: InstrType::UNKNOWN,
            is_float: true,
            reads_fs: true,
            reads_ft: true,
            ..OpcodeDescriptor::new(
                Opcode::core_c_ult_s,
                OpcodeCategory::CORE_COP1_FPUS,
                0x35,
                "c.ult.s",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    {
        table[Opcode::core_c_ole_s as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_fs, Operand::core_ft),
            instr_type: InstrType::UNKNOWN,
            is_float: true,
            reads_fs: true,
            reads_ft: true,
            ..OpcodeDescriptor::new(
                Opcode::core_c_ole_s,
                OpcodeCategory::CORE_COP1_FPUS,
                0x36,
                "c.ole.s",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    {
        table[Opcode::core_c_ule_s as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_fs, Operand::core_ft),
            instr_type: InstrType::UNKNOWN,
            is_float: true,
            reads_fs: true,
            reads_ft: true,
            ..OpcodeDescriptor::new(
                Opcode::core_c_ule_s,
                OpcodeCategory::CORE_COP1_FPUS,
                0x37,
                "c.ule.s",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    {
        table[Opcode::core_c_sf_s as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_fs, Operand::core_ft),
            instr_type: InstrType::UNKNOWN,
            is_float: true,
            reads_fs: true,
            reads_ft: true,
            ..OpcodeDescriptor::new(
                Opcode::core_c_sf_s,
                OpcodeCategory::CORE_COP1_FPUS,
                0x38,
                "c.sf.s",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    {
        table[Opcode::core_c_ngle_s as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_fs, Operand::core_ft),
            instr_type: InstrType::UNKNOWN,
            is_float: true,
            reads_fs: true,
            reads_ft: true,
            ..OpcodeDescriptor::new(
                Opcode::core_c_ngle_s,
                OpcodeCategory::CORE_COP1_FPUS,
                0x39,
                "c.ngle.s",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    {
        table[Opcode::core_c_seq_s as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_fs, Operand::core_ft),
            instr_type: InstrType::UNKNOWN,
            is_float: true,
            reads_fs: true,
            reads_ft: true,
            ..OpcodeDescriptor::new(
                Opcode::core_c_seq_s,
                OpcodeCategory::CORE_COP1_FPUS,
                0x3A,
                "c.seq.s",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    {
        table[Opcode::core_c_ngl_s as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_fs, Operand::core_ft),
            instr_type: InstrType::UNKNOWN,
            is_float: true,
            reads_fs: true,
            reads_ft: true,
            ..OpcodeDescriptor::new(
                Opcode::core_c_ngl_s,
                OpcodeCategory::CORE_COP1_FPUS,
                0x3B,
                "c.ngl.s",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    {
        table[Opcode::core_c_lt_s as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_fs, Operand::core_ft),
            instr_type: InstrType::UNKNOWN,
            is_float: true,
            reads_fs: true,
            reads_ft: true,
            ..OpcodeDescriptor::new(
                Opcode::core_c_lt_s,
                OpcodeCategory::CORE_COP1_FPUS,
                0x3C,
                "c.lt.s",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    {
        table[Opcode::core_c_nge_s as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_fs, Operand::core_ft),
            instr_type: InstrType::UNKNOWN,
            is_float: true,
            reads_fs: true,
            reads_ft: true,
            ..OpcodeDescriptor::new(
                Opcode::core_c_nge_s,
                OpcodeCategory::CORE_COP1_FPUS,
                0x3D,
                "c.nge.s",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    {
        table[Opcode::core_c_le_s as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_fs, Operand::core_ft),
            instr_type: InstrType::UNKNOWN,
            is_float: true,
            reads_fs: true,
            reads_ft: true,
            ..OpcodeDescriptor::new(
                Opcode::core_c_le_s,
                OpcodeCategory::CORE_COP1_FPUS,
                0x3E,
                "c.le.s",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    {
        table[Opcode::core_c_ngt_s as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_fs, Operand::core_ft),
            instr_type: InstrType::UNKNOWN,
            is_float: true,
            reads_fs: true,
            reads_ft: true,
            ..OpcodeDescriptor::new(
                Opcode::core_c_ngt_s,
                OpcodeCategory::CORE_COP1_FPUS,
                0x3F,
                "c.ngt.s",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    {
        table[Opcode::core_add_d as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_fd, Operand::core_fs, Operand::core_ft),
            instr_type: InstrType::UNKNOWN,
            is_float: true,
            modifies_fd: true,
            reads_fs: true,
            reads_ft: true,
            ..OpcodeDescriptor::new(
                Opcode::core_add_d,
                OpcodeCategory::CORE_COP1_FPUD,
                0x00,
                "add.d",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    {
        table[Opcode::core_sub_d as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_fd, Operand::core_fs, Operand::core_ft),
            instr_type: InstrType::UNKNOWN,
            is_float: true,
            modifies_fd: true,
            reads_fs: true,
            reads_ft: true,
            ..OpcodeDescriptor::new(
                Opcode::core_sub_d,
                OpcodeCategory::CORE_COP1_FPUD,
                0x01,
                "sub.d",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    {
        table[Opcode::core_mul_d as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_fd, Operand::core_fs, Operand::core_ft),
            instr_type: InstrType::UNKNOWN,
            is_float: true,
            modifies_fd: true,
            reads_fs: true,
            reads_ft: true,
            ..OpcodeDescriptor::new(
                Opcode::core_mul_d,
                OpcodeCategory::CORE_COP1_FPUD,
                0x02,
                "mul.d",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    {
        table[Opcode::core_div_d as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_fd, Operand::core_fs, Operand::core_ft),
            instr_type: InstrType::UNKNOWN,
            is_float: true,
            modifies_fd: true,
            reads_fs: true,
            reads_ft: true,
            ..OpcodeDescriptor::new(
                Opcode::core_div_d,
                OpcodeCategory::CORE_COP1_FPUD,
                0x03,
                "div.d",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    #[cfg(feature = "MIPS_II")]
    {
        table[Opcode::core_sqrt_d as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_fd, Operand::core_fs),
            instr_type: InstrType::UNKNOWN,
            is_float: true,
            modifies_fd: true,
            reads_fs: true,
            ..OpcodeDescriptor::new(
                Opcode::core_sqrt_d,
                OpcodeCategory::CORE_COP1_FPUD,
                0x04,
                "sqrt.d",
                IsaVersion::MIPS_II,
                None,
            )
        };
    }
    {
        table[Opcode::core_abs_d as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_fd, Operand::core_fs),
            instr_type: InstrType::UNKNOWN,
            is_float: true,
            modifies_fd: true,
            reads_fs: true,
            ..OpcodeDescriptor::new(
                Opcode::core_abs_d,
                OpcodeCategory::CORE_COP1_FPUD,
                0x05,
                "abs.d",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    {
        table[Opcode::core_mov_d as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_fd, Operand::core_fs),
            instr_type: InstrType::UNKNOWN,
            is_float: true,
            modifies_fd: true,
            reads_fs: true,
            ..OpcodeDescriptor::new(
                Opcode::core_mov_d,
                OpcodeCategory::CORE_COP1_FPUD,
                0x06,
                "mov.d",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    {
        table[Opcode::core_neg_d as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_fd, Operand::core_fs),
            instr_type: InstrType::UNKNOWN,
            is_float: true,
            modifies_fd: true,
            reads_fs: true,
            ..OpcodeDescriptor::new(
                Opcode::core_neg_d,
                OpcodeCategory::CORE_COP1_FPUD,
                0x07,
                "neg.d",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    #[cfg(feature = "MIPS_III")]
    {
        table[Opcode::core_round_l_d as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_fd, Operand::core_fs),
            instr_type: InstrType::UNKNOWN,
            is_float: true,
            modifies_fd: true,
            reads_fs: true,
            ..OpcodeDescriptor::new(
                Opcode::core_round_l_d,
                OpcodeCategory::CORE_COP1_FPUD,
                0x08,
                "round.l.d",
                IsaVersion::MIPS_III,
                None,
            )
        };
    }
    #[cfg(feature = "MIPS_III")]
    {
        table[Opcode::core_trunc_l_d as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_fd, Operand::core_fs),
            instr_type: InstrType::UNKNOWN,
            is_float: true,
            modifies_fd: true,
            reads_fs: true,
            ..OpcodeDescriptor::new(
                Opcode::core_trunc_l_d,
                OpcodeCategory::CORE_COP1_FPUD,
                0x09,
                "trunc.l.d",
                IsaVersion::MIPS_III,
                None,
            )
        };
    }
    #[cfg(feature = "MIPS_III")]
    {
        table[Opcode::core_ceil_l_d as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_fd, Operand::core_fs),
            instr_type: InstrType::UNKNOWN,
            is_float: true,
            modifies_fd: true,
            reads_fs: true,
            ..OpcodeDescriptor::new(
                Opcode::core_ceil_l_d,
                OpcodeCategory::CORE_COP1_FPUD,
                0x0A,
                "ceil.l.d",
                IsaVersion::MIPS_III,
                None,
            )
        };
    }
    #[cfg(feature = "MIPS_III")]
    {
        table[Opcode::core_floor_l_d as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_fd, Operand::core_fs),
            instr_type: InstrType::UNKNOWN,
            is_float: true,
            modifies_fd: true,
            reads_fs: true,
            ..OpcodeDescriptor::new(
                Opcode::core_floor_l_d,
                OpcodeCategory::CORE_COP1_FPUD,
                0x0B,
                "floor.l.d",
                IsaVersion::MIPS_III,
                None,
            )
        };
    }
    #[cfg(feature = "MIPS_II")]
    {
        table[Opcode::core_round_w_d as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_fd, Operand::core_fs),
            instr_type: InstrType::UNKNOWN,
            is_float: true,
            modifies_fd: true,
            reads_fs: true,
            ..OpcodeDescriptor::new(
                Opcode::core_round_w_d,
                OpcodeCategory::CORE_COP1_FPUD,
                0x0C,
                "round.w.d",
                IsaVersion::MIPS_II,
                None,
            )
        };
    }
    #[cfg(feature = "MIPS_II")]
    {
        table[Opcode::core_trunc_w_d as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_fd, Operand::core_fs),
            instr_type: InstrType::UNKNOWN,
            is_float: true,
            modifies_fd: true,
            reads_fs: true,
            ..OpcodeDescriptor::new(
                Opcode::core_trunc_w_d,
                OpcodeCategory::CORE_COP1_FPUD,
                0x0D,
                "trunc.w.d",
                IsaVersion::MIPS_II,
                None,
            )
        };
    }
    #[cfg(feature = "MIPS_II")]
    {
        table[Opcode::core_ceil_w_d as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_fd, Operand::core_fs),
            instr_type: InstrType::UNKNOWN,
            is_float: true,
            modifies_fd: true,
            reads_fs: true,
            ..OpcodeDescriptor::new(
                Opcode::core_ceil_w_d,
                OpcodeCategory::CORE_COP1_FPUD,
                0x0E,
                "ceil.w.d",
                IsaVersion::MIPS_II,
                None,
            )
        };
    }
    #[cfg(feature = "MIPS_II")]
    {
        table[Opcode::core_floor_w_d as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_fd, Operand::core_fs),
            instr_type: InstrType::UNKNOWN,
            is_float: true,
            modifies_fd: true,
            reads_fs: true,
            ..OpcodeDescriptor::new(
                Opcode::core_floor_w_d,
                OpcodeCategory::CORE_COP1_FPUD,
                0x0F,
                "floor.w.d",
                IsaVersion::MIPS_II,
                None,
            )
        };
    }
    {
        table[Opcode::core_cvt_s_d as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_fd, Operand::core_fs),
            instr_type: InstrType::UNKNOWN,
            is_float: true,
            is_double: true,
            modifies_fd: true,
            reads_fs: true,
            ..OpcodeDescriptor::new(
                Opcode::core_cvt_s_d,
                OpcodeCategory::CORE_COP1_FPUD,
                0x20,
                "cvt.s.d",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    {
        table[Opcode::core_cvt_w_d as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_fd, Operand::core_fs),
            instr_type: InstrType::UNKNOWN,
            is_float: true,
            is_double: true,
            modifies_fd: true,
            reads_fs: true,
            ..OpcodeDescriptor::new(
                Opcode::core_cvt_w_d,
                OpcodeCategory::CORE_COP1_FPUD,
                0x24,
                "cvt.w.d",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    #[cfg(feature = "MIPS_III")]
    {
        table[Opcode::core_cvt_l_d as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_fd, Operand::core_fs),
            instr_type: InstrType::UNKNOWN,
            is_float: true,
            is_double: true,
            modifies_fd: true,
            reads_fs: true,
            ..OpcodeDescriptor::new(
                Opcode::core_cvt_l_d,
                OpcodeCategory::CORE_COP1_FPUD,
                0x25,
                "cvt.l.d",
                IsaVersion::MIPS_III,
                None,
            )
        };
    }
    {
        table[Opcode::core_c_f_d as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_fs, Operand::core_ft),
            instr_type: InstrType::UNKNOWN,
            is_float: true,
            reads_fs: true,
            reads_ft: true,
            ..OpcodeDescriptor::new(
                Opcode::core_c_f_d,
                OpcodeCategory::CORE_COP1_FPUD,
                0x30,
                "c.f.d",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    {
        table[Opcode::core_c_un_d as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_fs, Operand::core_ft),
            instr_type: InstrType::UNKNOWN,
            is_float: true,
            reads_fs: true,
            reads_ft: true,
            ..OpcodeDescriptor::new(
                Opcode::core_c_un_d,
                OpcodeCategory::CORE_COP1_FPUD,
                0x31,
                "c.un.d",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    {
        table[Opcode::core_c_eq_d as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_fs, Operand::core_ft),
            instr_type: InstrType::UNKNOWN,
            is_float: true,
            reads_fs: true,
            reads_ft: true,
            ..OpcodeDescriptor::new(
                Opcode::core_c_eq_d,
                OpcodeCategory::CORE_COP1_FPUD,
                0x32,
                "c.eq.d",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    {
        table[Opcode::core_c_ueq_d as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_fs, Operand::core_ft),
            instr_type: InstrType::UNKNOWN,
            is_float: true,
            reads_fs: true,
            reads_ft: true,
            ..OpcodeDescriptor::new(
                Opcode::core_c_ueq_d,
                OpcodeCategory::CORE_COP1_FPUD,
                0x33,
                "c.ueq.d",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    {
        table[Opcode::core_c_olt_d as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_fs, Operand::core_ft),
            instr_type: InstrType::UNKNOWN,
            is_float: true,
            reads_fs: true,
            reads_ft: true,
            ..OpcodeDescriptor::new(
                Opcode::core_c_olt_d,
                OpcodeCategory::CORE_COP1_FPUD,
                0x34,
                "c.olt.d",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    {
        table[Opcode::core_c_ult_d as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_fs, Operand::core_ft),
            instr_type: InstrType::UNKNOWN,
            is_float: true,
            reads_fs: true,
            reads_ft: true,
            ..OpcodeDescriptor::new(
                Opcode::core_c_ult_d,
                OpcodeCategory::CORE_COP1_FPUD,
                0x35,
                "c.ult.d",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    {
        table[Opcode::core_c_ole_d as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_fs, Operand::core_ft),
            instr_type: InstrType::UNKNOWN,
            is_float: true,
            reads_fs: true,
            reads_ft: true,
            ..OpcodeDescriptor::new(
                Opcode::core_c_ole_d,
                OpcodeCategory::CORE_COP1_FPUD,
                0x36,
                "c.ole.d",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    {
        table[Opcode::core_c_ule_d as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_fs, Operand::core_ft),
            instr_type: InstrType::UNKNOWN,
            is_float: true,
            reads_fs: true,
            reads_ft: true,
            ..OpcodeDescriptor::new(
                Opcode::core_c_ule_d,
                OpcodeCategory::CORE_COP1_FPUD,
                0x37,
                "c.ule.d",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    {
        table[Opcode::core_c_df_d as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_fs, Operand::core_ft),
            instr_type: InstrType::UNKNOWN,
            is_float: true,
            reads_fs: true,
            reads_ft: true,
            ..OpcodeDescriptor::new(
                Opcode::core_c_df_d,
                OpcodeCategory::CORE_COP1_FPUD,
                0x38,
                "c.df.d",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    {
        table[Opcode::core_c_ngle_d as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_fs, Operand::core_ft),
            instr_type: InstrType::UNKNOWN,
            is_float: true,
            reads_fs: true,
            reads_ft: true,
            ..OpcodeDescriptor::new(
                Opcode::core_c_ngle_d,
                OpcodeCategory::CORE_COP1_FPUD,
                0x39,
                "c.ngle.d",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    {
        table[Opcode::core_c_seq_d as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_fs, Operand::core_ft),
            instr_type: InstrType::UNKNOWN,
            is_float: true,
            reads_fs: true,
            reads_ft: true,
            ..OpcodeDescriptor::new(
                Opcode::core_c_seq_d,
                OpcodeCategory::CORE_COP1_FPUD,
                0x3A,
                "c.seq.d",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    {
        table[Opcode::core_c_ngl_d as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_fs, Operand::core_ft),
            instr_type: InstrType::UNKNOWN,
            is_float: true,
            reads_fs: true,
            reads_ft: true,
            ..OpcodeDescriptor::new(
                Opcode::core_c_ngl_d,
                OpcodeCategory::CORE_COP1_FPUD,
                0x3B,
                "c.ngl.d",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    {
        table[Opcode::core_c_lt_d as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_fs, Operand::core_ft),
            instr_type: InstrType::UNKNOWN,
            is_float: true,
            reads_fs: true,
            reads_ft: true,
            ..OpcodeDescriptor::new(
                Opcode::core_c_lt_d,
                OpcodeCategory::CORE_COP1_FPUD,
                0x3C,
                "c.lt.d",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    {
        table[Opcode::core_c_nge_d as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_fs, Operand::core_ft),
            instr_type: InstrType::UNKNOWN,
            is_float: true,
            reads_fs: true,
            reads_ft: true,
            ..OpcodeDescriptor::new(
                Opcode::core_c_nge_d,
                OpcodeCategory::CORE_COP1_FPUD,
                0x3D,
                "c.nge.d",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    {
        table[Opcode::core_c_le_d as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_fs, Operand::core_ft),
            instr_type: InstrType::UNKNOWN,
            is_float: true,
            reads_fs: true,
            reads_ft: true,
            ..OpcodeDescriptor::new(
                Opcode::core_c_le_d,
                OpcodeCategory::CORE_COP1_FPUD,
                0x3E,
                "c.le.d",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    {
        table[Opcode::core_c_ngt_d as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_fs, Operand::core_ft),
            instr_type: InstrType::UNKNOWN,
            is_float: true,
            reads_fs: true,
            reads_ft: true,
            ..OpcodeDescriptor::new(
                Opcode::core_c_ngt_d,
                OpcodeCategory::CORE_COP1_FPUD,
                0x3F,
                "c.ngt.d",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    {
        table[Opcode::core_cvt_s_w as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_fd, Operand::core_fs),
            instr_type: InstrType::UNKNOWN,
            is_float: true,
            modifies_fd: true,
            reads_fs: true,
            ..OpcodeDescriptor::new(
                Opcode::core_cvt_s_w,
                OpcodeCategory::CORE_COP1_FPUW,
                0x20,
                "cvt.s.w",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    {
        table[Opcode::core_cvt_d_w as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_fd, Operand::core_fs),
            instr_type: InstrType::UNKNOWN,
            is_float: true,
            is_double: true,
            modifies_fd: true,
            reads_fs: true,
            ..OpcodeDescriptor::new(
                Opcode::core_cvt_d_w,
                OpcodeCategory::CORE_COP1_FPUW,
                0x21,
                "cvt.d.w",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    #[cfg(feature = "MIPS_III")]
    {
        table[Opcode::core_cvt_s_l as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_fd, Operand::core_fs),
            instr_type: InstrType::UNKNOWN,
            is_float: true,
            modifies_fd: true,
            reads_fs: true,
            ..OpcodeDescriptor::new(
                Opcode::core_cvt_s_l,
                OpcodeCategory::CORE_COP1_FPUL,
                0x20,
                "cvt.s.l",
                IsaVersion::MIPS_III,
                None,
            )
        };
    }
    #[cfg(feature = "MIPS_III")]
    {
        table[Opcode::core_cvt_d_l as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_fd, Operand::core_fs),
            instr_type: InstrType::UNKNOWN,
            is_float: true,
            is_double: true,
            modifies_fd: true,
            reads_fs: true,
            ..OpcodeDescriptor::new(
                Opcode::core_cvt_d_l,
                OpcodeCategory::CORE_COP1_FPUL,
                0x21,
                "cvt.d.l",
                IsaVersion::MIPS_III,
                None,
            )
        };
    }
    {
        table[Opcode::core_mfc2 as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_rt, Operand::core_cop2d),
            modifies_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::core_mfc2,
                OpcodeCategory::CORE_COP2,
                0x00,
                "mfc2",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    {
        table[Opcode::core_mtc2 as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_rt, Operand::core_cop2d),
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::core_mtc2,
                OpcodeCategory::CORE_COP2,
                0x04,
                "mtc2",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    {
        table[Opcode::core_cfc2 as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_rt, Operand::core_cop2cd),
            modifies_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::core_cfc2,
                OpcodeCategory::CORE_COP2,
                0x02,
                "cfc2",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    {
        table[Opcode::core_ctc2 as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_rt, Operand::core_cop2cd),
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::core_ctc2,
                OpcodeCategory::CORE_COP2,
                0x06,
                "ctc2",
                IsaVersion::MIPS_I,
                None,
            )
        };
    }
    #[cfg(feature = "RSP")]
    {
        table[Opcode::rsp_mfc2 as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_rt, Operand::rsp_vs_index),
            modifies_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::rsp_mfc2,
                OpcodeCategory::RSP_COP2,
                0x00,
                "mfc2",
                IsaVersion::EXTENSION,
                Some(IsaExtension::RSP),
            )
        };
    }
    #[cfg(feature = "RSP")]
    {
        table[Opcode::rsp_mtc2 as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_rt, Operand::rsp_vs_index),
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::rsp_mtc2,
                OpcodeCategory::RSP_COP2,
                0x04,
                "mtc2",
                IsaVersion::EXTENSION,
                Some(IsaExtension::RSP),
            )
        };
    }
    #[cfg(feature = "RSP")]
    {
        table[Opcode::rsp_cfc2 as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_rt, Operand::rsp_cop2cd),
            modifies_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::rsp_cfc2,
                OpcodeCategory::RSP_COP2,
                0x02,
                "cfc2",
                IsaVersion::EXTENSION,
                Some(IsaExtension::RSP),
            )
        };
    }
    #[cfg(feature = "RSP")]
    {
        table[Opcode::rsp_ctc2 as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_rt, Operand::rsp_cop2cd),
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::rsp_ctc2,
                OpcodeCategory::RSP_COP2,
                0x06,
                "ctc2",
                IsaVersion::EXTENSION,
                Some(IsaExtension::RSP),
            )
        };
    }

    #[cfg(feature = "RSP")]
    {
        table[Opcode::rsp_vmulf as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::rsp_vd,
                Operand::rsp_vs,
                Operand::rsp_vt_elementhigh,
            ),
            ..OpcodeDescriptor::new(
                Opcode::rsp_vmulf,
                OpcodeCategory::RSP_COP2_VU,
                0x00,
                "vmulf",
                IsaVersion::EXTENSION,
                Some(IsaExtension::RSP),
            )
        };
    }
    #[cfg(feature = "RSP")]
    {
        table[Opcode::rsp_vmulu as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::rsp_vd,
                Operand::rsp_vs,
                Operand::rsp_vt_elementhigh,
            ),
            ..OpcodeDescriptor::new(
                Opcode::rsp_vmulu,
                OpcodeCategory::RSP_COP2_VU,
                0x01,
                "vmulu",
                IsaVersion::EXTENSION,
                Some(IsaExtension::RSP),
            )
        };
    }
    #[cfg(feature = "RSP")]
    {
        table[Opcode::rsp_vrndp as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::rsp_vd,
                Operand::rsp_vs,
                Operand::rsp_vt_elementhigh,
            ),
            ..OpcodeDescriptor::new(
                Opcode::rsp_vrndp,
                OpcodeCategory::RSP_COP2_VU,
                0x02,
                "vrndp",
                IsaVersion::EXTENSION,
                Some(IsaExtension::RSP),
            )
        };
    }
    #[cfg(feature = "RSP")]
    {
        table[Opcode::rsp_vmulq as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::rsp_vd,
                Operand::rsp_vs,
                Operand::rsp_vt_elementhigh,
            ),
            ..OpcodeDescriptor::new(
                Opcode::rsp_vmulq,
                OpcodeCategory::RSP_COP2_VU,
                0x03,
                "vmulq",
                IsaVersion::EXTENSION,
                Some(IsaExtension::RSP),
            )
        };
    }
    #[cfg(feature = "RSP")]
    {
        table[Opcode::rsp_vmudl as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::rsp_vd,
                Operand::rsp_vs,
                Operand::rsp_vt_elementhigh,
            ),
            ..OpcodeDescriptor::new(
                Opcode::rsp_vmudl,
                OpcodeCategory::RSP_COP2_VU,
                0x04,
                "vmudl",
                IsaVersion::EXTENSION,
                Some(IsaExtension::RSP),
            )
        };
    }
    #[cfg(feature = "RSP")]
    {
        table[Opcode::rsp_vmudm as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::rsp_vd,
                Operand::rsp_vs,
                Operand::rsp_vt_elementhigh,
            ),
            ..OpcodeDescriptor::new(
                Opcode::rsp_vmudm,
                OpcodeCategory::RSP_COP2_VU,
                0x05,
                "vmudm",
                IsaVersion::EXTENSION,
                Some(IsaExtension::RSP),
            )
        };
    }
    #[cfg(feature = "RSP")]
    {
        table[Opcode::rsp_vmudn as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::rsp_vd,
                Operand::rsp_vs,
                Operand::rsp_vt_elementhigh,
            ),
            ..OpcodeDescriptor::new(
                Opcode::rsp_vmudn,
                OpcodeCategory::RSP_COP2_VU,
                0x06,
                "vmudn",
                IsaVersion::EXTENSION,
                Some(IsaExtension::RSP),
            )
        };
    }
    #[cfg(feature = "RSP")]
    {
        table[Opcode::rsp_vmudh as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::rsp_vd,
                Operand::rsp_vs,
                Operand::rsp_vt_elementhigh,
            ),
            ..OpcodeDescriptor::new(
                Opcode::rsp_vmudh,
                OpcodeCategory::RSP_COP2_VU,
                0x07,
                "vmudh",
                IsaVersion::EXTENSION,
                Some(IsaExtension::RSP),
            )
        };
    }
    #[cfg(feature = "RSP")]
    {
        table[Opcode::rsp_vmacf as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::rsp_vd,
                Operand::rsp_vs,
                Operand::rsp_vt_elementhigh,
            ),
            ..OpcodeDescriptor::new(
                Opcode::rsp_vmacf,
                OpcodeCategory::RSP_COP2_VU,
                0x08,
                "vmacf",
                IsaVersion::EXTENSION,
                Some(IsaExtension::RSP),
            )
        };
    }
    #[cfg(feature = "RSP")]
    {
        table[Opcode::rsp_vmacu as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::rsp_vd,
                Operand::rsp_vs,
                Operand::rsp_vt_elementhigh,
            ),
            ..OpcodeDescriptor::new(
                Opcode::rsp_vmacu,
                OpcodeCategory::RSP_COP2_VU,
                0x09,
                "vmacu",
                IsaVersion::EXTENSION,
                Some(IsaExtension::RSP),
            )
        };
    }
    #[cfg(feature = "RSP")]
    {
        table[Opcode::rsp_vrndn as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::rsp_vd,
                Operand::rsp_vs,
                Operand::rsp_vt_elementhigh,
            ),
            ..OpcodeDescriptor::new(
                Opcode::rsp_vrndn,
                OpcodeCategory::RSP_COP2_VU,
                0x0A,
                "vrndn",
                IsaVersion::EXTENSION,
                Some(IsaExtension::RSP),
            )
        };
    }
    #[cfg(feature = "RSP")]
    {
        table[Opcode::rsp_vmacq as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::rsp_vd,
                Operand::rsp_vs,
                Operand::rsp_vt_elementhigh,
            ),
            ..OpcodeDescriptor::new(
                Opcode::rsp_vmacq,
                OpcodeCategory::RSP_COP2_VU,
                0x0B,
                "vmacq",
                IsaVersion::EXTENSION,
                Some(IsaExtension::RSP),
            )
        };
    }
    #[cfg(feature = "RSP")]
    {
        table[Opcode::rsp_vmadl as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::rsp_vd,
                Operand::rsp_vs,
                Operand::rsp_vt_elementhigh,
            ),
            ..OpcodeDescriptor::new(
                Opcode::rsp_vmadl,
                OpcodeCategory::RSP_COP2_VU,
                0x0C,
                "vmadl",
                IsaVersion::EXTENSION,
                Some(IsaExtension::RSP),
            )
        };
    }
    #[cfg(feature = "RSP")]
    {
        table[Opcode::rsp_vmadm as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::rsp_vd,
                Operand::rsp_vs,
                Operand::rsp_vt_elementhigh,
            ),
            ..OpcodeDescriptor::new(
                Opcode::rsp_vmadm,
                OpcodeCategory::RSP_COP2_VU,
                0x0D,
                "vmadm",
                IsaVersion::EXTENSION,
                Some(IsaExtension::RSP),
            )
        };
    }
    #[cfg(feature = "RSP")]
    {
        table[Opcode::rsp_vmadn as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::rsp_vd,
                Operand::rsp_vs,
                Operand::rsp_vt_elementhigh,
            ),
            ..OpcodeDescriptor::new(
                Opcode::rsp_vmadn,
                OpcodeCategory::RSP_COP2_VU,
                0x0E,
                "vmadn",
                IsaVersion::EXTENSION,
                Some(IsaExtension::RSP),
            )
        };
    }
    #[cfg(feature = "RSP")]
    {
        table[Opcode::rsp_vmadh as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::rsp_vd,
                Operand::rsp_vs,
                Operand::rsp_vt_elementhigh,
            ),
            ..OpcodeDescriptor::new(
                Opcode::rsp_vmadh,
                OpcodeCategory::RSP_COP2_VU,
                0x0F,
                "vmadh",
                IsaVersion::EXTENSION,
                Some(IsaExtension::RSP),
            )
        };
    }
    #[cfg(feature = "RSP")]
    {
        table[Opcode::rsp_vadd as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::rsp_vd,
                Operand::rsp_vs,
                Operand::rsp_vt_elementhigh,
            ),
            ..OpcodeDescriptor::new(
                Opcode::rsp_vadd,
                OpcodeCategory::RSP_COP2_VU,
                0x10,
                "vadd",
                IsaVersion::EXTENSION,
                Some(IsaExtension::RSP),
            )
        };
    }
    #[cfg(feature = "RSP")]
    {
        table[Opcode::rsp_vsub as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::rsp_vd,
                Operand::rsp_vs,
                Operand::rsp_vt_elementhigh,
            ),
            ..OpcodeDescriptor::new(
                Opcode::rsp_vsub,
                OpcodeCategory::RSP_COP2_VU,
                0x11,
                "vsub",
                IsaVersion::EXTENSION,
                Some(IsaExtension::RSP),
            )
        };
    }
    #[cfg(feature = "RspViceMsp")]
    {
        table[Opcode::rsp_vsut as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::rsp_vd,
                Operand::rsp_vs,
                Operand::rsp_vt_elementhigh,
            ),
            ..OpcodeDescriptor::new(
                Opcode::rsp_vsut,
                OpcodeCategory::RSP_COP2_VU,
                0x12,
                "vsut",
                IsaVersion::EXTENSION,
                Some(IsaExtension::RSP),
            )
        };
    }
    #[cfg(feature = "RSP")]
    {
        table[Opcode::rsp_vabs as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::rsp_vd,
                Operand::rsp_vs,
                Operand::rsp_vt_elementhigh,
            ),
            ..OpcodeDescriptor::new(
                Opcode::rsp_vabs,
                OpcodeCategory::RSP_COP2_VU,
                0x13,
                "vabs",
                IsaVersion::EXTENSION,
                Some(IsaExtension::RSP),
            )
        };
    }
    #[cfg(feature = "RSP")]
    {
        table[Opcode::rsp_vaddc as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::rsp_vd,
                Operand::rsp_vs,
                Operand::rsp_vt_elementhigh,
            ),
            ..OpcodeDescriptor::new(
                Opcode::rsp_vaddc,
                OpcodeCategory::RSP_COP2_VU,
                0x14,
                "vaddc",
                IsaVersion::EXTENSION,
                Some(IsaExtension::RSP),
            )
        };
    }
    #[cfg(feature = "RSP")]
    {
        table[Opcode::rsp_vsubc as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::rsp_vd,
                Operand::rsp_vs,
                Operand::rsp_vt_elementhigh,
            ),
            ..OpcodeDescriptor::new(
                Opcode::rsp_vsubc,
                OpcodeCategory::RSP_COP2_VU,
                0x15,
                "vsubc",
                IsaVersion::EXTENSION,
                Some(IsaExtension::RSP),
            )
        };
    }
    #[cfg(feature = "RspViceMsp")]
    {
        table[Opcode::rsp_vaddb as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::rsp_vd,
                Operand::rsp_vs,
                Operand::rsp_vt_elementhigh,
            ),
            ..OpcodeDescriptor::new(
                Opcode::rsp_vaddb,
                OpcodeCategory::RSP_COP2_VU,
                0x16,
                "vaddb",
                IsaVersion::EXTENSION,
                Some(IsaExtension::RSP),
            )
        };
    }
    #[cfg(feature = "RspViceMsp")]
    {
        table[Opcode::rsp_vsubb as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::rsp_vd,
                Operand::rsp_vs,
                Operand::rsp_vt_elementhigh,
            ),
            ..OpcodeDescriptor::new(
                Opcode::rsp_vsubb,
                OpcodeCategory::RSP_COP2_VU,
                0x17,
                "vsubb",
                IsaVersion::EXTENSION,
                Some(IsaExtension::RSP),
            )
        };
    }
    #[cfg(feature = "RspViceMsp")]
    {
        table[Opcode::rsp_vaccb as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::rsp_vd,
                Operand::rsp_vs,
                Operand::rsp_vt_elementhigh,
            ),
            ..OpcodeDescriptor::new(
                Opcode::rsp_vaccb,
                OpcodeCategory::RSP_COP2_VU,
                0x18,
                "vaccb",
                IsaVersion::EXTENSION,
                Some(IsaExtension::RSP),
            )
        };
    }
    #[cfg(feature = "RspViceMsp")]
    {
        table[Opcode::rsp_vsucb as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::rsp_vd,
                Operand::rsp_vs,
                Operand::rsp_vt_elementhigh,
            ),
            ..OpcodeDescriptor::new(
                Opcode::rsp_vsucb,
                OpcodeCategory::RSP_COP2_VU,
                0x19,
                "vsucb",
                IsaVersion::EXTENSION,
                Some(IsaExtension::RSP),
            )
        };
    }
    #[cfg(feature = "RspViceMsp")]
    {
        table[Opcode::rsp_vsad as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::rsp_vd,
                Operand::rsp_vs,
                Operand::rsp_vt_elementhigh,
            ),
            ..OpcodeDescriptor::new(
                Opcode::rsp_vsad,
                OpcodeCategory::RSP_COP2_VU,
                0x1A,
                "vsad",
                IsaVersion::EXTENSION,
                Some(IsaExtension::RSP),
            )
        };
    }
    #[cfg(feature = "RspViceMsp")]
    {
        table[Opcode::rsp_vsac as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::rsp_vd,
                Operand::rsp_vs,
                Operand::rsp_vt_elementhigh,
            ),
            ..OpcodeDescriptor::new(
                Opcode::rsp_vsac,
                OpcodeCategory::RSP_COP2_VU,
                0x1B,
                "vsac",
                IsaVersion::EXTENSION,
                Some(IsaExtension::RSP),
            )
        };
    }
    #[cfg(feature = "RspViceMsp")]
    {
        table[Opcode::rsp_vsum as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::rsp_vd,
                Operand::rsp_vs,
                Operand::rsp_vt_elementhigh,
            ),
            ..OpcodeDescriptor::new(
                Opcode::rsp_vsum,
                OpcodeCategory::RSP_COP2_VU,
                0x1C,
                "vsum",
                IsaVersion::EXTENSION,
                Some(IsaExtension::RSP),
            )
        };
    }
    #[cfg(feature = "RSP")]
    {
        table[Opcode::rsp_vsar as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::rsp_vd,
                Operand::rsp_vs,
                Operand::rsp_vt_elementhigh,
            ),
            ..OpcodeDescriptor::new(
                Opcode::rsp_vsar,
                OpcodeCategory::RSP_COP2_VU,
                0x1D,
                "vsar",
                IsaVersion::EXTENSION,
                Some(IsaExtension::RSP),
            )
        };
    }
    #[cfg(feature = "RspViceMsp")]
    {
        table[Opcode::rsp_vacc as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::rsp_vd,
                Operand::rsp_vs,
                Operand::rsp_vt_elementhigh,
            ),
            ..OpcodeDescriptor::new(
                Opcode::rsp_vacc,
                OpcodeCategory::RSP_COP2_VU,
                0x1E,
                "vacc",
                IsaVersion::EXTENSION,
                Some(IsaExtension::RSP),
            )
        };
    }
    #[cfg(feature = "RspViceMsp")]
    {
        table[Opcode::rsp_vsuc as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::rsp_vd,
                Operand::rsp_vs,
                Operand::rsp_vt_elementhigh,
            ),
            ..OpcodeDescriptor::new(
                Opcode::rsp_vsuc,
                OpcodeCategory::RSP_COP2_VU,
                0x1F,
                "vsuc",
                IsaVersion::EXTENSION,
                Some(IsaExtension::RSP),
            )
        };
    }
    #[cfg(feature = "RSP")]
    {
        table[Opcode::rsp_vlt as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::rsp_vd,
                Operand::rsp_vs,
                Operand::rsp_vt_elementhigh,
            ),
            ..OpcodeDescriptor::new(
                Opcode::rsp_vlt,
                OpcodeCategory::RSP_COP2_VU,
                0x20,
                "vlt",
                IsaVersion::EXTENSION,
                Some(IsaExtension::RSP),
            )
        };
    }
    #[cfg(feature = "RSP")]
    {
        table[Opcode::rsp_veq as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::rsp_vd,
                Operand::rsp_vs,
                Operand::rsp_vt_elementhigh,
            ),
            ..OpcodeDescriptor::new(
                Opcode::rsp_veq,
                OpcodeCategory::RSP_COP2_VU,
                0x21,
                "veq",
                IsaVersion::EXTENSION,
                Some(IsaExtension::RSP),
            )
        };
    }
    #[cfg(feature = "RSP")]
    {
        table[Opcode::rsp_vne as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::rsp_vd,
                Operand::rsp_vs,
                Operand::rsp_vt_elementhigh,
            ),
            ..OpcodeDescriptor::new(
                Opcode::rsp_vne,
                OpcodeCategory::RSP_COP2_VU,
                0x22,
                "vne",
                IsaVersion::EXTENSION,
                Some(IsaExtension::RSP),
            )
        };
    }
    #[cfg(feature = "RSP")]
    {
        table[Opcode::rsp_vge as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::rsp_vd,
                Operand::rsp_vs,
                Operand::rsp_vt_elementhigh,
            ),
            ..OpcodeDescriptor::new(
                Opcode::rsp_vge,
                OpcodeCategory::RSP_COP2_VU,
                0x23,
                "vge",
                IsaVersion::EXTENSION,
                Some(IsaExtension::RSP),
            )
        };
    }
    #[cfg(feature = "RSP")]
    {
        table[Opcode::rsp_vcl as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::rsp_vd,
                Operand::rsp_vs,
                Operand::rsp_vt_elementhigh,
            ),
            ..OpcodeDescriptor::new(
                Opcode::rsp_vcl,
                OpcodeCategory::RSP_COP2_VU,
                0x24,
                "vcl",
                IsaVersion::EXTENSION,
                Some(IsaExtension::RSP),
            )
        };
    }
    #[cfg(feature = "RSP")]
    {
        table[Opcode::rsp_vch as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::rsp_vd,
                Operand::rsp_vs,
                Operand::rsp_vt_elementhigh,
            ),
            ..OpcodeDescriptor::new(
                Opcode::rsp_vch,
                OpcodeCategory::RSP_COP2_VU,
                0x25,
                "vch",
                IsaVersion::EXTENSION,
                Some(IsaExtension::RSP),
            )
        };
    }
    #[cfg(feature = "RSP")]
    {
        table[Opcode::rsp_vcr as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::rsp_vd,
                Operand::rsp_vs,
                Operand::rsp_vt_elementhigh,
            ),
            ..OpcodeDescriptor::new(
                Opcode::rsp_vcr,
                OpcodeCategory::RSP_COP2_VU,
                0x26,
                "vcr",
                IsaVersion::EXTENSION,
                Some(IsaExtension::RSP),
            )
        };
    }
    #[cfg(feature = "RSP")]
    {
        table[Opcode::rsp_vmrg as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::rsp_vd,
                Operand::rsp_vs,
                Operand::rsp_vt_elementhigh,
            ),
            ..OpcodeDescriptor::new(
                Opcode::rsp_vmrg,
                OpcodeCategory::RSP_COP2_VU,
                0x27,
                "vmrg",
                IsaVersion::EXTENSION,
                Some(IsaExtension::RSP),
            )
        };
    }
    #[cfg(feature = "RSP")]
    {
        table[Opcode::rsp_vand as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::rsp_vd,
                Operand::rsp_vs,
                Operand::rsp_vt_elementhigh,
            ),
            ..OpcodeDescriptor::new(
                Opcode::rsp_vand,
                OpcodeCategory::RSP_COP2_VU,
                0x28,
                "vand",
                IsaVersion::EXTENSION,
                Some(IsaExtension::RSP),
            )
        };
    }
    #[cfg(feature = "RSP")]
    {
        table[Opcode::rsp_vnand as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::rsp_vd,
                Operand::rsp_vs,
                Operand::rsp_vt_elementhigh,
            ),
            ..OpcodeDescriptor::new(
                Opcode::rsp_vnand,
                OpcodeCategory::RSP_COP2_VU,
                0x29,
                "vnand",
                IsaVersion::EXTENSION,
                Some(IsaExtension::RSP),
            )
        };
    }
    #[cfg(feature = "RSP")]
    {
        table[Opcode::rsp_vor as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::rsp_vd,
                Operand::rsp_vs,
                Operand::rsp_vt_elementhigh,
            ),
            ..OpcodeDescriptor::new(
                Opcode::rsp_vor,
                OpcodeCategory::RSP_COP2_VU,
                0x2A,
                "vor",
                IsaVersion::EXTENSION,
                Some(IsaExtension::RSP),
            )
        };
    }
    #[cfg(feature = "RSP")]
    {
        table[Opcode::rsp_vnor as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::rsp_vd,
                Operand::rsp_vs,
                Operand::rsp_vt_elementhigh,
            ),
            ..OpcodeDescriptor::new(
                Opcode::rsp_vnor,
                OpcodeCategory::RSP_COP2_VU,
                0x2B,
                "vnor",
                IsaVersion::EXTENSION,
                Some(IsaExtension::RSP),
            )
        };
    }
    #[cfg(feature = "RSP")]
    {
        table[Opcode::rsp_vxor as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::rsp_vd,
                Operand::rsp_vs,
                Operand::rsp_vt_elementhigh,
            ),
            ..OpcodeDescriptor::new(
                Opcode::rsp_vxor,
                OpcodeCategory::RSP_COP2_VU,
                0x2C,
                "vxor",
                IsaVersion::EXTENSION,
                Some(IsaExtension::RSP),
            )
        };
    }
    #[cfg(feature = "RSP")]
    {
        table[Opcode::rsp_vnxor as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::rsp_vd,
                Operand::rsp_vs,
                Operand::rsp_vt_elementhigh,
            ),
            ..OpcodeDescriptor::new(
                Opcode::rsp_vnxor,
                OpcodeCategory::RSP_COP2_VU,
                0x2D,
                "vnxor",
                IsaVersion::EXTENSION,
                Some(IsaExtension::RSP),
            )
        };
    }
    #[cfg(feature = "RspViceMsp")]
    {
        table[Opcode::rsp_v056 as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::rsp_vd,
                Operand::rsp_vs,
                Operand::rsp_vt_elementhigh,
            ),
            ..OpcodeDescriptor::new(
                Opcode::rsp_v056,
                OpcodeCategory::RSP_COP2_VU,
                0x2E,
                "v056",
                IsaVersion::EXTENSION,
                Some(IsaExtension::RSP),
            )
        };
    }
    #[cfg(feature = "RspViceMsp")]
    {
        table[Opcode::rsp_v057 as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::rsp_vd,
                Operand::rsp_vs,
                Operand::rsp_vt_elementhigh,
            ),
            ..OpcodeDescriptor::new(
                Opcode::rsp_v057,
                OpcodeCategory::RSP_COP2_VU,
                0x2F,
                "v057",
                IsaVersion::EXTENSION,
                Some(IsaExtension::RSP),
            )
        };
    }
    #[cfg(feature = "RSP")]
    {
        table[Opcode::rsp_vrcp as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::rsp_vd_de, Operand::rsp_vt_elementhigh),
            ..OpcodeDescriptor::new(
                Opcode::rsp_vrcp,
                OpcodeCategory::RSP_COP2_VU,
                0x30,
                "vrcp",
                IsaVersion::EXTENSION,
                Some(IsaExtension::RSP),
            )
        };
    }
    #[cfg(feature = "RSP")]
    {
        table[Opcode::rsp_vrcpl as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::rsp_vd_de, Operand::rsp_vt_elementhigh),
            ..OpcodeDescriptor::new(
                Opcode::rsp_vrcpl,
                OpcodeCategory::RSP_COP2_VU,
                0x31,
                "vrcpl",
                IsaVersion::EXTENSION,
                Some(IsaExtension::RSP),
            )
        };
    }
    #[cfg(feature = "RSP")]
    {
        table[Opcode::rsp_vrcph as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::rsp_vd_de, Operand::rsp_vt_elementhigh),
            ..OpcodeDescriptor::new(
                Opcode::rsp_vrcph,
                OpcodeCategory::RSP_COP2_VU,
                0x32,
                "vrcph",
                IsaVersion::EXTENSION,
                Some(IsaExtension::RSP),
            )
        };
    }
    #[cfg(feature = "RSP")]
    {
        table[Opcode::rsp_vmov as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::rsp_vd_de, Operand::rsp_vt_elementhigh),
            ..OpcodeDescriptor::new(
                Opcode::rsp_vmov,
                OpcodeCategory::RSP_COP2_VU,
                0x33,
                "vmov",
                IsaVersion::EXTENSION,
                Some(IsaExtension::RSP),
            )
        };
    }
    #[cfg(feature = "RSP")]
    {
        table[Opcode::rsp_vrsq as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::rsp_vd_de, Operand::rsp_vt_elementhigh),
            ..OpcodeDescriptor::new(
                Opcode::rsp_vrsq,
                OpcodeCategory::RSP_COP2_VU,
                0x34,
                "vrsq",
                IsaVersion::EXTENSION,
                Some(IsaExtension::RSP),
            )
        };
    }
    #[cfg(feature = "RSP")]
    {
        table[Opcode::rsp_vrsql as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::rsp_vd_de, Operand::rsp_vt_elementhigh),
            ..OpcodeDescriptor::new(
                Opcode::rsp_vrsql,
                OpcodeCategory::RSP_COP2_VU,
                0x35,
                "vrsql",
                IsaVersion::EXTENSION,
                Some(IsaExtension::RSP),
            )
        };
    }
    #[cfg(feature = "RSP")]
    {
        table[Opcode::rsp_vrsqh as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::rsp_vd_de, Operand::rsp_vt_elementhigh),
            ..OpcodeDescriptor::new(
                Opcode::rsp_vrsqh,
                OpcodeCategory::RSP_COP2_VU,
                0x36,
                "vrsqh",
                IsaVersion::EXTENSION,
                Some(IsaExtension::RSP),
            )
        };
    }
    #[cfg(feature = "RSP")]
    {
        table[Opcode::rsp_vnop as usize] = OpcodeDescriptor {
            operands: Operand::arr0(),
            ..OpcodeDescriptor::new(
                Opcode::rsp_vnop,
                OpcodeCategory::RSP_COP2_VU,
                0x37,
                "vnop",
                IsaVersion::EXTENSION,
                Some(IsaExtension::RSP),
            )
        };
    }
    #[cfg(feature = "RspViceMsp")]
    {
        table[Opcode::rsp_vextt as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::rsp_vd,
                Operand::rsp_vs,
                Operand::rsp_vt_elementhigh,
            ),
            ..OpcodeDescriptor::new(
                Opcode::rsp_vextt,
                OpcodeCategory::RSP_COP2_VU,
                0x38,
                "vextt",
                IsaVersion::EXTENSION,
                Some(IsaExtension::RSP),
            )
        };
    }
    #[cfg(feature = "RspViceMsp")]
    {
        table[Opcode::rsp_vextq as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::rsp_vd,
                Operand::rsp_vs,
                Operand::rsp_vt_elementhigh,
            ),
            ..OpcodeDescriptor::new(
                Opcode::rsp_vextq,
                OpcodeCategory::RSP_COP2_VU,
                0x39,
                "vextq",
                IsaVersion::EXTENSION,
                Some(IsaExtension::RSP),
            )
        };
    }
    #[cfg(feature = "RspViceMsp")]
    {
        table[Opcode::rsp_vextn as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::rsp_vd,
                Operand::rsp_vs,
                Operand::rsp_vt_elementhigh,
            ),
            ..OpcodeDescriptor::new(
                Opcode::rsp_vextn,
                OpcodeCategory::RSP_COP2_VU,
                0x3A,
                "vextn",
                IsaVersion::EXTENSION,
                Some(IsaExtension::RSP),
            )
        };
    }
    #[cfg(feature = "RspViceMsp")]
    {
        table[Opcode::rsp_v073 as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::rsp_vd,
                Operand::rsp_vs,
                Operand::rsp_vt_elementhigh,
            ),
            ..OpcodeDescriptor::new(
                Opcode::rsp_v073,
                OpcodeCategory::RSP_COP2_VU,
                0x3B,
                "v073",
                IsaVersion::EXTENSION,
                Some(IsaExtension::RSP),
            )
        };
    }
    #[cfg(feature = "RspViceMsp")]
    {
        table[Opcode::rsp_vinst as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::rsp_vd,
                Operand::rsp_vs,
                Operand::rsp_vt_elementhigh,
            ),
            ..OpcodeDescriptor::new(
                Opcode::rsp_vinst,
                OpcodeCategory::RSP_COP2_VU,
                0x3C,
                "vinst",
                IsaVersion::EXTENSION,
                Some(IsaExtension::RSP),
            )
        };
    }
    #[cfg(feature = "RspViceMsp")]
    {
        table[Opcode::rsp_vinsq as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::rsp_vd,
                Operand::rsp_vs,
                Operand::rsp_vt_elementhigh,
            ),
            ..OpcodeDescriptor::new(
                Opcode::rsp_vinsq,
                OpcodeCategory::RSP_COP2_VU,
                0x3D,
                "vinsq",
                IsaVersion::EXTENSION,
                Some(IsaExtension::RSP),
            )
        };
    }
    #[cfg(feature = "RspViceMsp")]
    {
        table[Opcode::rsp_vinsn as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::rsp_vd,
                Operand::rsp_vs,
                Operand::rsp_vt_elementhigh,
            ),
            ..OpcodeDescriptor::new(
                Opcode::rsp_vinsn,
                OpcodeCategory::RSP_COP2_VU,
                0x3E,
                "vinsn",
                IsaVersion::EXTENSION,
                Some(IsaExtension::RSP),
            )
        };
    }
    #[cfg(feature = "RspViceMsp")]
    {
        table[Opcode::rsp_vnull as usize] = OpcodeDescriptor {
            operands: Operand::arr0(),
            ..OpcodeDescriptor::new(
                Opcode::rsp_vnull,
                OpcodeCategory::RSP_COP2_VU,
                0x3F,
                "vnull",
                IsaVersion::EXTENSION,
                Some(IsaExtension::RSP),
            )
        };
    }
    #[cfg(feature = "RSP")]
    {
        table[Opcode::rsp_lbv as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::rsp_vt_elementlow, Operand::rsp_offset7_rs),
            reads_rs: true,
            ..OpcodeDescriptor::new(
                Opcode::rsp_lbv,
                OpcodeCategory::RSP_NORMAL_LWC2,
                0x00,
                "lbv",
                IsaVersion::EXTENSION,
                Some(IsaExtension::RSP),
            )
        };
    }
    #[cfg(feature = "RSP")]
    {
        table[Opcode::rsp_lsv as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::rsp_vt_elementlow, Operand::rsp_offset8_rs),
            reads_rs: true,
            ..OpcodeDescriptor::new(
                Opcode::rsp_lsv,
                OpcodeCategory::RSP_NORMAL_LWC2,
                0x01,
                "lsv",
                IsaVersion::EXTENSION,
                Some(IsaExtension::RSP),
            )
        };
    }
    #[cfg(feature = "RSP")]
    {
        table[Opcode::rsp_llv as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::rsp_vt_elementlow, Operand::rsp_offset9_rs),
            reads_rs: true,
            ..OpcodeDescriptor::new(
                Opcode::rsp_llv,
                OpcodeCategory::RSP_NORMAL_LWC2,
                0x02,
                "llv",
                IsaVersion::EXTENSION,
                Some(IsaExtension::RSP),
            )
        };
    }
    #[cfg(feature = "RSP")]
    {
        table[Opcode::rsp_ldv as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::rsp_vt_elementlow, Operand::rsp_offset10_rs),
            reads_rs: true,
            ..OpcodeDescriptor::new(
                Opcode::rsp_ldv,
                OpcodeCategory::RSP_NORMAL_LWC2,
                0x03,
                "ldv",
                IsaVersion::EXTENSION,
                Some(IsaExtension::RSP),
            )
        };
    }
    #[cfg(feature = "RSP")]
    {
        table[Opcode::rsp_lqv as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::rsp_vt_elementlow, Operand::rsp_offset11_rs),
            reads_rs: true,
            ..OpcodeDescriptor::new(
                Opcode::rsp_lqv,
                OpcodeCategory::RSP_NORMAL_LWC2,
                0x04,
                "lqv",
                IsaVersion::EXTENSION,
                Some(IsaExtension::RSP),
            )
        };
    }
    #[cfg(feature = "RSP")]
    {
        table[Opcode::rsp_lrv as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::rsp_vt_elementlow, Operand::rsp_offset11_rs),
            reads_rs: true,
            ..OpcodeDescriptor::new(
                Opcode::rsp_lrv,
                OpcodeCategory::RSP_NORMAL_LWC2,
                0x05,
                "lrv",
                IsaVersion::EXTENSION,
                Some(IsaExtension::RSP),
            )
        };
    }
    #[cfg(feature = "RSP")]
    {
        table[Opcode::rsp_lpv as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::rsp_vt_elementlow, Operand::rsp_offset10_rs),
            reads_rs: true,
            ..OpcodeDescriptor::new(
                Opcode::rsp_lpv,
                OpcodeCategory::RSP_NORMAL_LWC2,
                0x06,
                "lpv",
                IsaVersion::EXTENSION,
                Some(IsaExtension::RSP),
            )
        };
    }
    #[cfg(feature = "RSP")]
    {
        table[Opcode::rsp_luv as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::rsp_vt_elementlow, Operand::rsp_offset10_rs),
            reads_rs: true,
            ..OpcodeDescriptor::new(
                Opcode::rsp_luv,
                OpcodeCategory::RSP_NORMAL_LWC2,
                0x07,
                "luv",
                IsaVersion::EXTENSION,
                Some(IsaExtension::RSP),
            )
        };
    }
    #[cfg(feature = "RSP")]
    {
        table[Opcode::rsp_lhv as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::rsp_vt_elementlow, Operand::rsp_offset11_rs),
            reads_rs: true,
            ..OpcodeDescriptor::new(
                Opcode::rsp_lhv,
                OpcodeCategory::RSP_NORMAL_LWC2,
                0x08,
                "lhv",
                IsaVersion::EXTENSION,
                Some(IsaExtension::RSP),
            )
        };
    }
    #[cfg(feature = "RSP")]
    {
        table[Opcode::rsp_lfv as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::rsp_vt_elementlow, Operand::rsp_offset11_rs),
            reads_rs: true,
            ..OpcodeDescriptor::new(
                Opcode::rsp_lfv,
                OpcodeCategory::RSP_NORMAL_LWC2,
                0x09,
                "lfv",
                IsaVersion::EXTENSION,
                Some(IsaExtension::RSP),
            )
        };
    }
    #[cfg(feature = "RspViceMsp")]
    {
        table[Opcode::rsp_lwv as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::rsp_vt_elementlow, Operand::rsp_offset11_rs),
            reads_rs: true,
            ..OpcodeDescriptor::new(
                Opcode::rsp_lwv,
                OpcodeCategory::RSP_NORMAL_LWC2,
                0x0A,
                "lwv",
                IsaVersion::EXTENSION,
                Some(IsaExtension::RSP),
            )
        };
    }
    #[cfg(feature = "RSP")]
    {
        table[Opcode::rsp_ltv as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::rsp_vt_elementlow, Operand::rsp_offset11_rs),
            reads_rs: true,
            ..OpcodeDescriptor::new(
                Opcode::rsp_ltv,
                OpcodeCategory::RSP_NORMAL_LWC2,
                0x0B,
                "ltv",
                IsaVersion::EXTENSION,
                Some(IsaExtension::RSP),
            )
        };
    }
    #[cfg(feature = "RSP")]
    {
        table[Opcode::rsp_sbv as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::rsp_vt_elementlow, Operand::rsp_offset7_rs),
            reads_rs: true,
            ..OpcodeDescriptor::new(
                Opcode::rsp_sbv,
                OpcodeCategory::RSP_NORMAL_SWC2,
                0x00,
                "sbv",
                IsaVersion::EXTENSION,
                Some(IsaExtension::RSP),
            )
        };
    }
    #[cfg(feature = "RSP")]
    {
        table[Opcode::rsp_ssv as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::rsp_vt_elementlow, Operand::rsp_offset8_rs),
            reads_rs: true,
            ..OpcodeDescriptor::new(
                Opcode::rsp_ssv,
                OpcodeCategory::RSP_NORMAL_SWC2,
                0x01,
                "ssv",
                IsaVersion::EXTENSION,
                Some(IsaExtension::RSP),
            )
        };
    }
    #[cfg(feature = "RSP")]
    {
        table[Opcode::rsp_slv as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::rsp_vt_elementlow, Operand::rsp_offset9_rs),
            reads_rs: true,
            ..OpcodeDescriptor::new(
                Opcode::rsp_slv,
                OpcodeCategory::RSP_NORMAL_SWC2,
                0x02,
                "slv",
                IsaVersion::EXTENSION,
                Some(IsaExtension::RSP),
            )
        };
    }
    #[cfg(feature = "RSP")]
    {
        table[Opcode::rsp_sdv as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::rsp_vt_elementlow, Operand::rsp_offset10_rs),
            reads_rs: true,
            ..OpcodeDescriptor::new(
                Opcode::rsp_sdv,
                OpcodeCategory::RSP_NORMAL_SWC2,
                0x03,
                "sdv",
                IsaVersion::EXTENSION,
                Some(IsaExtension::RSP),
            )
        };
    }
    #[cfg(feature = "RSP")]
    {
        table[Opcode::rsp_sqv as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::rsp_vt_elementlow, Operand::rsp_offset11_rs),
            reads_rs: true,
            ..OpcodeDescriptor::new(
                Opcode::rsp_sqv,
                OpcodeCategory::RSP_NORMAL_SWC2,
                0x04,
                "sqv",
                IsaVersion::EXTENSION,
                Some(IsaExtension::RSP),
            )
        };
    }
    #[cfg(feature = "RSP")]
    {
        table[Opcode::rsp_srv as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::rsp_vt_elementlow, Operand::rsp_offset11_rs),
            reads_rs: true,
            ..OpcodeDescriptor::new(
                Opcode::rsp_srv,
                OpcodeCategory::RSP_NORMAL_SWC2,
                0x05,
                "srv",
                IsaVersion::EXTENSION,
                Some(IsaExtension::RSP),
            )
        };
    }
    #[cfg(feature = "RSP")]
    {
        table[Opcode::rsp_spv as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::rsp_vt_elementlow, Operand::rsp_offset10_rs),
            reads_rs: true,
            ..OpcodeDescriptor::new(
                Opcode::rsp_spv,
                OpcodeCategory::RSP_NORMAL_SWC2,
                0x06,
                "spv",
                IsaVersion::EXTENSION,
                Some(IsaExtension::RSP),
            )
        };
    }
    #[cfg(feature = "RSP")]
    {
        table[Opcode::rsp_suv as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::rsp_vt_elementlow, Operand::rsp_offset10_rs),
            reads_rs: true,
            ..OpcodeDescriptor::new(
                Opcode::rsp_suv,
                OpcodeCategory::RSP_NORMAL_SWC2,
                0x07,
                "suv",
                IsaVersion::EXTENSION,
                Some(IsaExtension::RSP),
            )
        };
    }
    #[cfg(feature = "RSP")]
    {
        table[Opcode::rsp_shv as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::rsp_vt_elementlow, Operand::rsp_offset11_rs),
            reads_rs: true,
            ..OpcodeDescriptor::new(
                Opcode::rsp_shv,
                OpcodeCategory::RSP_NORMAL_SWC2,
                0x08,
                "shv",
                IsaVersion::EXTENSION,
                Some(IsaExtension::RSP),
            )
        };
    }
    #[cfg(feature = "RSP")]
    {
        table[Opcode::rsp_sfv as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::rsp_vt_elementlow, Operand::rsp_offset11_rs),
            reads_rs: true,
            ..OpcodeDescriptor::new(
                Opcode::rsp_sfv,
                OpcodeCategory::RSP_NORMAL_SWC2,
                0x09,
                "sfv",
                IsaVersion::EXTENSION,
                Some(IsaExtension::RSP),
            )
        };
    }
    #[cfg(feature = "RSP")]
    {
        table[Opcode::rsp_swv as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::rsp_vt_elementlow, Operand::rsp_offset11_rs),
            reads_rs: true,
            ..OpcodeDescriptor::new(
                Opcode::rsp_swv,
                OpcodeCategory::RSP_NORMAL_SWC2,
                0x0A,
                "swv",
                IsaVersion::EXTENSION,
                Some(IsaExtension::RSP),
            )
        };
    }
    #[cfg(feature = "RSP")]
    {
        table[Opcode::rsp_stv as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::rsp_vt_elementlow, Operand::rsp_offset11_rs),
            reads_rs: true,
            ..OpcodeDescriptor::new(
                Opcode::rsp_stv,
                OpcodeCategory::RSP_NORMAL_SWC2,
                0x0B,
                "stv",
                IsaVersion::EXTENSION,
                Some(IsaExtension::RSP),
            )
        };
    }

    #[cfg(feature = "RSP")]
    {
        table[Opcode::rsp_mfc0 as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_rt, Operand::rsp_cop0d),
            instr_type: InstrType::UNKNOWN,
            modifies_rt: true,
            not_emitted_by_compilers: true,
            ..OpcodeDescriptor::new(
                Opcode::rsp_mfc0,
                OpcodeCategory::RSP_COP0,
                0x00,
                "mfc0",
                IsaVersion::EXTENSION,
                Some(IsaExtension::RSP),
            )
        };
    }
    #[cfg(feature = "RSP")]
    {
        table[Opcode::rsp_mtc0 as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_rt, Operand::rsp_cop0d),
            instr_type: InstrType::UNKNOWN,
            reads_rt: true,
            not_emitted_by_compilers: true,
            ..OpcodeDescriptor::new(
                Opcode::rsp_mtc0,
                OpcodeCategory::RSP_COP0,
                0x04,
                "mtc0",
                IsaVersion::EXTENSION,
                Some(IsaExtension::RSP),
            )
        };
    }

    #[cfg(feature = "R3000GTE")]
    {
        table[Opcode::r3000gte_rtps as usize] = OpcodeDescriptor {
            operands: Operand::arr0(),
            ..OpcodeDescriptor::new(
                Opcode::r3000gte_rtps,
                OpcodeCategory::R3000GTE_COP2_GTE,
                0x01,
                "rtps",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R3000GTE),
            )
        };
    }
    #[cfg(feature = "R3000GTE")]
    {
        table[Opcode::r3000gte_rtpt as usize] = OpcodeDescriptor {
            operands: Operand::arr0(),
            ..OpcodeDescriptor::new(
                Opcode::r3000gte_rtpt,
                OpcodeCategory::R3000GTE_COP2_GTE,
                0x30,
                "rtpt",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R3000GTE),
            )
        };
    }
    #[cfg(feature = "R3000GTE")]
    {
        table[Opcode::r3000gte_dpcl as usize] = OpcodeDescriptor {
            operands: Operand::arr0(),
            ..OpcodeDescriptor::new(
                Opcode::r3000gte_dpcl,
                OpcodeCategory::R3000GTE_COP2_GTE,
                0x29,
                "dpcl",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R3000GTE),
            )
        };
    }
    #[cfg(feature = "R3000GTE")]
    {
        table[Opcode::r3000gte_dpcs as usize] = OpcodeDescriptor {
            operands: Operand::arr0(),
            ..OpcodeDescriptor::new(
                Opcode::r3000gte_dpcs,
                OpcodeCategory::R3000GTE_COP2_GTE,
                0x10,
                "dpcs",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R3000GTE),
            )
        };
    }
    #[cfg(feature = "R3000GTE")]
    {
        table[Opcode::r3000gte_dpct as usize] = OpcodeDescriptor {
            operands: Operand::arr0(),
            ..OpcodeDescriptor::new(
                Opcode::r3000gte_dpct,
                OpcodeCategory::R3000GTE_COP2_GTE,
                0x2A,
                "dpct",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R3000GTE),
            )
        };
    }
    #[cfg(feature = "R3000GTE")]
    {
        table[Opcode::r3000gte_intpl as usize] = OpcodeDescriptor {
            operands: Operand::arr0(),
            ..OpcodeDescriptor::new(
                Opcode::r3000gte_intpl,
                OpcodeCategory::R3000GTE_COP2_GTE,
                0x11,
                "intpl",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R3000GTE),
            )
        };
    }
    #[cfg(feature = "R3000GTE")]
    {
        table[Opcode::r3000gte_ncs as usize] = OpcodeDescriptor {
            operands: Operand::arr0(),
            ..OpcodeDescriptor::new(
                Opcode::r3000gte_ncs,
                OpcodeCategory::R3000GTE_COP2_GTE,
                0x1E,
                "ncs",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R3000GTE),
            )
        };
    }
    #[cfg(feature = "R3000GTE")]
    {
        table[Opcode::r3000gte_nct as usize] = OpcodeDescriptor {
            operands: Operand::arr0(),
            ..OpcodeDescriptor::new(
                Opcode::r3000gte_nct,
                OpcodeCategory::R3000GTE_COP2_GTE,
                0x20,
                "nct",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R3000GTE),
            )
        };
    }
    #[cfg(feature = "R3000GTE")]
    {
        table[Opcode::r3000gte_ncds as usize] = OpcodeDescriptor {
            operands: Operand::arr0(),
            ..OpcodeDescriptor::new(
                Opcode::r3000gte_ncds,
                OpcodeCategory::R3000GTE_COP2_GTE,
                0x13,
                "ncds",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R3000GTE),
            )
        };
    }
    #[cfg(feature = "R3000GTE")]
    {
        table[Opcode::r3000gte_ncdt as usize] = OpcodeDescriptor {
            operands: Operand::arr0(),
            ..OpcodeDescriptor::new(
                Opcode::r3000gte_ncdt,
                OpcodeCategory::R3000GTE_COP2_GTE,
                0x16,
                "ncdt",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R3000GTE),
            )
        };
    }
    #[cfg(feature = "R3000GTE")]
    {
        table[Opcode::r3000gte_nccs as usize] = OpcodeDescriptor {
            operands: Operand::arr0(),
            ..OpcodeDescriptor::new(
                Opcode::r3000gte_nccs,
                OpcodeCategory::R3000GTE_COP2_GTE,
                0x1B,
                "nccs",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R3000GTE),
            )
        };
    }
    #[cfg(feature = "R3000GTE")]
    {
        table[Opcode::r3000gte_ncct as usize] = OpcodeDescriptor {
            operands: Operand::arr0(),
            ..OpcodeDescriptor::new(
                Opcode::r3000gte_ncct,
                OpcodeCategory::R3000GTE_COP2_GTE,
                0x3F,
                "ncct",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R3000GTE),
            )
        };
    }
    #[cfg(feature = "R3000GTE")]
    {
        table[Opcode::r3000gte_cdp as usize] = OpcodeDescriptor {
            operands: Operand::arr0(),
            ..OpcodeDescriptor::new(
                Opcode::r3000gte_cdp,
                OpcodeCategory::R3000GTE_COP2_GTE,
                0x14,
                "cdp",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R3000GTE),
            )
        };
    }
    #[cfg(feature = "R3000GTE")]
    {
        table[Opcode::r3000gte_cc as usize] = OpcodeDescriptor {
            operands: Operand::arr0(),
            ..OpcodeDescriptor::new(
                Opcode::r3000gte_cc,
                OpcodeCategory::R3000GTE_COP2_GTE,
                0x1C,
                "cc",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R3000GTE),
            )
        };
    }
    #[cfg(feature = "R3000GTE")]
    {
        table[Opcode::r3000gte_nclip as usize] = OpcodeDescriptor {
            operands: Operand::arr0(),
            ..OpcodeDescriptor::new(
                Opcode::r3000gte_nclip,
                OpcodeCategory::R3000GTE_COP2_GTE,
                0x06,
                "nclip",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R3000GTE),
            )
        };
    }
    #[cfg(feature = "R3000GTE")]
    {
        table[Opcode::r3000gte_avsz3 as usize] = OpcodeDescriptor {
            operands: Operand::arr0(),
            ..OpcodeDescriptor::new(
                Opcode::r3000gte_avsz3,
                OpcodeCategory::R3000GTE_COP2_GTE,
                0x2D,
                "avsz3",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R3000GTE),
            )
        };
    }
    #[cfg(feature = "R3000GTE")]
    {
        table[Opcode::r3000gte_avsz4 as usize] = OpcodeDescriptor {
            operands: Operand::arr0(),
            ..OpcodeDescriptor::new(
                Opcode::r3000gte_avsz4,
                OpcodeCategory::R3000GTE_COP2_GTE,
                0x2E,
                "avsz4",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R3000GTE),
            )
        };
    }
    #[cfg(feature = "R3000GTE")]
    {
        table[Opcode::r3000gte_mvmva as usize] = OpcodeDescriptor {
            operands: Operand::arr5(
                Operand::r3000gte_sf,
                Operand::r3000gte_mx,
                Operand::r3000gte_v,
                Operand::r3000gte_cv,
                Operand::r3000gte_lm,
            ),
            ..OpcodeDescriptor::new(
                Opcode::r3000gte_mvmva,
                OpcodeCategory::R3000GTE_COP2_GTE,
                0x12,
                "mvmva",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R3000GTE),
            )
        };
    }
    #[cfg(feature = "R3000GTE")]
    {
        table[Opcode::r3000gte_sqr as usize] = OpcodeDescriptor {
            operands: Operand::arr1(Operand::r3000gte_sf),
            ..OpcodeDescriptor::new(
                Opcode::r3000gte_sqr,
                OpcodeCategory::R3000GTE_COP2_GTE,
                0x28,
                "sqr",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R3000GTE),
            )
        };
    }
    #[cfg(feature = "R3000GTE")]
    {
        table[Opcode::r3000gte_op as usize] = OpcodeDescriptor {
            operands: Operand::arr1(Operand::r3000gte_sf),
            ..OpcodeDescriptor::new(
                Opcode::r3000gte_op,
                OpcodeCategory::R3000GTE_COP2_GTE,
                0x0C,
                "op",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R3000GTE),
            )
        };
    }
    #[cfg(feature = "R3000GTE")]
    {
        table[Opcode::r3000gte_gpf as usize] = OpcodeDescriptor {
            operands: Operand::arr1(Operand::r3000gte_sf),
            ..OpcodeDescriptor::new(
                Opcode::r3000gte_gpf,
                OpcodeCategory::R3000GTE_COP2_GTE,
                0x3D,
                "gpf",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R3000GTE),
            )
        };
    }
    #[cfg(feature = "R3000GTE")]
    {
        table[Opcode::r3000gte_gpl as usize] = OpcodeDescriptor {
            operands: Operand::arr1(Operand::r3000gte_sf),
            ..OpcodeDescriptor::new(
                Opcode::r3000gte_gpl,
                OpcodeCategory::R3000GTE_COP2_GTE,
                0x3E,
                "gpl",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R3000GTE),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_lv_s as usize] = OpcodeDescriptor {
            operands: Operand::arr2(
                Operand::r4000allegrex_s_vt_imm,
                Operand::r4000allegrex_offset14_rs,
            ),
            instr_type: InstrType::I,
            reads_rs: true,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_lv_s,
                OpcodeCategory::R4000ALLEGREX_NORMAL,
                0x32,
                "lv.s",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_sv_s as usize] = OpcodeDescriptor {
            operands: Operand::arr2(
                Operand::r4000allegrex_s_vt_imm,
                Operand::r4000allegrex_offset14_rs,
            ),
            instr_type: InstrType::I,
            reads_rs: true,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_sv_s,
                OpcodeCategory::R4000ALLEGREX_NORMAL,
                0x3A,
                "sv.s",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_lv_q as usize] = OpcodeDescriptor {
            operands: Operand::arr2(
                Operand::r4000allegrex_q_vt_imm,
                Operand::r4000allegrex_offset14_rs,
            ),
            instr_type: InstrType::I,
            reads_rs: true,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_lv_q,
                OpcodeCategory::R4000ALLEGREX_NORMAL,
                0x36,
                "lv.q",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_sv_q as usize] = OpcodeDescriptor {
            operands: Operand::arr2(
                Operand::r4000allegrex_q_vt_imm,
                Operand::r4000allegrex_offset14_rs_maybe_wb,
            ),
            instr_type: InstrType::I,
            reads_rs: true,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_sv_q,
                OpcodeCategory::R4000ALLEGREX_NORMAL,
                0x3E,
                "sv.q",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }

    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_clz as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_rd, Operand::core_rs),
            instr_type: InstrType::R,
            modifies_rd: true,
            reads_rs: true,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_clz,
                OpcodeCategory::R4000ALLEGREX_SPECIAL,
                0x16,
                "clz",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_clo as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_rd, Operand::core_rs),
            instr_type: InstrType::R,
            modifies_rd: true,
            reads_rs: true,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_clo,
                OpcodeCategory::R4000ALLEGREX_SPECIAL,
                0x17,
                "clo",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_madd as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_rs, Operand::core_rt),
            instr_type: InstrType::R,
            reads_rs: true,
            reads_rt: true,
            modifies_hi: true,
            modifies_lo: true,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_madd,
                OpcodeCategory::R4000ALLEGREX_SPECIAL,
                0x1C,
                "madd",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_maddu as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_rs, Operand::core_rt),
            instr_type: InstrType::R,
            reads_rs: true,
            reads_rt: true,
            modifies_hi: true,
            modifies_lo: true,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_maddu,
                OpcodeCategory::R4000ALLEGREX_SPECIAL,
                0x1D,
                "maddu",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_msub as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_rs, Operand::core_rt),
            instr_type: InstrType::R,
            reads_rs: true,
            reads_rt: true,
            modifies_hi: true,
            modifies_lo: true,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_msub,
                OpcodeCategory::R4000ALLEGREX_SPECIAL,
                0x2E,
                "msub",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_msubu as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_rs, Operand::core_rt),
            instr_type: InstrType::R,
            reads_rs: true,
            reads_rt: true,
            modifies_hi: true,
            modifies_lo: true,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_msubu,
                OpcodeCategory::R4000ALLEGREX_SPECIAL,
                0x2F,
                "msubu",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_movz as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rd, Operand::core_rs, Operand::core_rt),
            instr_type: InstrType::R,
            modifies_rd: true,
            reads_rs: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_movz,
                OpcodeCategory::R4000ALLEGREX_SPECIAL,
                0x0A,
                "movz",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_movn as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rd, Operand::core_rs, Operand::core_rt),
            instr_type: InstrType::R,
            modifies_rd: true,
            reads_rs: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_movn,
                OpcodeCategory::R4000ALLEGREX_SPECIAL,
                0x0B,
                "movn",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_max as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rd, Operand::core_rs, Operand::core_rt),
            instr_type: InstrType::R,
            modifies_rd: true,
            reads_rs: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_max,
                OpcodeCategory::R4000ALLEGREX_SPECIAL,
                0x2C,
                "max",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_min as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rd, Operand::core_rs, Operand::core_rt),
            instr_type: InstrType::R,
            modifies_rd: true,
            reads_rs: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_min,
                OpcodeCategory::R4000ALLEGREX_SPECIAL,
                0x2D,
                "min",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }

    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_srl as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rd, Operand::core_rt, Operand::core_sa),
            instr_type: InstrType::R,
            modifies_rd: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_srl,
                OpcodeCategory::R4000ALLEGREX_SPECIAL_RS,
                0x00,
                "srl",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_rotr as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rd, Operand::core_rt, Operand::core_sa),
            instr_type: InstrType::R,
            modifies_rd: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_rotr,
                OpcodeCategory::R4000ALLEGREX_SPECIAL_RS,
                0x01,
                "rotr",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_srlv as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rd, Operand::core_rt, Operand::core_rs),
            instr_type: InstrType::R,
            modifies_rd: true,
            reads_rs: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_srlv,
                OpcodeCategory::R4000ALLEGREX_SPECIAL_SA,
                0x00,
                "srlv",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_rotrv as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rd, Operand::core_rt, Operand::core_rs),
            instr_type: InstrType::R,
            modifies_rd: true,
            reads_rs: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_rotrv,
                OpcodeCategory::R4000ALLEGREX_SPECIAL_SA,
                0x01,
                "rotrv",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }

    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_sleep as usize] = OpcodeDescriptor {
            operands: Operand::arr0(),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_sleep,
                OpcodeCategory::R4000ALLEGREX_SPECIAL2,
                0x00,
                "sleep",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_mfie as usize] = OpcodeDescriptor {
            operands: Operand::arr1(Operand::core_rt),
            instr_type: InstrType::R,
            modifies_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_mfie,
                OpcodeCategory::R4000ALLEGREX_SPECIAL2,
                0x24,
                "mfie",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_mtie as usize] = OpcodeDescriptor {
            operands: Operand::arr1(Operand::core_rt),
            instr_type: InstrType::R,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_mtie,
                OpcodeCategory::R4000ALLEGREX_SPECIAL2,
                0x26,
                "mtie",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_ext as usize] = OpcodeDescriptor {
            operands: Operand::arr4(
                Operand::core_rt,
                Operand::core_rs,
                Operand::r4000allegrex_pos,
                Operand::r4000allegrex_size,
            ),
            instr_type: InstrType::R,
            modifies_rt: true,
            reads_rs: true,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_ext,
                OpcodeCategory::R4000ALLEGREX_SPECIAL3,
                0x00,
                "ext",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_ins as usize] = OpcodeDescriptor {
            operands: Operand::arr4(
                Operand::core_rt,
                Operand::core_rs,
                Operand::r4000allegrex_pos,
                Operand::r4000allegrex_size_plus_pos,
            ),
            instr_type: InstrType::R,
            modifies_rt: true,
            reads_rs: true,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_ins,
                OpcodeCategory::R4000ALLEGREX_SPECIAL3,
                0x04,
                "ins",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }

    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_wsbh as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_rd, Operand::core_rt),
            instr_type: InstrType::R,
            modifies_rd: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_wsbh,
                OpcodeCategory::R4000ALLEGREX_SPECIAL3_BSHFL,
                0x02,
                "wsbh",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_wsbw as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_rd, Operand::core_rt),
            instr_type: InstrType::R,
            modifies_rd: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_wsbw,
                OpcodeCategory::R4000ALLEGREX_SPECIAL3_BSHFL,
                0x03,
                "wsbw",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_seb as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_rd, Operand::core_rt),
            instr_type: InstrType::R,
            modifies_rd: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_seb,
                OpcodeCategory::R4000ALLEGREX_SPECIAL3_BSHFL,
                0x10,
                "seb",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_seh as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_rd, Operand::core_rt),
            instr_type: InstrType::R,
            modifies_rd: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_seh,
                OpcodeCategory::R4000ALLEGREX_SPECIAL3_BSHFL,
                0x18,
                "seh",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_bitrev as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_rd, Operand::core_rt),
            instr_type: InstrType::R,
            modifies_rd: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_bitrev,
                OpcodeCategory::R4000ALLEGREX_SPECIAL3_BSHFL,
                0x14,
                "bitrev",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }

    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_bvf as usize] = OpcodeDescriptor {
            operands: Operand::arr2(
                Operand::r4000allegrex_imm3,
                Operand::core_branch_target_label,
            ),
            instr_type: InstrType::UNKNOWN,
            is_branch: true,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_bvf,
                OpcodeCategory::R4000ALLEGREX_COP2_BC2,
                0x00,
                "bvf",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_bvt as usize] = OpcodeDescriptor {
            operands: Operand::arr2(
                Operand::r4000allegrex_imm3,
                Operand::core_branch_target_label,
            ),
            instr_type: InstrType::UNKNOWN,
            is_branch: true,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_bvt,
                OpcodeCategory::R4000ALLEGREX_COP2_BC2,
                0x01,
                "bvt",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_bvfl as usize] = OpcodeDescriptor {
            operands: Operand::arr2(
                Operand::r4000allegrex_imm3,
                Operand::core_branch_target_label,
            ),
            instr_type: InstrType::UNKNOWN,
            is_branch: true,
            is_branch_likely: true,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_bvfl,
                OpcodeCategory::R4000ALLEGREX_COP2_BC2,
                0x02,
                "bvfl",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_bvtl as usize] = OpcodeDescriptor {
            operands: Operand::arr2(
                Operand::r4000allegrex_imm3,
                Operand::core_branch_target_label,
            ),
            instr_type: InstrType::UNKNOWN,
            is_branch: true,
            is_branch_likely: true,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_bvtl,
                OpcodeCategory::R4000ALLEGREX_COP2_BC2,
                0x03,
                "bvtl",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_mfv as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_rt, Operand::r4000allegrex_s_vd),
            instr_type: InstrType::R,
            modifies_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_mfv,
                OpcodeCategory::R4000ALLEGREX_COP2_MFHC2,
                0x0,
                "mfv",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }

    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_mfvc as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_rt, Operand::r4000allegrex_cop2cd),
            instr_type: InstrType::R,
            modifies_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_mfvc,
                OpcodeCategory::R4000ALLEGREX_COP2_MFHC2_P,
                0x0,
                "mfvc",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }

    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vsync2 as usize] = OpcodeDescriptor {
            operands: Operand::arr0(),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vsync2,
                OpcodeCategory::R4000ALLEGREX_COP2_MFHC2_P_S,
                0xF,
                "vsync2",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_mtv as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_rt, Operand::r4000allegrex_s_vd),
            instr_type: InstrType::R,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_mtv,
                OpcodeCategory::R4000ALLEGREX_COP2_MTHC2,
                0x0,
                "mtv",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_mtvc as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_rt, Operand::r4000allegrex_cop2cd),
            instr_type: InstrType::R,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_mtvc,
                OpcodeCategory::R4000ALLEGREX_COP2_MTHC2,
                0x1,
                "mtvc",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vadd_s as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r4000allegrex_s_vd,
                Operand::r4000allegrex_s_vs,
                Operand::r4000allegrex_s_vt,
            ),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vadd_s,
                OpcodeCategory::R4000ALLEGREX_VFPU0,
                0x00000,
                "vadd.s",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vadd_p as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r4000allegrex_p_vd,
                Operand::r4000allegrex_p_vs,
                Operand::r4000allegrex_p_vt,
            ),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vadd_p,
                OpcodeCategory::R4000ALLEGREX_VFPU0,
                0x00001,
                "vadd.p",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vadd_t as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r4000allegrex_t_vd,
                Operand::r4000allegrex_t_vs,
                Operand::r4000allegrex_t_vt,
            ),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vadd_t,
                OpcodeCategory::R4000ALLEGREX_VFPU0,
                0x00100,
                "vadd.t",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vadd_q as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r4000allegrex_q_vd,
                Operand::r4000allegrex_q_vs,
                Operand::r4000allegrex_q_vt,
            ),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vadd_q,
                OpcodeCategory::R4000ALLEGREX_VFPU0,
                0x00101,
                "vadd.q",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vsub_s as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r4000allegrex_s_vd,
                Operand::r4000allegrex_s_vs,
                Operand::r4000allegrex_s_vt,
            ),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vsub_s,
                OpcodeCategory::R4000ALLEGREX_VFPU0,
                0x10000,
                "vsub.s",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vsub_p as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r4000allegrex_p_vd,
                Operand::r4000allegrex_p_vs,
                Operand::r4000allegrex_p_vt,
            ),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vsub_p,
                OpcodeCategory::R4000ALLEGREX_VFPU0,
                0x10001,
                "vsub.p",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vsub_t as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r4000allegrex_t_vd,
                Operand::r4000allegrex_t_vs,
                Operand::r4000allegrex_t_vt,
            ),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vsub_t,
                OpcodeCategory::R4000ALLEGREX_VFPU0,
                0x10100,
                "vsub.t",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vsub_q as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r4000allegrex_q_vd,
                Operand::r4000allegrex_q_vs,
                Operand::r4000allegrex_q_vt,
            ),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vsub_q,
                OpcodeCategory::R4000ALLEGREX_VFPU0,
                0x10101,
                "vsub.q",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vsbn_s as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r4000allegrex_s_vd,
                Operand::r4000allegrex_s_vs,
                Operand::r4000allegrex_s_vt,
            ),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vsbn_s,
                OpcodeCategory::R4000ALLEGREX_VFPU0,
                0x20000,
                "vsbn.s",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vdiv_s as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r4000allegrex_s_vd,
                Operand::r4000allegrex_s_vs,
                Operand::r4000allegrex_s_vt,
            ),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vdiv_s,
                OpcodeCategory::R4000ALLEGREX_VFPU0,
                0x70000,
                "vdiv.s",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vdiv_p as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r4000allegrex_p_vd,
                Operand::r4000allegrex_p_vs,
                Operand::r4000allegrex_p_vt,
            ),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vdiv_p,
                OpcodeCategory::R4000ALLEGREX_VFPU0,
                0x70001,
                "vdiv.p",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vdiv_t as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r4000allegrex_t_vd,
                Operand::r4000allegrex_t_vs,
                Operand::r4000allegrex_t_vt,
            ),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vdiv_t,
                OpcodeCategory::R4000ALLEGREX_VFPU0,
                0x70100,
                "vdiv.t",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vdiv_q as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r4000allegrex_q_vd,
                Operand::r4000allegrex_q_vs,
                Operand::r4000allegrex_q_vt,
            ),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vdiv_q,
                OpcodeCategory::R4000ALLEGREX_VFPU0,
                0x70101,
                "vdiv.q",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vmul_s as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r4000allegrex_s_vd,
                Operand::r4000allegrex_s_vs,
                Operand::r4000allegrex_s_vt,
            ),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vmul_s,
                OpcodeCategory::R4000ALLEGREX_VFPU1,
                0x00000,
                "vmul.s",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vmul_p as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r4000allegrex_p_vd,
                Operand::r4000allegrex_p_vs,
                Operand::r4000allegrex_p_vt,
            ),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vmul_p,
                OpcodeCategory::R4000ALLEGREX_VFPU1,
                0x00001,
                "vmul.p",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vmul_t as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r4000allegrex_t_vd,
                Operand::r4000allegrex_t_vs,
                Operand::r4000allegrex_t_vt,
            ),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vmul_t,
                OpcodeCategory::R4000ALLEGREX_VFPU1,
                0x00100,
                "vmul.t",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vmul_q as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r4000allegrex_q_vd,
                Operand::r4000allegrex_q_vs,
                Operand::r4000allegrex_q_vt,
            ),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vmul_q,
                OpcodeCategory::R4000ALLEGREX_VFPU1,
                0x00101,
                "vmul.q",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vdot_p as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r4000allegrex_s_vd,
                Operand::r4000allegrex_p_vs,
                Operand::r4000allegrex_p_vt,
            ),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vdot_p,
                OpcodeCategory::R4000ALLEGREX_VFPU1,
                0x10001,
                "vdot.p",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vdot_t as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r4000allegrex_s_vd,
                Operand::r4000allegrex_t_vs,
                Operand::r4000allegrex_t_vt,
            ),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vdot_t,
                OpcodeCategory::R4000ALLEGREX_VFPU1,
                0x10100,
                "vdot.t",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vdot_q as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r4000allegrex_s_vd,
                Operand::r4000allegrex_q_vs,
                Operand::r4000allegrex_q_vt,
            ),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vdot_q,
                OpcodeCategory::R4000ALLEGREX_VFPU1,
                0x10101,
                "vdot.q",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vscl_p as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r4000allegrex_p_vd,
                Operand::r4000allegrex_p_vs,
                Operand::r4000allegrex_s_vt,
            ),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vscl_p,
                OpcodeCategory::R4000ALLEGREX_VFPU1,
                0x20001,
                "vscl.p",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vscl_t as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r4000allegrex_t_vd,
                Operand::r4000allegrex_t_vs,
                Operand::r4000allegrex_s_vt,
            ),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vscl_t,
                OpcodeCategory::R4000ALLEGREX_VFPU1,
                0x20100,
                "vscl.t",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vscl_q as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r4000allegrex_q_vd,
                Operand::r4000allegrex_q_vs,
                Operand::r4000allegrex_s_vt,
            ),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vscl_q,
                OpcodeCategory::R4000ALLEGREX_VFPU1,
                0x20101,
                "vscl.q",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vhdp_p as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r4000allegrex_s_vd,
                Operand::r4000allegrex_p_vs,
                Operand::r4000allegrex_p_vt,
            ),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vhdp_p,
                OpcodeCategory::R4000ALLEGREX_VFPU1,
                0x40001,
                "vhdp.p",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vhdp_t as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r4000allegrex_s_vd,
                Operand::r4000allegrex_t_vs,
                Operand::r4000allegrex_t_vt,
            ),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vhdp_t,
                OpcodeCategory::R4000ALLEGREX_VFPU1,
                0x40100,
                "vhdp.t",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vhdp_q as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r4000allegrex_s_vd,
                Operand::r4000allegrex_q_vs,
                Operand::r4000allegrex_q_vt,
            ),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vhdp_q,
                OpcodeCategory::R4000ALLEGREX_VFPU1,
                0x40101,
                "vhdp.q",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vcrs_t as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r4000allegrex_t_vd,
                Operand::r4000allegrex_t_vs,
                Operand::r4000allegrex_t_vt,
            ),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vcrs_t,
                OpcodeCategory::R4000ALLEGREX_VFPU1,
                0x50100,
                "vcrs.t",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vdet_p as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r4000allegrex_s_vd,
                Operand::r4000allegrex_p_vs,
                Operand::r4000allegrex_p_vt,
            ),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vdet_p,
                OpcodeCategory::R4000ALLEGREX_VFPU1,
                0x60001,
                "vdet.p",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vcmp_s as usize] = OpcodeDescriptor {
            operands: Operand::arr1(Operand::r4000allegrex_vcmp_cond_s_maybe_vs_maybe_vt),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vcmp_s,
                OpcodeCategory::R4000ALLEGREX_VFPU3,
                0x00000,
                "vcmp.s",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vcmp_p as usize] = OpcodeDescriptor {
            operands: Operand::arr1(Operand::r4000allegrex_vcmp_cond_p_maybe_vs_maybe_vt),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vcmp_p,
                OpcodeCategory::R4000ALLEGREX_VFPU3,
                0x00001,
                "vcmp.p",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vcmp_t as usize] = OpcodeDescriptor {
            operands: Operand::arr1(Operand::r4000allegrex_vcmp_cond_t_maybe_vs_maybe_vt),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vcmp_t,
                OpcodeCategory::R4000ALLEGREX_VFPU3,
                0x00100,
                "vcmp.t",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vcmp_q as usize] = OpcodeDescriptor {
            operands: Operand::arr1(Operand::r4000allegrex_vcmp_cond_q_maybe_vs_maybe_vt),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vcmp_q,
                OpcodeCategory::R4000ALLEGREX_VFPU3,
                0x00101,
                "vcmp.q",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vmin_s as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r4000allegrex_s_vd,
                Operand::r4000allegrex_s_vs,
                Operand::r4000allegrex_s_vt,
            ),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vmin_s,
                OpcodeCategory::R4000ALLEGREX_VFPU3,
                0x20000,
                "vmin.s",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vmin_p as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r4000allegrex_p_vd,
                Operand::r4000allegrex_p_vs,
                Operand::r4000allegrex_p_vt,
            ),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vmin_p,
                OpcodeCategory::R4000ALLEGREX_VFPU3,
                0x20001,
                "vmin.p",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vmin_t as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r4000allegrex_t_vd,
                Operand::r4000allegrex_t_vs,
                Operand::r4000allegrex_t_vt,
            ),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vmin_t,
                OpcodeCategory::R4000ALLEGREX_VFPU3,
                0x20100,
                "vmin.t",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vmin_q as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r4000allegrex_q_vd,
                Operand::r4000allegrex_q_vs,
                Operand::r4000allegrex_q_vt,
            ),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vmin_q,
                OpcodeCategory::R4000ALLEGREX_VFPU3,
                0x20101,
                "vmin.q",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vmax_s as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r4000allegrex_s_vd,
                Operand::r4000allegrex_s_vs,
                Operand::r4000allegrex_s_vt,
            ),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vmax_s,
                OpcodeCategory::R4000ALLEGREX_VFPU3,
                0x30000,
                "vmax.s",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vmax_p as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r4000allegrex_p_vd,
                Operand::r4000allegrex_p_vs,
                Operand::r4000allegrex_p_vt,
            ),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vmax_p,
                OpcodeCategory::R4000ALLEGREX_VFPU3,
                0x30001,
                "vmax.p",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vmax_t as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r4000allegrex_t_vd,
                Operand::r4000allegrex_t_vs,
                Operand::r4000allegrex_t_vt,
            ),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vmax_t,
                OpcodeCategory::R4000ALLEGREX_VFPU3,
                0x30100,
                "vmax.t",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vmax_q as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r4000allegrex_q_vd,
                Operand::r4000allegrex_q_vs,
                Operand::r4000allegrex_q_vt,
            ),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vmax_q,
                OpcodeCategory::R4000ALLEGREX_VFPU3,
                0x30101,
                "vmax.q",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vscmp_s as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r4000allegrex_s_vd,
                Operand::r4000allegrex_s_vs,
                Operand::r4000allegrex_s_vt,
            ),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vscmp_s,
                OpcodeCategory::R4000ALLEGREX_VFPU3,
                0x50000,
                "vscmp.s",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vscmp_p as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r4000allegrex_p_vd,
                Operand::r4000allegrex_p_vs,
                Operand::r4000allegrex_p_vt,
            ),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vscmp_p,
                OpcodeCategory::R4000ALLEGREX_VFPU3,
                0x50001,
                "vscmp.p",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vscmp_t as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r4000allegrex_t_vd,
                Operand::r4000allegrex_t_vs,
                Operand::r4000allegrex_t_vt,
            ),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vscmp_t,
                OpcodeCategory::R4000ALLEGREX_VFPU3,
                0x50100,
                "vscmp.t",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vscmp_q as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r4000allegrex_q_vd,
                Operand::r4000allegrex_q_vs,
                Operand::r4000allegrex_q_vt,
            ),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vscmp_q,
                OpcodeCategory::R4000ALLEGREX_VFPU3,
                0x50101,
                "vscmp.q",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vsge_s as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r4000allegrex_s_vd,
                Operand::r4000allegrex_s_vs,
                Operand::r4000allegrex_s_vt,
            ),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vsge_s,
                OpcodeCategory::R4000ALLEGREX_VFPU3,
                0x60000,
                "vsge.s",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vsge_p as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r4000allegrex_p_vd,
                Operand::r4000allegrex_p_vs,
                Operand::r4000allegrex_p_vt,
            ),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vsge_p,
                OpcodeCategory::R4000ALLEGREX_VFPU3,
                0x60001,
                "vsge.p",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vsge_t as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r4000allegrex_t_vd,
                Operand::r4000allegrex_t_vs,
                Operand::r4000allegrex_t_vt,
            ),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vsge_t,
                OpcodeCategory::R4000ALLEGREX_VFPU3,
                0x60100,
                "vsge.t",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vsge_q as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r4000allegrex_q_vd,
                Operand::r4000allegrex_q_vs,
                Operand::r4000allegrex_q_vt,
            ),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vsge_q,
                OpcodeCategory::R4000ALLEGREX_VFPU3,
                0x60101,
                "vsge.q",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vslt_s as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r4000allegrex_s_vd,
                Operand::r4000allegrex_s_vs,
                Operand::r4000allegrex_s_vt,
            ),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vslt_s,
                OpcodeCategory::R4000ALLEGREX_VFPU3,
                0x70000,
                "vslt.s",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vslt_p as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r4000allegrex_p_vd,
                Operand::r4000allegrex_p_vs,
                Operand::r4000allegrex_p_vt,
            ),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vslt_p,
                OpcodeCategory::R4000ALLEGREX_VFPU3,
                0x70001,
                "vslt.p",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vslt_t as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r4000allegrex_t_vd,
                Operand::r4000allegrex_t_vs,
                Operand::r4000allegrex_t_vt,
            ),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vslt_t,
                OpcodeCategory::R4000ALLEGREX_VFPU3,
                0x70100,
                "vslt.t",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vslt_q as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r4000allegrex_q_vd,
                Operand::r4000allegrex_q_vs,
                Operand::r4000allegrex_q_vt,
            ),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vslt_q,
                OpcodeCategory::R4000ALLEGREX_VFPU3,
                0x70101,
                "vslt.q",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vwbn_s as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r4000allegrex_s_vd,
                Operand::r4000allegrex_s_vs,
                Operand::r4000allegrex_bn,
            ),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vwbn_s,
                OpcodeCategory::R4000ALLEGREX_VFPU4,
                0x60000,
                "vwbn.s",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }

    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vmov_s as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r4000allegrex_s_vd, Operand::r4000allegrex_s_vs),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vmov_s,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_FMT0,
                0x0000,
                "vmov.s",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vmov_p as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r4000allegrex_p_vd, Operand::r4000allegrex_p_vs),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vmov_p,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_FMT0,
                0x0001,
                "vmov.p",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vmov_t as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r4000allegrex_t_vd, Operand::r4000allegrex_t_vs),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vmov_t,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_FMT0,
                0x0100,
                "vmov.t",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vmov_q as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r4000allegrex_q_vd, Operand::r4000allegrex_q_vs),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vmov_q,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_FMT0,
                0x0101,
                "vmov.q",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vabs_s as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r4000allegrex_s_vd, Operand::r4000allegrex_s_vs),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vabs_s,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_FMT0,
                0x0200,
                "vabs.s",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vabs_p as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r4000allegrex_p_vd, Operand::r4000allegrex_p_vs),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vabs_p,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_FMT0,
                0x0201,
                "vabs.p",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vabs_t as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r4000allegrex_t_vd, Operand::r4000allegrex_t_vs),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vabs_t,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_FMT0,
                0x0300,
                "vabs.t",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vabs_q as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r4000allegrex_q_vd, Operand::r4000allegrex_q_vs),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vabs_q,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_FMT0,
                0x0301,
                "vabs.q",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vneg_s as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r4000allegrex_s_vd, Operand::r4000allegrex_s_vs),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vneg_s,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_FMT0,
                0x0400,
                "vneg.s",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vneg_p as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r4000allegrex_p_vd, Operand::r4000allegrex_p_vs),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vneg_p,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_FMT0,
                0x0401,
                "vneg.p",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vneg_t as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r4000allegrex_t_vd, Operand::r4000allegrex_t_vs),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vneg_t,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_FMT0,
                0x0500,
                "vneg.t",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vneg_q as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r4000allegrex_q_vd, Operand::r4000allegrex_q_vs),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vneg_q,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_FMT0,
                0x0501,
                "vneg.q",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vidt_p as usize] = OpcodeDescriptor {
            operands: Operand::arr1(Operand::r4000allegrex_p_vd),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vidt_p,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_FMT0,
                0x0601,
                "vidt.p",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vidt_q as usize] = OpcodeDescriptor {
            operands: Operand::arr1(Operand::r4000allegrex_q_vd),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vidt_q,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_FMT0,
                0x0701,
                "vidt.q",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vsat0_s as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r4000allegrex_s_vd, Operand::r4000allegrex_s_vs),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vsat0_s,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_FMT0,
                0x0800,
                "vsat0.s",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vsat0_p as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r4000allegrex_p_vd, Operand::r4000allegrex_p_vs),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vsat0_p,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_FMT0,
                0x0801,
                "vsat0.p",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vsat0_t as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r4000allegrex_t_vd, Operand::r4000allegrex_t_vs),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vsat0_t,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_FMT0,
                0x0900,
                "vsat0.t",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vsat0_q as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r4000allegrex_q_vd, Operand::r4000allegrex_q_vs),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vsat0_q,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_FMT0,
                0x0901,
                "vsat0.q",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vsat1_s as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r4000allegrex_s_vd, Operand::r4000allegrex_s_vs),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vsat1_s,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_FMT0,
                0x0A00,
                "vsat1.s",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vsat1_p as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r4000allegrex_p_vd, Operand::r4000allegrex_p_vs),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vsat1_p,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_FMT0,
                0x0A01,
                "vsat1.p",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vsat1_t as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r4000allegrex_t_vd, Operand::r4000allegrex_t_vs),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vsat1_t,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_FMT0,
                0x0B00,
                "vsat1.t",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vsat1_q as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r4000allegrex_q_vd, Operand::r4000allegrex_q_vs),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vsat1_q,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_FMT0,
                0x0B01,
                "vsat1.q",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vzero_s as usize] = OpcodeDescriptor {
            operands: Operand::arr1(Operand::r4000allegrex_s_vd),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vzero_s,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_FMT0,
                0x0C00,
                "vzero.s",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vzero_p as usize] = OpcodeDescriptor {
            operands: Operand::arr1(Operand::r4000allegrex_p_vd),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vzero_p,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_FMT0,
                0x0C01,
                "vzero.p",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vzero_t as usize] = OpcodeDescriptor {
            operands: Operand::arr1(Operand::r4000allegrex_t_vd),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vzero_t,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_FMT0,
                0x0D00,
                "vzero.t",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vzero_q as usize] = OpcodeDescriptor {
            operands: Operand::arr1(Operand::r4000allegrex_q_vd),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vzero_q,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_FMT0,
                0x0D01,
                "vzero.q",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vone_s as usize] = OpcodeDescriptor {
            operands: Operand::arr1(Operand::r4000allegrex_s_vd),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vone_s,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_FMT0,
                0x0E00,
                "vone.s",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vone_p as usize] = OpcodeDescriptor {
            operands: Operand::arr1(Operand::r4000allegrex_p_vd),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vone_p,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_FMT0,
                0x0E01,
                "vone.p",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vone_t as usize] = OpcodeDescriptor {
            operands: Operand::arr1(Operand::r4000allegrex_t_vd),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vone_t,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_FMT0,
                0x0F00,
                "vone.t",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vone_q as usize] = OpcodeDescriptor {
            operands: Operand::arr1(Operand::r4000allegrex_q_vd),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vone_q,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_FMT0,
                0x0F01,
                "vone.q",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vrcp_s as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r4000allegrex_s_vd, Operand::r4000allegrex_s_vs),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vrcp_s,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_FMT2,
                0x0000,
                "vrcp.s",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vrcp_p as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r4000allegrex_p_vd, Operand::r4000allegrex_p_vs),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vrcp_p,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_FMT2,
                0x0001,
                "vrcp.p",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vrcp_t as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r4000allegrex_t_vd, Operand::r4000allegrex_t_vs),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vrcp_t,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_FMT2,
                0x0100,
                "vrcp.t",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vrcp_q as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r4000allegrex_q_vd, Operand::r4000allegrex_q_vs),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vrcp_q,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_FMT2,
                0x0101,
                "vrcp.q",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vrsq_s as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r4000allegrex_s_vd, Operand::r4000allegrex_s_vs),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vrsq_s,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_FMT2,
                0x0200,
                "vrsq.s",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vrsq_p as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r4000allegrex_p_vd, Operand::r4000allegrex_p_vs),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vrsq_p,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_FMT2,
                0x0201,
                "vrsq.p",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vrsq_t as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r4000allegrex_t_vd, Operand::r4000allegrex_t_vs),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vrsq_t,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_FMT2,
                0x0300,
                "vrsq.t",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vrsq_q as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r4000allegrex_q_vd, Operand::r4000allegrex_q_vs),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vrsq_q,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_FMT2,
                0x0301,
                "vrsq.q",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vsin_s as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r4000allegrex_s_vd, Operand::r4000allegrex_s_vs),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vsin_s,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_FMT2,
                0x0400,
                "vsin.s",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vsin_p as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r4000allegrex_p_vd, Operand::r4000allegrex_p_vs),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vsin_p,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_FMT2,
                0x0401,
                "vsin.p",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vsin_t as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r4000allegrex_t_vd, Operand::r4000allegrex_t_vs),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vsin_t,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_FMT2,
                0x0500,
                "vsin.t",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vsin_q as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r4000allegrex_q_vd, Operand::r4000allegrex_q_vs),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vsin_q,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_FMT2,
                0x0501,
                "vsin.q",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vcos_s as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r4000allegrex_s_vd, Operand::r4000allegrex_s_vs),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vcos_s,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_FMT2,
                0x0600,
                "vcos.s",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vcos_p as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r4000allegrex_p_vd, Operand::r4000allegrex_p_vs),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vcos_p,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_FMT2,
                0x0601,
                "vcos.p",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vcos_t as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r4000allegrex_t_vd, Operand::r4000allegrex_t_vs),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vcos_t,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_FMT2,
                0x0700,
                "vcos.t",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vcos_q as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r4000allegrex_q_vd, Operand::r4000allegrex_q_vs),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vcos_q,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_FMT2,
                0x0701,
                "vcos.q",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vexp2_s as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r4000allegrex_s_vd, Operand::r4000allegrex_s_vs),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vexp2_s,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_FMT2,
                0x0800,
                "vexp2.s",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vexp2_p as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r4000allegrex_p_vd, Operand::r4000allegrex_p_vs),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vexp2_p,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_FMT2,
                0x0801,
                "vexp2.p",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vexp2_t as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r4000allegrex_t_vd, Operand::r4000allegrex_t_vs),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vexp2_t,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_FMT2,
                0x0900,
                "vexp2.t",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vexp2_q as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r4000allegrex_q_vd, Operand::r4000allegrex_q_vs),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vexp2_q,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_FMT2,
                0x0901,
                "vexp2.q",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vlog2_s as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r4000allegrex_s_vd, Operand::r4000allegrex_s_vs),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vlog2_s,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_FMT2,
                0x0A00,
                "vlog2.s",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vlog2_p as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r4000allegrex_p_vd, Operand::r4000allegrex_p_vs),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vlog2_p,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_FMT2,
                0x0A01,
                "vlog2.p",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vlog2_t as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r4000allegrex_t_vd, Operand::r4000allegrex_t_vs),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vlog2_t,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_FMT2,
                0x0B00,
                "vlog2.t",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vlog2_q as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r4000allegrex_q_vd, Operand::r4000allegrex_q_vs),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vlog2_q,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_FMT2,
                0x0B01,
                "vlog2.q",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vsqrt_s as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r4000allegrex_s_vd, Operand::r4000allegrex_s_vs),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vsqrt_s,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_FMT2,
                0x0C00,
                "vsqrt.s",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vsqrt_p as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r4000allegrex_p_vd, Operand::r4000allegrex_p_vs),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vsqrt_p,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_FMT2,
                0x0C01,
                "vsqrt.p",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vsqrt_t as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r4000allegrex_t_vd, Operand::r4000allegrex_t_vs),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vsqrt_t,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_FMT2,
                0x0D00,
                "vsqrt.t",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vsqrt_q as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r4000allegrex_q_vd, Operand::r4000allegrex_q_vs),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vsqrt_q,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_FMT2,
                0x0D01,
                "vsqrt.q",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vasin_s as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r4000allegrex_s_vd, Operand::r4000allegrex_s_vs),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vasin_s,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_FMT2,
                0x0E00,
                "vasin.s",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vasin_p as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r4000allegrex_p_vd, Operand::r4000allegrex_p_vs),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vasin_p,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_FMT2,
                0x0E01,
                "vasin.p",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vasin_t as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r4000allegrex_t_vd, Operand::r4000allegrex_t_vs),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vasin_t,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_FMT2,
                0x0F00,
                "vasin.t",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vasin_q as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r4000allegrex_q_vd, Operand::r4000allegrex_q_vs),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vasin_q,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_FMT2,
                0x0F01,
                "vasin.q",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vnrcp_s as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r4000allegrex_s_vd, Operand::r4000allegrex_s_vs),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vnrcp_s,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_FMT3,
                0x0000,
                "vnrcp.s",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vnrcp_p as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r4000allegrex_p_vd, Operand::r4000allegrex_p_vs),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vnrcp_p,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_FMT3,
                0x0001,
                "vnrcp.p",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vnrcp_t as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r4000allegrex_t_vd, Operand::r4000allegrex_t_vs),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vnrcp_t,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_FMT3,
                0x0100,
                "vnrcp.t",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vnrcp_q as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r4000allegrex_q_vd, Operand::r4000allegrex_q_vs),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vnrcp_q,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_FMT3,
                0x0101,
                "vnrcp.q",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vnsin_s as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r4000allegrex_s_vd, Operand::r4000allegrex_s_vs),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vnsin_s,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_FMT3,
                0x0400,
                "vnsin.s",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vnsin_p as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r4000allegrex_p_vd, Operand::r4000allegrex_p_vs),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vnsin_p,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_FMT3,
                0x0401,
                "vnsin.p",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vnsin_t as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r4000allegrex_t_vd, Operand::r4000allegrex_t_vs),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vnsin_t,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_FMT3,
                0x0500,
                "vnsin.t",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vnsin_q as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r4000allegrex_q_vd, Operand::r4000allegrex_q_vs),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vnsin_q,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_FMT3,
                0x0501,
                "vnsin.q",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vrexp2_s as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r4000allegrex_s_vd, Operand::r4000allegrex_s_vs),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vrexp2_s,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_FMT3,
                0x0800,
                "vrexp2.s",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vrexp2_p as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r4000allegrex_p_vd, Operand::r4000allegrex_p_vs),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vrexp2_p,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_FMT3,
                0x0801,
                "vrexp2.p",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vrexp2_t as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r4000allegrex_t_vd, Operand::r4000allegrex_t_vs),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vrexp2_t,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_FMT3,
                0x0900,
                "vrexp2.t",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vrexp2_q as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r4000allegrex_q_vd, Operand::r4000allegrex_q_vs),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vrexp2_q,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_FMT3,
                0x0901,
                "vrexp2.q",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vrnds_s as usize] = OpcodeDescriptor {
            operands: Operand::arr1(Operand::r4000allegrex_s_vs),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vrnds_s,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_RND,
                0x0000,
                "vrnds.s",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vrndi_s as usize] = OpcodeDescriptor {
            operands: Operand::arr1(Operand::r4000allegrex_s_vd),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vrndi_s,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_RND,
                0x0200,
                "vrndi.s",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vrndi_p as usize] = OpcodeDescriptor {
            operands: Operand::arr1(Operand::r4000allegrex_p_vd),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vrndi_p,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_RND,
                0x0201,
                "vrndi.p",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vrndi_t as usize] = OpcodeDescriptor {
            operands: Operand::arr1(Operand::r4000allegrex_t_vd),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vrndi_t,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_RND,
                0x0300,
                "vrndi.t",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vrndi_q as usize] = OpcodeDescriptor {
            operands: Operand::arr1(Operand::r4000allegrex_q_vd),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vrndi_q,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_RND,
                0x0301,
                "vrndi.q",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vrndf1_s as usize] = OpcodeDescriptor {
            operands: Operand::arr1(Operand::r4000allegrex_s_vd),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vrndf1_s,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_RND,
                0x0400,
                "vrndf1.s",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vrndf1_p as usize] = OpcodeDescriptor {
            operands: Operand::arr1(Operand::r4000allegrex_p_vd),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vrndf1_p,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_RND,
                0x0401,
                "vrndf1.p",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vrndf1_t as usize] = OpcodeDescriptor {
            operands: Operand::arr1(Operand::r4000allegrex_t_vd),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vrndf1_t,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_RND,
                0x0500,
                "vrndf1.t",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vrndf1_q as usize] = OpcodeDescriptor {
            operands: Operand::arr1(Operand::r4000allegrex_q_vd),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vrndf1_q,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_RND,
                0x0501,
                "vrndf1.q",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vrndf2_s as usize] = OpcodeDescriptor {
            operands: Operand::arr1(Operand::r4000allegrex_s_vd),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vrndf2_s,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_RND,
                0x0600,
                "vrndf2.s",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vrndf2_p as usize] = OpcodeDescriptor {
            operands: Operand::arr1(Operand::r4000allegrex_p_vd),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vrndf2_p,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_RND,
                0x0601,
                "vrndf2.p",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vrndf2_t as usize] = OpcodeDescriptor {
            operands: Operand::arr1(Operand::r4000allegrex_t_vd),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vrndf2_t,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_RND,
                0x0700,
                "vrndf2.t",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vrndf2_q as usize] = OpcodeDescriptor {
            operands: Operand::arr1(Operand::r4000allegrex_q_vd),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vrndf2_q,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_RND,
                0x0701,
                "vrndf2.q",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vf2h_p as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r4000allegrex_s_vd, Operand::r4000allegrex_p_vs),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vf2h_p,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_CVTFLT,
                0x0401,
                "vf2h.p",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vf2h_q as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r4000allegrex_p_vd, Operand::r4000allegrex_q_vs),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vf2h_q,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_CVTFLT,
                0x0501,
                "vf2h.q",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vh2f_s as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r4000allegrex_p_vd, Operand::r4000allegrex_s_vs),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vh2f_s,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_CVTFLT,
                0x0600,
                "vh2f.s",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vh2f_p as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r4000allegrex_q_vd, Operand::r4000allegrex_p_vs),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vh2f_p,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_CVTFLT,
                0x0601,
                "vh2f.p",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vsbz_s as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r4000allegrex_s_vd, Operand::r4000allegrex_s_vs),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vsbz_s,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_CVTFLT,
                0x0C00,
                "vsbz.s",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vlgb_s as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r4000allegrex_s_vd, Operand::r4000allegrex_s_vs),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vlgb_s,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_CVTFLT,
                0x0E00,
                "vlgb.s",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vuc2ifs_s as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r4000allegrex_q_vd, Operand::r4000allegrex_s_vs),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vuc2ifs_s,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_CVTINT,
                0x0000,
                "vuc2ifs.s",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vc2i_s as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r4000allegrex_q_vd, Operand::r4000allegrex_s_vs),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vc2i_s,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_CVTINT,
                0x0200,
                "vc2i.s",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vus2i_s as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r4000allegrex_p_vd, Operand::r4000allegrex_s_vs),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vus2i_s,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_CVTINT,
                0x0400,
                "vus2i.s",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vus2i_p as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r4000allegrex_q_vd, Operand::r4000allegrex_p_vs),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vus2i_p,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_CVTINT,
                0x0401,
                "vus2i.p",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vs2i_s as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r4000allegrex_p_vd, Operand::r4000allegrex_s_vs),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vs2i_s,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_CVTINT,
                0x0600,
                "vs2i.s",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vs2i_p as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r4000allegrex_q_vd, Operand::r4000allegrex_p_vs),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vs2i_p,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_CVTINT,
                0x0601,
                "vs2i.p",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vi2uc_q as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r4000allegrex_s_vd, Operand::r4000allegrex_q_vs),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vi2uc_q,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_CVTINT,
                0x0901,
                "vi2uc.q",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vi2c_q as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r4000allegrex_s_vd, Operand::r4000allegrex_q_vs),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vi2c_q,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_CVTINT,
                0x0B01,
                "vi2c.q",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vi2us_p as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r4000allegrex_s_vd, Operand::r4000allegrex_p_vs),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vi2us_p,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_CVTINT,
                0x0C01,
                "vi2us.p",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vi2us_q as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r4000allegrex_p_vd, Operand::r4000allegrex_q_vs),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vi2us_q,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_CVTINT,
                0x0D01,
                "vi2us.q",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vi2s_p as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r4000allegrex_s_vd, Operand::r4000allegrex_p_vs),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vi2s_p,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_CVTINT,
                0x0E01,
                "vi2s.p",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vi2s_q as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r4000allegrex_p_vd, Operand::r4000allegrex_q_vs),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vi2s_q,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_CVTINT,
                0x0F01,
                "vi2s.q",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vsrt1_q as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r4000allegrex_q_vd, Operand::r4000allegrex_q_vs),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vsrt1_q,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_FMT8,
                0x0101,
                "vsrt1.q",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vsrt2_q as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r4000allegrex_q_vd, Operand::r4000allegrex_q_vs),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vsrt2_q,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_FMT8,
                0x0301,
                "vsrt2.q",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vbfy1_p as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r4000allegrex_p_vd, Operand::r4000allegrex_p_vs),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vbfy1_p,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_FMT8,
                0x0401,
                "vbfy1.p",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vbfy1_q as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r4000allegrex_q_vd, Operand::r4000allegrex_q_vs),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vbfy1_q,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_FMT8,
                0x0501,
                "vbfy1.q",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vbfy2_q as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r4000allegrex_q_vd, Operand::r4000allegrex_q_vs),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vbfy2_q,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_FMT8,
                0x0701,
                "vbfy2.q",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vocp_s as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r4000allegrex_s_vd, Operand::r4000allegrex_s_vs),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vocp_s,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_FMT8,
                0x0800,
                "vocp.s",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vocp_p as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r4000allegrex_p_vd, Operand::r4000allegrex_p_vs),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vocp_p,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_FMT8,
                0x0801,
                "vocp.p",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vocp_t as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r4000allegrex_t_vd, Operand::r4000allegrex_t_vs),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vocp_t,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_FMT8,
                0x0900,
                "vocp.t",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vocp_q as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r4000allegrex_q_vd, Operand::r4000allegrex_q_vs),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vocp_q,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_FMT8,
                0x0901,
                "vocp.q",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vsocp_s as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r4000allegrex_p_vd, Operand::r4000allegrex_s_vs),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vsocp_s,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_FMT8,
                0x0A00,
                "vsocp.s",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vsocp_p as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r4000allegrex_q_vd, Operand::r4000allegrex_p_vs),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vsocp_p,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_FMT8,
                0x0A01,
                "vsocp.p",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vfad_p as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r4000allegrex_s_vd, Operand::r4000allegrex_p_vs),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vfad_p,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_FMT8,
                0x0C01,
                "vfad.p",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vfad_t as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r4000allegrex_s_vd, Operand::r4000allegrex_t_vs),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vfad_t,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_FMT8,
                0x0D00,
                "vfad.t",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vfad_q as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r4000allegrex_s_vd, Operand::r4000allegrex_q_vs),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vfad_q,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_FMT8,
                0x0D01,
                "vfad.q",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vavg_p as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r4000allegrex_s_vd, Operand::r4000allegrex_p_vs),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vavg_p,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_FMT8,
                0x0E01,
                "vavg.p",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vavg_t as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r4000allegrex_s_vd, Operand::r4000allegrex_t_vs),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vavg_t,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_FMT8,
                0x0F00,
                "vavg.t",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vavg_q as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r4000allegrex_s_vd, Operand::r4000allegrex_q_vs),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vavg_q,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_FMT8,
                0x0F01,
                "vavg.q",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vsrt3_q as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r4000allegrex_q_vd, Operand::r4000allegrex_q_vs),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vsrt3_q,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_FMT9,
                0x0101,
                "vsrt3.q",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vsrt4_q as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r4000allegrex_q_vd, Operand::r4000allegrex_q_vs),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vsrt4_q,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_FMT9,
                0x0301,
                "vsrt4.q",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vsgn_s as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r4000allegrex_s_vd, Operand::r4000allegrex_s_vs),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vsgn_s,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_FMT9,
                0x0400,
                "vsgn.s",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vsgn_p as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r4000allegrex_p_vd, Operand::r4000allegrex_p_vs),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vsgn_p,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_FMT9,
                0x0401,
                "vsgn.p",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vsgn_t as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r4000allegrex_t_vd, Operand::r4000allegrex_t_vs),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vsgn_t,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_FMT9,
                0x0500,
                "vsgn.t",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vsgn_q as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r4000allegrex_q_vd, Operand::r4000allegrex_q_vs),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vsgn_q,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_FMT9,
                0x0501,
                "vsgn.q",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vmfvc as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r4000allegrex_s_vd, Operand::r4000allegrex_cop2cs),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vmfvc,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_CONTROL,
                0x0100,
                "vmfvc",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vmtvc as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r4000allegrex_cop2cd, Operand::r4000allegrex_s_vs),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vmtvc,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_CONTROL,
                0x0201,
                "vmtvc",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vt4444_q as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r4000allegrex_p_vd, Operand::r4000allegrex_q_vs),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vt4444_q,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_COLOR,
                0x0301,
                "vt4444.q",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vt5551_q as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r4000allegrex_p_vd, Operand::r4000allegrex_q_vs),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vt5551_q,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_COLOR,
                0x0501,
                "vt5551.q",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vt5650_q as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r4000allegrex_p_vd, Operand::r4000allegrex_q_vs),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vt5650_q,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_COLOR,
                0x0701,
                "vt5650.q",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vcst_s as usize] = OpcodeDescriptor {
            operands: Operand::arr2(
                Operand::r4000allegrex_s_vd,
                Operand::r4000allegrex_vconstant,
            ),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vcst_s,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_CST,
                0x0,
                "vcst.s",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vcst_p as usize] = OpcodeDescriptor {
            operands: Operand::arr2(
                Operand::r4000allegrex_p_vd,
                Operand::r4000allegrex_vconstant,
            ),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vcst_p,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_CST,
                0x1,
                "vcst.p",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vcst_t as usize] = OpcodeDescriptor {
            operands: Operand::arr2(
                Operand::r4000allegrex_t_vd,
                Operand::r4000allegrex_vconstant,
            ),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vcst_t,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_CST,
                0x100,
                "vcst.t",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vcst_q as usize] = OpcodeDescriptor {
            operands: Operand::arr2(
                Operand::r4000allegrex_q_vd,
                Operand::r4000allegrex_vconstant,
            ),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vcst_q,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT0_CST,
                0x101,
                "vcst.q",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vf2in_s as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r4000allegrex_s_vd,
                Operand::r4000allegrex_s_vs,
                Operand::r4000allegrex_power_of_two,
            ),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vf2in_s,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT2,
                0x00000,
                "vf2in.s",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vf2in_p as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r4000allegrex_p_vd,
                Operand::r4000allegrex_p_vs,
                Operand::r4000allegrex_power_of_two,
            ),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vf2in_p,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT2,
                0x00001,
                "vf2in.p",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vf2in_t as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r4000allegrex_t_vd,
                Operand::r4000allegrex_t_vs,
                Operand::r4000allegrex_power_of_two,
            ),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vf2in_t,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT2,
                0x00100,
                "vf2in.t",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vf2in_q as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r4000allegrex_q_vd,
                Operand::r4000allegrex_q_vs,
                Operand::r4000allegrex_power_of_two,
            ),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vf2in_q,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT2,
                0x00101,
                "vf2in.q",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vf2iz_s as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r4000allegrex_s_vd,
                Operand::r4000allegrex_s_vs,
                Operand::r4000allegrex_power_of_two,
            ),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vf2iz_s,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT2,
                0x04000,
                "vf2iz.s",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vf2iz_p as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r4000allegrex_p_vd,
                Operand::r4000allegrex_p_vs,
                Operand::r4000allegrex_power_of_two,
            ),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vf2iz_p,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT2,
                0x04001,
                "vf2iz.p",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vf2iz_t as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r4000allegrex_t_vd,
                Operand::r4000allegrex_t_vs,
                Operand::r4000allegrex_power_of_two,
            ),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vf2iz_t,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT2,
                0x04100,
                "vf2iz.t",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vf2iz_q as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r4000allegrex_q_vd,
                Operand::r4000allegrex_q_vs,
                Operand::r4000allegrex_power_of_two,
            ),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vf2iz_q,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT2,
                0x04101,
                "vf2iz.q",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vf2iu_s as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r4000allegrex_s_vd,
                Operand::r4000allegrex_s_vs,
                Operand::r4000allegrex_power_of_two,
            ),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vf2iu_s,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT2,
                0x08000,
                "vf2iu.s",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vf2iu_p as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r4000allegrex_p_vd,
                Operand::r4000allegrex_p_vs,
                Operand::r4000allegrex_power_of_two,
            ),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vf2iu_p,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT2,
                0x08001,
                "vf2iu.p",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vf2iu_t as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r4000allegrex_t_vd,
                Operand::r4000allegrex_t_vs,
                Operand::r4000allegrex_power_of_two,
            ),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vf2iu_t,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT2,
                0x08100,
                "vf2iu.t",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vf2iu_q as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r4000allegrex_q_vd,
                Operand::r4000allegrex_q_vs,
                Operand::r4000allegrex_power_of_two,
            ),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vf2iu_q,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT2,
                0x08101,
                "vf2iu.q",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vf2id_s as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r4000allegrex_s_vd,
                Operand::r4000allegrex_s_vs,
                Operand::r4000allegrex_power_of_two,
            ),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vf2id_s,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT2,
                0x0C000,
                "vf2id.s",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vf2id_p as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r4000allegrex_p_vd,
                Operand::r4000allegrex_p_vs,
                Operand::r4000allegrex_power_of_two,
            ),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vf2id_p,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT2,
                0x0C001,
                "vf2id.p",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vf2id_t as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r4000allegrex_t_vd,
                Operand::r4000allegrex_t_vs,
                Operand::r4000allegrex_power_of_two,
            ),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vf2id_t,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT2,
                0x0C100,
                "vf2id.t",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vf2id_q as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r4000allegrex_q_vd,
                Operand::r4000allegrex_q_vs,
                Operand::r4000allegrex_power_of_two,
            ),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vf2id_q,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT2,
                0x0C101,
                "vf2id.q",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vi2f_s as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r4000allegrex_s_vd,
                Operand::r4000allegrex_s_vs,
                Operand::r4000allegrex_power_of_two,
            ),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vi2f_s,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT2,
                0x10000,
                "vi2f.s",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vi2f_p as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r4000allegrex_p_vd,
                Operand::r4000allegrex_p_vs,
                Operand::r4000allegrex_power_of_two,
            ),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vi2f_p,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT2,
                0x10001,
                "vi2f.p",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vi2f_t as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r4000allegrex_t_vd,
                Operand::r4000allegrex_t_vs,
                Operand::r4000allegrex_power_of_two,
            ),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vi2f_t,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT2,
                0x10100,
                "vi2f.t",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vi2f_q as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r4000allegrex_q_vd,
                Operand::r4000allegrex_q_vs,
                Operand::r4000allegrex_power_of_two,
            ),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vi2f_q,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT2,
                0x10101,
                "vi2f.q",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }

    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vcmovt_s as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r4000allegrex_s_vd,
                Operand::r4000allegrex_s_vs,
                Operand::r4000allegrex_vfpu_cc_bit,
            ),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vcmovt_s,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT2_CNDMOVE,
                0x00000,
                "vcmovt.s",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vcmovt_p as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r4000allegrex_p_vd,
                Operand::r4000allegrex_p_vs,
                Operand::r4000allegrex_vfpu_cc_bit,
            ),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vcmovt_p,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT2_CNDMOVE,
                0x00001,
                "vcmovt.p",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vcmovt_t as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r4000allegrex_t_vd,
                Operand::r4000allegrex_t_vs,
                Operand::r4000allegrex_vfpu_cc_bit,
            ),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vcmovt_t,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT2_CNDMOVE,
                0x00100,
                "vcmovt.t",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vcmovt_q as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r4000allegrex_q_vd,
                Operand::r4000allegrex_q_vs,
                Operand::r4000allegrex_vfpu_cc_bit,
            ),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vcmovt_q,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT2_CNDMOVE,
                0x00101,
                "vcmovt.q",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vcmovf_s as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r4000allegrex_s_vd,
                Operand::r4000allegrex_s_vs,
                Operand::r4000allegrex_vfpu_cc_bit,
            ),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vcmovf_s,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT2_CNDMOVE,
                0x01000,
                "vcmovf.s",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vcmovf_p as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r4000allegrex_p_vd,
                Operand::r4000allegrex_p_vs,
                Operand::r4000allegrex_vfpu_cc_bit,
            ),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vcmovf_p,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT2_CNDMOVE,
                0x01001,
                "vcmovf.p",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vcmovf_t as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r4000allegrex_t_vd,
                Operand::r4000allegrex_t_vs,
                Operand::r4000allegrex_vfpu_cc_bit,
            ),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vcmovf_t,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT2_CNDMOVE,
                0x01100,
                "vcmovf.t",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vcmovf_q as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r4000allegrex_q_vd,
                Operand::r4000allegrex_q_vs,
                Operand::r4000allegrex_vfpu_cc_bit,
            ),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vcmovf_q,
                OpcodeCategory::R4000ALLEGREX_VFPU4_FMT2_CNDMOVE,
                0x01101,
                "vcmovf.q",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vpfxs as usize] = OpcodeDescriptor {
            operands: Operand::arr4(
                Operand::r4000allegrex_rpx,
                Operand::r4000allegrex_rpy,
                Operand::r4000allegrex_rpz,
                Operand::r4000allegrex_rpw,
            ),
            instr_type: InstrType::UNKNOWN,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vpfxs,
                OpcodeCategory::R4000ALLEGREX_VFPU5,
                0x00,
                "vpfxs",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vpfxt as usize] = OpcodeDescriptor {
            operands: Operand::arr4(
                Operand::r4000allegrex_rpx,
                Operand::r4000allegrex_rpy,
                Operand::r4000allegrex_rpz,
                Operand::r4000allegrex_rpw,
            ),
            instr_type: InstrType::UNKNOWN,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vpfxt,
                OpcodeCategory::R4000ALLEGREX_VFPU5,
                0x02,
                "vpfxt",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vpfxd as usize] = OpcodeDescriptor {
            operands: Operand::arr4(
                Operand::r4000allegrex_wpx,
                Operand::r4000allegrex_wpy,
                Operand::r4000allegrex_wpz,
                Operand::r4000allegrex_wpw,
            ),
            instr_type: InstrType::UNKNOWN,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vpfxd,
                OpcodeCategory::R4000ALLEGREX_VFPU5,
                0x04,
                "vpfxd",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_viim_s as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r4000allegrex_s_vt, Operand::r4000allegrex_int16),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_viim_s,
                OpcodeCategory::R4000ALLEGREX_VFPU5,
                0x6,
                "viim.s",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vfim_s as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r4000allegrex_s_vt, Operand::r4000allegrex_float16),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vfim_s,
                OpcodeCategory::R4000ALLEGREX_VFPU5,
                0x7,
                "vfim.s",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vmmul_p as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r4000allegrex_mp_vd,
                Operand::r4000allegrex_mp_vs_transpose,
                Operand::r4000allegrex_mp_vt,
            ),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vmmul_p,
                OpcodeCategory::R4000ALLEGREX_VFPU6,
                0x00001,
                "vmmul.p",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vmmul_t as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r4000allegrex_mt_vd,
                Operand::r4000allegrex_mt_vs_transpose,
                Operand::r4000allegrex_mt_vt,
            ),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vmmul_t,
                OpcodeCategory::R4000ALLEGREX_VFPU6,
                0x00100,
                "vmmul.t",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vmmul_q as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r4000allegrex_mq_vd,
                Operand::r4000allegrex_mq_vs_transpose,
                Operand::r4000allegrex_mq_vt,
            ),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vmmul_q,
                OpcodeCategory::R4000ALLEGREX_VFPU6,
                0x00101,
                "vmmul.q",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vhtfm2_p as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r4000allegrex_p_vd,
                Operand::r4000allegrex_mp_vs,
                Operand::r4000allegrex_p_vt,
            ),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vhtfm2_p,
                OpcodeCategory::R4000ALLEGREX_VFPU6,
                0x10000,
                "vhtfm2.p",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vtfm2_p as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r4000allegrex_p_vd,
                Operand::r4000allegrex_mp_vs,
                Operand::r4000allegrex_p_vt,
            ),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vtfm2_p,
                OpcodeCategory::R4000ALLEGREX_VFPU6,
                0x10001,
                "vtfm2.p",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vhtfm3_t as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r4000allegrex_t_vd,
                Operand::r4000allegrex_mt_vs,
                Operand::r4000allegrex_t_vt,
            ),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vhtfm3_t,
                OpcodeCategory::R4000ALLEGREX_VFPU6,
                0x20001,
                "vhtfm3.t",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vtfm3_t as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r4000allegrex_t_vd,
                Operand::r4000allegrex_mt_vs,
                Operand::r4000allegrex_t_vt,
            ),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vtfm3_t,
                OpcodeCategory::R4000ALLEGREX_VFPU6,
                0x20100,
                "vtfm3.t",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vhtfm4_q as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r4000allegrex_q_vd,
                Operand::r4000allegrex_mq_vs,
                Operand::r4000allegrex_q_vt,
            ),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vhtfm4_q,
                OpcodeCategory::R4000ALLEGREX_VFPU6,
                0x30100,
                "vhtfm4.q",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vtfm4_q as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r4000allegrex_q_vd,
                Operand::r4000allegrex_mq_vs,
                Operand::r4000allegrex_q_vt,
            ),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vtfm4_q,
                OpcodeCategory::R4000ALLEGREX_VFPU6,
                0x30101,
                "vtfm4.q",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vmscl_p as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r4000allegrex_mp_vd,
                Operand::r4000allegrex_mp_vs,
                Operand::r4000allegrex_s_vt,
            ),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vmscl_p,
                OpcodeCategory::R4000ALLEGREX_VFPU6,
                0x40001,
                "vmscl.p",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vmscl_t as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r4000allegrex_mt_vd,
                Operand::r4000allegrex_mt_vs,
                Operand::r4000allegrex_s_vt,
            ),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vmscl_t,
                OpcodeCategory::R4000ALLEGREX_VFPU6,
                0x40100,
                "vmscl.t",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vmscl_q as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r4000allegrex_mq_vd,
                Operand::r4000allegrex_mq_vs,
                Operand::r4000allegrex_s_vt,
            ),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vmscl_q,
                OpcodeCategory::R4000ALLEGREX_VFPU6,
                0x40101,
                "vmscl.q",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vcrsp_t as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r4000allegrex_t_vd,
                Operand::r4000allegrex_t_vs,
                Operand::r4000allegrex_t_vt,
            ),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vcrsp_t,
                OpcodeCategory::R4000ALLEGREX_VFPU6,
                0x50100,
                "vcrsp.t",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vqmul_q as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r4000allegrex_q_vd,
                Operand::r4000allegrex_q_vs,
                Operand::r4000allegrex_q_vt,
            ),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vqmul_q,
                OpcodeCategory::R4000ALLEGREX_VFPU6,
                0x50101,
                "vqmul.q",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }

    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vrot_p as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r4000allegrex_p_vd,
                Operand::r4000allegrex_s_vs,
                Operand::r4000allegrex_p_vrot_code,
            ),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vrot_p,
                OpcodeCategory::R4000ALLEGREX_VFPU6_FMT7,
                0x04001,
                "vrot.p",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vrot_t as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r4000allegrex_t_vd,
                Operand::r4000allegrex_s_vs,
                Operand::r4000allegrex_t_vrot_code,
            ),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vrot_t,
                OpcodeCategory::R4000ALLEGREX_VFPU6_FMT7,
                0x04100,
                "vrot.t",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vrot_q as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r4000allegrex_q_vd,
                Operand::r4000allegrex_s_vs,
                Operand::r4000allegrex_q_vrot_code,
            ),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vrot_q,
                OpcodeCategory::R4000ALLEGREX_VFPU6_FMT7,
                0x04101,
                "vrot.q",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }

    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vmmov_p as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r4000allegrex_mp_vd, Operand::r4000allegrex_mp_vs),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vmmov_p,
                OpcodeCategory::R4000ALLEGREX_VFPU6_FMT7_FMT0,
                0x0001,
                "vmmov.p",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vmmov_t as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r4000allegrex_mt_vd, Operand::r4000allegrex_mt_vs),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vmmov_t,
                OpcodeCategory::R4000ALLEGREX_VFPU6_FMT7_FMT0,
                0x0100,
                "vmmov.t",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vmmov_q as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r4000allegrex_mq_vd, Operand::r4000allegrex_mq_vs),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vmmov_q,
                OpcodeCategory::R4000ALLEGREX_VFPU6_FMT7_FMT0,
                0x0101,
                "vmmov.q",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vmidt_p as usize] = OpcodeDescriptor {
            operands: Operand::arr1(Operand::r4000allegrex_mp_vd),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vmidt_p,
                OpcodeCategory::R4000ALLEGREX_VFPU6_FMT7_FMT0,
                0x0601,
                "vmidt.p",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vmidt_t as usize] = OpcodeDescriptor {
            operands: Operand::arr1(Operand::r4000allegrex_mt_vd),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vmidt_t,
                OpcodeCategory::R4000ALLEGREX_VFPU6_FMT7_FMT0,
                0x0700,
                "vmidt.t",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vmidt_q as usize] = OpcodeDescriptor {
            operands: Operand::arr1(Operand::r4000allegrex_mq_vd),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vmidt_q,
                OpcodeCategory::R4000ALLEGREX_VFPU6_FMT7_FMT0,
                0x0701,
                "vmidt.q",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vmzero_p as usize] = OpcodeDescriptor {
            operands: Operand::arr1(Operand::r4000allegrex_mp_vd),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vmzero_p,
                OpcodeCategory::R4000ALLEGREX_VFPU6_FMT7_FMT0,
                0x0C01,
                "vmzero.p",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vmzero_t as usize] = OpcodeDescriptor {
            operands: Operand::arr1(Operand::r4000allegrex_mt_vd),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vmzero_t,
                OpcodeCategory::R4000ALLEGREX_VFPU6_FMT7_FMT0,
                0x0D00,
                "vmzero.t",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vmzero_q as usize] = OpcodeDescriptor {
            operands: Operand::arr1(Operand::r4000allegrex_mq_vd),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vmzero_q,
                OpcodeCategory::R4000ALLEGREX_VFPU6_FMT7_FMT0,
                0x0D01,
                "vmzero.q",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vmone_p as usize] = OpcodeDescriptor {
            operands: Operand::arr1(Operand::r4000allegrex_mp_vd),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vmone_p,
                OpcodeCategory::R4000ALLEGREX_VFPU6_FMT7_FMT0,
                0x0E01,
                "vmone.p",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vmone_t as usize] = OpcodeDescriptor {
            operands: Operand::arr1(Operand::r4000allegrex_mt_vd),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vmone_t,
                OpcodeCategory::R4000ALLEGREX_VFPU6_FMT7_FMT0,
                0x0F00,
                "vmone.t",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vmone_q as usize] = OpcodeDescriptor {
            operands: Operand::arr1(Operand::r4000allegrex_mq_vd),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vmone_q,
                OpcodeCategory::R4000ALLEGREX_VFPU6_FMT7_FMT0,
                0x0F01,
                "vmone.q",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vnop as usize] = OpcodeDescriptor {
            operands: Operand::arr0(),
            instr_type: InstrType::UNKNOWN,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vnop,
                OpcodeCategory::R4000ALLEGREX_VFPU7,
                0x3FF0000,
                "vnop",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vsync as usize] = OpcodeDescriptor {
            operands: Operand::arr0(),
            instr_type: InstrType::UNKNOWN,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vsync,
                OpcodeCategory::R4000ALLEGREX_VFPU7,
                0x3FF0320,
                "vsync",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_vflush as usize] = OpcodeDescriptor {
            operands: Operand::arr0(),
            instr_type: InstrType::UNKNOWN,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_vflush,
                OpcodeCategory::R4000ALLEGREX_VFPU7,
                0x3FF040D,
                "vflush",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_svl_q as usize] = OpcodeDescriptor {
            operands: Operand::arr2(
                Operand::r4000allegrex_q_vt_imm,
                Operand::r4000allegrex_offset14_rs,
            ),
            instr_type: InstrType::I,
            reads_rs: true,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_svl_q,
                OpcodeCategory::R4000ALLEGREX_QUADLR,
                0x0,
                "svl.q",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R4000ALLEGREX")]
    {
        table[Opcode::r4000allegrex_svr_q as usize] = OpcodeDescriptor {
            operands: Operand::arr2(
                Operand::r4000allegrex_q_vt_imm,
                Operand::r4000allegrex_offset14_rs,
            ),
            instr_type: InstrType::I,
            reads_rs: true,
            ..OpcodeDescriptor::new(
                Opcode::r4000allegrex_svr_q,
                OpcodeCategory::R4000ALLEGREX_QUADLR,
                0x1,
                "svr.q",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R4000ALLEGREX),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_lq as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_rt, Operand::core_imm_rs),
            instr_type: InstrType::I,
            modifies_rt: true,
            reads_rs: true,
            can_be_lo: true,
            does_dereference: true,
            does_load: true,
            access_type: Some(AccessType::QUADWORD),
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_lq,
                OpcodeCategory::R5900EE_NORMAL,
                0x1E,
                "lq",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_sq as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_rt, Operand::core_imm_rs),
            instr_type: InstrType::I,
            reads_rs: true,
            reads_rt: true,
            can_be_lo: true,
            does_dereference: true,
            does_store: true,
            access_type: Some(AccessType::QUADWORD),
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_sq,
                OpcodeCategory::R5900EE_NORMAL,
                0x1F,
                "sq",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_lqc2 as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r5900ee_vft, Operand::core_imm_rs),
            reads_rs: true,
            can_be_lo: true,
            does_dereference: true,
            does_load: true,
            access_type: Some(AccessType::QUADWORD),
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_lqc2,
                OpcodeCategory::R5900EE_NORMAL,
                0x36,
                "lqc2",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_sqc2 as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r5900ee_vft, Operand::core_imm_rs),
            reads_rs: true,
            can_be_lo: true,
            does_dereference: true,
            does_store: true,
            access_type: Some(AccessType::QUADWORD),
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_sqc2,
                OpcodeCategory::R5900EE_NORMAL,
                0x3E,
                "sqc2",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }

    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_sync_p as usize] = OpcodeDescriptor {
            operands: Operand::arr0(),
            instr_type: InstrType::R,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_sync_p,
                OpcodeCategory::R5900EE_SPECIAL,
                0x0F,
                "sync.p",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_mult as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rd, Operand::core_rs, Operand::core_rt),
            instr_type: InstrType::R,
            modifies_rd: true,
            reads_rs: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_mult,
                OpcodeCategory::R5900EE_SPECIAL,
                0x18,
                "mult",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_mfsa as usize] = OpcodeDescriptor {
            operands: Operand::arr1(Operand::core_rd),
            modifies_rd: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_mfsa,
                OpcodeCategory::R5900EE_SPECIAL,
                0x28,
                "mfsa",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_mtsa as usize] = OpcodeDescriptor {
            operands: Operand::arr1(Operand::core_rs),
            reads_rs: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_mtsa,
                OpcodeCategory::R5900EE_SPECIAL,
                0x29,
                "mtsa",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }

    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_mtsab as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_rs, Operand::core_imm_i16),
            instr_type: InstrType::REGIMM,
            reads_rs: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_mtsab,
                OpcodeCategory::R5900EE_REGIMM,
                0x18,
                "mtsab",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_mtsah as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_rs, Operand::core_imm_i16),
            instr_type: InstrType::REGIMM,
            reads_rs: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_mtsah,
                OpcodeCategory::R5900EE_REGIMM,
                0x19,
                "mtsah",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }

    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_madd as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rd, Operand::core_rs, Operand::core_rt),
            modifies_rd: true,
            reads_rs: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_madd,
                OpcodeCategory::R5900EE_MMI,
                0x00,
                "madd",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_maddu as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rd, Operand::core_rs, Operand::core_rt),
            modifies_rd: true,
            reads_rs: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_maddu,
                OpcodeCategory::R5900EE_MMI,
                0x01,
                "maddu",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_plzcw as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_rd, Operand::core_rs),
            modifies_rd: true,
            reads_rs: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_plzcw,
                OpcodeCategory::R5900EE_MMI,
                0x04,
                "plzcw",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_mfhi1 as usize] = OpcodeDescriptor {
            operands: Operand::arr1(Operand::core_rd),
            modifies_rd: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_mfhi1,
                OpcodeCategory::R5900EE_MMI,
                0x10,
                "mfhi1",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_mthi1 as usize] = OpcodeDescriptor {
            operands: Operand::arr1(Operand::core_rs),
            reads_rs: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_mthi1,
                OpcodeCategory::R5900EE_MMI,
                0x11,
                "mthi1",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_mflo1 as usize] = OpcodeDescriptor {
            operands: Operand::arr1(Operand::core_rd),
            reads_rd: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_mflo1,
                OpcodeCategory::R5900EE_MMI,
                0x12,
                "mflo1",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_mtlo1 as usize] = OpcodeDescriptor {
            operands: Operand::arr1(Operand::core_rs),
            reads_rs: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_mtlo1,
                OpcodeCategory::R5900EE_MMI,
                0x13,
                "mtlo1",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_mult1 as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rd, Operand::core_rs, Operand::core_rt),
            modifies_rd: true,
            reads_rs: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_mult1,
                OpcodeCategory::R5900EE_MMI,
                0x18,
                "mult1",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_multu1 as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rd, Operand::core_rs, Operand::core_rt),
            modifies_rd: true,
            reads_rs: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_multu1,
                OpcodeCategory::R5900EE_MMI,
                0x19,
                "multu1",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_div1 as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_zero, Operand::core_rs, Operand::core_rt),
            reads_rs: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_div1,
                OpcodeCategory::R5900EE_MMI,
                0x1A,
                "div1",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_divu1 as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_zero, Operand::core_rs, Operand::core_rt),
            reads_rs: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_divu1,
                OpcodeCategory::R5900EE_MMI,
                0x1B,
                "divu1",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_madd1 as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rd, Operand::core_rs, Operand::core_rt),
            modifies_rd: true,
            reads_rs: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_madd1,
                OpcodeCategory::R5900EE_MMI,
                0x20,
                "madd1",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_maddu1 as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rd, Operand::core_rs, Operand::core_rt),
            modifies_rd: true,
            reads_rs: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_maddu1,
                OpcodeCategory::R5900EE_MMI,
                0x21,
                "maddu1",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_psllh as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rd, Operand::core_rt, Operand::core_sa),
            modifies_rd: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_psllh,
                OpcodeCategory::R5900EE_MMI,
                0x34,
                "psllh",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_psrlh as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rd, Operand::core_rt, Operand::core_sa),
            modifies_rd: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_psrlh,
                OpcodeCategory::R5900EE_MMI,
                0x36,
                "psrlh",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_psrah as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rd, Operand::core_rt, Operand::core_sa),
            modifies_rd: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_psrah,
                OpcodeCategory::R5900EE_MMI,
                0x37,
                "psrah",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_psllw as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rd, Operand::core_rt, Operand::core_sa),
            modifies_rd: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_psllw,
                OpcodeCategory::R5900EE_MMI,
                0x3C,
                "psllw",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_psrlw as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rd, Operand::core_rt, Operand::core_sa),
            modifies_rd: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_psrlw,
                OpcodeCategory::R5900EE_MMI,
                0x3E,
                "psrlw",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_psraw as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rd, Operand::core_rt, Operand::core_sa),
            modifies_rd: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_psraw,
                OpcodeCategory::R5900EE_MMI,
                0x3F,
                "psraw",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }

    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_paddw as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rd, Operand::core_rs, Operand::core_rt),
            modifies_rd: true,
            reads_rs: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_paddw,
                OpcodeCategory::R5900EE_MMI_0,
                0x00,
                "paddw",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_psubw as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rd, Operand::core_rs, Operand::core_rt),
            modifies_rd: true,
            reads_rs: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_psubw,
                OpcodeCategory::R5900EE_MMI_0,
                0x01,
                "psubw",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_pcgtw as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rd, Operand::core_rs, Operand::core_rt),
            modifies_rd: true,
            reads_rs: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_pcgtw,
                OpcodeCategory::R5900EE_MMI_0,
                0x02,
                "pcgtw",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_pmaxw as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rd, Operand::core_rs, Operand::core_rt),
            modifies_rd: true,
            reads_rs: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_pmaxw,
                OpcodeCategory::R5900EE_MMI_0,
                0x03,
                "pmaxw",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_paddh as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rd, Operand::core_rs, Operand::core_rt),
            modifies_rd: true,
            reads_rs: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_paddh,
                OpcodeCategory::R5900EE_MMI_0,
                0x04,
                "paddh",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_psubh as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rd, Operand::core_rs, Operand::core_rt),
            modifies_rd: true,
            reads_rs: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_psubh,
                OpcodeCategory::R5900EE_MMI_0,
                0x05,
                "psubh",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_pcgth as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rd, Operand::core_rs, Operand::core_rt),
            modifies_rd: true,
            reads_rs: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_pcgth,
                OpcodeCategory::R5900EE_MMI_0,
                0x06,
                "pcgth",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_pmaxh as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rd, Operand::core_rs, Operand::core_rt),
            modifies_rd: true,
            reads_rs: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_pmaxh,
                OpcodeCategory::R5900EE_MMI_0,
                0x07,
                "pmaxh",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_paddb as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rd, Operand::core_rs, Operand::core_rt),
            modifies_rd: true,
            reads_rs: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_paddb,
                OpcodeCategory::R5900EE_MMI_0,
                0x08,
                "paddb",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_psubb as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rd, Operand::core_rs, Operand::core_rt),
            modifies_rd: true,
            reads_rs: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_psubb,
                OpcodeCategory::R5900EE_MMI_0,
                0x09,
                "psubb",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_pcgtb as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rd, Operand::core_rs, Operand::core_rt),
            modifies_rd: true,
            reads_rs: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_pcgtb,
                OpcodeCategory::R5900EE_MMI_0,
                0x0A,
                "pcgtb",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_paddsw as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rd, Operand::core_rs, Operand::core_rt),
            modifies_rd: true,
            reads_rs: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_paddsw,
                OpcodeCategory::R5900EE_MMI_0,
                0x10,
                "paddsw",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_psubsw as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rd, Operand::core_rs, Operand::core_rt),
            modifies_rd: true,
            reads_rs: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_psubsw,
                OpcodeCategory::R5900EE_MMI_0,
                0x11,
                "psubsw",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_pextlw as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rd, Operand::core_rs, Operand::core_rt),
            modifies_rd: true,
            reads_rs: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_pextlw,
                OpcodeCategory::R5900EE_MMI_0,
                0x12,
                "pextlw",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_ppacw as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rd, Operand::core_rs, Operand::core_rt),
            modifies_rd: true,
            reads_rs: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_ppacw,
                OpcodeCategory::R5900EE_MMI_0,
                0x13,
                "ppacw",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_paddsh as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rd, Operand::core_rs, Operand::core_rt),
            modifies_rd: true,
            reads_rs: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_paddsh,
                OpcodeCategory::R5900EE_MMI_0,
                0x14,
                "paddsh",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_psubsh as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rd, Operand::core_rs, Operand::core_rt),
            modifies_rd: true,
            reads_rs: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_psubsh,
                OpcodeCategory::R5900EE_MMI_0,
                0x15,
                "psubsh",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_pextlh as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rd, Operand::core_rs, Operand::core_rt),
            modifies_rd: true,
            reads_rs: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_pextlh,
                OpcodeCategory::R5900EE_MMI_0,
                0x16,
                "pextlh",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_ppach as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rd, Operand::core_rs, Operand::core_rt),
            modifies_rd: true,
            reads_rs: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_ppach,
                OpcodeCategory::R5900EE_MMI_0,
                0x17,
                "ppach",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_paddsb as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rd, Operand::core_rs, Operand::core_rt),
            modifies_rd: true,
            reads_rs: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_paddsb,
                OpcodeCategory::R5900EE_MMI_0,
                0x18,
                "paddsb",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_psubsb as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rd, Operand::core_rs, Operand::core_rt),
            modifies_rd: true,
            reads_rs: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_psubsb,
                OpcodeCategory::R5900EE_MMI_0,
                0x19,
                "psubsb",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_pextlb as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rd, Operand::core_rs, Operand::core_rt),
            modifies_rd: true,
            reads_rs: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_pextlb,
                OpcodeCategory::R5900EE_MMI_0,
                0x1A,
                "pextlb",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_ppacb as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rd, Operand::core_rs, Operand::core_rt),
            modifies_rd: true,
            reads_rs: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_ppacb,
                OpcodeCategory::R5900EE_MMI_0,
                0x1B,
                "ppacb",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_pext5 as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_rd, Operand::core_rt),
            modifies_rd: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_pext5,
                OpcodeCategory::R5900EE_MMI_0,
                0x1E,
                "pext5",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_ppac5 as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_rd, Operand::core_rt),
            modifies_rd: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_ppac5,
                OpcodeCategory::R5900EE_MMI_0,
                0x1F,
                "ppac5",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_pabsw as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_rd, Operand::core_rt),
            modifies_rd: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_pabsw,
                OpcodeCategory::R5900EE_MMI_1,
                0x01,
                "pabsw",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_pceqw as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rd, Operand::core_rs, Operand::core_rt),
            modifies_rd: true,
            reads_rs: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_pceqw,
                OpcodeCategory::R5900EE_MMI_1,
                0x02,
                "pceqw",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_pminw as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rd, Operand::core_rs, Operand::core_rt),
            modifies_rd: true,
            reads_rs: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_pminw,
                OpcodeCategory::R5900EE_MMI_1,
                0x03,
                "pminw",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_padsbh as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rd, Operand::core_rs, Operand::core_rt),
            modifies_rd: true,
            reads_rs: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_padsbh,
                OpcodeCategory::R5900EE_MMI_1,
                0x04,
                "padsbh",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_pabsh as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_rd, Operand::core_rt),
            modifies_rd: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_pabsh,
                OpcodeCategory::R5900EE_MMI_1,
                0x05,
                "pabsh",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_pceqh as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rd, Operand::core_rs, Operand::core_rt),
            modifies_rd: true,
            reads_rs: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_pceqh,
                OpcodeCategory::R5900EE_MMI_1,
                0x06,
                "pceqh",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_pminh as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rd, Operand::core_rs, Operand::core_rt),
            modifies_rd: true,
            reads_rs: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_pminh,
                OpcodeCategory::R5900EE_MMI_1,
                0x07,
                "pminh",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_pceqb as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rd, Operand::core_rs, Operand::core_rt),
            modifies_rd: true,
            reads_rs: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_pceqb,
                OpcodeCategory::R5900EE_MMI_1,
                0x0A,
                "pceqb",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_padduw as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rd, Operand::core_rs, Operand::core_rt),
            modifies_rd: true,
            reads_rs: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_padduw,
                OpcodeCategory::R5900EE_MMI_1,
                0x10,
                "padduw",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_psubuw as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rd, Operand::core_rs, Operand::core_rt),
            modifies_rd: true,
            reads_rs: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_psubuw,
                OpcodeCategory::R5900EE_MMI_1,
                0x11,
                "psubuw",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_pextuw as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rd, Operand::core_rs, Operand::core_rt),
            modifies_rd: true,
            reads_rs: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_pextuw,
                OpcodeCategory::R5900EE_MMI_1,
                0x12,
                "pextuw",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_padduh as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rd, Operand::core_rs, Operand::core_rt),
            modifies_rd: true,
            reads_rs: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_padduh,
                OpcodeCategory::R5900EE_MMI_1,
                0x14,
                "padduh",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_psubuh as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rd, Operand::core_rs, Operand::core_rt),
            modifies_rd: true,
            reads_rs: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_psubuh,
                OpcodeCategory::R5900EE_MMI_1,
                0x15,
                "psubuh",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_pextuh as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rd, Operand::core_rs, Operand::core_rt),
            modifies_rd: true,
            reads_rs: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_pextuh,
                OpcodeCategory::R5900EE_MMI_1,
                0x16,
                "pextuh",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_paddub as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rd, Operand::core_rs, Operand::core_rt),
            modifies_rd: true,
            reads_rs: true,
            reads_rt: true,
            adds_registers: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_paddub,
                OpcodeCategory::R5900EE_MMI_1,
                0x18,
                "paddub",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_psubub as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rd, Operand::core_rs, Operand::core_rt),
            modifies_rd: true,
            reads_rs: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_psubub,
                OpcodeCategory::R5900EE_MMI_1,
                0x19,
                "psubub",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_pextub as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rd, Operand::core_rs, Operand::core_rt),
            modifies_rd: true,
            reads_rs: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_pextub,
                OpcodeCategory::R5900EE_MMI_1,
                0x1A,
                "pextub",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_qfsrv as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rd, Operand::core_rs, Operand::core_rt),
            modifies_rd: true,
            reads_rs: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_qfsrv,
                OpcodeCategory::R5900EE_MMI_1,
                0x1B,
                "qfsrv",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_pmaddw as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rd, Operand::core_rs, Operand::core_rt),
            modifies_rd: true,
            reads_rs: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_pmaddw,
                OpcodeCategory::R5900EE_MMI_2,
                0x00,
                "pmaddw",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_psllvw as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rd, Operand::core_rt, Operand::core_rs),
            modifies_rd: true,
            reads_rs: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_psllvw,
                OpcodeCategory::R5900EE_MMI_2,
                0x02,
                "psllvw",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_psrlvw as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rd, Operand::core_rt, Operand::core_rs),
            modifies_rd: true,
            reads_rs: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_psrlvw,
                OpcodeCategory::R5900EE_MMI_2,
                0x03,
                "psrlvw",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_pmsubw as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rd, Operand::core_rs, Operand::core_rt),
            modifies_rd: true,
            reads_rs: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_pmsubw,
                OpcodeCategory::R5900EE_MMI_2,
                0x04,
                "pmsubw",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_pmfhi as usize] = OpcodeDescriptor {
            operands: Operand::arr1(Operand::core_rd),
            modifies_rd: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_pmfhi,
                OpcodeCategory::R5900EE_MMI_2,
                0x08,
                "pmfhi",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_pmflo as usize] = OpcodeDescriptor {
            operands: Operand::arr1(Operand::core_rd),
            modifies_rd: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_pmflo,
                OpcodeCategory::R5900EE_MMI_2,
                0x09,
                "pmflo",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_pinth as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rd, Operand::core_rs, Operand::core_rt),
            modifies_rd: true,
            reads_rs: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_pinth,
                OpcodeCategory::R5900EE_MMI_2,
                0x0A,
                "pinth",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_pmultw as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rd, Operand::core_rs, Operand::core_rt),
            modifies_rd: true,
            reads_rs: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_pmultw,
                OpcodeCategory::R5900EE_MMI_2,
                0x0C,
                "pmultw",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_pdivw as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_rs, Operand::core_rt),
            reads_rs: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_pdivw,
                OpcodeCategory::R5900EE_MMI_2,
                0x0D,
                "pdivw",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_pcpyld as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rd, Operand::core_rs, Operand::core_rt),
            modifies_rd: true,
            reads_rs: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_pcpyld,
                OpcodeCategory::R5900EE_MMI_2,
                0x0E,
                "pcpyld",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_pmaddh as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rd, Operand::core_rs, Operand::core_rt),
            modifies_rd: true,
            reads_rs: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_pmaddh,
                OpcodeCategory::R5900EE_MMI_2,
                0x10,
                "pmaddh",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_phmadh as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rd, Operand::core_rs, Operand::core_rt),
            modifies_rd: true,
            reads_rs: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_phmadh,
                OpcodeCategory::R5900EE_MMI_2,
                0x11,
                "phmadh",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_pand as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rd, Operand::core_rs, Operand::core_rt),
            modifies_rd: true,
            reads_rs: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_pand,
                OpcodeCategory::R5900EE_MMI_2,
                0x12,
                "pand",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_pxor as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rd, Operand::core_rs, Operand::core_rt),
            modifies_rd: true,
            reads_rs: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_pxor,
                OpcodeCategory::R5900EE_MMI_2,
                0x13,
                "pxor",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_pmsubh as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rd, Operand::core_rs, Operand::core_rt),
            modifies_rd: true,
            reads_rs: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_pmsubh,
                OpcodeCategory::R5900EE_MMI_2,
                0x14,
                "pmsubh",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_phmsbh as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rd, Operand::core_rs, Operand::core_rt),
            modifies_rd: true,
            reads_rs: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_phmsbh,
                OpcodeCategory::R5900EE_MMI_2,
                0x15,
                "phmsbh",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_pexeh as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_rd, Operand::core_rt),
            modifies_rd: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_pexeh,
                OpcodeCategory::R5900EE_MMI_2,
                0x1A,
                "pexeh",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_prevh as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_rd, Operand::core_rt),
            modifies_rd: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_prevh,
                OpcodeCategory::R5900EE_MMI_2,
                0x1B,
                "prevh",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_pmulth as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rd, Operand::core_rs, Operand::core_rt),
            modifies_rd: true,
            reads_rs: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_pmulth,
                OpcodeCategory::R5900EE_MMI_2,
                0x1C,
                "pmulth",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_pdivbw as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_rs, Operand::core_rt),
            reads_rs: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_pdivbw,
                OpcodeCategory::R5900EE_MMI_2,
                0x1D,
                "pdivbw",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_pexew as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_rd, Operand::core_rt),
            modifies_rd: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_pexew,
                OpcodeCategory::R5900EE_MMI_2,
                0x1E,
                "pexew",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_prot3w as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_rd, Operand::core_rt),
            modifies_rd: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_prot3w,
                OpcodeCategory::R5900EE_MMI_2,
                0x1F,
                "prot3w",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_pmadduw as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rd, Operand::core_rs, Operand::core_rt),
            modifies_rd: true,
            reads_rs: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_pmadduw,
                OpcodeCategory::R5900EE_MMI_3,
                0x00,
                "pmadduw",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_psravw as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rd, Operand::core_rt, Operand::core_rs),
            modifies_rd: true,
            reads_rs: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_psravw,
                OpcodeCategory::R5900EE_MMI_3,
                0x03,
                "psravw",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_pmthi as usize] = OpcodeDescriptor {
            operands: Operand::arr1(Operand::core_rs),
            reads_rs: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_pmthi,
                OpcodeCategory::R5900EE_MMI_3,
                0x08,
                "pmthi",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_pmtlo as usize] = OpcodeDescriptor {
            operands: Operand::arr1(Operand::core_rs),
            reads_rs: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_pmtlo,
                OpcodeCategory::R5900EE_MMI_3,
                0x09,
                "pmtlo",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_pinteh as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rd, Operand::core_rs, Operand::core_rt),
            modifies_rd: true,
            reads_rs: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_pinteh,
                OpcodeCategory::R5900EE_MMI_3,
                0x0A,
                "pinteh",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_pmultuw as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rd, Operand::core_rs, Operand::core_rt),
            modifies_rd: true,
            reads_rs: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_pmultuw,
                OpcodeCategory::R5900EE_MMI_3,
                0x0C,
                "pmultuw",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_pdivuw as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_rs, Operand::core_rt),
            reads_rs: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_pdivuw,
                OpcodeCategory::R5900EE_MMI_3,
                0x0D,
                "pdivuw",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_pcpyud as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rd, Operand::core_rs, Operand::core_rt),
            modifies_rd: true,
            reads_rs: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_pcpyud,
                OpcodeCategory::R5900EE_MMI_3,
                0x0E,
                "pcpyud",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_por as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rd, Operand::core_rs, Operand::core_rt),
            modifies_rd: true,
            reads_rs: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_por,
                OpcodeCategory::R5900EE_MMI_3,
                0x12,
                "por",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_pnor as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_rd, Operand::core_rs, Operand::core_rt),
            modifies_rd: true,
            reads_rs: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_pnor,
                OpcodeCategory::R5900EE_MMI_3,
                0x13,
                "pnor",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_pexch as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_rd, Operand::core_rt),
            modifies_rd: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_pexch,
                OpcodeCategory::R5900EE_MMI_3,
                0x1A,
                "pexch",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_pcpyh as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_rd, Operand::core_rt),
            modifies_rd: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_pcpyh,
                OpcodeCategory::R5900EE_MMI_3,
                0x1B,
                "pcpyh",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_pexcw as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_rd, Operand::core_rt),
            modifies_rd: true,
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_pexcw,
                OpcodeCategory::R5900EE_MMI_3,
                0x1E,
                "pexcw",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_pmfhl_lw as usize] = OpcodeDescriptor {
            operands: Operand::arr1(Operand::core_rd),
            modifies_rd: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_pmfhl_lw,
                OpcodeCategory::R5900EE_MMI_PMFHL,
                0x00,
                "pmfhl.lw",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_pmfhl_uw as usize] = OpcodeDescriptor {
            operands: Operand::arr1(Operand::core_rd),
            modifies_rd: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_pmfhl_uw,
                OpcodeCategory::R5900EE_MMI_PMFHL,
                0x01,
                "pmfhl.uw",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_pmfhl_slw as usize] = OpcodeDescriptor {
            operands: Operand::arr1(Operand::core_rd),
            modifies_rd: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_pmfhl_slw,
                OpcodeCategory::R5900EE_MMI_PMFHL,
                0x02,
                "pmfhl.slw",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_pmfhl_lh as usize] = OpcodeDescriptor {
            operands: Operand::arr1(Operand::core_rd),
            modifies_rd: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_pmfhl_lh,
                OpcodeCategory::R5900EE_MMI_PMFHL,
                0x03,
                "pmfhl.lh",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_pmfhl_sh as usize] = OpcodeDescriptor {
            operands: Operand::arr1(Operand::core_rd),
            modifies_rd: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_pmfhl_sh,
                OpcodeCategory::R5900EE_MMI_PMFHL,
                0x04,
                "pmfhl.sh",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_pmthl_lw as usize] = OpcodeDescriptor {
            operands: Operand::arr1(Operand::core_rs),
            reads_rs: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_pmthl_lw,
                OpcodeCategory::R5900EE_MMI_PMTHL,
                0x00,
                "pmthl.lw",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }

    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_ei as usize] = OpcodeDescriptor {
            operands: Operand::arr0(),
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_ei,
                OpcodeCategory::R5900EE_COP0_TLB,
                0x38,
                "ei",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_di as usize] = OpcodeDescriptor {
            operands: Operand::arr0(),
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_di,
                OpcodeCategory::R5900EE_COP0_TLB,
                0x39,
                "di",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }

    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_c1__sqrt_s as usize] = OpcodeDescriptor {
            operands: Operand::arr1(Operand::core_copraw),
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_c1__sqrt_s,
                OpcodeCategory::R5900EE_COP1_FPUS,
                0x04,
                "c1",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_rsqrt_s as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_fd, Operand::core_fs, Operand::core_ft),
            is_float: true,
            modifies_fd: true,
            reads_fs: true,
            reads_ft: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_rsqrt_s,
                OpcodeCategory::R5900EE_COP1_FPUS,
                0x16,
                "rsqrt.s",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_adda_s as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_fs, Operand::core_ft),
            is_float: true,
            modifies_fs: true,
            reads_ft: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_adda_s,
                OpcodeCategory::R5900EE_COP1_FPUS,
                0x18,
                "adda.s",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_suba_s as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_fs, Operand::core_ft),
            is_float: true,
            modifies_fs: true,
            reads_ft: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_suba_s,
                OpcodeCategory::R5900EE_COP1_FPUS,
                0x19,
                "suba.s",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_mula_s as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_fs, Operand::core_ft),
            is_float: true,
            modifies_fs: true,
            reads_ft: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_mula_s,
                OpcodeCategory::R5900EE_COP1_FPUS,
                0x1A,
                "mula.s",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_madd_s as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_fd, Operand::core_fs, Operand::core_ft),
            is_float: true,
            modifies_fd: true,
            reads_fs: true,
            reads_ft: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_madd_s,
                OpcodeCategory::R5900EE_COP1_FPUS,
                0x1C,
                "madd.s",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_msub_s as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_fd, Operand::core_fs, Operand::core_ft),
            is_float: true,
            modifies_fd: true,
            reads_fs: true,
            reads_ft: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_msub_s,
                OpcodeCategory::R5900EE_COP1_FPUS,
                0x1D,
                "msub.s",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_madda_s as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_fs, Operand::core_ft),
            is_float: true,
            reads_fs: true,
            reads_ft: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_madda_s,
                OpcodeCategory::R5900EE_COP1_FPUS,
                0x1E,
                "madda.s",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_msuba_s as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_fs, Operand::core_ft),
            is_float: true,
            reads_fs: true,
            reads_ft: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_msuba_s,
                OpcodeCategory::R5900EE_COP1_FPUS,
                0x1F,
                "msuba.s",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_max_s as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_fd, Operand::core_fs, Operand::core_ft),
            is_float: true,
            modifies_fd: true,
            reads_fs: true,
            reads_ft: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_max_s,
                OpcodeCategory::R5900EE_COP1_FPUS,
                0x28,
                "max.s",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_min_s as usize] = OpcodeDescriptor {
            operands: Operand::arr3(Operand::core_fd, Operand::core_fs, Operand::core_ft),
            is_float: true,
            modifies_fd: true,
            reads_fs: true,
            reads_ft: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_min_s,
                OpcodeCategory::R5900EE_COP1_FPUS,
                0x29,
                "min.s",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_c_lt_s as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_fs, Operand::core_ft),
            is_float: true,
            reads_fs: true,
            reads_ft: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_c_lt_s,
                OpcodeCategory::R5900EE_COP1_FPUS,
                0x34,
                "c.lt.s",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_c_le_s as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_fs, Operand::core_ft),
            is_float: true,
            reads_fs: true,
            reads_ft: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_c_le_s,
                OpcodeCategory::R5900EE_COP1_FPUS,
                0x36,
                "c.le.s",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }

    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_qmfc2_ni as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_rt, Operand::r5900ee_vfs),
            modifies_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_qmfc2_ni,
                OpcodeCategory::R5900EE_COP2_NI,
                0x01,
                "qmfc2.ni",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_cfc2_ni as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_rt, Operand::r5900ee_vis),
            modifies_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_cfc2_ni,
                OpcodeCategory::R5900EE_COP2_NI,
                0x02,
                "cfc2.ni",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_qmtc2_ni as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_rt, Operand::r5900ee_vfs),
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_qmtc2_ni,
                OpcodeCategory::R5900EE_COP2_NI,
                0x05,
                "qmtc2.ni",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_ctc2_ni as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_rt, Operand::r5900ee_vis),
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_ctc2_ni,
                OpcodeCategory::R5900EE_COP2_NI,
                0x06,
                "ctc2.ni",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }

    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_qmfc2_i as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_rt, Operand::r5900ee_vfs),
            modifies_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_qmfc2_i,
                OpcodeCategory::R5900EE_COP2_I,
                0x01,
                "qmfc2.i",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_cfc2_i as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_rt, Operand::r5900ee_vis),
            modifies_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_cfc2_i,
                OpcodeCategory::R5900EE_COP2_I,
                0x02,
                "cfc2.i",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_qmtc2_i as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_rt, Operand::r5900ee_vfs),
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_qmtc2_i,
                OpcodeCategory::R5900EE_COP2_I,
                0x05,
                "qmtc2.i",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_ctc2_i as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::core_rt, Operand::r5900ee_vis),
            reads_rt: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_ctc2_i,
                OpcodeCategory::R5900EE_COP2_I,
                0x06,
                "ctc2.i",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }

    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_bc2f as usize] = OpcodeDescriptor {
            operands: Operand::arr1(Operand::core_branch_target_label),
            is_branch: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_bc2f,
                OpcodeCategory::R5900EE_COP2_BC2,
                0x00,
                "bc2f",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_bc2t as usize] = OpcodeDescriptor {
            operands: Operand::arr1(Operand::core_branch_target_label),
            is_branch: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_bc2t,
                OpcodeCategory::R5900EE_COP2_BC2,
                0x01,
                "bc2t",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_bc2fl as usize] = OpcodeDescriptor {
            operands: Operand::arr1(Operand::core_branch_target_label),
            is_branch: true,
            is_branch_likely: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_bc2fl,
                OpcodeCategory::R5900EE_COP2_BC2,
                0x02,
                "bc2fl",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_bc2tl as usize] = OpcodeDescriptor {
            operands: Operand::arr1(Operand::core_branch_target_label),
            is_branch: true,
            is_branch_likely: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_bc2tl,
                OpcodeCategory::R5900EE_COP2_BC2,
                0x03,
                "bc2tl",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_vaddx as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r5900ee_vfdxyzw,
                Operand::r5900ee_vfsxyzw,
                Operand::r5900ee_vftn,
            ),
            instr_suffix: Some(InstrSuffix::r5900ee_xyzw),
            is_float: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_vaddx,
                OpcodeCategory::R5900EE_COP2_SPECIAL1,
                0x00,
                "vaddx",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_vaddy as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r5900ee_vfdxyzw,
                Operand::r5900ee_vfsxyzw,
                Operand::r5900ee_vftn,
            ),
            instr_suffix: Some(InstrSuffix::r5900ee_xyzw),
            is_float: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_vaddy,
                OpcodeCategory::R5900EE_COP2_SPECIAL1,
                0x01,
                "vaddy",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_vaddz as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r5900ee_vfdxyzw,
                Operand::r5900ee_vfsxyzw,
                Operand::r5900ee_vftn,
            ),
            instr_suffix: Some(InstrSuffix::r5900ee_xyzw),
            is_float: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_vaddz,
                OpcodeCategory::R5900EE_COP2_SPECIAL1,
                0x02,
                "vaddz",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_vaddw as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r5900ee_vfdxyzw,
                Operand::r5900ee_vfsxyzw,
                Operand::r5900ee_vftn,
            ),
            instr_suffix: Some(InstrSuffix::r5900ee_xyzw),
            is_float: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_vaddw,
                OpcodeCategory::R5900EE_COP2_SPECIAL1,
                0x03,
                "vaddw",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_vsubx as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r5900ee_vfdxyzw,
                Operand::r5900ee_vfsxyzw,
                Operand::r5900ee_vftn,
            ),
            instr_suffix: Some(InstrSuffix::r5900ee_xyzw),
            is_float: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_vsubx,
                OpcodeCategory::R5900EE_COP2_SPECIAL1,
                0x04,
                "vsubx",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_vsuby as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r5900ee_vfdxyzw,
                Operand::r5900ee_vfsxyzw,
                Operand::r5900ee_vftn,
            ),
            instr_suffix: Some(InstrSuffix::r5900ee_xyzw),
            is_float: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_vsuby,
                OpcodeCategory::R5900EE_COP2_SPECIAL1,
                0x05,
                "vsuby",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_vsubz as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r5900ee_vfdxyzw,
                Operand::r5900ee_vfsxyzw,
                Operand::r5900ee_vftn,
            ),
            instr_suffix: Some(InstrSuffix::r5900ee_xyzw),
            is_float: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_vsubz,
                OpcodeCategory::R5900EE_COP2_SPECIAL1,
                0x06,
                "vsubz",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_vsubw as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r5900ee_vfdxyzw,
                Operand::r5900ee_vfsxyzw,
                Operand::r5900ee_vftn,
            ),
            instr_suffix: Some(InstrSuffix::r5900ee_xyzw),
            is_float: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_vsubw,
                OpcodeCategory::R5900EE_COP2_SPECIAL1,
                0x07,
                "vsubw",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_vmaddx as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r5900ee_vfdxyzw,
                Operand::r5900ee_vfsxyzw,
                Operand::r5900ee_vftn,
            ),
            instr_suffix: Some(InstrSuffix::r5900ee_xyzw),
            is_float: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_vmaddx,
                OpcodeCategory::R5900EE_COP2_SPECIAL1,
                0x08,
                "vmaddx",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_vmaddy as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r5900ee_vfdxyzw,
                Operand::r5900ee_vfsxyzw,
                Operand::r5900ee_vftn,
            ),
            instr_suffix: Some(InstrSuffix::r5900ee_xyzw),
            is_float: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_vmaddy,
                OpcodeCategory::R5900EE_COP2_SPECIAL1,
                0x09,
                "vmaddy",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_vmaddz as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r5900ee_vfdxyzw,
                Operand::r5900ee_vfsxyzw,
                Operand::r5900ee_vftn,
            ),
            instr_suffix: Some(InstrSuffix::r5900ee_xyzw),
            is_float: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_vmaddz,
                OpcodeCategory::R5900EE_COP2_SPECIAL1,
                0x0A,
                "vmaddz",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_vmaddw as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r5900ee_vfdxyzw,
                Operand::r5900ee_vfsxyzw,
                Operand::r5900ee_vftn,
            ),
            instr_suffix: Some(InstrSuffix::r5900ee_xyzw),
            is_float: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_vmaddw,
                OpcodeCategory::R5900EE_COP2_SPECIAL1,
                0x0B,
                "vmaddw",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_vmsubx as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r5900ee_vfdxyzw,
                Operand::r5900ee_vfsxyzw,
                Operand::r5900ee_vftn,
            ),
            instr_suffix: Some(InstrSuffix::r5900ee_xyzw),
            is_float: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_vmsubx,
                OpcodeCategory::R5900EE_COP2_SPECIAL1,
                0x0C,
                "vmsubx",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_vmsuby as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r5900ee_vfdxyzw,
                Operand::r5900ee_vfsxyzw,
                Operand::r5900ee_vftn,
            ),
            instr_suffix: Some(InstrSuffix::r5900ee_xyzw),
            is_float: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_vmsuby,
                OpcodeCategory::R5900EE_COP2_SPECIAL1,
                0x0D,
                "vmsuby",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_vmsubz as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r5900ee_vfdxyzw,
                Operand::r5900ee_vfsxyzw,
                Operand::r5900ee_vftn,
            ),
            instr_suffix: Some(InstrSuffix::r5900ee_xyzw),
            is_float: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_vmsubz,
                OpcodeCategory::R5900EE_COP2_SPECIAL1,
                0x0E,
                "vmsubz",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_vmsubw as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r5900ee_vfdxyzw,
                Operand::r5900ee_vfsxyzw,
                Operand::r5900ee_vftn,
            ),
            instr_suffix: Some(InstrSuffix::r5900ee_xyzw),
            is_float: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_vmsubw,
                OpcodeCategory::R5900EE_COP2_SPECIAL1,
                0x0F,
                "vmsubw",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_vmaxx as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r5900ee_vfdxyzw,
                Operand::r5900ee_vfsxyzw,
                Operand::r5900ee_vftn,
            ),
            instr_suffix: Some(InstrSuffix::r5900ee_xyzw),
            is_float: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_vmaxx,
                OpcodeCategory::R5900EE_COP2_SPECIAL1,
                0x10,
                "vmaxx",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_vmaxy as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r5900ee_vfdxyzw,
                Operand::r5900ee_vfsxyzw,
                Operand::r5900ee_vftn,
            ),
            instr_suffix: Some(InstrSuffix::r5900ee_xyzw),
            is_float: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_vmaxy,
                OpcodeCategory::R5900EE_COP2_SPECIAL1,
                0x11,
                "vmaxy",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_vmaxz as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r5900ee_vfdxyzw,
                Operand::r5900ee_vfsxyzw,
                Operand::r5900ee_vftn,
            ),
            instr_suffix: Some(InstrSuffix::r5900ee_xyzw),
            is_float: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_vmaxz,
                OpcodeCategory::R5900EE_COP2_SPECIAL1,
                0x12,
                "vmaxz",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_vmaxw as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r5900ee_vfdxyzw,
                Operand::r5900ee_vfsxyzw,
                Operand::r5900ee_vftn,
            ),
            instr_suffix: Some(InstrSuffix::r5900ee_xyzw),
            is_float: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_vmaxw,
                OpcodeCategory::R5900EE_COP2_SPECIAL1,
                0x13,
                "vmaxw",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_vminix as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r5900ee_vfdxyzw,
                Operand::r5900ee_vfsxyzw,
                Operand::r5900ee_vftn,
            ),
            instr_suffix: Some(InstrSuffix::r5900ee_xyzw),
            is_float: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_vminix,
                OpcodeCategory::R5900EE_COP2_SPECIAL1,
                0x14,
                "vminix",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_vminiy as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r5900ee_vfdxyzw,
                Operand::r5900ee_vfsxyzw,
                Operand::r5900ee_vftn,
            ),
            instr_suffix: Some(InstrSuffix::r5900ee_xyzw),
            is_float: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_vminiy,
                OpcodeCategory::R5900EE_COP2_SPECIAL1,
                0x15,
                "vminiy",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_vminiz as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r5900ee_vfdxyzw,
                Operand::r5900ee_vfsxyzw,
                Operand::r5900ee_vftn,
            ),
            instr_suffix: Some(InstrSuffix::r5900ee_xyzw),
            is_float: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_vminiz,
                OpcodeCategory::R5900EE_COP2_SPECIAL1,
                0x16,
                "vminiz",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_vminiw as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r5900ee_vfdxyzw,
                Operand::r5900ee_vfsxyzw,
                Operand::r5900ee_vftn,
            ),
            instr_suffix: Some(InstrSuffix::r5900ee_xyzw),
            is_float: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_vminiw,
                OpcodeCategory::R5900EE_COP2_SPECIAL1,
                0x17,
                "vminiw",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_vmulx as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r5900ee_vfdxyzw,
                Operand::r5900ee_vfsxyzw,
                Operand::r5900ee_vftn,
            ),
            instr_suffix: Some(InstrSuffix::r5900ee_xyzw),
            is_float: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_vmulx,
                OpcodeCategory::R5900EE_COP2_SPECIAL1,
                0x18,
                "vmulx",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_vmuly as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r5900ee_vfdxyzw,
                Operand::r5900ee_vfsxyzw,
                Operand::r5900ee_vftn,
            ),
            instr_suffix: Some(InstrSuffix::r5900ee_xyzw),
            is_float: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_vmuly,
                OpcodeCategory::R5900EE_COP2_SPECIAL1,
                0x19,
                "vmuly",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_vmulz as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r5900ee_vfdxyzw,
                Operand::r5900ee_vfsxyzw,
                Operand::r5900ee_vftn,
            ),
            instr_suffix: Some(InstrSuffix::r5900ee_xyzw),
            is_float: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_vmulz,
                OpcodeCategory::R5900EE_COP2_SPECIAL1,
                0x1A,
                "vmulz",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_vmulw as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r5900ee_vfdxyzw,
                Operand::r5900ee_vfsxyzw,
                Operand::r5900ee_vftn,
            ),
            instr_suffix: Some(InstrSuffix::r5900ee_xyzw),
            is_float: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_vmulw,
                OpcodeCategory::R5900EE_COP2_SPECIAL1,
                0x1B,
                "vmulw",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_vmulq as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r5900ee_vfdxyzw,
                Operand::r5900ee_vfsxyzw,
                Operand::r5900ee_Q,
            ),
            instr_suffix: Some(InstrSuffix::r5900ee_xyzw),
            is_float: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_vmulq,
                OpcodeCategory::R5900EE_COP2_SPECIAL1,
                0x1C,
                "vmulq",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_vmaxi as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r5900ee_vfdxyzw,
                Operand::r5900ee_vfsxyzw,
                Operand::r5900ee_I,
            ),
            instr_suffix: Some(InstrSuffix::r5900ee_xyzw),
            is_float: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_vmaxi,
                OpcodeCategory::R5900EE_COP2_SPECIAL1,
                0x1D,
                "vmaxi",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_vmuli as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r5900ee_vfdxyzw,
                Operand::r5900ee_vfsxyzw,
                Operand::r5900ee_I,
            ),
            instr_suffix: Some(InstrSuffix::r5900ee_xyzw),
            is_float: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_vmuli,
                OpcodeCategory::R5900EE_COP2_SPECIAL1,
                0x1E,
                "vmuli",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_vminii as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r5900ee_vfdxyzw,
                Operand::r5900ee_vfsxyzw,
                Operand::r5900ee_I,
            ),
            instr_suffix: Some(InstrSuffix::r5900ee_xyzw),
            is_float: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_vminii,
                OpcodeCategory::R5900EE_COP2_SPECIAL1,
                0x1F,
                "vminii",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_vaddq as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r5900ee_vfdxyzw,
                Operand::r5900ee_vfsxyzw,
                Operand::r5900ee_Q,
            ),
            instr_suffix: Some(InstrSuffix::r5900ee_xyzw),
            is_float: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_vaddq,
                OpcodeCategory::R5900EE_COP2_SPECIAL1,
                0x20,
                "vaddq",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_vmaddq as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r5900ee_vfdxyzw,
                Operand::r5900ee_vfsxyzw,
                Operand::r5900ee_Q,
            ),
            instr_suffix: Some(InstrSuffix::r5900ee_xyzw),
            is_float: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_vmaddq,
                OpcodeCategory::R5900EE_COP2_SPECIAL1,
                0x21,
                "vmaddq",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_vaddi as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r5900ee_vfdxyzw,
                Operand::r5900ee_vfsxyzw,
                Operand::r5900ee_I,
            ),
            instr_suffix: Some(InstrSuffix::r5900ee_xyzw),
            is_float: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_vaddi,
                OpcodeCategory::R5900EE_COP2_SPECIAL1,
                0x22,
                "vaddi",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_vmaddi as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r5900ee_vfdxyzw,
                Operand::r5900ee_vfsxyzw,
                Operand::r5900ee_I,
            ),
            instr_suffix: Some(InstrSuffix::r5900ee_xyzw),
            is_float: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_vmaddi,
                OpcodeCategory::R5900EE_COP2_SPECIAL1,
                0x23,
                "vmaddi",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_vsubq as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r5900ee_vfdxyzw,
                Operand::r5900ee_vfsxyzw,
                Operand::r5900ee_Q,
            ),
            instr_suffix: Some(InstrSuffix::r5900ee_xyzw),
            is_float: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_vsubq,
                OpcodeCategory::R5900EE_COP2_SPECIAL1,
                0x24,
                "vsubq",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_vmsubq as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r5900ee_vfdxyzw,
                Operand::r5900ee_vfsxyzw,
                Operand::r5900ee_Q,
            ),
            instr_suffix: Some(InstrSuffix::r5900ee_xyzw),
            is_float: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_vmsubq,
                OpcodeCategory::R5900EE_COP2_SPECIAL1,
                0x25,
                "vmsubq",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_vsubi as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r5900ee_vfdxyzw,
                Operand::r5900ee_vfsxyzw,
                Operand::r5900ee_I,
            ),
            instr_suffix: Some(InstrSuffix::r5900ee_xyzw),
            is_float: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_vsubi,
                OpcodeCategory::R5900EE_COP2_SPECIAL1,
                0x26,
                "vsubi",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_vmsubi as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r5900ee_vfdxyzw,
                Operand::r5900ee_vfsxyzw,
                Operand::r5900ee_I,
            ),
            instr_suffix: Some(InstrSuffix::r5900ee_xyzw),
            is_float: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_vmsubi,
                OpcodeCategory::R5900EE_COP2_SPECIAL1,
                0x27,
                "vmsubi",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_vadd as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r5900ee_vfdxyzw,
                Operand::r5900ee_vfsxyzw,
                Operand::r5900ee_vftxyzw,
            ),
            instr_suffix: Some(InstrSuffix::r5900ee_xyzw),
            is_float: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_vadd,
                OpcodeCategory::R5900EE_COP2_SPECIAL1,
                0x28,
                "vadd",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_vmadd as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r5900ee_vfdxyzw,
                Operand::r5900ee_vfsxyzw,
                Operand::r5900ee_vftxyzw,
            ),
            instr_suffix: Some(InstrSuffix::r5900ee_xyzw),
            is_float: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_vmadd,
                OpcodeCategory::R5900EE_COP2_SPECIAL1,
                0x29,
                "vmadd",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_vmul as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r5900ee_vfdxyzw,
                Operand::r5900ee_vfsxyzw,
                Operand::r5900ee_vftxyzw,
            ),
            instr_suffix: Some(InstrSuffix::r5900ee_xyzw),
            is_float: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_vmul,
                OpcodeCategory::R5900EE_COP2_SPECIAL1,
                0x2A,
                "vmul",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_vmax as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r5900ee_vfdxyzw,
                Operand::r5900ee_vfsxyzw,
                Operand::r5900ee_vftxyzw,
            ),
            instr_suffix: Some(InstrSuffix::r5900ee_xyzw),
            is_float: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_vmax,
                OpcodeCategory::R5900EE_COP2_SPECIAL1,
                0x2B,
                "vmax",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_vsub as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r5900ee_vfdxyzw,
                Operand::r5900ee_vfsxyzw,
                Operand::r5900ee_vftxyzw,
            ),
            instr_suffix: Some(InstrSuffix::r5900ee_xyzw),
            is_float: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_vsub,
                OpcodeCategory::R5900EE_COP2_SPECIAL1,
                0x2C,
                "vsub",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_vmsub as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r5900ee_vfdxyzw,
                Operand::r5900ee_vfsxyzw,
                Operand::r5900ee_vftxyzw,
            ),
            instr_suffix: Some(InstrSuffix::r5900ee_xyzw),
            is_float: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_vmsub,
                OpcodeCategory::R5900EE_COP2_SPECIAL1,
                0x2D,
                "vmsub",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_vopmsub as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r5900ee_vfdxyzw,
                Operand::r5900ee_vfsxyzw,
                Operand::r5900ee_vftxyzw,
            ),
            instr_suffix: Some(InstrSuffix::r5900ee_xyzw),
            is_float: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_vopmsub,
                OpcodeCategory::R5900EE_COP2_SPECIAL1,
                0x2E,
                "vopmsub",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_vmini as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r5900ee_vfdxyzw,
                Operand::r5900ee_vfsxyzw,
                Operand::r5900ee_vftxyzw,
            ),
            instr_suffix: Some(InstrSuffix::r5900ee_xyzw),
            is_float: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_vmini,
                OpcodeCategory::R5900EE_COP2_SPECIAL1,
                0x2F,
                "vmini",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_viadd as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r5900ee_vid,
                Operand::r5900ee_vis,
                Operand::r5900ee_vit,
            ),
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_viadd,
                OpcodeCategory::R5900EE_COP2_SPECIAL1,
                0x30,
                "viadd",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_visub as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r5900ee_vid,
                Operand::r5900ee_vis,
                Operand::r5900ee_vit,
            ),
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_visub,
                OpcodeCategory::R5900EE_COP2_SPECIAL1,
                0x31,
                "visub",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_viaddi as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r5900ee_vit,
                Operand::r5900ee_vis,
                Operand::r5900ee_imm5,
            ),
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_viaddi,
                OpcodeCategory::R5900EE_COP2_SPECIAL1,
                0x32,
                "viaddi",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_viand as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r5900ee_vid,
                Operand::r5900ee_vis,
                Operand::r5900ee_vit,
            ),
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_viand,
                OpcodeCategory::R5900EE_COP2_SPECIAL1,
                0x34,
                "viand",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_vior as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r5900ee_vid,
                Operand::r5900ee_vis,
                Operand::r5900ee_vit,
            ),
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_vior,
                OpcodeCategory::R5900EE_COP2_SPECIAL1,
                0x35,
                "vior",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_vcallms as usize] = OpcodeDescriptor {
            operands: Operand::arr1(Operand::r5900ee_imm15),
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_vcallms,
                OpcodeCategory::R5900EE_COP2_SPECIAL1,
                0x38,
                "vcallms",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_vcallmsr as usize] = OpcodeDescriptor {
            operands: Operand::arr1(Operand::r5900ee_vis),
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_vcallmsr,
                OpcodeCategory::R5900EE_COP2_SPECIAL1,
                0x39,
                "vcallmsr",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }

    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_vaddax as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r5900ee_ACCxyzw,
                Operand::r5900ee_vfsxyzw,
                Operand::r5900ee_vftn,
            ),
            instr_suffix: Some(InstrSuffix::r5900ee_xyzw),
            is_float: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_vaddax,
                OpcodeCategory::R5900EE_COP2_SPECIAL2,
                0x00,
                "vaddax",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_vadday as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r5900ee_ACCxyzw,
                Operand::r5900ee_vfsxyzw,
                Operand::r5900ee_vftn,
            ),
            instr_suffix: Some(InstrSuffix::r5900ee_xyzw),
            is_float: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_vadday,
                OpcodeCategory::R5900EE_COP2_SPECIAL2,
                0x01,
                "vadday",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_vaddaz as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r5900ee_ACCxyzw,
                Operand::r5900ee_vfsxyzw,
                Operand::r5900ee_vftn,
            ),
            instr_suffix: Some(InstrSuffix::r5900ee_xyzw),
            is_float: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_vaddaz,
                OpcodeCategory::R5900EE_COP2_SPECIAL2,
                0x02,
                "vaddaz",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_vaddaw as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r5900ee_ACCxyzw,
                Operand::r5900ee_vfsxyzw,
                Operand::r5900ee_vftn,
            ),
            instr_suffix: Some(InstrSuffix::r5900ee_xyzw),
            is_float: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_vaddaw,
                OpcodeCategory::R5900EE_COP2_SPECIAL2,
                0x03,
                "vaddaw",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_vsubax as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r5900ee_ACCxyzw,
                Operand::r5900ee_vfsxyzw,
                Operand::r5900ee_vftn,
            ),
            instr_suffix: Some(InstrSuffix::r5900ee_xyzw),
            is_float: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_vsubax,
                OpcodeCategory::R5900EE_COP2_SPECIAL2,
                0x40,
                "vsubax",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_vsubay as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r5900ee_ACCxyzw,
                Operand::r5900ee_vfsxyzw,
                Operand::r5900ee_vftn,
            ),
            instr_suffix: Some(InstrSuffix::r5900ee_xyzw),
            is_float: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_vsubay,
                OpcodeCategory::R5900EE_COP2_SPECIAL2,
                0x41,
                "vsubay",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_vsubaz as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r5900ee_ACCxyzw,
                Operand::r5900ee_vfsxyzw,
                Operand::r5900ee_vftn,
            ),
            instr_suffix: Some(InstrSuffix::r5900ee_xyzw),
            is_float: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_vsubaz,
                OpcodeCategory::R5900EE_COP2_SPECIAL2,
                0x42,
                "vsubaz",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_vsubaw as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r5900ee_ACCxyzw,
                Operand::r5900ee_vfsxyzw,
                Operand::r5900ee_vftn,
            ),
            instr_suffix: Some(InstrSuffix::r5900ee_xyzw),
            is_float: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_vsubaw,
                OpcodeCategory::R5900EE_COP2_SPECIAL2,
                0x43,
                "vsubaw",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_vmaddax as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r5900ee_ACCxyzw,
                Operand::r5900ee_vfsxyzw,
                Operand::r5900ee_vftn,
            ),
            instr_suffix: Some(InstrSuffix::r5900ee_xyzw),
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_vmaddax,
                OpcodeCategory::R5900EE_COP2_SPECIAL2,
                0x80,
                "vmaddax",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_vmadday as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r5900ee_ACCxyzw,
                Operand::r5900ee_vfsxyzw,
                Operand::r5900ee_vftn,
            ),
            instr_suffix: Some(InstrSuffix::r5900ee_xyzw),
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_vmadday,
                OpcodeCategory::R5900EE_COP2_SPECIAL2,
                0x81,
                "vmadday",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_vmaddaz as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r5900ee_ACCxyzw,
                Operand::r5900ee_vfsxyzw,
                Operand::r5900ee_vftn,
            ),
            instr_suffix: Some(InstrSuffix::r5900ee_xyzw),
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_vmaddaz,
                OpcodeCategory::R5900EE_COP2_SPECIAL2,
                0x82,
                "vmaddaz",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_vmaddaw as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r5900ee_ACCxyzw,
                Operand::r5900ee_vfsxyzw,
                Operand::r5900ee_vftn,
            ),
            instr_suffix: Some(InstrSuffix::r5900ee_xyzw),
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_vmaddaw,
                OpcodeCategory::R5900EE_COP2_SPECIAL2,
                0x83,
                "vmaddaw",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_vmsubax as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r5900ee_ACCxyzw,
                Operand::r5900ee_vfsxyzw,
                Operand::r5900ee_vftn,
            ),
            instr_suffix: Some(InstrSuffix::r5900ee_xyzw),
            is_float: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_vmsubax,
                OpcodeCategory::R5900EE_COP2_SPECIAL2,
                0xC0,
                "vmsubax",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_vmsubay as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r5900ee_ACCxyzw,
                Operand::r5900ee_vfsxyzw,
                Operand::r5900ee_vftn,
            ),
            instr_suffix: Some(InstrSuffix::r5900ee_xyzw),
            is_float: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_vmsubay,
                OpcodeCategory::R5900EE_COP2_SPECIAL2,
                0xC1,
                "vmsubay",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_vmsubaz as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r5900ee_ACCxyzw,
                Operand::r5900ee_vfsxyzw,
                Operand::r5900ee_vftn,
            ),
            instr_suffix: Some(InstrSuffix::r5900ee_xyzw),
            is_float: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_vmsubaz,
                OpcodeCategory::R5900EE_COP2_SPECIAL2,
                0xC2,
                "vmsubaz",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_vmsubaw as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r5900ee_ACCxyzw,
                Operand::r5900ee_vfsxyzw,
                Operand::r5900ee_vftn,
            ),
            instr_suffix: Some(InstrSuffix::r5900ee_xyzw),
            is_float: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_vmsubaw,
                OpcodeCategory::R5900EE_COP2_SPECIAL2,
                0xC3,
                "vmsubaw",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_vitof0 as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r5900ee_vftxyzw, Operand::r5900ee_vfsxyzw),
            instr_suffix: Some(InstrSuffix::r5900ee_xyzw),
            is_float: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_vitof0,
                OpcodeCategory::R5900EE_COP2_SPECIAL2,
                0x100,
                "vitof0",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_vitof4 as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r5900ee_vftxyzw, Operand::r5900ee_vfsxyzw),
            instr_suffix: Some(InstrSuffix::r5900ee_xyzw),
            is_float: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_vitof4,
                OpcodeCategory::R5900EE_COP2_SPECIAL2,
                0x101,
                "vitof4",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_vitof12 as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r5900ee_vftxyzw, Operand::r5900ee_vfsxyzw),
            instr_suffix: Some(InstrSuffix::r5900ee_xyzw),
            is_float: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_vitof12,
                OpcodeCategory::R5900EE_COP2_SPECIAL2,
                0x102,
                "vitof12",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_vitof15 as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r5900ee_vftxyzw, Operand::r5900ee_vfsxyzw),
            instr_suffix: Some(InstrSuffix::r5900ee_xyzw),
            is_float: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_vitof15,
                OpcodeCategory::R5900EE_COP2_SPECIAL2,
                0x103,
                "vitof15",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_vftoi0 as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r5900ee_vftxyzw, Operand::r5900ee_vfsxyzw),
            instr_suffix: Some(InstrSuffix::r5900ee_xyzw),
            is_float: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_vftoi0,
                OpcodeCategory::R5900EE_COP2_SPECIAL2,
                0x140,
                "vftoi0",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_vftoi4 as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r5900ee_vftxyzw, Operand::r5900ee_vfsxyzw),
            instr_suffix: Some(InstrSuffix::r5900ee_xyzw),
            is_float: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_vftoi4,
                OpcodeCategory::R5900EE_COP2_SPECIAL2,
                0x141,
                "vftoi4",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_vftoi12 as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r5900ee_vftxyzw, Operand::r5900ee_vfsxyzw),
            instr_suffix: Some(InstrSuffix::r5900ee_xyzw),
            is_float: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_vftoi12,
                OpcodeCategory::R5900EE_COP2_SPECIAL2,
                0x142,
                "vftoi12",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_vftoi15 as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r5900ee_vftxyzw, Operand::r5900ee_vfsxyzw),
            instr_suffix: Some(InstrSuffix::r5900ee_xyzw),
            is_float: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_vftoi15,
                OpcodeCategory::R5900EE_COP2_SPECIAL2,
                0x143,
                "vftoi15",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_vmulax as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r5900ee_ACCxyzw,
                Operand::r5900ee_vfsxyzw,
                Operand::r5900ee_vftn,
            ),
            instr_suffix: Some(InstrSuffix::r5900ee_xyzw),
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_vmulax,
                OpcodeCategory::R5900EE_COP2_SPECIAL2,
                0x180,
                "vmulax",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_vmulay as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r5900ee_ACCxyzw,
                Operand::r5900ee_vfsxyzw,
                Operand::r5900ee_vftn,
            ),
            instr_suffix: Some(InstrSuffix::r5900ee_xyzw),
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_vmulay,
                OpcodeCategory::R5900EE_COP2_SPECIAL2,
                0x181,
                "vmulay",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_vmulaz as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r5900ee_ACCxyzw,
                Operand::r5900ee_vfsxyzw,
                Operand::r5900ee_vftn,
            ),
            instr_suffix: Some(InstrSuffix::r5900ee_xyzw),
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_vmulaz,
                OpcodeCategory::R5900EE_COP2_SPECIAL2,
                0x182,
                "vmulaz",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_vmulaw as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r5900ee_ACCxyzw,
                Operand::r5900ee_vfsxyzw,
                Operand::r5900ee_vftn,
            ),
            instr_suffix: Some(InstrSuffix::r5900ee_xyzw),
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_vmulaw,
                OpcodeCategory::R5900EE_COP2_SPECIAL2,
                0x183,
                "vmulaw",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_vmulaq as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r5900ee_ACCxyzw,
                Operand::r5900ee_vfsxyzw,
                Operand::r5900ee_Q,
            ),
            instr_suffix: Some(InstrSuffix::r5900ee_xyzw),
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_vmulaq,
                OpcodeCategory::R5900EE_COP2_SPECIAL2,
                0x1C0,
                "vmulaq",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_vabs as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r5900ee_vftxyzw, Operand::r5900ee_vfsxyzw),
            instr_suffix: Some(InstrSuffix::r5900ee_xyzw),
            is_float: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_vabs,
                OpcodeCategory::R5900EE_COP2_SPECIAL2,
                0x1C1,
                "vabs",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_vmulai as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r5900ee_ACCxyzw,
                Operand::r5900ee_vfsxyzw,
                Operand::r5900ee_I,
            ),
            instr_suffix: Some(InstrSuffix::r5900ee_xyzw),
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_vmulai,
                OpcodeCategory::R5900EE_COP2_SPECIAL2,
                0x1C2,
                "vmulai",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_vclipw as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r5900ee_vfsxyzw, Operand::r5900ee_vftn),
            instr_suffix: Some(InstrSuffix::r5900ee_xyzw),
            is_float: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_vclipw,
                OpcodeCategory::R5900EE_COP2_SPECIAL2,
                0x1C3,
                "vclipw",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_vaddaq as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r5900ee_ACCxyzw,
                Operand::r5900ee_vfsxyzw,
                Operand::r5900ee_Q,
            ),
            instr_suffix: Some(InstrSuffix::r5900ee_xyzw),
            is_float: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_vaddaq,
                OpcodeCategory::R5900EE_COP2_SPECIAL2,
                0x200,
                "vaddaq",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_vmaddaq as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r5900ee_ACCxyzw,
                Operand::r5900ee_vfsxyzw,
                Operand::r5900ee_Q,
            ),
            instr_suffix: Some(InstrSuffix::r5900ee_xyzw),
            is_float: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_vmaddaq,
                OpcodeCategory::R5900EE_COP2_SPECIAL2,
                0x201,
                "vmaddaq",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_vaddai as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r5900ee_ACCxyzw,
                Operand::r5900ee_vfsxyzw,
                Operand::r5900ee_I,
            ),
            instr_suffix: Some(InstrSuffix::r5900ee_xyzw),
            is_float: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_vaddai,
                OpcodeCategory::R5900EE_COP2_SPECIAL2,
                0x202,
                "vaddai",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_vmaddai as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r5900ee_ACCxyzw,
                Operand::r5900ee_vfsxyzw,
                Operand::r5900ee_I,
            ),
            instr_suffix: Some(InstrSuffix::r5900ee_xyzw),
            is_float: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_vmaddai,
                OpcodeCategory::R5900EE_COP2_SPECIAL2,
                0x203,
                "vmaddai",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_vsubaq as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r5900ee_ACCxyzw,
                Operand::r5900ee_vfsxyzw,
                Operand::r5900ee_Q,
            ),
            instr_suffix: Some(InstrSuffix::r5900ee_xyzw),
            is_float: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_vsubaq,
                OpcodeCategory::R5900EE_COP2_SPECIAL2,
                0x240,
                "vsubaq",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_vmsubaq as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r5900ee_ACCxyzw,
                Operand::r5900ee_vfsxyzw,
                Operand::r5900ee_Q,
            ),
            instr_suffix: Some(InstrSuffix::r5900ee_xyzw),
            is_float: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_vmsubaq,
                OpcodeCategory::R5900EE_COP2_SPECIAL2,
                0x241,
                "vmsubaq",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_vsubai as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r5900ee_ACCxyzw,
                Operand::r5900ee_vfsxyzw,
                Operand::r5900ee_I,
            ),
            instr_suffix: Some(InstrSuffix::r5900ee_xyzw),
            is_float: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_vsubai,
                OpcodeCategory::R5900EE_COP2_SPECIAL2,
                0x242,
                "vsubai",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_vmsubai as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r5900ee_ACCxyzw,
                Operand::r5900ee_vfsxyzw,
                Operand::r5900ee_I,
            ),
            instr_suffix: Some(InstrSuffix::r5900ee_xyzw),
            is_float: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_vmsubai,
                OpcodeCategory::R5900EE_COP2_SPECIAL2,
                0x243,
                "vmsubai",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_vadda as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r5900ee_ACCxyzw,
                Operand::r5900ee_vftxyzw_inv_vfs,
                Operand::r5900ee_vfsxyzw_inv_vft,
            ),
            instr_suffix: Some(InstrSuffix::r5900ee_xyzw),
            is_float: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_vadda,
                OpcodeCategory::R5900EE_COP2_SPECIAL2,
                0x280,
                "vadda",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_vmadda as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r5900ee_ACCxyzw,
                Operand::r5900ee_vfsxyzw,
                Operand::r5900ee_vftxyzw,
            ),
            instr_suffix: Some(InstrSuffix::r5900ee_xyzw),
            is_float: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_vmadda,
                OpcodeCategory::R5900EE_COP2_SPECIAL2,
                0x281,
                "vmadda",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_vmula as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r5900ee_ACCxyzw,
                Operand::r5900ee_vfsxyzw,
                Operand::r5900ee_vftxyzw,
            ),
            instr_suffix: Some(InstrSuffix::r5900ee_xyzw),
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_vmula,
                OpcodeCategory::R5900EE_COP2_SPECIAL2,
                0x282,
                "vmula",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_vsuba as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r5900ee_ACCxyzw,
                Operand::r5900ee_vfsxyzw,
                Operand::r5900ee_vftxyzw,
            ),
            instr_suffix: Some(InstrSuffix::r5900ee_xyzw),
            is_float: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_vsuba,
                OpcodeCategory::R5900EE_COP2_SPECIAL2,
                0x2C0,
                "vsuba",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_vmsuba as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r5900ee_ACCxyzw,
                Operand::r5900ee_vftxyzw_inv_vfs,
                Operand::r5900ee_vfsxyzw_inv_vft,
            ),
            instr_suffix: Some(InstrSuffix::r5900ee_xyzw),
            is_float: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_vmsuba,
                OpcodeCategory::R5900EE_COP2_SPECIAL2,
                0x2C1,
                "vmsuba",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_vopmula as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r5900ee_ACCxyzw,
                Operand::r5900ee_vfsxyzw,
                Operand::r5900ee_vftxyzw,
            ),
            instr_suffix: Some(InstrSuffix::r5900ee_xyzw),
            is_float: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_vopmula,
                OpcodeCategory::R5900EE_COP2_SPECIAL2,
                0x2C2,
                "vopmula",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_vnop as usize] = OpcodeDescriptor {
            operands: Operand::arr0(),
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_vnop,
                OpcodeCategory::R5900EE_COP2_SPECIAL2,
                0x2C3,
                "vnop",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_vmove as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r5900ee_vftxyzw, Operand::r5900ee_vfsxyzw),
            instr_suffix: Some(InstrSuffix::r5900ee_xyzw),
            is_float: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_vmove,
                OpcodeCategory::R5900EE_COP2_SPECIAL2,
                0x300,
                "vmove",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_vmr32 as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r5900ee_vftxyzw, Operand::r5900ee_vfsxyzw),
            instr_suffix: Some(InstrSuffix::r5900ee_xyzw),
            is_float: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_vmr32,
                OpcodeCategory::R5900EE_COP2_SPECIAL2,
                0x301,
                "vmr32",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_vlqi as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r5900ee_vftxyzw, Operand::r5900ee_vis_postincr),
            instr_suffix: Some(InstrSuffix::r5900ee_xyzw),
            is_float: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_vlqi,
                OpcodeCategory::R5900EE_COP2_SPECIAL2,
                0x340,
                "vlqi",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_vsqi as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r5900ee_vfsxyzw, Operand::r5900ee_vit_postincr),
            instr_suffix: Some(InstrSuffix::r5900ee_xyzw),
            is_float: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_vsqi,
                OpcodeCategory::R5900EE_COP2_SPECIAL2,
                0x341,
                "vsqi",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_vlqd as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r5900ee_vftxyzw, Operand::r5900ee_vis_predecr),
            instr_suffix: Some(InstrSuffix::r5900ee_xyzw),
            is_float: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_vlqd,
                OpcodeCategory::R5900EE_COP2_SPECIAL2,
                0x342,
                "vlqd",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_vsqd as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r5900ee_vfsxyzw, Operand::r5900ee_vit_predecr),
            instr_suffix: Some(InstrSuffix::r5900ee_xyzw),
            is_float: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_vsqd,
                OpcodeCategory::R5900EE_COP2_SPECIAL2,
                0x343,
                "vsqd",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_vdiv as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r5900ee_Q,
                Operand::r5900ee_vfsl,
                Operand::r5900ee_vftm,
            ),
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_vdiv,
                OpcodeCategory::R5900EE_COP2_SPECIAL2,
                0x380,
                "vdiv",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_vsqrt as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r5900ee_Q, Operand::r5900ee_vftm),
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_vsqrt,
                OpcodeCategory::R5900EE_COP2_SPECIAL2,
                0x381,
                "vsqrt",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_vrsqrt as usize] = OpcodeDescriptor {
            operands: Operand::arr3(
                Operand::r5900ee_Q,
                Operand::r5900ee_vfsl,
                Operand::r5900ee_vftm,
            ),
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_vrsqrt,
                OpcodeCategory::R5900EE_COP2_SPECIAL2,
                0x382,
                "vrsqrt",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_vwaitq as usize] = OpcodeDescriptor {
            operands: Operand::arr0(),
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_vwaitq,
                OpcodeCategory::R5900EE_COP2_SPECIAL2,
                0x383,
                "vwaitq",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_vmtir as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r5900ee_vit, Operand::r5900ee_vfsl),
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_vmtir,
                OpcodeCategory::R5900EE_COP2_SPECIAL2,
                0x3C0,
                "vmtir",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_vmfir as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r5900ee_vftxyzw, Operand::r5900ee_vis),
            instr_suffix: Some(InstrSuffix::r5900ee_xyzw),
            is_float: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_vmfir,
                OpcodeCategory::R5900EE_COP2_SPECIAL2,
                0x3C1,
                "vmfir",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_vrnext as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r5900ee_vftxyzw, Operand::r5900ee_R),
            instr_suffix: Some(InstrSuffix::r5900ee_xyzw),
            is_float: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_vrnext,
                OpcodeCategory::R5900EE_COP2_SPECIAL2,
                0x400,
                "vrnext",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_vrget as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r5900ee_vftxyzw, Operand::r5900ee_R),
            instr_suffix: Some(InstrSuffix::r5900ee_xyzw),
            is_float: true,
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_vrget,
                OpcodeCategory::R5900EE_COP2_SPECIAL2,
                0x401,
                "vrget",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_vrinit as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r5900ee_R, Operand::r5900ee_vfsl),
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_vrinit,
                OpcodeCategory::R5900EE_COP2_SPECIAL2,
                0x402,
                "vrinit",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_vrxor as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r5900ee_R, Operand::r5900ee_vfsl),
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_vrxor,
                OpcodeCategory::R5900EE_COP2_SPECIAL2,
                0x403,
                "vrxor",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }

    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_vilwr_w as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r5900ee_vit, Operand::r5900ee_vis_parenthesis),
            is_float: true,
            does_dereference: true,
            does_load: true,
            access_type: Some(AccessType::WORD),
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_vilwr_w,
                OpcodeCategory::R5900EE_COP2_VIWR,
                0x0200002,
                "vilwr.w",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_vilwr_z as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r5900ee_vit, Operand::r5900ee_vis_parenthesis),
            is_float: true,
            does_dereference: true,
            does_load: true,
            access_type: Some(AccessType::WORD),
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_vilwr_z,
                OpcodeCategory::R5900EE_COP2_VIWR,
                0x0400002,
                "vilwr.z",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_vilwr_y as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r5900ee_vit, Operand::r5900ee_vis_parenthesis),
            is_float: true,
            does_dereference: true,
            does_load: true,
            access_type: Some(AccessType::WORD),
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_vilwr_y,
                OpcodeCategory::R5900EE_COP2_VIWR,
                0x0800002,
                "vilwr.y",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_vilwr_x as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r5900ee_vit, Operand::r5900ee_vis_parenthesis),
            is_float: true,
            does_dereference: true,
            does_load: true,
            access_type: Some(AccessType::WORD),
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_vilwr_x,
                OpcodeCategory::R5900EE_COP2_VIWR,
                0x1000002,
                "vilwr.x",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_viswr_w as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r5900ee_vit, Operand::r5900ee_vis_parenthesis),
            is_float: true,
            does_dereference: true,
            does_load: true,
            access_type: Some(AccessType::WORD),
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_viswr_w,
                OpcodeCategory::R5900EE_COP2_VIWR,
                0x0200003,
                "viswr.w",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_viswr_z as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r5900ee_vit, Operand::r5900ee_vis_parenthesis),
            is_float: true,
            does_dereference: true,
            does_load: true,
            access_type: Some(AccessType::WORD),
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_viswr_z,
                OpcodeCategory::R5900EE_COP2_VIWR,
                0x0400003,
                "viswr.z",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_viswr_y as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r5900ee_vit, Operand::r5900ee_vis_parenthesis),
            is_float: true,
            does_dereference: true,
            does_load: true,
            access_type: Some(AccessType::WORD),
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_viswr_y,
                OpcodeCategory::R5900EE_COP2_VIWR,
                0x0800003,
                "viswr.y",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    #[cfg(feature = "R5900EE")]
    {
        table[Opcode::r5900ee_viswr_x as usize] = OpcodeDescriptor {
            operands: Operand::arr2(Operand::r5900ee_vit, Operand::r5900ee_vis_parenthesis),
            is_float: true,
            does_dereference: true,
            does_load: true,
            access_type: Some(AccessType::WORD),
            ..OpcodeDescriptor::new(
                Opcode::r5900ee_viswr_x,
                OpcodeCategory::R5900EE_COP2_VIWR,
                0x1000003,
                "viswr.x",
                IsaVersion::EXTENSION,
                Some(IsaExtension::R5900EE),
            )
        };
    }
    table
};
#[cfg(test)]
mod tests {
    use super::*;
    #[test]
    fn check_descriptor_valid() {
        for x in OPCODES {
            x.check_valid_entry();
        }
    }
}
