Registers
registers
X86_INDEX_BY_NAME = {'rax': 0, 'rcx': 1, 'rdx': 2, 'rbx': 3, 'rsp': 4, 'rbp': 5, 'rsi': 6, 'rdi': 7, 'r8': 8, 'r9': 9, 'r10': 10, 'r11': 11, 'r12': 12, 'r13': 13, 'r14': 14, 'r15': 15}
module-attribute
Mapping of x86 register names to their indices.
See external documentation.
UNALLOCATED_GENERAL = GeneralRegisterType.unallocated()
module-attribute
RAX = GeneralRegisterType.from_name('rax')
module-attribute
RCX = GeneralRegisterType.from_name('rcx')
module-attribute
RDX = GeneralRegisterType.from_name('rdx')
module-attribute
RBX = GeneralRegisterType.from_name('rbx')
module-attribute
RSP = GeneralRegisterType.from_name('rsp')
module-attribute
RBP = GeneralRegisterType.from_name('rbp')
module-attribute
RSI = GeneralRegisterType.from_name('rsi')
module-attribute
RDI = GeneralRegisterType.from_name('rdi')
module-attribute
R8 = GeneralRegisterType.from_name('r8')
module-attribute
R9 = GeneralRegisterType.from_name('r9')
module-attribute
R10 = GeneralRegisterType.from_name('r10')
module-attribute
R11 = GeneralRegisterType.from_name('r11')
module-attribute
R12 = GeneralRegisterType.from_name('r12')
module-attribute
R13 = GeneralRegisterType.from_name('r13')
module-attribute
R14 = GeneralRegisterType.from_name('r14')
module-attribute
R15 = GeneralRegisterType.from_name('r15')
module-attribute
RFLAGS_INDEX_BY_NAME = {'rflags': 0}
module-attribute
UNALLOCATED_RFLAGS = RFLAGSRegisterType.unallocated()
module-attribute
RFLAGS = RFLAGSRegisterType.from_name('rflags')
module-attribute
SSE_INDEX_BY_NAME = {'xmm0': 0, 'xmm1': 1, 'xmm2': 2, 'xmm3': 3, 'xmm4': 4, 'xmm5': 5, 'xmm6': 6, 'xmm7': 7, 'xmm8': 8, 'xmm9': 9, 'xmm10': 10, 'xmm11': 11, 'xmm12': 12, 'xmm13': 13, 'xmm14': 14, 'xmm15': 15}
module-attribute
Mapping of SSE register names to their indices.
See external # documentation.
UNALLOCATED_SSE = SSERegisterType.unallocated()
module-attribute
XMM = tuple((SSERegisterType.from_name(f'xmm{i}')) for i in (range(16)))
module-attribute
AVX2_INDEX_BY_NAME = {'ymm0': 0, 'ymm1': 1, 'ymm2': 2, 'ymm3': 3, 'ymm4': 4, 'ymm5': 5, 'ymm6': 6, 'ymm7': 7, 'ymm8': 8, 'ymm9': 9, 'ymm10': 10, 'ymm11': 11, 'ymm12': 12, 'ymm13': 13, 'ymm14': 14, 'ymm15': 15}
module-attribute
Mapping of AVX2 register names to their indices.
See external # documentation.
UNALLOCATED_AVX2 = AVX2RegisterType.unallocated()
module-attribute
YMM = tuple((AVX2RegisterType.from_name(f'ymm{i}')) for i in (range(16)))
module-attribute
X86AVX512_INDEX_BY_NAME = {'zmm0': 0, 'zmm1': 1, 'zmm2': 2, 'zmm3': 3, 'zmm4': 4, 'zmm5': 5, 'zmm6': 6, 'zmm7': 7, 'zmm8': 8, 'zmm9': 9, 'zmm10': 10, 'zmm11': 11, 'zmm12': 12, 'zmm13': 13, 'zmm14': 14, 'zmm15': 15, 'zmm16': 16, 'zmm17': 17, 'zmm18': 18, 'zmm19': 19, 'zmm20': 20, 'zmm21': 21, 'zmm22': 22, 'zmm23': 23, 'zmm24': 24, 'zmm25': 25, 'zmm26': 26, 'zmm27': 27, 'zmm28': 28, 'zmm29': 29, 'zmm30': 30, 'zmm31': 31}
module-attribute
Mapping of AVX512 register names to their indices.
See external # documentation.
UNALLOCATED_AVX512 = AVX512RegisterType.unallocated()
module-attribute
ZMM = tuple((AVX512RegisterType.from_name(f'zmm{i}')) for i in (range(32)))
module-attribute
X86AVX512_MASK_INDEX_BY_NAME = {'k0': 0, 'k1': 1, 'k2': 2, 'k3': 3, 'k4': 4, 'k5': 5, 'k6': 6, 'k7': 7}
module-attribute
UNALLOCATED_AVX512_MASK = AVX512MaskRegisterType.unallocated()
module-attribute
K = tuple((AVX512MaskRegisterType.from_name(f'k{i}')) for i in (range(8)))
module-attribute
X86RegisterType
dataclass
Bases: RegisterType, ABC
The abstract class for all x86 register types.
Source code in xdsl/dialects/x86/registers.py
11 12 13 14 | |
GeneralRegisterType
dataclass
Bases: X86RegisterType
A scalar x86 register type representing general registers.
Source code in xdsl/dialects/x86/registers.py
52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 | |
name = 'x86.reg'
class-attribute
instance-attribute
index_by_name() -> dict[str, int]
classmethod
Source code in xdsl/dialects/x86/registers.py
60 61 62 | |
infinite_register_prefix()
classmethod
Source code in xdsl/dialects/x86/registers.py
64 65 66 | |
allocatable_registers()
classmethod
Registers of this type that can be used for register allocation.
Returns a tuple of GeneralRegisterType instances corresponding to registers that are allocatable according to the x86-64 System V ABI. This excludes registers with special purposes (e.g., stack pointer, base pointer).
Source code in xdsl/dialects/x86/registers.py
68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 | |
RFLAGSRegisterType
dataclass
Bases: X86RegisterType
A scalar x86 register type representing the RFLAGS register.
Source code in xdsl/dialects/x86/registers.py
129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 | |
name = 'x86.rflags'
class-attribute
instance-attribute
index_by_name() -> dict[str, int]
classmethod
Source code in xdsl/dialects/x86/registers.py
137 138 139 | |
infinite_register_prefix()
classmethod
Source code in xdsl/dialects/x86/registers.py
141 142 143 | |
X86VectorRegisterType
dataclass
Bases: X86RegisterType
The abstract class for all x86 vector register types.
Source code in xdsl/dialects/x86/registers.py
150 151 152 153 | |
SSERegisterType
dataclass
Bases: X86VectorRegisterType
An x86 register type for SSE instructions.
Source code in xdsl/dialects/x86/registers.py
156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 | |
name = 'x86.ssereg'
class-attribute
instance-attribute
index_by_name() -> dict[str, int]
classmethod
Source code in xdsl/dialects/x86/registers.py
164 165 166 | |
infinite_register_prefix()
classmethod
Source code in xdsl/dialects/x86/registers.py
168 169 170 | |
AVX2RegisterType
dataclass
Bases: X86VectorRegisterType
An x86 register type for AVX2 instructions.
Source code in xdsl/dialects/x86/registers.py
219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 | |
name = 'x86.avx2reg'
class-attribute
instance-attribute
index_by_name() -> dict[str, int]
classmethod
Source code in xdsl/dialects/x86/registers.py
227 228 229 | |
infinite_register_prefix()
classmethod
Source code in xdsl/dialects/x86/registers.py
231 232 233 | |
allocatable_registers()
classmethod
Source code in xdsl/dialects/x86/registers.py
235 236 237 | |
AVX512RegisterType
dataclass
Bases: X86VectorRegisterType
An x86 register type for AVX512 instructions.
Source code in xdsl/dialects/x86/registers.py
286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 | |
name = 'x86.avx512reg'
class-attribute
instance-attribute
index_by_name() -> dict[str, int]
classmethod
Source code in xdsl/dialects/x86/registers.py
294 295 296 | |
infinite_register_prefix()
classmethod
Source code in xdsl/dialects/x86/registers.py
298 299 300 | |
allocatable_registers()
classmethod
Source code in xdsl/dialects/x86/registers.py
302 303 304 | |
AVX512MaskRegisterType
dataclass
Bases: X86RegisterType
An x86 mask register type for AVX512 instructions.
Source code in xdsl/dialects/x86/registers.py
385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 | |
name = 'x86.avx512maskreg'
class-attribute
instance-attribute
index_by_name() -> dict[str, int]
classmethod
Source code in xdsl/dialects/x86/registers.py
393 394 395 | |
infinite_register_prefix()
classmethod
Source code in xdsl/dialects/x86/registers.py
397 398 399 | |
allocatable_registers()
classmethod
Source code in xdsl/dialects/x86/registers.py
401 402 403 | |