Source code for m2isar.metamodel.attribute_info


from enum import Enum, IntEnum, auto, IntFlag
from dataclasses import dataclass

[docs] class MemoryAttribute(Enum):
[docs] IS_MAIN_MEM = auto()
[docs] IS_CSR_REG = auto()
[docs] DELETE = auto()
[docs] ETISS_CAN_FAIL = auto()
[docs] ETISS_IS_GLOBAL_IRQ_EN = auto()
[docs] ETISS_IS_IRQ_EN = auto()
[docs] ETISS_IS_IRQ_PENDING = auto()
[docs] ETISS_IS_PROCNO = auto()
[docs] class RegisterAttribute(Enum):
[docs] IS_PC = auto()
[docs] IS_MAIN_REG = auto()
[docs] IS_FLOAT_REG = auto()
[docs] IS_VECTOR_REG = auto()
[docs] class FunctionAttribute(Enum):
[docs] ETISS_STATICFN = auto()
[docs] ETISS_NEEDS_ARCH = auto()
[docs] ETISS_TRAP_ENTRY_FN = auto()
[docs] ETISS_TRAP_TRANSLATE_FN = auto()
[docs] class FunctionThrows(IntEnum):
[docs] NO = 0
[docs] YES = 1
[docs] MAYBE = 2
[docs] class ConstAttribute(Enum):
[docs] IS_REG_WIDTH = auto()
[docs] IS_ADDR_WIDTH = auto()
[docs] class InstrAttribute(Enum):
[docs] NO_CONT = auto()
[docs] COND = auto()
[docs] FLUSH = auto()
[docs] SIM_EXIT = auto()
[docs] ENABLE = auto()
[docs] ETISS_ERROR_INSTRUCTION = auto()
[docs] class AccessAttribute(IntFlag): """Describes the staticness of a Scalar or Function"""
[docs] NONE = 0 #no access at all
[docs] READ = auto() # read access only
[docs] WRITE = auto() # write access only
[docs] RW = READ | WRITE
@dataclass
[docs] class AccessContext: """A datakeeping class to track access of Varibles. Important in JIT compilation to know if depictable as a static element """
[docs] access_is_static: AccessAttribute = AccessAttribute.RW
[docs] class Qualifier(IntFlag):
[docs] NONE = 0
[docs] CONST = auto()
[docs] STATIC = auto()