#region License
/* 
 * Copyright (C) 1999-2022 John Källén.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2, or (at your option)
 * any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; see the file COPYING.  If not, write to
 * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
 */
#endregion

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Reko.Arch.Loongson
{
    public enum Mnemonic
    {
        Invalid,
        nyi, 

        add_d,
        add_w,
        addi_d,
        addi_w,
        addu16i_d,
        alsl_d,
        alsl_w,
        alsl_wu,
        amadd_d,
        amadd_db_d,
        amadd_db_w,
        amadd_w,
        amand_d,
        amand_db_d,
        amand_db_w,
        amand_w,
        ammax_d,
        ammax_db_d,
        ammax_db_du,
        ammax_db_w,
        ammax_db_wu,
        ammax_du,
        ammax_w,
        ammax_wu,
        ammin_d,
        ammin_db_d,
        ammin_db_du,
        ammin_db_w,
        ammin_db_wu,
        ammin_du,
        ammin_w,
        ammin_wu,
        amor_d,
        amor_db_d,
        amor_db_w,
        amor_w,
        amswap_d,
        amswap_db_d,
        amswap_db_w,
        amswap_w,
        amxor_d,
        amxor_db_d,
        amxor_db_w,
        amxor_w,
        and,
        andi,
        andn,
        asrtgt_d,
        asrtle_d,
        b,
        bceqz,
        bcnez,
        beq,
        beqz,
        bge,
        bgeu,
        bitrev_4b,
        bitrev_8b,
        bitrev_d,
        bitrev_w,
        bl,
        blt,
        bltu,
        bne,
        bnez,
        @break,
        bstrins_d,
        bstrins_w,
        bstrpick_d,
        bstrpick_w,
        bytepick_d,
        bytepick_w,
        cacop,
        clo_d,
        clo_w,
        clz_d,
        clz_w,
        cpucfg,
        crc_w_b_w,
        crc_w_d_w,
        crc_w_h_w,
        crc_w_w_w,
        crcc_w_b_w,
        crcc_w_d_w,
        crcc_w_h_w,
        crcc_w_w_w,
        csrrd,
        csrwr,
        csrxchg,
        cto_d,
        cto_w,
        ctz_d,
        ctz_w,
        dbar,
        dbcl,
        div_d,
        div_du,
        div_w,
        div_wu,
        ertn,
        ext_w_b,
        ext_w_h,
        fabs_d,
        fabs_s,
        fadd_d,
        fadd_s,
        fclass_d,
        fclass_s,
        fcmp_cond_d,
        fcmp_cond_s,
        fcopysign_d,
        fcopysign_s,
        fcvt_d_s,
        fcvt_s_d,
        fdiv_d,
        fdiv_s,
        ffint_d_l,
        ffint_d_w,
        ffint_s_l,
        ffint_s_w,
        fld_d,
        fld_s,
        fldgt_d,
        fldgt_s,
        fldle_d,
        fldle_s,
        fldx_d,
        fldx_s,
        flogb_d,
        flogb_s,
        fmadd_d,
        fmadd_s,
        fmax_d,
        fmax_s,
        fmaxa_d,
        fmaxa_s,
        fmin_d,
        fmin_s,
        fmina_d,
        fmina_s,
        fmov_d,
        fmov_s,
        fmsub_d,
        fmsub_s,
        fmul_d,
        fmul_s,
        fneg_d,
        fneg_s,
        fnmadd_d,
        fnmadd_s,
        fnmsub_d,
        fnmsub_s,
        frecip_d,
        frecip_s,
        frint_d,
        frint_s,
        frsqrt_d,
        frsqrt_s,
        fscaleb_d,
        fscaleb_s,
        fsel,
        fsqrt_d,
        fsqrt_s,
        fst_d,
        fst_s,
        fstgt_d,
        fstgt_s,
        fstle_d,
        fstle_s,
        fstx_d,
        fstx_s,
        fsub_d,
        fsub_s,
        ftint_l_d,
        ftint_l_s,
        ftint_w_d,
        ftint_w_s,
        ftintrm_l_d,
        ftintrm_l_s,
        ftintrm_w_d,
        ftintrm_w_s,
        ftintrne_l_d,
        ftintrne_l_s,
        ftintrne_w_d,
        ftintrne_w_s,
        ftintrp_l_d,
        ftintrp_l_s,
        ftintrp_w_d,
        ftintrp_w_s,
        ftintrz_l_d,
        ftintrz_l_s,
        ftintrz_w_d,
        ftintrz_w_s,
        ibar,
        idle,
        invtlb,
        iocsrrd_b,
        iocsrrd_d,
        iocsrrd_h,
        iocsrrd_w,
        iocsrwr_b,
        iocsrwr_d,
        iocsrwr_h,
        iocsrwr_w,
        jirl,
        ld_b,
        ld_bu,
        ld_d,
        ld_h,
        ld_hu,
        ld_w,
        ld_wu,
        lddir,
        ldgt_b,
        ldgt_d,
        ldgt_h,
        ldgt_w,
        ldle_b,
        ldle_d,
        ldle_h,
        ldle_w,
        ldpte,
        ldptr_d,
        ldptr_w,
        ldx_b,
        ldx_bu,
        ldx_d,
        ldx_h,
        ldx_hu,
        ldx_w,
        ldx_wu,
        ll_d,
        ll_w,
        lu12i_w,
        lu32i_d,
        lu52i_d,
        maskeqz,
        masknez,
        mod_d,
        mod_du,
        mod_w,
        mod_wu,
        movcf2fr,
        movcf2gr,
        movfcsr2gr,
        movfr2cf,
        movfr2gr_d,
        movfr2gr_s,
        movfrh2gr_s,
        movgr2cf,
        movgr2fcsr,
        movgr2fr_d,
        movgr2fr_w,
        movgr2frh_w,
        mul_d,
        mul_w,
        mulh_d,
        mulh_du,
        mulh_w,
        mulh_wu,
        mulw_d_w,
        mulw_d_wu,
        nor,
        or,
        ori,
        orn,
        pcaddi,
        pcaddu12i,
        pcaddu18i,
        pcalau12i,
        preld,
        preldx,
        rdtime_d,
        rdtimeh_w,
        rdtimel_w,
        revb_2h,
        revb_2w,
        revb_4h,
        revb_d,
        revh_2w,
        revh_d,
        rotr_d,
        rotr_w,
        rotri_d,
        rotri_w,
        sc_d,
        sc_w,
        sll_d,
        sll_w,
        slli_d,
        slli_w,
        slt,
        slti,
        sltu,
        sltui,
        sra_d,
        sra_w,
        srai_d,
        srai_w,
        srl_d,
        srl_w,
        srli_d,
        srli_w,
        st_b,
        st_d,
        st_h,
        st_w,
        stgt_b,
        stgt_d,
        stgt_h,
        stgt_w,
        stle_b,
        stle_d,
        stle_h,
        stle_w,
        stptr_d,
        stptr_w,
        stx_b,
        stx_d,
        stx_h,
        stx_w,
        sub_d,
        sub_w,
        syscall,
        tlbclr,
        tlbfill,
        tlbflush,
        tlbrd,
        tlbsrch,
        tlbwr,
        xor,
        xori,
    }
}