40 #ifndef __ARCH_ARM_INSTS_SVE_HH__ 41 #define __ARCH_ARM_INSTS_SVE_HH__ 66 int8_t _imm1, int8_t _imm2) :
68 dest(_dest), imm1(_imm1), imm2(_imm2)
83 dest(_dest), imm1(_imm1), op2(_op2)
98 dest(_dest), op1(_op1), imm2(_imm2)
113 dest(_dest), op1(_op1), op2(_op2)
128 bool _srcIs32b =
false,
bool _destIsVec =
false) :
130 dest(_dest), gp(_gp),
131 srcIs32b(_srcIs32b), destIsVec(_destIsVec)
147 dest(_dest), op1(_op1), gp(_gp)
162 dest(_dest), op1(_op1), op2(_op2), srcIs32b(_srcIs32b)
188 dest(_dest), op1(_op1), gp(_gp)
202 dest(_dest), op1(_op1)
218 dest(_dest), imm(_imm)
237 dest(_dest), imm(_imm), gp(_gp), isMerging(_isMerging)
253 dest(_dest), op1(_op1), imm(_imm)
268 dest(_dest), gp(_gp), imm(_imm)
284 dest(_dest), imm(_imm)
299 dest(_dest), op2(_op2), gp(_gp)
316 dest(_dest), op1(_op1), op2(_op2), gp(_gp), predType(_predType)
330 dest(_dest), op1(_op1), op2(_op2)
346 dest(_dest), op1(_op1), op2(_op2), index(_index)
362 dest(_dest), op1(_op1), op2(_op2), gp(_gp), isSel(_isSel)
377 dest(_dest), op1(_op1), op2(_op2)
392 dest(_dest), gp(_gp), op1(_op1), op2(_op2)
408 dest(_dest), gp(_gp), op1(_op1), imm(_imm)
423 dest(_dest), op1(_op1), op2(_op2), gp(_gp)
439 dest(_dest), op2(_op2), imm(_imm)
453 dest(_dest), op1(_op1), gp(_gp)
467 dest(_dest), op1(_op1), gp(_gp)
480 OpClass __opClass,
IntRegIndex _dest, uint8_t _imm) :
482 dest(_dest), imm(_imm)
500 dest(_dest), op1(_op1), op2(_op2), gp(_gp), op2IsWide(_op2IsWide)
517 dest(_dest), op1(_op1), imm(_imm), gp(_gp)
528 SveAdrOffsetUnpackedUnsigned
541 dest(_dest), op1(_op1), op2(_op2), mult(_mult),
542 offsetFormat(_offsetFormat)
559 bool _dstIsVec,
bool _dstIs32b) :
561 dest(_dest), pattern(_pattern), imm(_imm), dstIsVec(_dstIsVec),
579 dest(_dest), gp(_gp), op1(_op1), isMerging(_isMerging)
596 dest(_dest), op1(_op1), op2(_op2), gp(_gp)
615 bool _conditional,
bool _scalar,
618 dest(_dest), op1(_op1), gp(_gp), conditional(_conditional),
619 scalar(_scalar), simdFp(_simdFp)
635 dest(_dest), op1(_op1), gp(_gp)
650 dest(_dest), op1(_op1), op2(_op2)
664 dest(_dest), op1(_op1)
745 dest(_dest), op1(_op1), imm(_imm)
760 dest(_dest), op1(_op1), imm(_imm)
776 dest(_dest), op1(_op1), simdFp(_simdFp)
794 dest(_dest), op1(_op1), op2(_op2), imm(_imm)
811 dest(_dest), op1(_op1), op2(_op2)
828 dest(_dest), op1(_op1), op2(_op2), gp(_gp), rot(_rot)
845 dest(_dest), op1(_op1), op2(_op2), rot(_rot), imm(_imm)
883 #endif // __ARCH_ARM_INSTS_SVE_HH__
Ternary with immediate, destructive, unpredicated SVE instruction.
Ternary, destructive, predicated (merging) SVE instruction.
SveAdrOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _op1, IntRegIndex _op2, uint8_t _mult, SveAdrOffsetFormat _offsetFormat)
SvePtrueOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, uint8_t _imm)
SVE dot product instruction (vectors)
SveTerPredOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _op1, IntRegIndex _op2, IntRegIndex _gp)
Compare and terminate loop SVE instruction.
SveIndexIROp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, int8_t _imm1, IntRegIndex _op2)
Unary unpredicated scalar to vector instruction.
Unary, constructive, predicated (merging) SVE instruction.
SVE unary predicate instructions with implicit destination operand.
Partition break with propagation SVE instruction.
SVE unpack and widen predicate.
Binary with immediate, destructive, unpredicated SVE instruction.
While predicate generation SVE instruction.
SVE compare instructions, predicated (zeroing).
Scalar element select SVE instruction.
SveTblOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _op1, IntRegIndex _op2)
SveBinConstrPredOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _op1, IntRegIndex _op2, IntRegIndex _gp, SvePredType _predType)
SVE Complex Instructions (indexed)
SveComplexOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _op1, IntRegIndex _op2, IntRegIndex _gp, uint8_t _rot)
SVE compare-with-immediate instructions, predicated (zeroing).
uint64_t sveExpandFpImmMul(uint8_t imm, uint8_t size)
Expand 1-bit floating-point immediate to 0.5 or 2.0 (FMUL).
SveUnaryPredOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _op1, IntRegIndex _gp)
SvePredUnaryWImplicitDstOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _op1)
SveReducOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _op1, IntRegIndex _gp)
unsigned int sveDecodePredCount(uint8_t imm, unsigned int num_elems)
Returns the actual number of elements active for PTRUE(S) instructions.
Unary with wide immediate, constructive, predicated SVE instruction.
SveWImplicitSrcDstOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass)
SveBinDestrPredOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _op2, IntRegIndex _gp)
SveIndexRIOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _op1, int8_t _imm2)
Index generation instruction, immediate operands.
Element count SVE instruction.
SveComplexIdxOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _op1, IntRegIndex _op2, uint8_t _rot, uint8_t _imm)
SveDotProdOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _op1, IntRegIndex _op2)
Integer compare SVE instruction.
SvePartBrkPropOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _op1, IntRegIndex _op2, IntRegIndex _gp)
SveIntCmpOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _op1, IntRegIndex _op2, IntRegIndex _gp, bool _op2IsWide=false)
SVE Complex Instructions (vectors)
Partition break SVE instruction.
uint64_t sveExpandFpImmMaxMin(uint8_t imm, uint8_t size)
Expand 1-bit floating-point immediate to 0.0 or 1.0 (FMAX, FMAXNM, FMIN, FMINNM). ...
SveBinWideImmUnpredOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, uint64_t _imm)
SveUnaryWideImmUnpredOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, uint64_t _imm)
SVE dot product instruction (indexed)
SvePartBrkOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _gp, IntRegIndex _op1, bool _isMerging)
SveBinIdxUnpredOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _op1, IntRegIndex _op2, uint8_t _index)
SveSelectOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _op1, IntRegIndex _gp, bool _conditional, bool _scalar, bool _simdFp)
SveUnarySca2VecUnpredOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _op1, bool _simdFp)
SveAdrOffsetFormat offsetFormat
Predicate logical instruction.
Binary with immediate index, destructive, unpredicated SVE instruction.
SveIntCmpImmOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _op1, int64_t _imm, IntRegIndex _gp)
std::string sveDisasmPredCountImm(uint8_t imm)
Returns the symbolic name associated with pattern imm for PTRUE(S) instructions.
Integer compare with immediate SVE instruction.
SVE vector - immediate binary operation.
SveIndexIIOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, int8_t _imm1, int8_t _imm2)
SveBinImmPredOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, uint64_t _imm, IntRegIndex _gp)
Unary with wide immediate, constructive, unpredicated SVE instruction.
SvePredTestOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _op1, IntRegIndex _gp)
SveBinImmUnpredConstrOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _op1, uint64_t _imm)
uint64_t sveExpandFpImmAddSub(uint8_t imm, uint8_t size)
Expand 1-bit floating-point immediate to 0.5 or 1.0 (FADD, FSUB, FSUBR).
SvePredUnaryWImplicitSrcOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest)
Unary, constructive, unpredicated SVE instruction.
SvePredLogicalOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _op1, IntRegIndex _op2, IntRegIndex _gp, bool _isSel=false)
Binary, constructive, predicated SVE instruction.
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
SveDotProdIdxOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _op1, IntRegIndex _op2, uint64_t _imm)
SveUnaryWideImmPredOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, uint64_t _imm, IntRegIndex _gp, bool _isMerging)
SvePredBinPermOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _op1, IntRegIndex _op2)
SvePredCountOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _gp, bool _srcIs32b=false, bool _destIsVec=false)
SveUnpackOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _op1)
Binary with immediate, destructive, predicated (merging) SVE instruction.
SVE unary predicate instructions with implicit source operand.
Predicate binary permute instruction.
SveElemCountOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, uint8_t _pattern, uint8_t _imm, bool _dstIsVec, bool _dstIs32b)
SveOrdReducOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _op1, IntRegIndex _gp)
Binary, unpredicated SVE instruction with indexed operand.
SveUnaryUnpredOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _op1)
SveBinUnpredOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _op1, IntRegIndex _op2)
SVE unary predicate instructions with implicit destination operand.
SveBinImmUnpredDestrOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _op1, uint64_t _imm)
SVE unary operation on predicate (predicated)
SveUnaryPredPredOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _op1, IntRegIndex _gp)
SVE unary predicate instructions, predicated, with implicit source operand.
Binary, unpredicated SVE instruction.
SveCmpOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _op1, IntRegIndex _op2, IntRegIndex _gp)
SveCmpImmOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _op1, uint64_t _imm, IntRegIndex _gp)
TheISA::ExtMachInst ExtMachInst
Binary extended machine instruction type.
Binary, destructive, predicated (merging) SVE instruction.
SveIndexRROp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _op1, IntRegIndex _op2)
SveTerImmUnpredOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _op2, uint64_t _imm)
SveCompTermOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _op1, IntRegIndex _op2)
SVE table lookup/permute using vector of element indices (TBL)
const char * svePredTypeToStr(SvePredType pt)
Returns the specifier for the predication type pt as a string.
Binary with wide immediate, destructive, unpredicated SVE instruction.
SvePredUnaryWImplicitSrcPredOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _gp)
SvePredCountPredOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _op1, IntRegIndex _gp)
SveWhileOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _op1, IntRegIndex _op2, bool _srcIs32b)
tlm::tlm_generic_payload gp
SveBinImmIdxUnpredOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _op1, uint64_t _imm)