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

/* Automatically generated. DO NOT MODIFY */

pub mod registers {
    #[repr(u32)]
    #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
    #[allow(non_camel_case_types)]
    #[derive(num_enum::TryFromPrimitive, num_enum::IntoPrimitive)]
    pub enum GprO32 {
        zero,
        at,
        v0,
        v1,
        a0,
        a1,
        a2,
        a3,
        t0,
        t1,
        t2,
        t3,
        t4,
        t5,
        t6,
        t7,
        s0,
        s1,
        s2,
        s3,
        s4,
        s5,
        s6,
        s7,
        t8,
        t9,
        k0,
        k1,
        gp,
        sp,
        fp,
        ra,
    }
    #[repr(u32)]
    #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
    #[allow(non_camel_case_types)]
    #[derive(num_enum::TryFromPrimitive, num_enum::IntoPrimitive)]
    pub enum GprN32 {
        zero,
        at,
        v0,
        v1,
        a0,
        a1,
        a2,
        a3,
        a4,
        a5,
        a6,
        a7,
        t0,
        t1,
        t2,
        t3,
        s0,
        s1,
        s2,
        s3,
        s4,
        s5,
        s6,
        s7,
        t8,
        t9,
        k0,
        k1,
        gp,
        sp,
        fp,
        ra,
    }
    #[repr(u32)]
    #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
    #[allow(non_camel_case_types)]
    #[derive(num_enum::TryFromPrimitive, num_enum::IntoPrimitive)]
    pub enum Cop0 {
        Index,
        Random,
        EntryLo0,
        EntryLo1,
        Context,
        PageMask,
        Wired,
        Reserved07,
        BadVaddr,
        Count,
        EntryHi,
        Compare,
        Status,
        Cause,
        EPC,
        PRevID,
        Config,
        LLAddr,
        WatchLo,
        WatchHi,
        XContext,
        Reserved21,
        Reserved22,
        Reserved23,
        Reserved24,
        Reserved25,
        PErr,
        CacheErr,
        TagLo,
        TagHi,
        ErrorEPC,
        Reserved31,
    }
    #[repr(u32)]
    #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
    #[allow(non_camel_case_types)]
    #[derive(num_enum::TryFromPrimitive, num_enum::IntoPrimitive)]
    pub enum Cop1O32 {
        fv0,
        fv0f,
        fv1,
        fv1f,
        ft0,
        ft0f,
        ft1,
        ft1f,
        ft2,
        ft2f,
        ft3,
        ft3f,
        fa0,
        fa0f,
        fa1,
        fa1f,
        ft4,
        ft4f,
        ft5,
        ft5f,
        fs0,
        fs0f,
        fs1,
        fs1f,
        fs2,
        fs2f,
        fs3,
        fs3f,
        fs4,
        fs4f,
        fs5,
        fs5f,
    }
    #[repr(u32)]
    #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
    #[allow(non_camel_case_types)]
    #[derive(num_enum::TryFromPrimitive, num_enum::IntoPrimitive)]
    pub enum Cop1N32 {
        fv0,
        ft14,
        fv1,
        ft15,
        ft0,
        ft1,
        ft2,
        ft3,
        ft4,
        ft5,
        ft6,
        ft7,
        fa0,
        fa1,
        fa2,
        fa3,
        fa4,
        fa5,
        fa6,
        fa7,
        fs0,
        ft8,
        fs1,
        ft9,
        fs2,
        ft10,
        fs3,
        ft11,
        fs4,
        ft12,
        fs5,
        ft13,
    }
    #[repr(u32)]
    #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
    #[allow(non_camel_case_types)]
    #[derive(num_enum::TryFromPrimitive, num_enum::IntoPrimitive)]
    pub enum Cop1N64 {
        fv0,
        ft12,
        fv1,
        ft13,
        ft0,
        ft1,
        ft2,
        ft3,
        ft4,
        ft5,
        ft6,
        ft7,
        fa0,
        fa1,
        fa2,
        fa3,
        fa4,
        fa5,
        fa6,
        fa7,
        ft8,
        ft9,
        ft10,
        ft11,
        fs0,
        fs1,
        fs2,
        fs3,
        fs4,
        fs5,
        fs6,
        fs7,
    }
    #[repr(u32)]
    #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
    #[allow(non_camel_case_types)]
    #[derive(num_enum::TryFromPrimitive, num_enum::IntoPrimitive)]
    pub enum Cop1Control {
        COP1_CONTROL_0,
        COP1_CONTROL_1,
        COP1_CONTROL_2,
        COP1_CONTROL_3,
        COP1_CONTROL_4,
        COP1_CONTROL_5,
        COP1_CONTROL_6,
        COP1_CONTROL_7,
        COP1_CONTROL_8,
        COP1_CONTROL_9,
        COP1_CONTROL_10,
        COP1_CONTROL_11,
        COP1_CONTROL_12,
        COP1_CONTROL_13,
        COP1_CONTROL_14,
        COP1_CONTROL_15,
        COP1_CONTROL_16,
        COP1_CONTROL_17,
        COP1_CONTROL_18,
        COP1_CONTROL_19,
        COP1_CONTROL_20,
        COP1_CONTROL_21,
        COP1_CONTROL_22,
        COP1_CONTROL_23,
        COP1_CONTROL_24,
        COP1_CONTROL_25,
        COP1_CONTROL_26,
        COP1_CONTROL_27,
        COP1_CONTROL_28,
        COP1_CONTROL_29,
        COP1_CONTROL_30,
        COP1_CONTROL_FpcCsr,
    }
    #[repr(u32)]
    #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
    #[allow(non_camel_case_types)]
    #[derive(num_enum::TryFromPrimitive, num_enum::IntoPrimitive)]
    pub enum Cop2 {
        COP2_0,
        COP2_1,
        COP2_2,
        COP2_3,
        COP2_4,
        COP2_5,
        COP2_6,
        COP2_7,
        COP2_8,
        COP2_9,
        COP2_10,
        COP2_11,
        COP2_12,
        COP2_13,
        COP2_14,
        COP2_15,
        COP2_16,
        COP2_17,
        COP2_18,
        COP2_19,
        COP2_20,
        COP2_21,
        COP2_22,
        COP2_23,
        COP2_24,
        COP2_25,
        COP2_26,
        COP2_27,
        COP2_28,
        COP2_29,
        COP2_30,
        COP2_31,
    }
    #[repr(u32)]
    #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
    #[allow(non_camel_case_types)]
    #[derive(num_enum::TryFromPrimitive, num_enum::IntoPrimitive)]
    pub enum RspGpr {
        RSP_GPR_zero,
        RSP_GPR_1,
        RSP_GPR_2,
        RSP_GPR_3,
        RSP_GPR_4,
        RSP_GPR_5,
        RSP_GPR_6,
        RSP_GPR_7,
        RSP_GPR_8,
        RSP_GPR_9,
        RSP_GPR_10,
        RSP_GPR_11,
        RSP_GPR_12,
        RSP_GPR_13,
        RSP_GPR_14,
        RSP_GPR_15,
        RSP_GPR_16,
        RSP_GPR_17,
        RSP_GPR_18,
        RSP_GPR_19,
        RSP_GPR_20,
        RSP_GPR_21,
        RSP_GPR_22,
        RSP_GPR_23,
        RSP_GPR_24,
        RSP_GPR_25,
        RSP_GPR_26,
        RSP_GPR_27,
        RSP_GPR_28,
        RSP_GPR_29,
        RSP_GPR_30,
        RSP_GPR_ra,
    }
    #[repr(u32)]
    #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
    #[allow(non_camel_case_types)]
    #[derive(num_enum::TryFromPrimitive, num_enum::IntoPrimitive)]
    pub enum RspCop0 {
        SP_MEM_ADDR,
        SP_DRAM_ADDR,
        SP_RD_LEN,
        SP_WR_LEN,
        SP_STATUS,
        SP_DMA_FULL,
        SP_DMA_BUSY,
        SP_SEMAPHORE,
        DPC_START,
        DPC_END,
        DPC_CURRENT,
        DPC_STATUS,
        DPC_CLOCK,
        DPC_BUFBUSY,
        DPC_PIPEBUSY,
        DPC_TMEM,
    }
    #[repr(u32)]
    #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
    #[allow(non_camel_case_types)]
    #[derive(num_enum::TryFromPrimitive, num_enum::IntoPrimitive)]
    pub enum RspCop2 {
        RSP_COP2_0,
        RSP_COP2_1,
        RSP_COP2_2,
        RSP_COP2_3,
        RSP_COP2_4,
        RSP_COP2_5,
        RSP_COP2_6,
        RSP_COP2_7,
        RSP_COP2_8,
        RSP_COP2_9,
        RSP_COP2_10,
        RSP_COP2_11,
        RSP_COP2_12,
        RSP_COP2_13,
        RSP_COP2_14,
        RSP_COP2_15,
        RSP_COP2_16,
        RSP_COP2_17,
        RSP_COP2_18,
        RSP_COP2_19,
        RSP_COP2_20,
        RSP_COP2_21,
        RSP_COP2_22,
        RSP_COP2_23,
        RSP_COP2_24,
        RSP_COP2_25,
        RSP_COP2_26,
        RSP_COP2_27,
        RSP_COP2_28,
        RSP_COP2_29,
        RSP_COP2_30,
        RSP_COP2_31,
    }
    #[repr(u32)]
    #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
    #[allow(non_camel_case_types)]
    #[derive(num_enum::TryFromPrimitive, num_enum::IntoPrimitive)]
    pub enum RspCop2Control {
        RSP_COP2_CONTROL_0,
        RSP_COP2_CONTROL_1,
        RSP_COP2_CONTROL_2,
        RSP_COP2_CONTROL_3,
        RSP_COP2_CONTROL_4,
        RSP_COP2_CONTROL_5,
        RSP_COP2_CONTROL_6,
        RSP_COP2_CONTROL_7,
        RSP_COP2_CONTROL_8,
        RSP_COP2_CONTROL_9,
        RSP_COP2_CONTROL_10,
        RSP_COP2_CONTROL_11,
        RSP_COP2_CONTROL_12,
        RSP_COP2_CONTROL_13,
        RSP_COP2_CONTROL_14,
        RSP_COP2_CONTROL_15,
        RSP_COP2_CONTROL_16,
        RSP_COP2_CONTROL_17,
        RSP_COP2_CONTROL_18,
        RSP_COP2_CONTROL_19,
        RSP_COP2_CONTROL_20,
        RSP_COP2_CONTROL_21,
        RSP_COP2_CONTROL_22,
        RSP_COP2_CONTROL_23,
        RSP_COP2_CONTROL_24,
        RSP_COP2_CONTROL_25,
        RSP_COP2_CONTROL_26,
        RSP_COP2_CONTROL_27,
        RSP_COP2_CONTROL_28,
        RSP_COP2_CONTROL_29,
        RSP_COP2_CONTROL_30,
        RSP_COP2_CONTROL_31,
    }
    #[repr(u32)]
    #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
    #[allow(non_camel_case_types)]
    #[derive(num_enum::TryFromPrimitive, num_enum::IntoPrimitive)]
    pub enum RspVector {
        v0,
        v1,
        v2,
        v3,
        v4,
        v5,
        v6,
        v7,
        v8,
        v9,
        v10,
        v11,
        v12,
        v13,
        v14,
        v15,
        v16,
        v17,
        v18,
        v19,
        v20,
        v21,
        v22,
        v23,
        v24,
        v25,
        v26,
        v27,
        v28,
        v29,
        v30,
        v31,
    }
    #[repr(u32)]
    #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
    #[allow(non_camel_case_types)]
    #[derive(num_enum::TryFromPrimitive, num_enum::IntoPrimitive)]
    pub enum R5900VF {
        vf0,
        vf1,
        vf2,
        vf3,
        vf4,
        vf5,
        vf6,
        vf7,
        vf8,
        vf9,
        vf10,
        vf11,
        vf12,
        vf13,
        vf14,
        vf15,
        vf16,
        vf17,
        vf18,
        vf19,
        vf20,
        vf21,
        vf22,
        vf23,
        vf24,
        vf25,
        vf26,
        vf27,
        vf28,
        vf29,
        vf30,
        vf31,
    }
    #[repr(u32)]
    #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
    #[allow(non_camel_case_types)]
    #[derive(num_enum::TryFromPrimitive, num_enum::IntoPrimitive)]
    pub enum R5900VI {
        vi0,
        vi1,
        vi2,
        vi3,
        vi4,
        vi5,
        vi6,
        vi7,
        vi8,
        vi9,
        vi10,
        vi11,
        vi12,
        vi13,
        vi14,
        vi15,
        vi16,
        vi17,
        vi18,
        vi19,
        vi20,
        vi21,
        vi22,
        vi23,
        vi24,
        vi25,
        vi26,
        vi27,
        vi28,
        vi29,
        vi30,
        vi31,
    }
}
