Bases: IRDLOperation, HasFolderInterface
Get the value stored in a given register.
Source code in xdsl/dialects/asm.py
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54 | @irdl.irdl_op_definition
class FromRegOp(irdl.IRDLOperation, HasFolderInterface):
"""
Get the value stored in a given register.
"""
name = "asm.from_reg"
register = irdl.operand_def(RegisterType)
value = irdl.result_def()
traits = irdl.traits_def(Pure())
assembly_format = "$register attr-dict `:` type($register) `->` type($value)"
def __init__(self, register: ir.SSAValue | ir.Operation, result_type: ir.Attribute):
super().__init__(operands=(register,), result_types=(result_type,))
@classmethod
def get(cls, register: ir.SSAValue | ir.Operation, result_type: ir.Attribute):
"""
Create the operation, and set the result's name hint to `register`'s name hint.
"""
register = ir.SSAValue.get(register)
op = cls(register, result_type)
op.value.name_hint = register.name_hint
return op
def verify_(self) -> None:
if (
isinstance(to_reg_op := self.register.owner, ToRegOp)
and to_reg_op.value.type != self.value.type
):
raise VerifyException(
f"Expected original value type {to_reg_op.value.type} to be "
f"equal to own value type {self.value.type}."
)
def fold(self) -> Sequence[ir.SSAValue | ir.Attribute] | None:
if isinstance(to_reg_op := self.register.owner, ToRegOp):
return (to_reg_op.value,)
|
name = 'asm.from_reg'
class-attribute
instance-attribute
register = irdl.operand_def(RegisterType)
class-attribute
instance-attribute
value = irdl.result_def()
class-attribute
instance-attribute
traits = irdl.traits_def(Pure())
class-attribute
instance-attribute
__init__(register: ir.SSAValue | ir.Operation, result_type: ir.Attribute)
Source code in xdsl/dialects/asm.py
| def __init__(self, register: ir.SSAValue | ir.Operation, result_type: ir.Attribute):
super().__init__(operands=(register,), result_types=(result_type,))
|
get(register: ir.SSAValue | ir.Operation, result_type: ir.Attribute)
classmethod
Create the operation, and set the result's name hint to register's name hint.
Source code in xdsl/dialects/asm.py
32
33
34
35
36
37
38
39
40 | @classmethod
def get(cls, register: ir.SSAValue | ir.Operation, result_type: ir.Attribute):
"""
Create the operation, and set the result's name hint to `register`'s name hint.
"""
register = ir.SSAValue.get(register)
op = cls(register, result_type)
op.value.name_hint = register.name_hint
return op
|
verify_() -> None
Source code in xdsl/dialects/asm.py
42
43
44
45
46
47
48
49
50 | def verify_(self) -> None:
if (
isinstance(to_reg_op := self.register.owner, ToRegOp)
and to_reg_op.value.type != self.value.type
):
raise VerifyException(
f"Expected original value type {to_reg_op.value.type} to be "
f"equal to own value type {self.value.type}."
)
|
fold() -> Sequence[ir.SSAValue | ir.Attribute] | None
Source code in xdsl/dialects/asm.py
| def fold(self) -> Sequence[ir.SSAValue | ir.Attribute] | None:
if isinstance(to_reg_op := self.register.owner, ToRegOp):
return (to_reg_op.value,)
|