#region License
/* 
 * Copyright (C) 1999-2024 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.Arm.AArch64
{
    public enum Mnemonic
    {
        Invalid,
        Nyi,

        abs,
        adc,
        adcs,
        add,
        addhn,
        addhn2,
        addp,
        adds,
        addv,
        adr,
        adrp,
        aesd,
        aese,
        aesimc,
        aesmc,
        and,
        ands,
        asr,
        asrv,
        b,
        bfm,
        bic,
        bics,
        bif,
        bit,
        bl,
        blr,
        br,
        brk,
        bsl,
        casab,
        casalb,
        casp,
        caspa,
        caspal,
        caspb,
        caspbl,
        caspl,
        cbnz,
        cbz,
        ccmn,
        ccmp,
        cls,
        clz,
        cmeq,
        cmge,
        cmgt,
        cmhi,
        cmhs,
        cmle,
        cmlt,
        cmp,
        cmtst,
        cnt,
        crc32b,
        crc32cb,
        crc32ch,
        crc32cw,
        crc32h,
        crc32w,
        crc32x,
        csel,
        csinc,
        csinv,
        csneg,
        dcps1,
        dcps2,
        dcps3,
        dmb,
        drps,
        dsb,
        dup,
        eon,
        eor,
        eret,
        ext,
        extr,
        fabs,
        fadd,
        faddp,
        fcadd,
        fcmeq,
        fcmgt,
        fcmla,
        fcmlt,
        fcmp,
        fcmpe,
        fcsel,
        fcvt,
        fcvtas,
        fcvtau,
        fcvtms,
        fcvtmu,
        fcvtns,
        fcvtnu,
        fcvtps,
        fcvtpu,
        fcvts,
        fcvtzs,
        fcvtzu,
        fdiv,
        fmadd,
        fmax,
        fmaxnm,
        fmaxnmp,
        fmaxnmv,
        fmaxnp,
        fmaxp,
        fmaxv,
        fmin,
        fminnm,
        fminnmp,
        fminnmv,
        fminnp,
        fminp,
        fminv,
        fmla,
        fmls,
        fmov,
        fmsub,
        fmul,
        fmulx,
        fneg,
        fnmadd,
        fnmsub,
        fnmul,
        frecpe,
        frinta,
        frinti,
        frintx,
        frsqrte,
        fsqrt,
        fsub,
        hint,
        hlt,
        hvc,
        ins,
        isb,
        ld1,
        ld1r,
        ld2,
        ld2r,
        ld3,
        ld3r,
        ld4,
        ld4r,
        ldaddh,
        ldaddlh,
        ldarb,
        ldarh,
        ldaxp,
        ldaxr,
        ldaxrb,
        ldaxrh,
        ldclrh,
        ldeorh,
        ldlarb,
        ldnp,
        ldp,
        ldpsw,
        ldr,
        ldrb,
        ldrh,
        ldrsb,
        ldrsh,
        ldrsw,
        ldseth,
        ldsmaxh,
        ldsminh,
        ldtr,
        ldtrb,
        ldtrh,
        ldtsrb,
        ldtsrh,
        ldtsrw,
        ldumaxh,
        lduminh,
        ldur,
        ldurb,
        ldurh,
        ldursb,
        ldursh,
        ldursw,
        ldxp,
        ldxr,
        ldxrb,
        lsl,
        lslv,
        lsr,
        lsrv,
        madd,
        mla,
        mls,
        mneg,
        mov,
        movi,
        movk,
        movn,
        movz,
        mrs,
        msl,
        msr,
        msub,
        mul,
        mvn,
        mvni,
        neg,
        nop,
        not,
        orn,
        orr,
        pmul,
        pmull,
        pmull2,
        prfm,
        raddhn,
        raddhn2,
        rbit,
        ret,
        rev,
        rev16,
        rev32,
        rev64,
        ror,
        rorv,
        rshrn,
        rshrn2,
        rsubhn,
        rsubhn2,
        saba,
        sabal,
        sabal2,
        sabd,
        sabdl,
        sabdl2,
        sadalp,
        saddl,
        saddl2,
        saddlp,
        saddlv,
        saddw,
        saddw2,
        sbc,
        sbcs,
        sbfiz,
        sbfm,
        scvtf,
        sdiv,
        sdot,
        sev,
        sevl,
        sha1c,
        sha1h,
        sha1m,
        sha1p,
        sha1su0,
        sha1su1,
        sha256h,
        sha256h2,
        sha256su0,
        sha256su1,
        shadd,
        shl,
        shll,
        shll2,
        shrn,
        shsub,
        sli,
        smaddl,
        smax,
        smaxp,
        smaxv,
        smc,
        smin,
        sminp,
        sminv,
        smlal,
        smlal2,
        smlsl,
        smlsl2,
        smnegll,
        smov,
        smsubl,
        smulh,
        smull,
        smull2,
        sqabs,
        sqadd,
        sqdmlal,
        sqdmlal2,
        sqdmlsl,
        sqdmlsl2,
        sqdmulh,
        sqdmull,
        sqdmull2,
        sqhl,
        sqneg,
        sqrdmlah,
        sqrdmlsh,
        sqrdmulh,
        sqrshl,
        sqrshrn,
        sqrshrn2,
        sqrshrun,
        sqrshrun2,
        sqshl,
        sqshlu,
        sqshrn,
        sqshrn2,
        sqshrun,
        sqshrun2,
        sqsub,
        sqxtn,
        sqxtn2,
        sqxtun,
        sqxtun2,
        srhadd,
        sri,
        srshl,
        srshr,
        srsra,
        sshl,
        sshll,
        sshll2,
        sshr,
        ssra,
        ssubl,
        ssubl2,
        ssubw,
        ssubw2,
        st1,
        st2,
        st3,
        st4,
        stllr,
        stllrb,
        stllrh,
        stlr,
        stlrb,
        stlrh,
        stlxp,
        stlxr,
        stlxrb,
        stnp,
        stp,
        str,
        strb,
        strh,
        sttr,
        sttrb,
        sttrh,
        stur,
        sturb,
        sturh,
        stxp,
        stxr,
        stxrb,
        stxrh,
        sub,
        subhn,
        subhn2,
        subs,
        suqadd,
        svc,
        sxtb,
        sxth,
        sxtl,
        sxtw,
        sxtx,
        sys,
        tbl,
        tbnz,
        tbx,
        tbz,
        test,
        trn1,
        trn2,
        uaba,
        uabal,
        uabal2,
        uabd,
        uabdl,
        uabdl2,
        uadalp,
        uaddl,
        uaddl2,
        uaddlp,
        uaddlv,
        uaddw,
        uaddw2,
        ubfm,
        ucvtf,
        udiv,
        udot,
        uhadd,
        uhsub,
        umaddl,
        umax,
        umaxp,
        umaxv,
        umin,
        uminp,
        uminv,
        umlal,
        umlal2,
        umlsl,
        umlsl2,
        umnegl,
        umov,
        umsubl,
        umulh,
        umull,
        umull2,
        uqadd,
        uqrshl,
        uqrshrn,
        uqrshrn2,
        uqshl,
        uqshrn,
        uqshrn2,
        uqsub,
        uqxtn,
        uqxtn2,
        urecpe,
        urhadd,
        urshl,
        urshr,
        ursqrte,
        ursra,
        ushl,
        ushll,
        ushll2,
        ushr,
        usqadd,
        usra,
        usubl,
        usubl2,
        usubw,
        usubw2,
        uxtb,
        uxth,
        uxtl,
        uxtl2,
        uxtw,
        uxtx,
        uzp1,
        uzp2,
        wfe,
        wfi,
        xtn,
        xtn2,
        yield,
        zip1,
        zip2,
    }
}
