Register stack
register_stack
¶
X86RegisterStack
dataclass
¶
Bases: RegisterStack
Available x86-specific registers.
Source code in xdsl/backend/x86/register_stack.py
DEFAULT_ALLOCATABLE_REGISTERS = tuple(reversed(UNKNOWN.default_allocatable_registers()))
class-attribute
instance-attribute
¶
__init__(allocatable_registers: defaultdict[str, set[int]] = (lambda: defaultdict(lambda: set[int]()))(), next_infinite_indices: defaultdict[str, int] = (lambda: defaultdict(lambda: 0))(), reserved_registers: defaultdict[str, defaultdict[int, int]] = (lambda: defaultdict(lambda: defaultdict[int, int](lambda: 0)))(), available_registers: defaultdict[str, list[int]] = (lambda: defaultdict(list[int]))(), allow_infinite: bool = False) -> None
¶
default_allocatable_registers()
classmethod
¶
get_for_arch(arch: X86Arch, *, allow_infinite: bool = False)
classmethod
¶
Build a stack holding the registers this target can actually encode.
Handing out the EVEX-only half of a vector bank on a VEX-only target produces assembly that target cannot run.