diff options
Diffstat (limited to 'src/asmjit/core/inst.h')
-rw-r--r-- | src/asmjit/core/inst.h | 28 |
1 files changed, 27 insertions, 1 deletions
diff --git a/src/asmjit/core/inst.h b/src/asmjit/core/inst.h index 919fe92..6436789 100644 --- a/src/asmjit/core/inst.h +++ b/src/asmjit/core/inst.h @@ -618,13 +618,25 @@ struct OpRWInfo { //! \} }; +//! Flags used by \ref InstRWInfo. +enum class InstRWFlags : uint32_t { + //! No flags. + kNone = 0x00000000u, + + //! Describes a move operation. + //! + //! This flag is used by RA to eliminate moves that are guaranteed to be moves only. + kMovOp = 0x00000001u +}; +ASMJIT_DEFINE_ENUM_FLAGS(InstRWFlags) + //! Read/Write information of an instruction. struct InstRWInfo { //! \name Members //! \{ //! Instruction flags (there are no flags at the moment, this field is reserved). - uint32_t _instFlags; + InstRWFlags _instFlags; //! CPU flags read. CpuRWFlags _readFlags; //! CPU flags written. @@ -650,6 +662,20 @@ struct InstRWInfo { //! \} + //! \name Instruction Flags + //! \{ + + //! Returns flags associated with the instruction, see \ref InstRWFlags. + inline InstRWFlags instFlags() const noexcept { return _instFlags; } + + //! Tests whether the instruction flags contain `flag`. + inline bool hasInstFlag(InstRWFlags flag) const noexcept { return Support::test(_instFlags, flag); } + + //! Tests whether the instruction flags contain \ref InstRWFlags::kMovOp. + inline bool isMovOp() const noexcept { return hasInstFlag(InstRWFlags::kMovOp); } + + //! \} + //! \name CPU Flags Information //! \{ |