LCOV - code coverage report
Current view: top level - asmjit - a64emitter.h (source / functions) Hit Total Coverage
Test: plumed test coverage (other modules) Lines: 0 16 0.0 %
Date: 2026-11-05 10:19:06 Functions: 0 14 0.0 %

          Line data    Source code
       1             : #ifdef __PLUMED_HAS_ASMJIT
       2             : // This file is part of AsmJit project <https://asmjit.com>
       3             : //
       4             : // See asmjit.h or LICENSE.md for license and copyright information
       5             : // SPDX-License-Identifier: Zlib
       6             : 
       7             : #ifndef ASMJIT_ARM_A64EMITTER_H_INCLUDED
       8             : #define ASMJIT_ARM_A64EMITTER_H_INCLUDED
       9             : 
      10             : #include "emitter.h"
      11             : #include "support.h"
      12             : #include "a64instdb.h"
      13             : #include "a64operand.h"
      14             : 
      15             : ASMJIT_BEGIN_SUB_NAMESPACE(a64)
      16             : 
      17             : #define ASMJIT_INST_0x(NAME, ID) \
      18             :   inline Error NAME() { return _emitter()->_emitI(Inst::kId##ID); }
      19             : 
      20             : #define ASMJIT_INST_1x(NAME, ID, T0) \
      21             :   inline Error NAME(const T0& o0) { return _emitter()->_emitI(Inst::kId##ID, o0); }
      22             : 
      23             : #define ASMJIT_INST_2x(NAME, ID, T0, T1) \
      24             :   inline Error NAME(const T0& o0, const T1& o1) { return _emitter()->_emitI(Inst::kId##ID, o0, o1); }
      25             : 
      26             : #define ASMJIT_INST_3x(NAME, ID, T0, T1, T2) \
      27             :   inline Error NAME(const T0& o0, const T1& o1, const T2& o2) { return _emitter()->_emitI(Inst::kId##ID, o0, o1, o2); }
      28             : 
      29             : #define ASMJIT_INST_4x(NAME, ID, T0, T1, T2, T3) \
      30             :   inline Error NAME(const T0& o0, const T1& o1, const T2& o2, const T3& o3) { return _emitter()->_emitI(Inst::kId##ID, o0, o1, o2, o3); }
      31             : 
      32             : #define ASMJIT_INST_5x(NAME, ID, T0, T1, T2, T3, T4) \
      33             :   inline Error NAME(const T0& o0, const T1& o1, const T2& o2, const T3& o3, const T4& o4) { return _emitter()->_emitI(Inst::kId##ID, o0, o1, o2, o3, o4); }
      34             : 
      35             : #define ASMJIT_INST_6x(NAME, ID, T0, T1, T2, T3, T4, T5) \
      36             :   inline Error NAME(const T0& o0, const T1& o1, const T2& o2, const T3& o3, const T4& o4, const T5& o5) { return _emitter()->_emitI(Inst::kId##ID, o0, o1, o2, o3, o4, o5); }
      37             : 
      38             : #define ASMJIT_INST_1cc(NAME, ID, T0) \
      39             :   inline Error NAME(const T0& o0) { return _emitter()->_emitI(Inst::kId##ID, o0); } \
      40             :   \
      41             :   inline Error NAME(CondCode cc, const T0& o0) { return _emitter()->_emitI(BaseInst::composeARMInstId(Inst::kId##ID, cc), o0); } \
      42             :   \
      43             :   inline Error NAME##_eq(const T0& o0) { return _emitter()->_emitI(BaseInst::composeARMInstId(Inst::kId##ID, CondCode::kEQ), o0); } \
      44             :   inline Error NAME##_ne(const T0& o0) { return _emitter()->_emitI(BaseInst::composeARMInstId(Inst::kId##ID, CondCode::kNE), o0); } \
      45             :   inline Error NAME##_cs(const T0& o0) { return _emitter()->_emitI(BaseInst::composeARMInstId(Inst::kId##ID, CondCode::kCS), o0); } \
      46             :   inline Error NAME##_hs(const T0& o0) { return _emitter()->_emitI(BaseInst::composeARMInstId(Inst::kId##ID, CondCode::kHS), o0); } \
      47             :   inline Error NAME##_cc(const T0& o0) { return _emitter()->_emitI(BaseInst::composeARMInstId(Inst::kId##ID, CondCode::kCC), o0); } \
      48             :   inline Error NAME##_lo(const T0& o0) { return _emitter()->_emitI(BaseInst::composeARMInstId(Inst::kId##ID, CondCode::kLO), o0); } \
      49             :   inline Error NAME##_mi(const T0& o0) { return _emitter()->_emitI(BaseInst::composeARMInstId(Inst::kId##ID, CondCode::kMI), o0); } \
      50             :   inline Error NAME##_pl(const T0& o0) { return _emitter()->_emitI(BaseInst::composeARMInstId(Inst::kId##ID, CondCode::kPL), o0); } \
      51             :   inline Error NAME##_vs(const T0& o0) { return _emitter()->_emitI(BaseInst::composeARMInstId(Inst::kId##ID, CondCode::kVS), o0); } \
      52             :   inline Error NAME##_vc(const T0& o0) { return _emitter()->_emitI(BaseInst::composeARMInstId(Inst::kId##ID, CondCode::kVC), o0); } \
      53             :   inline Error NAME##_hi(const T0& o0) { return _emitter()->_emitI(BaseInst::composeARMInstId(Inst::kId##ID, CondCode::kHI), o0); } \
      54             :   inline Error NAME##_ls(const T0& o0) { return _emitter()->_emitI(BaseInst::composeARMInstId(Inst::kId##ID, CondCode::kLS), o0); } \
      55             :   inline Error NAME##_ge(const T0& o0) { return _emitter()->_emitI(BaseInst::composeARMInstId(Inst::kId##ID, CondCode::kGE), o0); } \
      56             :   inline Error NAME##_lt(const T0& o0) { return _emitter()->_emitI(BaseInst::composeARMInstId(Inst::kId##ID, CondCode::kLT), o0); } \
      57             :   inline Error NAME##_gt(const T0& o0) { return _emitter()->_emitI(BaseInst::composeARMInstId(Inst::kId##ID, CondCode::kGT), o0); } \
      58             :   inline Error NAME##_le(const T0& o0) { return _emitter()->_emitI(BaseInst::composeARMInstId(Inst::kId##ID, CondCode::kLE), o0); } \
      59             :   inline Error NAME##_al(const T0& o0) { return _emitter()->_emitI(BaseInst::composeARMInstId(Inst::kId##ID, CondCode::kAL), o0); }
      60             : 
      61             : //! \addtogroup asmjit_a64
      62             : //! \{
      63             : 
      64             : //! ARM emitter.
      65             : //!
      66             : //! NOTE: This class cannot be instantiated, you can only cast to it and use it as emitter that emits to either
      67             : //! \ref Assembler, \ref Builder, or \ref Compiler (use withcaution with \ref Compiler as it expects virtual
      68             : //! registers to be used).
      69             : template<typename This>
      70             : struct EmitterExplicitT {
      71             :   //! \cond
      72             : 
      73             :   // These two are unfortunately reported by the sanitizer. We know what we do, however, the sanitizer doesn't.
      74             :   // I have tried to use reinterpret_cast instead, but that would generate bad code when compiled by MSC.
      75             :   ASMJIT_ATTRIBUTE_NO_SANITIZE_UNDEF inline This* _emitter() noexcept { return static_cast<This*>(this); }
      76             :   ASMJIT_ATTRIBUTE_NO_SANITIZE_UNDEF inline const This* _emitter() const noexcept { return static_cast<const This*>(this); }
      77             : 
      78             :   //! \endcond
      79             : 
      80             :   // --------------------------------------------------------------------------
      81             :   // [Options]
      82             :   // --------------------------------------------------------------------------
      83             : 
      84             : protected:
      85             :   inline This& _addInstOptions(InstOptions options) noexcept {
      86             :     static_cast<This*>(this)->addInstOptions(options);
      87             :     return *static_cast<This*>(this);
      88             :   }
      89             : 
      90             : public:
      91             :   //! \name General Purpose Instructions
      92             :   //! \{
      93             : 
      94             :   ASMJIT_INST_3x(adc, Adc, Gp, Gp, Gp)
      95             :   ASMJIT_INST_3x(adcs, Adcs, Gp, Gp, Gp)
      96             : 
      97             :   ASMJIT_INST_3x(add, Add, Gp, Gp, Gp)
      98             :   ASMJIT_INST_4x(add, Add, Gp, Gp, Gp, Imm)
      99           0 :   ASMJIT_INST_3x(add, Add, Gp, Gp, Imm)
     100             :   ASMJIT_INST_4x(add, Add, Gp, Gp, Imm, Imm)
     101             :   ASMJIT_INST_3x(adds, Adds, Gp, Gp, Gp)
     102             :   ASMJIT_INST_3x(adds, Adds, Gp, Gp, Imm)
     103             :   ASMJIT_INST_4x(adds, Adds, Gp, Gp, Gp, Imm)
     104             :   ASMJIT_INST_4x(adds, Adds, Gp, Gp, Imm, Imm)
     105             : 
     106             :   ASMJIT_INST_2x(adr, Adr, Gp, Imm)
     107             :   ASMJIT_INST_2x(adr, Adr, Gp, Label)
     108             :   ASMJIT_INST_2x(adrp, Adrp, Gp, Imm)
     109             :   ASMJIT_INST_2x(adrp, Adrp, Gp, Label)
     110             : 
     111             :   ASMJIT_INST_3x(and_, And, Gp, Gp, Imm)
     112             :   ASMJIT_INST_3x(and_, And, Gp, Gp, Gp)
     113             :   ASMJIT_INST_4x(and_, And, Gp, Gp, Gp, Imm)
     114             :   ASMJIT_INST_3x(ands, Ands, Gp, Gp, Imm)
     115             :   ASMJIT_INST_3x(ands, Ands, Gp, Gp, Gp)
     116             :   ASMJIT_INST_4x(ands, Ands, Gp, Gp, Gp, Imm)
     117             : 
     118             :   ASMJIT_INST_3x(asr, Asr, Gp, Gp, Imm)
     119             :   ASMJIT_INST_3x(asr, Asr, Gp, Gp, Gp)
     120             :   ASMJIT_INST_3x(asrv, Asrv, Gp, Gp, Gp)
     121             : 
     122             :   ASMJIT_INST_2x(at, At, Imm, Gp)
     123             : 
     124             :   ASMJIT_INST_3x(bfc, Bfc, Gp, Imm, Imm)
     125             :   ASMJIT_INST_4x(bfi, Bfi, Gp, Gp, Imm, Imm)
     126             :   ASMJIT_INST_4x(bfm, Bfm, Gp, Gp, Imm, Imm)
     127             :   ASMJIT_INST_4x(bfxil, Bfxil, Gp, Gp, Imm, Imm)
     128             : 
     129             :   ASMJIT_INST_3x(bic, Bic, Gp, Gp, Imm);
     130             :   ASMJIT_INST_3x(bic, Bic, Gp, Gp, Gp);
     131             :   ASMJIT_INST_4x(bic, Bic, Gp, Gp, Gp, Imm);
     132             :   ASMJIT_INST_3x(bics, Bics, Gp, Gp, Imm);
     133             :   ASMJIT_INST_3x(bics, Bics, Gp, Gp, Gp);
     134             :   ASMJIT_INST_4x(bics, Bics, Gp, Gp, Gp, Imm);
     135             : 
     136             :   ASMJIT_INST_1x(brk, Brk, Imm)
     137             : 
     138             :   ASMJIT_INST_4x(ccmn, Ccmn, Gp, Gp, Imm, Imm);
     139             :   ASMJIT_INST_4x(ccmn, Ccmn, Gp, Imm, Imm, Imm);
     140             :   ASMJIT_INST_4x(ccmp, Ccmp, Gp, Gp, Imm, Imm);
     141             :   ASMJIT_INST_4x(ccmp, Ccmp, Gp, Imm, Imm, Imm);
     142             : 
     143             :   ASMJIT_INST_3x(cinc, Cinc, Gp, Gp, Imm);
     144             :   ASMJIT_INST_3x(cinv, Cinv, Gp, Gp, Imm);
     145             : 
     146             :   ASMJIT_INST_1x(clrex, Clrex, Imm)
     147             : 
     148             :   ASMJIT_INST_2x(cls, Cls, Gp, Gp)
     149             :   ASMJIT_INST_2x(clz, Clz, Gp, Gp)
     150             : 
     151             :   ASMJIT_INST_2x(cmn, Cmn, Gp, Gp)
     152             :   ASMJIT_INST_3x(cmn, Cmn, Gp, Gp, Imm)
     153             :   ASMJIT_INST_2x(cmn, Cmn, Gp, Imm)
     154             :   ASMJIT_INST_3x(cmn, Cmn, Gp, Imm, Imm)
     155             :   ASMJIT_INST_2x(cmp, Cmp, Gp, Gp)
     156             :   ASMJIT_INST_3x(cmp, Cmp, Gp, Gp, Imm)
     157             :   ASMJIT_INST_2x(cmp, Cmp, Gp, Imm)
     158             :   ASMJIT_INST_3x(cmp, Cmp, Gp, Imm, Imm)
     159             : 
     160             :   ASMJIT_INST_3x(cneg, Cneg, Gp, Gp, Imm);
     161             : 
     162             :   ASMJIT_INST_4x(csel, Csel, Gp, Gp, Gp, Imm);
     163             :   ASMJIT_INST_2x(cset, Cset, Gp, Imm);
     164             :   ASMJIT_INST_2x(csetm, Csetm, Gp, Imm);
     165             : 
     166             :   ASMJIT_INST_4x(csinc, Csinc, Gp, Gp, Gp, Imm);
     167             :   ASMJIT_INST_4x(csinv, Csinv, Gp, Gp, Gp, Imm);
     168             :   ASMJIT_INST_4x(csneg, Csneg, Gp, Gp, Gp, Imm);
     169             : 
     170             :   ASMJIT_INST_2x(dc, Dc, Imm, Gp)
     171             :   ASMJIT_INST_1x(dmb, Dmb, Imm)
     172             :   ASMJIT_INST_1x(dsb, Dsb, Imm)
     173             :   ASMJIT_INST_0x(drps, Drps)
     174             : 
     175             :   ASMJIT_INST_3x(eon, Eon, Gp, Gp, Gp)
     176             :   ASMJIT_INST_4x(eon, Eon, Gp, Gp, Gp, Imm)
     177             : 
     178             :   ASMJIT_INST_3x(eor, Eor, Gp, Gp, Imm)
     179             :   ASMJIT_INST_3x(eor, Eor, Gp, Gp, Gp)
     180             :   ASMJIT_INST_4x(eor, Eor, Gp, Gp, Gp, Imm)
     181             : 
     182             :   ASMJIT_INST_0x(eret, Eret)
     183             :   ASMJIT_INST_0x(esb, Esb)
     184             : 
     185             :   ASMJIT_INST_4x(extr, Extr, Gp, Gp, Gp, Imm)
     186             : 
     187             :   ASMJIT_INST_1x(hlt, Hlt, Imm)
     188             :   ASMJIT_INST_1x(hvc, Hvc, Imm)
     189             :   ASMJIT_INST_2x(ic, Ic, Imm, Gp)
     190             :   ASMJIT_INST_1x(isb, Isb, Imm)
     191             : 
     192             :   ASMJIT_INST_3x(lsl, Lsl, Gp, Gp, Imm)
     193             :   ASMJIT_INST_3x(lsl, Lsl, Gp, Gp, Gp)
     194             :   ASMJIT_INST_3x(lslv, Lslv, Gp, Gp, Gp)
     195             : 
     196             :   ASMJIT_INST_3x(lsr, Lsr, Gp, Gp, Imm)
     197             :   ASMJIT_INST_3x(lsr, Lsr, Gp, Gp, Gp)
     198             :   ASMJIT_INST_3x(lsrv, Lsrv, Gp, Gp, Gp)
     199             : 
     200             :   ASMJIT_INST_4x(madd, Madd, Gp, Gp, Gp, Gp)
     201             :   ASMJIT_INST_3x(mneg, Mneg, Gp, Gp, Gp)
     202             : 
     203           0 :   ASMJIT_INST_2x(mov, Mov, Gp, Gp)
     204           0 :   ASMJIT_INST_2x(mov, Mov, Gp, Imm)
     205             :   ASMJIT_INST_2x(movk, Movk, Gp, Imm)
     206             :   ASMJIT_INST_3x(movk, Movk, Gp, Imm, Imm)
     207             :   ASMJIT_INST_2x(movn, Movn, Gp, Imm)
     208             :   ASMJIT_INST_3x(movn, Movn, Gp, Imm, Imm)
     209             :   ASMJIT_INST_2x(movz, Movz, Gp, Imm)
     210             :   ASMJIT_INST_3x(movz, Movz, Gp, Imm, Imm)
     211             : 
     212             :   ASMJIT_INST_2x(mrs, Mrs, Gp, Imm)
     213             :   ASMJIT_INST_2x(msr, Msr, Imm, Gp)
     214             :   ASMJIT_INST_2x(msr, Msr, Imm, Imm)
     215             : 
     216             :   ASMJIT_INST_4x(msub, Msub, Gp, Gp, Gp, Gp)
     217             :   ASMJIT_INST_3x(mul, Mul, Gp, Gp, Gp)
     218             : 
     219             :   ASMJIT_INST_2x(mvn, Mvn, Gp, Gp)
     220             :   ASMJIT_INST_3x(mvn, Mvn, Gp, Gp, Imm)
     221             : 
     222             :   ASMJIT_INST_2x(neg, Neg, Gp, Gp)
     223             :   ASMJIT_INST_3x(neg, Neg, Gp, Gp, Imm)
     224             :   ASMJIT_INST_2x(negs, Negs, Gp, Gp)
     225             :   ASMJIT_INST_3x(negs, Negs, Gp, Gp, Imm)
     226             : 
     227             :   ASMJIT_INST_2x(ngc, Ngc, Gp, Gp)
     228             :   ASMJIT_INST_2x(ngcs, Ngcs, Gp, Gp)
     229             : 
     230             :   ASMJIT_INST_3x(orn, Orn, Gp, Gp, Gp)
     231             :   ASMJIT_INST_4x(orn, Orn, Gp, Gp, Gp, Imm)
     232             : 
     233             :   ASMJIT_INST_3x(orr, Orr, Gp, Gp, Imm)
     234             :   ASMJIT_INST_3x(orr, Orr, Gp, Gp, Gp)
     235             :   ASMJIT_INST_4x(orr, Orr, Gp, Gp, Gp, Imm)
     236             : 
     237             :   ASMJIT_INST_2x(rbit, Rbit, Gp, Gp)
     238           0 :   ASMJIT_INST_1x(ret, Ret, Gp)
     239             : 
     240             :   ASMJIT_INST_2x(rev, Rev, Gp, Gp)
     241             :   ASMJIT_INST_2x(rev16, Rev16, Gp, Gp)
     242             :   ASMJIT_INST_2x(rev32, Rev32, Gp, Gp)
     243             :   ASMJIT_INST_2x(rev64, Rev64, Gp, Gp)
     244             : 
     245             :   ASMJIT_INST_3x(ror, Ror, Gp, Gp, Imm)
     246             :   ASMJIT_INST_3x(ror, Ror, Gp, Gp, Gp)
     247             :   ASMJIT_INST_3x(rorv, Rorv, Gp, Gp, Gp)
     248             : 
     249             :   ASMJIT_INST_3x(sbc, Sbc, Gp, Gp, Gp)
     250             :   ASMJIT_INST_3x(sbcs, Sbcs, Gp, Gp, Gp)
     251             : 
     252             :   ASMJIT_INST_4x(sbfiz, Sbfiz, Gp, Gp, Imm, Imm)
     253             :   ASMJIT_INST_4x(sbfm, Sbfm, Gp, Gp, Imm, Imm)
     254             :   ASMJIT_INST_4x(sbfx, Sbfx, Gp, Gp, Imm, Imm)
     255             : 
     256             :   ASMJIT_INST_3x(sdiv, Sdiv, Gp, Gp, Gp)
     257             : 
     258             :   ASMJIT_INST_4x(smaddl, Smaddl, Gp, Gp, Gp, Gp)
     259             :   ASMJIT_INST_1x(smc, Smc, Imm)
     260             :   ASMJIT_INST_3x(smnegl, Smnegl, Gp, Gp, Gp)
     261             :   ASMJIT_INST_4x(smsubl, Smsubl, Gp, Gp, Gp, Gp)
     262             :   ASMJIT_INST_3x(smulh, Smulh, Gp, Gp, Gp)
     263             :   ASMJIT_INST_3x(smull, Smull, Gp, Gp, Gp)
     264             : 
     265             :   ASMJIT_INST_3x(sub, Sub, Gp, Gp, Gp)
     266             :   ASMJIT_INST_4x(sub, Sub, Gp, Gp, Gp, Imm)
     267           0 :   ASMJIT_INST_3x(sub, Sub, Gp, Gp, Imm)
     268             :   ASMJIT_INST_4x(sub, Sub, Gp, Gp, Imm, Imm)
     269             :   ASMJIT_INST_3x(subs, Subs, Gp, Gp, Gp)
     270             :   ASMJIT_INST_4x(subs, Subs, Gp, Gp, Gp, Imm)
     271             :   ASMJIT_INST_3x(subs, Subs, Gp, Gp, Imm)
     272             :   ASMJIT_INST_4x(subs, Subs, Gp, Gp, Imm, Imm)
     273             : 
     274             :   ASMJIT_INST_1x(svc, Svc, Imm)
     275             : 
     276             :   ASMJIT_INST_2x(sxtb, Sxtb, Gp, Gp)
     277             :   ASMJIT_INST_2x(sxth, Sxth, Gp, Gp)
     278             :   ASMJIT_INST_2x(sxtw, Sxtw, Gp, Gp)
     279             : 
     280             :   ASMJIT_INST_4x(sys, Sys, Imm, Imm, Imm, Imm)
     281             :   ASMJIT_INST_5x(sys, Sys, Imm, Imm, Imm, Imm, Gp)
     282             : 
     283             :   ASMJIT_INST_2x(tlbi, Tlbi, Imm, Gp)
     284             :   ASMJIT_INST_2x(tst, Tst, Gp, Imm)
     285             :   ASMJIT_INST_2x(tst, Tst, Gp, Gp)
     286             :   ASMJIT_INST_3x(tst, Tst, Gp, Gp, Imm)
     287             : 
     288             :   ASMJIT_INST_3x(udiv, Udiv, Gp, Gp, Gp)
     289             : 
     290             :   ASMJIT_INST_4x(ubfiz, Ubfiz, Gp, Gp, Imm, Imm)
     291             :   ASMJIT_INST_4x(ubfm, Ubfm, Gp, Gp, Imm, Imm)
     292             :   ASMJIT_INST_4x(ubfx, Ubfx, Gp, Gp, Imm, Imm)
     293             : 
     294             :   ASMJIT_INST_4x(umaddl, Umaddl, Gp, Gp, Gp, Gp)
     295             :   ASMJIT_INST_3x(umnegl, Umnegl, Gp, Gp, Gp)
     296             :   ASMJIT_INST_4x(umsubl, Umsubl, Gp, Gp, Gp, Gp)
     297             :   ASMJIT_INST_3x(umull, Umull, Gp, Gp, Gp)
     298             :   ASMJIT_INST_3x(umulh, Umulh, Gp, Gp, Gp)
     299             : 
     300             :   ASMJIT_INST_2x(uxtb, Uxtb, Gp, Gp)
     301             :   ASMJIT_INST_2x(uxth, Uxth, Gp, Gp)
     302             : 
     303             :   ASMJIT_INST_0x(csdb, Csdb)
     304             :   ASMJIT_INST_1x(dcps1, Dcps1, Imm)
     305             :   ASMJIT_INST_1x(dcps2, Dcps2, Imm)
     306             :   ASMJIT_INST_1x(dcps3, Dcps3, Imm)
     307             :   ASMJIT_INST_0x(dgh, Dgh)
     308             :   ASMJIT_INST_0x(pssbb, Pssbb)
     309             :   ASMJIT_INST_0x(ssbb, Ssbb)
     310             :   ASMJIT_INST_1x(udf, Udf, Imm)
     311             :   ASMJIT_INST_1x(setf8, Setf8, Gp)
     312             :   ASMJIT_INST_1x(setf16, Setf16, Gp)
     313             : 
     314             :   //! \}
     315             : 
     316             :   //! \name ARMv8.4 Instructions
     317             :   //! \{
     318             : 
     319             :   ASMJIT_INST_0x(cfinv, Cfinv)
     320             : 
     321             :   //! \}
     322             : 
     323             :   //! \name ARMv8.5 Instructions
     324             :   //! \{
     325             : 
     326             :   ASMJIT_INST_0x(axflag, Axflag)
     327             :   ASMJIT_INST_0x(xaflag, Xaflag)
     328             : 
     329             :   //! \}
     330             : 
     331             :   //! \name Branch Instructions
     332             :   //! \{
     333             : 
     334             :   ASMJIT_INST_1cc(b, B, Imm)
     335           0 :   ASMJIT_INST_1cc(b, B, Label)
     336             :   ASMJIT_INST_1x(bl, Bl, Imm)
     337             :   ASMJIT_INST_1x(bl, Bl, Label)
     338             :   ASMJIT_INST_1x(blr, Blr, Gp)
     339             :   ASMJIT_INST_1x(br, Br, Gp)
     340             :   ASMJIT_INST_2x(cbz, Cbz, Gp, Imm)
     341             :   ASMJIT_INST_2x(cbz, Cbz, Gp, Label)
     342             :   ASMJIT_INST_2x(cbnz, Cbnz, Gp, Imm)
     343             :   ASMJIT_INST_2x(cbnz, Cbnz, Gp, Label)
     344             :   ASMJIT_INST_3x(tbnz, Tbnz, Gp, Imm, Imm)
     345             :   ASMJIT_INST_3x(tbnz, Tbnz, Gp, Imm, Label)
     346             :   ASMJIT_INST_3x(tbz, Tbz, Gp, Imm, Imm)
     347             :   ASMJIT_INST_3x(tbz, Tbz, Gp, Imm, Label)
     348             : 
     349             :   //! \}
     350             : 
     351             :   //! \name Load & Store Instructions
     352             :   //! \{
     353             : 
     354             :   ASMJIT_INST_3x(cas, Cas, Gp, Gp, Mem)
     355             :   ASMJIT_INST_3x(casa, Casa, Gp, Gp, Mem)
     356             :   ASMJIT_INST_3x(casab, Casab, Gp, Gp, Mem)
     357             :   ASMJIT_INST_3x(casah, Casah, Gp, Gp, Mem)
     358             :   ASMJIT_INST_3x(casal, Casal, Gp, Gp, Mem)
     359             :   ASMJIT_INST_3x(casalb, Casalb, Gp, Gp, Mem)
     360             :   ASMJIT_INST_3x(casalh, Casalh, Gp, Gp, Mem)
     361             :   ASMJIT_INST_3x(casb, Casb, Gp, Gp, Mem)
     362             :   ASMJIT_INST_3x(cash, Cash, Gp, Gp, Mem)
     363             :   ASMJIT_INST_3x(casl, Casl, Gp, Gp, Mem)
     364             :   ASMJIT_INST_3x(caslb, Caslb, Gp, Gp, Mem)
     365             :   ASMJIT_INST_3x(caslh, Caslh, Gp, Gp, Mem)
     366             : 
     367             :   ASMJIT_INST_5x(casp, Casp, Gp, Gp, Gp, Gp, Mem)
     368             :   ASMJIT_INST_5x(caspa, Caspa, Gp, Gp, Gp, Gp, Mem)
     369             :   ASMJIT_INST_5x(caspal, Caspal, Gp, Gp, Gp, Gp, Mem)
     370             :   ASMJIT_INST_5x(caspl, Caspl, Gp, Gp, Gp, Gp, Mem)
     371             : 
     372             :   ASMJIT_INST_3x(ldadd, Ldadd, Gp, Gp, Mem)
     373             :   ASMJIT_INST_3x(ldadda, Ldadda, Gp, Gp, Mem)
     374             :   ASMJIT_INST_3x(ldaddab, Ldaddab, Gp, Gp, Mem)
     375             :   ASMJIT_INST_3x(ldaddah, Ldaddah, Gp, Gp, Mem)
     376             :   ASMJIT_INST_3x(ldaddal, Ldaddal, Gp, Gp, Mem)
     377             :   ASMJIT_INST_3x(ldaddalb, Ldaddalb, Gp, Gp, Mem)
     378             :   ASMJIT_INST_3x(ldaddalh, Ldaddalh, Gp, Gp, Mem)
     379             :   ASMJIT_INST_3x(ldaddb, Ldaddb, Gp, Gp, Mem)
     380             :   ASMJIT_INST_3x(ldaddh, Ldaddh, Gp, Gp, Mem)
     381             :   ASMJIT_INST_3x(ldaddl, Ldaddl, Gp, Gp, Mem)
     382             :   ASMJIT_INST_3x(ldaddlb, Ldaddlb, Gp, Gp, Mem)
     383             :   ASMJIT_INST_3x(ldaddlh, Ldaddlh, Gp, Gp, Mem)
     384             : 
     385             :   ASMJIT_INST_2x(ldar, Ldar, Gp, Mem)
     386             :   ASMJIT_INST_2x(ldarb, Ldarb, Gp, Mem)
     387             :   ASMJIT_INST_2x(ldarh, Ldarh, Gp, Mem)
     388             : 
     389             :   ASMJIT_INST_2x(ldaxr, Ldaxr, Gp, Mem)
     390             :   ASMJIT_INST_2x(ldaxrb, Ldaxrb, Gp, Mem)
     391             :   ASMJIT_INST_2x(ldaxrh, Ldaxrh, Gp, Mem)
     392             : 
     393             :   ASMJIT_INST_3x(ldclr, Ldclr, Gp, Gp, Mem)
     394             :   ASMJIT_INST_3x(ldclra, Ldclra, Gp, Gp, Mem)
     395             :   ASMJIT_INST_3x(ldclrab, Ldclrab, Gp, Gp, Mem)
     396             :   ASMJIT_INST_3x(ldclrah, Ldclrah, Gp, Gp, Mem)
     397             :   ASMJIT_INST_3x(ldclral, Ldclral, Gp, Gp, Mem)
     398             :   ASMJIT_INST_3x(ldclralb, Ldclralb, Gp, Gp, Mem)
     399             :   ASMJIT_INST_3x(ldclralh, Ldclralh, Gp, Gp, Mem)
     400             :   ASMJIT_INST_3x(ldclrb, Ldclrb, Gp, Gp, Mem)
     401             :   ASMJIT_INST_3x(ldclrh, Ldclrh, Gp, Gp, Mem)
     402             :   ASMJIT_INST_3x(ldclrl, Ldclrl, Gp, Gp, Mem)
     403             :   ASMJIT_INST_3x(ldclrlb, Ldclrlb, Gp, Gp, Mem)
     404             :   ASMJIT_INST_3x(ldclrlh, Ldclrlh, Gp, Gp, Mem)
     405             : 
     406             :   ASMJIT_INST_3x(ldeor, Ldeor, Gp, Gp, Mem)
     407             :   ASMJIT_INST_3x(ldeora, Ldeora, Gp, Gp, Mem)
     408             :   ASMJIT_INST_3x(ldeorab, Ldeorab, Gp, Gp, Mem)
     409             :   ASMJIT_INST_3x(ldeorah, Ldeorah, Gp, Gp, Mem)
     410             :   ASMJIT_INST_3x(ldeoral, Ldeoral, Gp, Gp, Mem)
     411             :   ASMJIT_INST_3x(ldeoralb, Ldeoralb, Gp, Gp, Mem)
     412             :   ASMJIT_INST_3x(ldeoralh, Ldeoralh, Gp, Gp, Mem)
     413             :   ASMJIT_INST_3x(ldeorb, Ldeorb, Gp, Gp, Mem)
     414             :   ASMJIT_INST_3x(ldeorh, Ldeorh, Gp, Gp, Mem)
     415             :   ASMJIT_INST_3x(ldeorl, Ldeorl, Gp, Gp, Mem)
     416             :   ASMJIT_INST_3x(ldeorlb, Ldeorlb, Gp, Gp, Mem)
     417             :   ASMJIT_INST_3x(ldeorlh, Ldeorlh, Gp, Gp, Mem)
     418             : 
     419             :   ASMJIT_INST_2x(ldlar, Ldlar, Gp, Mem)
     420             :   ASMJIT_INST_2x(ldlarb, Ldlarb, Gp, Mem)
     421             :   ASMJIT_INST_2x(ldlarh, Ldlarh, Gp, Mem)
     422             : 
     423             :   ASMJIT_INST_3x(ldnp, Ldnp, Gp, Gp, Mem)
     424             : 
     425             :   ASMJIT_INST_3x(ldp, Ldp, Gp, Gp, Mem)
     426             :   ASMJIT_INST_3x(ldpsw, Ldpsw, Gp, Gp, Mem)
     427             : 
     428           0 :   ASMJIT_INST_2x(ldr, Ldr, Gp, Mem)
     429           0 :   ASMJIT_INST_2x(ldrb, Ldrb, Gp, Mem)
     430           0 :   ASMJIT_INST_2x(ldrh, Ldrh, Gp, Mem)
     431             :   ASMJIT_INST_2x(ldrsb, Ldrsb, Gp, Mem)
     432             :   ASMJIT_INST_2x(ldrsh, Ldrsh, Gp, Mem)
     433             :   ASMJIT_INST_2x(ldrsw, Ldrsw, Gp, Mem)
     434             : 
     435             :   ASMJIT_INST_3x(ldset, Ldset, Gp, Gp, Mem)
     436             :   ASMJIT_INST_3x(ldseta, Ldseta, Gp, Gp, Mem)
     437             :   ASMJIT_INST_3x(ldsetab, Ldsetab, Gp, Gp, Mem)
     438             :   ASMJIT_INST_3x(ldsetah, Ldsetah, Gp, Gp, Mem)
     439             :   ASMJIT_INST_3x(ldsetal, Ldsetal, Gp, Gp, Mem)
     440             :   ASMJIT_INST_3x(ldsetalb, Ldsetalb, Gp, Gp, Mem)
     441             :   ASMJIT_INST_3x(ldsetalh, Ldsetalh, Gp, Gp, Mem)
     442             :   ASMJIT_INST_3x(ldsetb, Ldsetb, Gp, Gp, Mem)
     443             :   ASMJIT_INST_3x(ldseth, Ldseth, Gp, Gp, Mem)
     444             :   ASMJIT_INST_3x(ldsetl, Ldsetl, Gp, Gp, Mem)
     445             :   ASMJIT_INST_3x(ldsetlb, Ldsetlb, Gp, Gp, Mem)
     446             :   ASMJIT_INST_3x(ldsetlh, Ldsetlh, Gp, Gp, Mem)
     447             : 
     448             :   ASMJIT_INST_3x(ldsmax, Ldsmax, Gp, Gp, Mem)
     449             :   ASMJIT_INST_3x(ldsmaxa, Ldsmaxa, Gp, Gp, Mem)
     450             :   ASMJIT_INST_3x(ldsmaxab, Ldsmaxab, Gp, Gp, Mem)
     451             :   ASMJIT_INST_3x(ldsmaxah, Ldsmaxah, Gp, Gp, Mem)
     452             :   ASMJIT_INST_3x(ldsmaxal, Ldsmaxal, Gp, Gp, Mem)
     453             :   ASMJIT_INST_3x(ldsmaxalb, Ldsmaxalb, Gp, Gp, Mem)
     454             :   ASMJIT_INST_3x(ldsmaxalh, Ldsmaxalh, Gp, Gp, Mem)
     455             :   ASMJIT_INST_3x(ldsmaxb, Ldsmaxb, Gp, Gp, Mem)
     456             :   ASMJIT_INST_3x(ldsmaxh, Ldsmaxh, Gp, Gp, Mem)
     457             :   ASMJIT_INST_3x(ldsmaxl, Ldsmaxl, Gp, Gp, Mem)
     458             :   ASMJIT_INST_3x(ldsmaxlb, Ldsmaxlb, Gp, Gp, Mem)
     459             :   ASMJIT_INST_3x(ldsmaxlh, Ldsmaxlh, Gp, Gp, Mem)
     460             : 
     461             :   ASMJIT_INST_3x(ldsmin, Ldsmin, Gp, Gp, Mem)
     462             :   ASMJIT_INST_3x(ldsmina, Ldsmina, Gp, Gp, Mem)
     463             :   ASMJIT_INST_3x(ldsminab, Ldsminab, Gp, Gp, Mem)
     464             :   ASMJIT_INST_3x(ldsminah, Ldsminah, Gp, Gp, Mem)
     465             :   ASMJIT_INST_3x(ldsminal, Ldsminal, Gp, Gp, Mem)
     466             :   ASMJIT_INST_3x(ldsminalb, Ldsminalb, Gp, Gp, Mem)
     467             :   ASMJIT_INST_3x(ldsminalh, Ldsminalh, Gp, Gp, Mem)
     468             :   ASMJIT_INST_3x(ldsminb, Ldsminb, Gp, Gp, Mem)
     469             :   ASMJIT_INST_3x(ldsminh, Ldsminh, Gp, Gp, Mem)
     470             :   ASMJIT_INST_3x(ldsminl, Ldsminl, Gp, Gp, Mem)
     471             :   ASMJIT_INST_3x(ldsminlb, Ldsminlb, Gp, Gp, Mem)
     472             :   ASMJIT_INST_3x(ldsminlh, Ldsminlh, Gp, Gp, Mem)
     473             : 
     474             :   ASMJIT_INST_2x(ldtr, Ldtr, Gp, Mem)
     475             :   ASMJIT_INST_2x(ldtrb, Ldtrb, Gp, Mem)
     476             :   ASMJIT_INST_2x(ldtrh, Ldtrh, Gp, Mem)
     477             :   ASMJIT_INST_2x(ldtrsb, Ldtrsb, Gp, Mem)
     478             :   ASMJIT_INST_2x(ldtrsh, Ldtrsh, Gp, Mem)
     479             :   ASMJIT_INST_2x(ldtrsw, Ldtrsw, Gp, Mem)
     480             : 
     481             :   ASMJIT_INST_3x(ldumax, Ldumax, Gp, Gp, Mem)
     482             :   ASMJIT_INST_3x(ldumaxa, Ldumaxa, Gp, Gp, Mem)
     483             :   ASMJIT_INST_3x(ldumaxab, Ldumaxab, Gp, Gp, Mem)
     484             :   ASMJIT_INST_3x(ldumaxah, Ldumaxah, Gp, Gp, Mem)
     485             :   ASMJIT_INST_3x(ldumaxal, Ldumaxal, Gp, Gp, Mem)
     486             :   ASMJIT_INST_3x(ldumaxalb, Ldumaxalb, Gp, Gp, Mem)
     487             :   ASMJIT_INST_3x(ldumaxalh, Ldumaxalh, Gp, Gp, Mem)
     488             :   ASMJIT_INST_3x(ldumaxb, Ldumaxb, Gp, Gp, Mem)
     489             :   ASMJIT_INST_3x(ldumaxh, Ldumaxh, Gp, Gp, Mem)
     490             :   ASMJIT_INST_3x(ldumaxl, Ldumaxl, Gp, Gp, Mem)
     491             :   ASMJIT_INST_3x(ldumaxlb, Ldumaxlb, Gp, Gp, Mem)
     492             :   ASMJIT_INST_3x(ldumaxlh, Ldumaxlh, Gp, Gp, Mem)
     493             : 
     494             :   ASMJIT_INST_3x(ldumin, Ldumin, Gp, Gp, Mem)
     495             :   ASMJIT_INST_3x(ldumina, Ldumina, Gp, Gp, Mem)
     496             :   ASMJIT_INST_3x(lduminab, Lduminab, Gp, Gp, Mem)
     497             :   ASMJIT_INST_3x(lduminah, Lduminah, Gp, Gp, Mem)
     498             :   ASMJIT_INST_3x(lduminal, Lduminal, Gp, Gp, Mem)
     499             :   ASMJIT_INST_3x(lduminalb, Lduminalb, Gp, Gp, Mem)
     500             :   ASMJIT_INST_3x(lduminalh, Lduminalh, Gp, Gp, Mem)
     501             :   ASMJIT_INST_3x(lduminb, Lduminb, Gp, Gp, Mem)
     502             :   ASMJIT_INST_3x(lduminh, Lduminh, Gp, Gp, Mem)
     503             :   ASMJIT_INST_3x(lduminl, Lduminl, Gp, Gp, Mem)
     504             :   ASMJIT_INST_3x(lduminlb, Lduminlb, Gp, Gp, Mem)
     505             :   ASMJIT_INST_3x(lduminlh, Lduminlh, Gp, Gp, Mem)
     506             : 
     507             :   ASMJIT_INST_2x(ldur, Ldur, Gp, Mem)
     508             :   ASMJIT_INST_2x(ldurb, Ldurb, Gp, Mem)
     509             :   ASMJIT_INST_2x(ldurh, Ldurh, Gp, Mem)
     510             :   ASMJIT_INST_2x(ldursb, Ldursb, Gp, Mem)
     511             :   ASMJIT_INST_2x(ldursh, Ldursh, Gp, Mem)
     512             :   ASMJIT_INST_2x(ldursw, Ldursw, Gp, Mem)
     513             : 
     514             :   ASMJIT_INST_3x(ldxp, Ldxp, Gp, Gp, Mem)
     515             :   ASMJIT_INST_3x(ldaxp, Ldaxp, Gp, Gp, Mem)
     516             : 
     517             :   ASMJIT_INST_2x(ldxr, Ldxr, Gp, Mem)
     518             :   ASMJIT_INST_2x(ldxrb, Ldxrb, Gp, Mem)
     519             :   ASMJIT_INST_2x(ldxrh, Ldxrh, Gp, Mem)
     520             : 
     521             :   ASMJIT_INST_2x(stadd, Stadd, Gp, Mem)
     522             :   ASMJIT_INST_2x(staddb, Staddb, Gp, Mem)
     523             :   ASMJIT_INST_2x(staddh, Staddh, Gp, Mem)
     524             :   ASMJIT_INST_2x(staddl, Staddl, Gp, Mem)
     525             :   ASMJIT_INST_2x(staddlb, Staddlb, Gp, Mem)
     526             :   ASMJIT_INST_2x(staddlh, Staddlh, Gp, Mem)
     527             : 
     528             :   ASMJIT_INST_2x(stclr, Stclr, Gp, Mem)
     529             :   ASMJIT_INST_2x(stclrb, Stclrb, Gp, Mem)
     530             :   ASMJIT_INST_2x(stclrh, Stclrh, Gp, Mem)
     531             :   ASMJIT_INST_2x(stclrl, Stclrl, Gp, Mem)
     532             :   ASMJIT_INST_2x(stclrlb, Stclrlb, Gp, Mem)
     533             :   ASMJIT_INST_2x(stclrlh, Stclrlh, Gp, Mem)
     534             : 
     535             :   ASMJIT_INST_2x(steor, Steor, Gp, Mem)
     536             :   ASMJIT_INST_2x(steorb, Steorb, Gp, Mem)
     537             :   ASMJIT_INST_2x(steorh, Steorh, Gp, Mem)
     538             :   ASMJIT_INST_2x(steorl, Steorl, Gp, Mem)
     539             :   ASMJIT_INST_2x(steorlb, Steorlb, Gp, Mem)
     540             :   ASMJIT_INST_2x(steorlh, Steorlh, Gp, Mem)
     541             : 
     542             :   ASMJIT_INST_2x(stllr, Stllr, Gp, Mem)
     543             :   ASMJIT_INST_2x(stllrb, Stllrb, Gp, Mem)
     544             :   ASMJIT_INST_2x(stllrh, Stllrh, Gp, Mem)
     545             : 
     546             :   ASMJIT_INST_2x(stlr, Stllr, Gp, Mem)
     547             :   ASMJIT_INST_2x(stlrb, Stllrb, Gp, Mem)
     548             :   ASMJIT_INST_2x(stlrh, Stllrh, Gp, Mem)
     549             : 
     550             :   ASMJIT_INST_3x(stlxr, Stlxr, Gp, Gp, Mem)
     551             :   ASMJIT_INST_3x(stlxrb, Stlxrb, Gp, Gp, Mem)
     552             :   ASMJIT_INST_3x(stlxrh, Stlxrh, Gp, Gp, Mem)
     553             : 
     554             :   ASMJIT_INST_3x(stnp, Stnp, Gp, Gp, Mem)
     555             :   ASMJIT_INST_3x(stp, Stp, Gp, Gp, Mem)
     556             : 
     557           0 :   ASMJIT_INST_2x(str, Str, Gp, Mem)
     558           0 :   ASMJIT_INST_2x(strb, Strb, Gp, Mem)
     559           0 :   ASMJIT_INST_2x(strh, Strh, Gp, Mem)
     560             : 
     561             :   ASMJIT_INST_2x(stset, Stset, Gp, Mem)
     562             :   ASMJIT_INST_2x(stsetb, Stsetb, Gp, Mem)
     563             :   ASMJIT_INST_2x(stseth, Stseth, Gp, Mem)
     564             :   ASMJIT_INST_2x(stsetl, Stsetl, Gp, Mem)
     565             :   ASMJIT_INST_2x(stsetlb, Stsetlb, Gp, Mem)
     566             :   ASMJIT_INST_2x(stsetlh, Stsetlh, Gp, Mem)
     567             : 
     568             :   ASMJIT_INST_2x(stsmax, Stsmax, Gp, Mem)
     569             :   ASMJIT_INST_2x(stsmaxb, Stsmaxb, Gp, Mem)
     570             :   ASMJIT_INST_2x(stsmaxh, Stsmaxh, Gp, Mem)
     571             :   ASMJIT_INST_2x(stsmaxl, Stsmaxl, Gp, Mem)
     572             :   ASMJIT_INST_2x(stsmaxlb, Stsmaxlb, Gp, Mem)
     573             :   ASMJIT_INST_2x(stsmaxlh, Stsmaxlh, Gp, Mem)
     574             : 
     575             :   ASMJIT_INST_2x(stsmin, Stsmin, Gp, Mem)
     576             :   ASMJIT_INST_2x(stsminb, Stsminb, Gp, Mem)
     577             :   ASMJIT_INST_2x(stsminh, Stsminh, Gp, Mem)
     578             :   ASMJIT_INST_2x(stsminl, Stsminl, Gp, Mem)
     579             :   ASMJIT_INST_2x(stsminlb, Stsminlb, Gp, Mem)
     580             :   ASMJIT_INST_2x(stsminlh, Stsminlh, Gp, Mem)
     581             : 
     582             :   ASMJIT_INST_2x(sttr, Sttr, Gp, Mem)
     583             :   ASMJIT_INST_2x(sttrb, Sttrb, Gp, Mem)
     584             :   ASMJIT_INST_2x(sttrh, Sttrh, Gp, Mem)
     585             : 
     586             :   ASMJIT_INST_2x(stumax, Stumax, Gp, Mem)
     587             :   ASMJIT_INST_2x(stumaxb, Stumaxb, Gp, Mem)
     588             :   ASMJIT_INST_2x(stumaxh, Stumaxh, Gp, Mem)
     589             :   ASMJIT_INST_2x(stumaxl, Stumaxl, Gp, Mem)
     590             :   ASMJIT_INST_2x(stumaxlb, Stumaxlb, Gp, Mem)
     591             :   ASMJIT_INST_2x(stumaxlh, Stumaxlh, Gp, Mem)
     592             : 
     593             :   ASMJIT_INST_2x(stumin, Stumin, Gp, Mem)
     594             :   ASMJIT_INST_2x(stuminb, Stuminb, Gp, Mem)
     595             :   ASMJIT_INST_2x(stuminh, Stuminh, Gp, Mem)
     596             :   ASMJIT_INST_2x(stuminl, Stuminl, Gp, Mem)
     597             :   ASMJIT_INST_2x(stuminlb, Stuminlb, Gp, Mem)
     598             :   ASMJIT_INST_2x(stuminlh, Stuminlh, Gp, Mem)
     599             : 
     600             :   ASMJIT_INST_2x(stur, Stur, Gp, Mem)
     601             :   ASMJIT_INST_2x(sturb, Sturb, Gp, Mem)
     602             :   ASMJIT_INST_2x(sturh, Sturh, Gp, Mem)
     603             : 
     604             :   ASMJIT_INST_4x(stxp, Stxp, Gp, Gp, Gp, Mem)
     605             :   ASMJIT_INST_4x(stlxp, Stlxp, Gp, Gp, Gp, Mem)
     606             : 
     607             :   ASMJIT_INST_3x(stxr, Stxr, Gp, Gp, Mem)
     608             :   ASMJIT_INST_3x(stxrb, Stxrb, Gp, Gp, Mem)
     609             :   ASMJIT_INST_3x(stxrh, Stxrh, Gp, Gp, Mem)
     610             : 
     611             :   ASMJIT_INST_3x(swp, Swp, Gp, Gp, Mem)
     612             :   ASMJIT_INST_3x(swpa, Swpa, Gp, Gp, Mem)
     613             :   ASMJIT_INST_3x(swpab, Swpab, Gp, Gp, Mem)
     614             :   ASMJIT_INST_3x(swpah, Swpah, Gp, Gp, Mem)
     615             :   ASMJIT_INST_3x(swpal, Swpal, Gp, Gp, Mem)
     616             :   ASMJIT_INST_3x(swpalb, Swpalb, Gp, Gp, Mem)
     617             :   ASMJIT_INST_3x(swpalh, Swpalh, Gp, Gp, Mem)
     618             :   ASMJIT_INST_3x(swpb, Swpb, Gp, Gp, Mem)
     619             :   ASMJIT_INST_3x(swph, Swph, Gp, Gp, Mem)
     620             :   ASMJIT_INST_3x(swpl, Swpl, Gp, Gp, Mem)
     621             :   ASMJIT_INST_3x(swplb, Swplb, Gp, Gp, Mem)
     622             :   ASMJIT_INST_3x(swplh, Swplh, Gp, Gp, Mem)
     623             :   //! \}
     624             : 
     625             :   //! \name CRC Instructions (ARMv8.1-A, optional in ARMv8.0-A)
     626             :   //! \{
     627             : 
     628             :   ASMJIT_INST_3x(crc32b, Crc32b, Gp, Gp, Gp);
     629             :   ASMJIT_INST_3x(crc32h, Crc32h, Gp, Gp, Gp);
     630             :   ASMJIT_INST_3x(crc32w, Crc32w, Gp, Gp, Gp);
     631             :   ASMJIT_INST_3x(crc32x, Crc32x, Gp, Gp, Gp);
     632             : 
     633             :   ASMJIT_INST_3x(crc32cb, Crc32cb, Gp, Gp, Gp);
     634             :   ASMJIT_INST_3x(crc32ch, Crc32ch, Gp, Gp, Gp);
     635             :   ASMJIT_INST_3x(crc32cw, Crc32cw, Gp, Gp, Gp);
     636             :   ASMJIT_INST_3x(crc32cx, Crc32cx, Gp, Gp, Gp);
     637             : 
     638             :   //! \}
     639             : 
     640             :   //! \name MTE Instructions
     641             :   //! \{
     642             : 
     643             :   ASMJIT_INST_2x(autda, Autda, Gp, Gp);
     644             :   ASMJIT_INST_2x(autdb, Autdb, Gp, Gp);
     645             :   ASMJIT_INST_1x(autdza, Autdza, Gp);
     646             :   ASMJIT_INST_1x(autdzb, Autdzb, Gp);
     647             :   ASMJIT_INST_2x(autia, Autia, Gp, Gp);
     648             :   ASMJIT_INST_0x(autia1716, Autia1716);
     649             :   ASMJIT_INST_0x(autiasp, Autiasp);
     650             :   ASMJIT_INST_0x(autiaz, Autiaz);
     651             :   ASMJIT_INST_2x(autib, Autib, Gp, Gp);
     652             :   ASMJIT_INST_0x(autib1716, Autib1716);
     653             :   ASMJIT_INST_0x(autibsp, Autibsp);
     654             :   ASMJIT_INST_0x(autibz, Autibz);
     655             :   ASMJIT_INST_1x(autiza, Autiza, Gp);
     656             :   ASMJIT_INST_1x(autizb, Autizb, Gp);
     657             : 
     658             :   ASMJIT_INST_3x(gmi, Gmi, Gp, Gp, Gp);
     659             : 
     660             :   ASMJIT_INST_2x(cmpp, Cmpp, Gp, Gp);
     661             :   ASMJIT_INST_4x(addg, Addg, Gp, Gp, Imm, Imm);
     662             : 
     663             :   ASMJIT_INST_2x(ldg, Ldg, Gp, Mem)
     664             :   ASMJIT_INST_2x(ldgm, Ldgm, Gp, Mem)
     665             :   ASMJIT_INST_2x(ldraa, Ldraa, Gp, Mem)
     666             :   ASMJIT_INST_2x(ldrab, Ldrab, Gp, Mem)
     667             : 
     668             :   ASMJIT_INST_2x(pacda, Pacda, Gp, Gp);
     669             :   ASMJIT_INST_2x(pacdb, Pacdb, Gp, Gp);
     670             :   ASMJIT_INST_1x(pacdza, Pacdza, Gp);
     671             :   ASMJIT_INST_1x(pacdzb, Pacdzb, Gp);
     672             :   ASMJIT_INST_3x(pacga, Pacga, Gp, Gp, Gp);
     673             : 
     674             :   ASMJIT_INST_3x(subp, Subp, Gp, Gp, Gp);
     675             :   ASMJIT_INST_3x(subps, Subps, Gp, Gp, Gp);
     676             :   ASMJIT_INST_4x(subg, Subg, Gp, Gp, Imm, Imm);
     677             : 
     678             :   ASMJIT_INST_2x(st2g, St2g, Gp, Mem)
     679             :   ASMJIT_INST_2x(stg, Stg, Gp, Mem)
     680             :   ASMJIT_INST_3x(stgp, Stgp, Gp, Gp, Mem)
     681             :   ASMJIT_INST_2x(stgm, Stgm, Gp, Mem)
     682             :   ASMJIT_INST_2x(stzg, Stzg, Gp, Mem)
     683             :   ASMJIT_INST_2x(stz2g, Stz2g, Gp, Mem)
     684             :   ASMJIT_INST_2x(stzgm, Stzgm, Gp, Mem)
     685             : 
     686             :   ASMJIT_INST_1x(xpacd, Xpacd, Gp);
     687             :   ASMJIT_INST_1x(xpaci, Xpaci, Gp);
     688             :   ASMJIT_INST_0x(xpaclri, Xpaclri);
     689             : 
     690             :   //! \}
     691             : 
     692             :   //! \name Hint Instructions
     693             :   //! \{
     694             : 
     695             :   ASMJIT_INST_1x(hint, Hint, Imm)
     696             :   ASMJIT_INST_0x(nop, Nop)
     697             :   ASMJIT_INST_0x(sev, Sev)
     698             :   ASMJIT_INST_0x(sevl, Sevl)
     699             :   ASMJIT_INST_0x(wfe, Wfe)
     700             :   ASMJIT_INST_0x(wfi, Wfi)
     701             :   ASMJIT_INST_0x(yield, Yield)
     702             : 
     703             :   //! \}
     704             : 
     705             :   //! \name SIMD & FP Instructions
     706             :   //! \{
     707             : 
     708             :   ASMJIT_INST_2x(abs, Abs_v, Vec, Vec);
     709             :   ASMJIT_INST_3x(add, Add_v, Vec, Vec, Vec);
     710             :   ASMJIT_INST_3x(addhn, Addhn_v, Vec, Vec, Vec);
     711             :   ASMJIT_INST_3x(addhn2, Addhn2_v, Vec, Vec, Vec);
     712             :   ASMJIT_INST_2x(addp, Addp_v, Vec, Vec);
     713             :   ASMJIT_INST_3x(addp, Addp_v, Vec, Vec, Vec);
     714             :   ASMJIT_INST_2x(addv, Addv_v, Vec, Vec);
     715             :   ASMJIT_INST_3x(and_, And_v, Vec, Vec, Vec);
     716             :   ASMJIT_INST_2x(bic, Bic_v, Vec, Imm);
     717             :   ASMJIT_INST_3x(bic, Bic_v, Vec, Vec, Vec);
     718             :   ASMJIT_INST_3x(bic, Bic_v, Vec, Imm, Imm);
     719             :   ASMJIT_INST_3x(bif, Bif_v, Vec, Vec, Vec);
     720             :   ASMJIT_INST_3x(bit, Bit_v, Vec, Vec, Vec);
     721             :   ASMJIT_INST_3x(bsl, Bsl_v, Vec, Vec, Vec);
     722             :   ASMJIT_INST_2x(cls, Cls_v, Vec, Vec);
     723             :   ASMJIT_INST_2x(clz, Clz_v, Vec, Vec);
     724             :   ASMJIT_INST_3x(cmeq, Cmeq_v, Vec, Vec, Vec);
     725             :   ASMJIT_INST_3x(cmeq, Cmeq_v, Vec, Vec, Imm);
     726             :   ASMJIT_INST_3x(cmge, Cmge_v, Vec, Vec, Vec);
     727             :   ASMJIT_INST_3x(cmge, Cmge_v, Vec, Vec, Imm);
     728             :   ASMJIT_INST_3x(cmgt, Cmgt_v, Vec, Vec, Vec);
     729             :   ASMJIT_INST_3x(cmgt, Cmgt_v, Vec, Vec, Imm);
     730             :   ASMJIT_INST_3x(cmhi, Cmhi_v, Vec, Vec, Vec);
     731             :   ASMJIT_INST_3x(cmhs, Cmhs_v, Vec, Vec, Vec);
     732             :   ASMJIT_INST_3x(cmle, Cmle_v, Vec, Vec, Imm);
     733             :   ASMJIT_INST_3x(cmlt, Cmlt_v, Vec, Vec, Imm);
     734             :   ASMJIT_INST_3x(cmtst, Cmtst_v, Vec, Vec, Vec);
     735             :   ASMJIT_INST_2x(cnt, Cnt_v, Vec, Vec);
     736             :   ASMJIT_INST_2x(dup, Dup_v, Vec, Gp);
     737             :   ASMJIT_INST_2x(dup, Dup_v, Vec, Vec);
     738             :   ASMJIT_INST_3x(eor, Eor_v, Vec, Vec, Vec);
     739             :   ASMJIT_INST_4x(ext, Ext_v, Vec, Vec, Vec, Imm);
     740             :   ASMJIT_INST_3x(fabd, Fabd_v, Vec, Vec, Vec);
     741             :   ASMJIT_INST_2x(fabs, Fabs_v, Vec, Vec);
     742             :   ASMJIT_INST_3x(facge, Facge_v, Vec, Vec, Vec);
     743             :   ASMJIT_INST_3x(facgt, Facgt_v, Vec, Vec, Vec);
     744             :   ASMJIT_INST_3x(fadd, Fadd_v, Vec, Vec, Vec);
     745             :   ASMJIT_INST_2x(faddp, Faddp_v, Vec, Vec);
     746             :   ASMJIT_INST_3x(faddp, Faddp_v, Vec, Vec, Vec);
     747             :   ASMJIT_INST_4x(fccmp, Fccmp_v, Vec, Vec, Imm, Imm);
     748             :   ASMJIT_INST_4x(fccmpe, Fccmpe_v, Vec, Vec, Imm, Imm);
     749             :   ASMJIT_INST_3x(fcmeq, Fcmeq_v, Vec, Vec, Vec);
     750             :   ASMJIT_INST_3x(fcmeq, Fcmeq_v, Vec, Vec, Imm);
     751             :   ASMJIT_INST_3x(fcmge, Fcmge_v, Vec, Vec, Vec);
     752             :   ASMJIT_INST_3x(fcmge, Fcmge_v, Vec, Vec, Imm);
     753             :   ASMJIT_INST_3x(fcmgt, Fcmgt_v, Vec, Vec, Vec);
     754             :   ASMJIT_INST_3x(fcmgt, Fcmgt_v, Vec, Vec, Imm);
     755             :   ASMJIT_INST_3x(fcmle, Fcmle_v, Vec, Vec, Imm);
     756             :   ASMJIT_INST_3x(fcmlt, Fcmlt_v, Vec, Vec, Imm);
     757             :   ASMJIT_INST_2x(fcmp, Fcmp_v, Vec, Vec);
     758             :   ASMJIT_INST_2x(fcmp, Fcmp_v, Vec, Imm);
     759             :   ASMJIT_INST_2x(fcmpe, Fcmpe_v, Vec, Vec);
     760             :   ASMJIT_INST_2x(fcmpe, Fcmpe_v, Vec, Imm);
     761             :   ASMJIT_INST_4x(fcsel, Fcsel_v, Vec, Vec, Vec, Imm);
     762             :   ASMJIT_INST_2x(fcvt, Fcvt_v, Vec, Vec);
     763             :   ASMJIT_INST_2x(fcvtas, Fcvtas_v, Gp, Vec);
     764             :   ASMJIT_INST_2x(fcvtas, Fcvtas_v, Vec, Vec);
     765             :   ASMJIT_INST_2x(fcvtau, Fcvtau_v, Gp, Vec);
     766             :   ASMJIT_INST_2x(fcvtau, Fcvtau_v, Vec, Vec);
     767             :   ASMJIT_INST_2x(fcvtl, Fcvtl_v, Vec, Vec);
     768             :   ASMJIT_INST_2x(fcvtl2, Fcvtl2_v, Vec, Vec);
     769             :   ASMJIT_INST_2x(fcvtms, Fcvtms_v, Gp, Vec);
     770             :   ASMJIT_INST_2x(fcvtms, Fcvtms_v, Vec, Vec);
     771             :   ASMJIT_INST_2x(fcvtmu, Fcvtmu_v, Gp, Vec);
     772             :   ASMJIT_INST_2x(fcvtmu, Fcvtmu_v, Vec, Vec);
     773             :   ASMJIT_INST_2x(fcvtn, Fcvtn_v, Vec, Vec);
     774             :   ASMJIT_INST_2x(fcvtn2, Fcvtn2_v, Vec, Vec);
     775             :   ASMJIT_INST_2x(fcvtns, Fcvtns_v, Gp, Vec);
     776             :   ASMJIT_INST_2x(fcvtns, Fcvtns_v, Vec, Vec);
     777             :   ASMJIT_INST_2x(fcvtnu, Fcvtnu_v, Gp, Vec);
     778             :   ASMJIT_INST_2x(fcvtnu, Fcvtnu_v, Vec, Vec);
     779             :   ASMJIT_INST_2x(fcvtps, Fcvtps_v, Gp, Vec);
     780             :   ASMJIT_INST_2x(fcvtps, Fcvtps_v, Vec, Vec);
     781             :   ASMJIT_INST_2x(fcvtpu, Fcvtpu_v, Gp, Vec);
     782             :   ASMJIT_INST_2x(fcvtpu, Fcvtpu_v, Vec, Vec);
     783             :   ASMJIT_INST_2x(fcvtxn, Fcvtxn_v, Vec, Vec);
     784             :   ASMJIT_INST_2x(fcvtxn2, Fcvtxn2_v, Vec, Vec);
     785             :   ASMJIT_INST_2x(fcvtzs, Fcvtzs_v, Gp, Vec);
     786             :   ASMJIT_INST_3x(fcvtzs, Fcvtzs_v, Gp, Vec, Imm);
     787             :   ASMJIT_INST_2x(fcvtzs, Fcvtzs_v, Vec, Vec);
     788             :   ASMJIT_INST_3x(fcvtzs, Fcvtzs_v, Vec, Vec, Imm);
     789             :   ASMJIT_INST_2x(fcvtzu, Fcvtzu_v, Gp, Vec);
     790             :   ASMJIT_INST_3x(fcvtzu, Fcvtzu_v, Gp, Vec, Imm);
     791             :   ASMJIT_INST_2x(fcvtzu, Fcvtzu_v, Vec, Vec);
     792             :   ASMJIT_INST_3x(fcvtzu, Fcvtzu_v, Vec, Vec, Imm);
     793             :   ASMJIT_INST_3x(fdiv, Fdiv_v, Vec, Vec, Vec);
     794             :   ASMJIT_INST_4x(fmadd, Fmadd_v, Vec, Vec, Vec, Vec);
     795             :   ASMJIT_INST_3x(fmax, Fmax_v, Vec, Vec, Vec);
     796             :   ASMJIT_INST_3x(fmaxnm, Fmaxnm_v, Vec, Vec, Vec);
     797             :   ASMJIT_INST_3x(fmaxnmp, Fmaxnmp_v, Vec, Vec, Vec);
     798             :   ASMJIT_INST_2x(fmaxnmp, Fmaxnmp_v, Vec, Vec);
     799             :   ASMJIT_INST_2x(fmaxnmv, Fmaxnmv_v, Vec, Vec);
     800             :   ASMJIT_INST_3x(fmaxp, Fmaxp_v, Vec, Vec, Vec);
     801             :   ASMJIT_INST_2x(fmaxp, Fmaxp_v, Vec, Vec);
     802             :   ASMJIT_INST_2x(fmaxv, Fmaxv_v, Vec, Vec);
     803             :   ASMJIT_INST_3x(fmin, Fmin_v, Vec, Vec, Vec);
     804             :   ASMJIT_INST_3x(fminnm, Fminnm_v, Vec, Vec, Vec);
     805             :   ASMJIT_INST_2x(fminnmv, Fminnmv_v, Vec, Vec);
     806             :   ASMJIT_INST_3x(fminnmp, Fminnmp_v, Vec, Vec, Vec);
     807             :   ASMJIT_INST_2x(fminnmp, Fminnmp_v, Vec, Vec);
     808             :   ASMJIT_INST_2x(fminp, Fminp_v, Vec, Vec);
     809             :   ASMJIT_INST_3x(fminp, Fminp_v, Vec, Vec, Vec);
     810             :   ASMJIT_INST_2x(fminv, Fminv_v, Vec, Vec);
     811             :   ASMJIT_INST_3x(fmla, Fmla_v, Vec, Vec, Vec);
     812             :   ASMJIT_INST_3x(fmls, Fmls_v, Vec, Vec, Vec);
     813             :   ASMJIT_INST_2x(fmov, Fmov_v, Gp, Vec);
     814             :   ASMJIT_INST_2x(fmov, Fmov_v, Vec, Gp);
     815           0 :   ASMJIT_INST_2x(fmov, Fmov_v, Vec, Vec);
     816             :   ASMJIT_INST_2x(fmov, Fmov_v, Vec, Imm);
     817             :   ASMJIT_INST_4x(fmsub, Fmsub_v, Vec, Vec, Vec, Vec);
     818             :   ASMJIT_INST_3x(fmul, Fmul_v, Vec, Vec, Vec);
     819             :   ASMJIT_INST_3x(fmulx, Fmulx_v, Vec, Vec, Vec);
     820             :   ASMJIT_INST_2x(fneg, Fneg_v, Vec, Vec);
     821             :   ASMJIT_INST_4x(fnmadd, Fnmadd_v, Vec, Vec, Vec, Vec);
     822             :   ASMJIT_INST_4x(fnmsub, Fnmsub_v, Vec, Vec, Vec, Vec);
     823             :   ASMJIT_INST_3x(fnmul, Fnmul_v, Vec, Vec, Vec);
     824             :   ASMJIT_INST_2x(frecpe, Frecpe_v, Vec, Vec);
     825             :   ASMJIT_INST_3x(frecps, Frecps_v, Vec, Vec, Vec);
     826             :   ASMJIT_INST_2x(frecpx, Frecpx_v, Vec, Vec);
     827             :   ASMJIT_INST_2x(frint32x, Frint32x_v, Vec, Vec);
     828             :   ASMJIT_INST_2x(frint32z, Frint32z_v, Vec, Vec);
     829             :   ASMJIT_INST_2x(frint64x, Frint64x_v, Vec, Vec);
     830             :   ASMJIT_INST_2x(frint64z, Frint64z_v, Vec, Vec);
     831             :   ASMJIT_INST_2x(frinta, Frinta_v, Vec, Vec);
     832             :   ASMJIT_INST_2x(frinti, Frinti_v, Vec, Vec);
     833             :   ASMJIT_INST_2x(frintm, Frintm_v, Vec, Vec);
     834             :   ASMJIT_INST_2x(frintn, Frintn_v, Vec, Vec);
     835             :   ASMJIT_INST_2x(frintp, Frintp_v, Vec, Vec);
     836             :   ASMJIT_INST_2x(frintx, Frintx_v, Vec, Vec);
     837             :   ASMJIT_INST_2x(frintz, Frintz_v, Vec, Vec);
     838             :   ASMJIT_INST_2x(frsqrte, Frsqrte_v, Vec, Vec);
     839             :   ASMJIT_INST_3x(frsqrts, Frsqrts_v, Vec, Vec, Vec);
     840             :   ASMJIT_INST_2x(fsqrt, Fsqrt_v, Vec, Vec);
     841             :   ASMJIT_INST_3x(fsub, Fsub_v, Vec, Vec, Vec);
     842             :   ASMJIT_INST_2x(ins, Ins_v, Vec, Gp);
     843             :   ASMJIT_INST_2x(ins, Ins_v, Vec, Vec);
     844             :   ASMJIT_INST_2x(ld1, Ld1_v, Vec, Mem);
     845             :   ASMJIT_INST_3x(ld1, Ld1_v, Vec, Vec, Mem);
     846             :   ASMJIT_INST_4x(ld1, Ld1_v, Vec, Vec, Vec, Mem);
     847             :   ASMJIT_INST_5x(ld1, Ld1_v, Vec, Vec, Vec, Vec, Mem);
     848             :   ASMJIT_INST_2x(ld1r, Ld1r_v, Vec, Mem);
     849             :   ASMJIT_INST_3x(ld2, Ld2_v, Vec, Vec, Mem);
     850             :   ASMJIT_INST_3x(ld2r, Ld2r_v, Vec, Vec, Mem);
     851             :   ASMJIT_INST_4x(ld3, Ld3_v, Vec, Vec, Vec, Mem);
     852             :   ASMJIT_INST_4x(ld3r, Ld3r_v, Vec, Vec, Vec, Mem);
     853             :   ASMJIT_INST_5x(ld4, Ld4_v, Vec, Vec, Vec, Vec, Mem);
     854             :   ASMJIT_INST_5x(ld4r, Ld4r_v, Vec, Vec, Vec, Vec, Mem);
     855             :   ASMJIT_INST_3x(ldnp, Ldnp_v, Vec, Vec, Mem);
     856             :   ASMJIT_INST_3x(ldp, Ldp_v, Vec, Vec, Mem);
     857           0 :   ASMJIT_INST_2x(ldr, Ldr_v, Vec, Mem);
     858             :   ASMJIT_INST_2x(ldur, Ldur_v, Vec, Mem);
     859             :   ASMJIT_INST_3x(mla, Mla_v, Vec, Vec, Vec);
     860             :   ASMJIT_INST_3x(mls, Mls_v, Vec, Vec, Vec);
     861           0 :   ASMJIT_INST_2x(mov, Mov_v, Vec, Vec);
     862             :   ASMJIT_INST_2x(mov, Mov_v, Gp, Vec);
     863             :   ASMJIT_INST_2x(mov, Mov_v, Vec, Gp);
     864             :   ASMJIT_INST_2x(movi, Movi_v, Vec, Imm);
     865             :   ASMJIT_INST_3x(movi, Movi_v, Vec, Imm, Imm);
     866             :   ASMJIT_INST_3x(mul, Mul_v, Vec, Vec, Vec);
     867             :   ASMJIT_INST_2x(mvn, Mvn_v, Vec, Vec);
     868             :   ASMJIT_INST_2x(mvni, Mvni_v, Vec, Imm);
     869             :   ASMJIT_INST_3x(mvni, Mvni_v, Vec, Imm, Imm);
     870             :   ASMJIT_INST_2x(neg, Neg_v, Vec, Vec);
     871             :   ASMJIT_INST_2x(not_, Not_v, Vec, Vec);
     872             :   ASMJIT_INST_3x(orn, Orn_v, Vec, Vec, Vec);
     873             :   ASMJIT_INST_2x(orr, Orr_v, Vec, Imm);
     874             :   ASMJIT_INST_3x(orr, Orr_v, Vec, Vec, Vec);
     875             :   ASMJIT_INST_3x(orr, Orr_v, Vec, Imm, Imm);
     876             :   ASMJIT_INST_3x(pmul, Pmul_v, Vec, Vec, Vec);
     877             :   ASMJIT_INST_3x(pmull, Pmull_v, Vec, Vec, Vec);
     878             :   ASMJIT_INST_3x(pmull2, Pmull2_v, Vec, Vec, Vec);
     879             :   ASMJIT_INST_3x(raddhn, Raddhn_v, Vec, Vec, Vec);
     880             :   ASMJIT_INST_3x(raddhn2, Raddhn2_v, Vec, Vec, Vec);
     881             :   ASMJIT_INST_2x(rbit, Rbit_v, Vec, Vec);
     882             :   ASMJIT_INST_2x(rev16, Rev16_v, Vec, Vec);
     883             :   ASMJIT_INST_2x(rev32, Rev32_v, Vec, Vec);
     884             :   ASMJIT_INST_2x(rev64, Rev64_v, Vec, Vec);
     885             :   ASMJIT_INST_3x(rshrn, Rshrn_v, Vec, Vec, Imm);
     886             :   ASMJIT_INST_3x(rshrn2, Rshrn2_v, Vec, Vec, Imm);
     887             :   ASMJIT_INST_3x(rsubhn, Rsubhn_v, Vec, Vec, Vec);
     888             :   ASMJIT_INST_3x(rsubhn2, Rsubhn2_v, Vec, Vec, Vec);
     889             :   ASMJIT_INST_3x(saba, Saba_v, Vec, Vec, Vec);
     890             :   ASMJIT_INST_3x(sabal, Sabal_v, Vec, Vec, Vec);
     891             :   ASMJIT_INST_3x(sabal2, Sabal2_v, Vec, Vec, Vec);
     892             :   ASMJIT_INST_3x(sabd, Sabd_v, Vec, Vec, Vec);
     893             :   ASMJIT_INST_3x(sabdl, Sabdl_v, Vec, Vec, Vec);
     894             :   ASMJIT_INST_3x(sabdl2, Sabdl2_v, Vec, Vec, Vec);
     895             :   ASMJIT_INST_2x(sadalp, Sadalp_v, Vec, Vec);
     896             :   ASMJIT_INST_3x(saddl, Saddl_v, Vec, Vec, Vec);
     897             :   ASMJIT_INST_3x(saddl2, Saddl2_v, Vec, Vec, Vec);
     898             :   ASMJIT_INST_2x(saddlp, Saddlp_v, Vec, Vec);
     899             :   ASMJIT_INST_2x(saddlv, Saddlv_v, Vec, Vec);
     900             :   ASMJIT_INST_3x(saddw, Saddw_v, Vec, Vec, Vec);
     901             :   ASMJIT_INST_3x(saddw2, Saddw2_v, Vec, Vec, Vec);
     902             :   ASMJIT_INST_2x(scvtf, Scvtf_v, Vec, Gp);
     903             :   ASMJIT_INST_3x(scvtf, Scvtf_v, Vec, Gp, Imm);
     904             :   ASMJIT_INST_2x(scvtf, Scvtf_v, Vec, Vec);
     905             :   ASMJIT_INST_3x(scvtf, Scvtf_v, Vec, Vec, Imm);
     906             :   ASMJIT_INST_3x(shadd, Shadd_v, Vec, Vec, Vec);
     907             :   ASMJIT_INST_3x(shl, Shl_v, Vec, Vec, Imm);
     908             :   ASMJIT_INST_3x(shll, Shll_v, Vec, Vec, Imm);
     909             :   ASMJIT_INST_3x(shll2, Shll2_v, Vec, Vec, Imm);
     910             :   ASMJIT_INST_3x(shrn, Shrn_v, Vec, Vec, Imm);
     911             :   ASMJIT_INST_3x(shrn2, Shrn2_v, Vec, Vec, Imm);
     912             :   ASMJIT_INST_3x(shsub, Shsub_v, Vec, Vec, Vec);
     913             :   ASMJIT_INST_3x(sli, Sli_v, Vec, Vec, Imm);
     914             :   ASMJIT_INST_3x(smax, Smax_v, Vec, Vec, Vec);
     915             :   ASMJIT_INST_3x(smaxp, Smaxp_v, Vec, Vec, Vec);
     916             :   ASMJIT_INST_2x(smaxv, Smaxv_v, Vec, Vec);
     917             :   ASMJIT_INST_3x(smin, Smin_v, Vec, Vec, Vec);
     918             :   ASMJIT_INST_3x(sminp, Sminp_v, Vec, Vec, Vec);
     919             :   ASMJIT_INST_2x(sminv, Sminv_v, Vec, Vec);
     920             :   ASMJIT_INST_3x(smlal, Smlal_v, Vec, Vec, Vec);
     921             :   ASMJIT_INST_3x(smlal2, Smlal2_v, Vec, Vec, Vec);
     922             :   ASMJIT_INST_3x(smlsl, Smlsl_v, Vec, Vec, Vec);
     923             :   ASMJIT_INST_3x(smlsl2, Smlsl2_v, Vec, Vec, Vec);
     924             :   ASMJIT_INST_2x(smov, Smov_v, Gp, Vec);
     925             :   ASMJIT_INST_3x(smull, Smull_v, Vec, Vec, Vec);
     926             :   ASMJIT_INST_3x(smull2, Smull2_v, Vec, Vec, Vec);
     927             :   ASMJIT_INST_2x(sqabs, Sqabs_v, Vec, Vec);
     928             :   ASMJIT_INST_3x(sqadd, Sqadd_v, Vec, Vec, Vec);
     929             :   ASMJIT_INST_3x(sqdmlal, Sqdmlal_v, Vec, Vec, Vec);
     930             :   ASMJIT_INST_3x(sqdmlal2, Sqdmlal2_v, Vec, Vec, Vec);
     931             :   ASMJIT_INST_3x(sqdmlsl, Sqdmlsl_v, Vec, Vec, Vec);
     932             :   ASMJIT_INST_3x(sqdmlsl2, Sqdmlsl2_v, Vec, Vec, Vec);
     933             :   ASMJIT_INST_3x(sqdmulh, Sqdmulh_v, Vec, Vec, Vec);
     934             :   ASMJIT_INST_3x(sqdmull, Sqdmull_v, Vec, Vec, Vec);
     935             :   ASMJIT_INST_3x(sqdmull2, Sqdmull2_v, Vec, Vec, Vec);
     936             :   ASMJIT_INST_2x(sqneg, Sqneg_v, Vec, Vec);
     937             :   ASMJIT_INST_3x(sqrdmulh, Sqrdmulh_v, Vec, Vec, Vec);
     938             :   ASMJIT_INST_3x(sqrshl, Sqrshl_v, Vec, Vec, Vec);
     939             :   ASMJIT_INST_3x(sqrshrn, Sqrshrn_v, Vec, Vec, Imm);
     940             :   ASMJIT_INST_3x(sqrshrn2, Sqrshrn2_v, Vec, Vec, Imm);
     941             :   ASMJIT_INST_3x(sqrshrun, Sqrshrun_v, Vec, Vec, Imm);
     942             :   ASMJIT_INST_3x(sqrshrun2, Sqrshrun2_v, Vec, Vec, Imm);
     943             :   ASMJIT_INST_3x(sqshl, Sqshl_v, Vec, Vec, Vec);
     944             :   ASMJIT_INST_3x(sqshl, Sqshl_v, Vec, Vec, Imm);
     945             :   ASMJIT_INST_3x(sqshlu, Sqshlu_v, Vec, Vec, Imm);
     946             :   ASMJIT_INST_3x(sqshrn, Sqshrn_v, Vec, Vec, Imm);
     947             :   ASMJIT_INST_3x(sqshrn2, Sqshrn2_v, Vec, Vec, Imm);
     948             :   ASMJIT_INST_3x(sqshrun, Sqshrun_v, Vec, Vec, Imm);
     949             :   ASMJIT_INST_3x(sqshrun2, Sqshrun2_v, Vec, Vec, Imm);
     950             :   ASMJIT_INST_3x(sqsub, Sqsub_v, Vec, Vec, Vec);
     951             :   ASMJIT_INST_2x(sqxtn, Sqxtn_v, Vec, Vec);
     952             :   ASMJIT_INST_2x(sqxtn2, Sqxtn2_v, Vec, Vec);
     953             :   ASMJIT_INST_2x(sqxtun, Sqxtun_v, Vec, Vec);
     954             :   ASMJIT_INST_2x(sqxtun2, Sqxtun2_v, Vec, Vec);
     955             :   ASMJIT_INST_3x(srhadd, Srhadd_v, Vec, Vec, Vec);
     956             :   ASMJIT_INST_3x(sri, Sri_v, Vec, Vec, Imm);
     957             :   ASMJIT_INST_3x(srshl, Srshl_v, Vec, Vec, Vec);
     958             :   ASMJIT_INST_3x(srshr, Srshr_v, Vec, Vec, Imm);
     959             :   ASMJIT_INST_3x(srsra, Srsra_v, Vec, Vec, Imm);
     960             :   ASMJIT_INST_3x(sshl, Sshl_v, Vec, Vec, Vec);
     961             :   ASMJIT_INST_3x(sshll, Sshll_v, Vec, Vec, Imm);
     962             :   ASMJIT_INST_3x(sshll2, Sshll2_v, Vec, Vec, Imm);
     963             :   ASMJIT_INST_3x(sshr, Sshr_v, Vec, Vec, Imm);
     964             :   ASMJIT_INST_3x(ssra, Ssra_v, Vec, Vec, Imm);
     965             :   ASMJIT_INST_3x(ssubl, Ssubl_v, Vec, Vec, Vec);
     966             :   ASMJIT_INST_3x(ssubl2, Ssubl2_v, Vec, Vec, Vec);
     967             :   ASMJIT_INST_3x(ssubw, Ssubw_v, Vec, Vec, Vec);
     968             :   ASMJIT_INST_3x(ssubw2, Ssubw2_v, Vec, Vec, Vec);
     969             :   ASMJIT_INST_2x(st1, St1_v, Vec, Mem);
     970             :   ASMJIT_INST_3x(st1, St1_v, Vec, Vec, Mem);
     971             :   ASMJIT_INST_4x(st1, St1_v, Vec, Vec, Vec, Mem);
     972             :   ASMJIT_INST_5x(st1, St1_v, Vec, Vec, Vec, Vec, Mem);
     973             :   ASMJIT_INST_3x(st2, St2_v, Vec, Vec, Mem);
     974             :   ASMJIT_INST_4x(st3, St3_v, Vec, Vec, Vec, Mem);
     975             :   ASMJIT_INST_5x(st4, St4_v, Vec, Vec, Vec, Vec, Mem);
     976             :   ASMJIT_INST_3x(stnp, Stnp_v, Vec, Vec, Mem);
     977             :   ASMJIT_INST_3x(stp, Stp_v, Vec, Vec, Mem);
     978           0 :   ASMJIT_INST_2x(str, Str_v, Vec, Mem);
     979             :   ASMJIT_INST_2x(stur, Stur_v, Vec, Mem);
     980             :   ASMJIT_INST_3x(sub, Sub_v, Vec, Vec, Vec);
     981             :   ASMJIT_INST_3x(subhn, Subhn_v, Vec, Vec, Vec);
     982             :   ASMJIT_INST_3x(subhn2, Subhn2_v, Vec, Vec, Vec);
     983             :   ASMJIT_INST_2x(suqadd, Suqadd_v, Vec, Vec);
     984             :   ASMJIT_INST_2x(sxtl, Sxtl_v, Vec, Vec);
     985             :   ASMJIT_INST_2x(sxtl2, Sxtl2_v, Vec, Vec);
     986             :   ASMJIT_INST_3x(tbl, Tbl_v, Vec, Vec, Vec);
     987             :   ASMJIT_INST_4x(tbl, Tbl_v, Vec, Vec, Vec, Vec);
     988             :   ASMJIT_INST_5x(tbl, Tbl_v, Vec, Vec, Vec, Vec, Vec);
     989             :   ASMJIT_INST_6x(tbl, Tbl_v, Vec, Vec, Vec, Vec, Vec, Vec);
     990             :   ASMJIT_INST_3x(tbx, Tbx_v, Vec, Vec, Vec);
     991             :   ASMJIT_INST_4x(tbx, Tbx_v, Vec, Vec, Vec, Vec);
     992             :   ASMJIT_INST_5x(tbx, Tbx_v, Vec, Vec, Vec, Vec, Vec);
     993             :   ASMJIT_INST_6x(tbx, Tbx_v, Vec, Vec, Vec, Vec, Vec, Vec);
     994             :   ASMJIT_INST_3x(trn1, Trn1_v, Vec, Vec, Vec);
     995             :   ASMJIT_INST_3x(trn2, Trn2_v, Vec, Vec, Vec);
     996             :   ASMJIT_INST_3x(uaba, Uaba_v, Vec, Vec, Vec);
     997             :   ASMJIT_INST_3x(uabal, Uabal_v, Vec, Vec, Vec);
     998             :   ASMJIT_INST_3x(uabal2, Uabal2_v, Vec, Vec, Vec);
     999             :   ASMJIT_INST_3x(uabd, Uabd_v, Vec, Vec, Vec);
    1000             :   ASMJIT_INST_3x(uabdl, Uabdl_v, Vec, Vec, Vec);
    1001             :   ASMJIT_INST_3x(uabdl2, Uabdl2_v, Vec, Vec, Vec);
    1002             :   ASMJIT_INST_2x(uadalp, Uadalp_v, Vec, Vec);
    1003             :   ASMJIT_INST_3x(uaddl, Uaddl_v, Vec, Vec, Vec);
    1004             :   ASMJIT_INST_3x(uaddl2, Uaddl2_v, Vec, Vec, Vec);
    1005             :   ASMJIT_INST_2x(uaddlp, Uaddlp_v, Vec, Vec);
    1006             :   ASMJIT_INST_2x(uaddlv, Uaddlv_v, Vec, Vec);
    1007             :   ASMJIT_INST_3x(uaddw, Uaddw_v, Vec, Vec, Vec);
    1008             :   ASMJIT_INST_3x(uaddw2, Uaddw2_v, Vec, Vec, Vec);
    1009             :   ASMJIT_INST_2x(ucvtf, Ucvtf_v, Vec, Gp);
    1010             :   ASMJIT_INST_3x(ucvtf, Ucvtf_v, Vec, Gp, Imm);
    1011             :   ASMJIT_INST_2x(ucvtf, Ucvtf_v, Vec, Vec);
    1012             :   ASMJIT_INST_3x(ucvtf, Ucvtf_v, Vec, Vec, Imm);
    1013             :   ASMJIT_INST_3x(uhadd, Uhadd_v, Vec, Vec, Vec);
    1014             :   ASMJIT_INST_3x(uhsub, Uhsub_v, Vec, Vec, Vec);
    1015             :   ASMJIT_INST_3x(umax, Umax_v, Vec, Vec, Vec);
    1016             :   ASMJIT_INST_3x(umaxp, Umaxp_v, Vec, Vec, Vec);
    1017             :   ASMJIT_INST_2x(umaxv, Umaxv_v, Vec, Vec);
    1018             :   ASMJIT_INST_3x(umin, Umin_v, Vec, Vec, Vec);
    1019             :   ASMJIT_INST_3x(uminp, Uminp_v, Vec, Vec, Vec);
    1020             :   ASMJIT_INST_2x(uminv, Uminv_v, Vec, Vec);
    1021             :   ASMJIT_INST_3x(umlal, Umlal_v, Vec, Vec, Vec);
    1022             :   ASMJIT_INST_3x(umlal2, Umlal2_v, Vec, Vec, Vec);
    1023             :   ASMJIT_INST_3x(umlsl, Umlsl_v, Vec, Vec, Vec);
    1024             :   ASMJIT_INST_3x(umlsl2, Umlsl2_v, Vec, Vec, Vec);
    1025             :   ASMJIT_INST_2x(umov, Umov_v, Gp, Vec);
    1026             :   ASMJIT_INST_3x(umull, Umull_v, Vec, Vec, Vec);
    1027             :   ASMJIT_INST_3x(umull2, Umull2_v, Vec, Vec, Vec);
    1028             :   ASMJIT_INST_3x(uqadd, Uqadd_v, Vec, Vec, Vec);
    1029             :   ASMJIT_INST_3x(uqrshl, Uqrshl_v, Vec, Vec, Vec);
    1030             :   ASMJIT_INST_3x(uqrshl, Uqrshl_v, Vec, Vec, Imm);
    1031             :   ASMJIT_INST_3x(uqrshrn, Uqrshrn_v, Vec, Vec, Imm);
    1032             :   ASMJIT_INST_3x(uqrshrn2, Uqrshrn2_v, Vec, Vec, Imm);
    1033             :   ASMJIT_INST_3x(uqshl, Uqshl_v, Vec, Vec, Vec);
    1034             :   ASMJIT_INST_3x(uqshl, Uqshl_v, Vec, Vec, Imm);
    1035             :   ASMJIT_INST_3x(uqshrn, Uqshrn_v, Vec, Vec, Imm);
    1036             :   ASMJIT_INST_3x(uqshrn2, Uqshrn2_v, Vec, Vec, Imm);
    1037             :   ASMJIT_INST_3x(uqsub, Uqsub_v, Vec, Vec, Vec);
    1038             :   ASMJIT_INST_2x(uqxtn, Uqxtn_v, Vec, Vec);
    1039             :   ASMJIT_INST_2x(uqxtn2, Uqxtn2_v, Vec, Vec);
    1040             :   ASMJIT_INST_2x(urecpe, Urecpe_v, Vec, Vec);
    1041             :   ASMJIT_INST_3x(urhadd, Urhadd_v, Vec, Vec, Vec);
    1042             :   ASMJIT_INST_3x(urshl, Urshl_v, Vec, Vec, Vec);
    1043             :   ASMJIT_INST_3x(urshr, Urshr_v, Vec, Vec, Imm);
    1044             :   ASMJIT_INST_2x(ursqrte, Ursqrte_v, Vec, Vec);
    1045             :   ASMJIT_INST_3x(ursra, Ursra_v, Vec, Vec, Imm);
    1046             :   ASMJIT_INST_3x(ushl, Ushl_v, Vec, Vec, Vec);
    1047             :   ASMJIT_INST_3x(ushll, Ushll_v, Vec, Vec, Imm);
    1048             :   ASMJIT_INST_3x(ushll2, Ushll2_v, Vec, Vec, Imm);
    1049             :   ASMJIT_INST_3x(ushr, Ushr_v, Vec, Vec, Imm);
    1050             :   ASMJIT_INST_2x(usqadd, Usqadd_v, Vec, Vec);
    1051             :   ASMJIT_INST_3x(usra, Usra_v, Vec, Vec, Imm);
    1052             :   ASMJIT_INST_3x(usubl, Usubl_v, Vec, Vec, Vec);
    1053             :   ASMJIT_INST_3x(usubl2, Usubl2_v, Vec, Vec, Vec);
    1054             :   ASMJIT_INST_3x(usubw, Usubw_v, Vec, Vec, Vec);
    1055             :   ASMJIT_INST_3x(usubw2, Usubw2_v, Vec, Vec, Vec);
    1056             :   ASMJIT_INST_2x(uxtl, Uxtl_v, Vec, Vec);
    1057             :   ASMJIT_INST_2x(uxtl2, Uxtl2_v, Vec, Vec);
    1058             :   ASMJIT_INST_3x(uzp1, Uzp1_v, Vec, Vec, Vec);
    1059             :   ASMJIT_INST_3x(uzp2, Uzp2_v, Vec, Vec, Vec);
    1060             :   ASMJIT_INST_2x(xtn, Xtn_v, Vec, Vec);
    1061             :   ASMJIT_INST_2x(xtn2, Xtn2_v, Vec, Vec);
    1062             :   ASMJIT_INST_3x(zip1, Zip1_v, Vec, Vec, Vec);
    1063             :   ASMJIT_INST_3x(zip2, Zip2_v, Vec, Vec, Vec);
    1064             : 
    1065             :   //! \}
    1066             : 
    1067             :   //! \name AES Instructions
    1068             :   //! \{
    1069             : 
    1070             :   ASMJIT_INST_2x(aesd, Aesd_v, Vec, Vec);
    1071             :   ASMJIT_INST_2x(aese, Aese_v, Vec, Vec);
    1072             :   ASMJIT_INST_2x(aesimc, Aesimc_v, Vec, Vec);
    1073             :   ASMJIT_INST_2x(aesmc, Aesmc_v, Vec, Vec);
    1074             : 
    1075             :   //! \}
    1076             : 
    1077             :   //! \name SHA1 Instructions
    1078             :   //! \{
    1079             : 
    1080             :   ASMJIT_INST_3x(sha1c, Sha1c_v, Vec, Vec, Vec);
    1081             :   ASMJIT_INST_2x(sha1h, Sha1h_v, Vec, Vec);
    1082             :   ASMJIT_INST_3x(sha1m, Sha1m_v, Vec, Vec, Vec);
    1083             :   ASMJIT_INST_3x(sha1p, Sha1p_v, Vec, Vec, Vec);
    1084             :   ASMJIT_INST_3x(sha1su0, Sha1su0_v, Vec, Vec, Vec);
    1085             :   ASMJIT_INST_2x(sha1su1, Sha1su1_v, Vec, Vec);
    1086             : 
    1087             :   //! \}
    1088             : 
    1089             :   //! \name SHA2 Instructions
    1090             :   //! \{
    1091             : 
    1092             :   ASMJIT_INST_3x(sha256h, Sha256h_v, Vec, Vec, Vec);
    1093             :   ASMJIT_INST_3x(sha256h2, Sha256h2_v, Vec, Vec, Vec);
    1094             :   ASMJIT_INST_2x(sha256su0, Sha256su0_v, Vec, Vec);
    1095             :   ASMJIT_INST_3x(sha256su1, Sha256su1_v, Vec, Vec, Vec);
    1096             : 
    1097             :   //! \}
    1098             : 
    1099             :   //! \name RDMA Instructions (ARMv8.1-A)
    1100             :   //! \{
    1101             : 
    1102             :   ASMJIT_INST_3x(sqrdmlah, Sqrdmlah_v, Vec, Vec, Vec);
    1103             :   ASMJIT_INST_3x(sqrdmlsh, Sqrdmlsh_v, Vec, Vec, Vec);
    1104             : 
    1105             :   //! \}
    1106             : 
    1107             :   //! \name FCMA Instruction (ARMv8.3-A)
    1108             :   //! \{
    1109             : 
    1110             :   ASMJIT_INST_4x(fcadd, Fcadd_v, Vec, Vec, Vec, Imm);
    1111             :   ASMJIT_INST_4x(fcmla, Fcmla_v, Vec, Vec, Vec, Imm);
    1112             : 
    1113             :   //! \}
    1114             : 
    1115             :   //! \name FJCVTZS Instruction (ARMv8.3-A)
    1116             :   //! \{
    1117             : 
    1118             :   ASMJIT_INST_2x(fjcvtzs, Fjcvtzs_v, Gp, Vec);
    1119             : 
    1120             :   //! \}
    1121             : 
    1122             :   //! \name FP16FML Instructions (ARMv8.4-A, optional in ARMv8.2-A)
    1123             :   //! \{
    1124             : 
    1125             :   ASMJIT_INST_3x(fmlal, Fmlal_v, Vec, Vec, Vec);
    1126             :   ASMJIT_INST_3x(fmlal2, Fmlal2_v, Vec, Vec, Vec);
    1127             :   ASMJIT_INST_3x(fmlsl, Fmlsl_v, Vec, Vec, Vec);
    1128             :   ASMJIT_INST_3x(fmlsl2, Fmlsl2_v, Vec, Vec, Vec);
    1129             : 
    1130             : 
    1131             :   //! \}
    1132             : 
    1133             :   //! \name SHA3 Instructions (ARMv8.4-A, optional in ARMv8.2-A)
    1134             :   //! \{
    1135             : 
    1136             :   ASMJIT_INST_4x(bcax, Bcax_v, Vec, Vec, Vec, Vec);
    1137             :   ASMJIT_INST_4x(eor3, Eor3_v, Vec, Vec, Vec, Vec);
    1138             :   ASMJIT_INST_3x(rax1, Rax1_v, Vec, Vec, Vec);
    1139             :   ASMJIT_INST_4x(xar, Xar_v, Vec, Vec, Vec, Imm);
    1140             : 
    1141             :   //! \}
    1142             : 
    1143             :   //! \name SHA512 Instructions (ARMv8.4-A)
    1144             :   //! \{
    1145             : 
    1146             :   ASMJIT_INST_3x(sha512h, Sha512h_v, Vec, Vec, Vec);
    1147             :   ASMJIT_INST_3x(sha512h2, Sha512h2_v, Vec, Vec, Vec);
    1148             :   ASMJIT_INST_2x(sha512su0, Sha512su0_v, Vec, Vec);
    1149             :   ASMJIT_INST_3x(sha512su1, Sha512su1_v, Vec, Vec, Vec);
    1150             : 
    1151             :   //! \}
    1152             : 
    1153             :   //! \name SM3 Instructions (ARMv8.4-A)
    1154             :   //! \{
    1155             : 
    1156             :   ASMJIT_INST_3x(sm3partw1, Sm3partw1_v, Vec, Vec, Vec);
    1157             :   ASMJIT_INST_3x(sm3partw2, Sm3partw2_v, Vec, Vec, Vec);
    1158             :   ASMJIT_INST_4x(sm3ss1, Sm3ss1_v, Vec, Vec, Vec, Vec);
    1159             :   ASMJIT_INST_3x(sm3tt1a, Sm3tt1a_v, Vec, Vec, Vec);
    1160             :   ASMJIT_INST_3x(sm3tt1b, Sm3tt1b_v, Vec, Vec, Vec);
    1161             :   ASMJIT_INST_3x(sm3tt2a, Sm3tt2a_v, Vec, Vec, Vec);
    1162             :   ASMJIT_INST_3x(sm3tt2b, Sm3tt2b_v, Vec, Vec, Vec);
    1163             : 
    1164             :   //! \}
    1165             : 
    1166             :   //! \name SM4 Instructions (ARMv8.4-A)
    1167             :   //! \{
    1168             : 
    1169             :   ASMJIT_INST_2x(sm4e, Sm4e_v, Vec, Vec);
    1170             :   ASMJIT_INST_3x(sm4ekey, Sm4ekey_v, Vec, Vec, Vec);
    1171             : 
    1172             :   //! \}
    1173             : 
    1174             :   //! \name DOTPROD Instructions (ARMv8.4-A, optional in ARMv8.2-A)
    1175             :   //! \{
    1176             : 
    1177             :   ASMJIT_INST_3x(sdot, Sdot_v, Vec, Vec, Vec);
    1178             :   ASMJIT_INST_3x(udot, Udot_v, Vec, Vec, Vec);
    1179             : 
    1180             :   //! \}
    1181             : 
    1182             :   //! \name BF16 Instructions (ARMv8.6-A)
    1183             :   //! \{
    1184             : 
    1185             :   ASMJIT_INST_2x(bfcvt, Bfcvt_v, Vec, Vec);
    1186             :   ASMJIT_INST_2x(bfcvtn, Bfcvtn_v, Vec, Vec);
    1187             :   ASMJIT_INST_2x(bfcvtn2, Bfcvtn2_v, Vec, Vec);
    1188             :   ASMJIT_INST_3x(bfmlalb, Bfmlalb_v, Vec, Vec, Vec);
    1189             :   ASMJIT_INST_3x(bfmlalt, Bfmlalt_v, Vec, Vec, Vec);
    1190             :   ASMJIT_INST_3x(bfmmla, Bfmmla_v, Vec, Vec, Vec);
    1191             :   ASMJIT_INST_3x(bfdot, Bfdot_v, Vec, Vec, Vec);
    1192             : 
    1193             :   //! \}
    1194             : 
    1195             :   //! \name I8MM Instructions (ARMv8.6-A)
    1196             :   //! \{
    1197             : 
    1198             :   ASMJIT_INST_3x(smmla, Smmla_v, Vec, Vec, Vec);
    1199             :   ASMJIT_INST_3x(sudot, Sudot_v, Vec, Vec, Vec);
    1200             :   ASMJIT_INST_3x(ummla, Ummla_v, Vec, Vec, Vec);
    1201             :   ASMJIT_INST_3x(usdot, Usdot_v, Vec, Vec, Vec);
    1202             :   ASMJIT_INST_3x(usmmla, Usmmla_v, Vec, Vec, Vec);
    1203             : 
    1204             :   //! \}
    1205             : };
    1206             : 
    1207             : //! Emitter (ARM).
    1208             : //!
    1209             : //! \note This class cannot be instantiated, you can only cast to it and use it as emitter that emits to either
    1210             : //! `a64::Assembler`, `a64::Builder`, or `a64::Compiler` (use with caution with `a64::Compiler` as it requires
    1211             : //! virtual registers).
    1212             : class Emitter : public BaseEmitter, public EmitterExplicitT<Emitter> {
    1213             :   ASMJIT_NONCONSTRUCTIBLE(Emitter)
    1214             : };
    1215             : 
    1216             : //! \}
    1217             : 
    1218             : #undef ASMJIT_INST_0x
    1219             : #undef ASMJIT_INST_1x
    1220             : #undef ASMJIT_INST_2x
    1221             : #undef ASMJIT_INST_3x
    1222             : #undef ASMJIT_INST_4x
    1223             : #undef ASMJIT_INST_5x
    1224             : #undef ASMJIT_INST_6x
    1225             : #undef ASMJIT_INST_1cc
    1226             : 
    1227             : ASMJIT_END_SUB_NAMESPACE
    1228             : 
    1229             : #endif // ASMJIT_ARM_A64EMITTER_H_INCLUDED
    1230             : 
    1231             : #endif // __PLUMED_HAS_ASMJIT

Generated by: LCOV version 1.16