Ub
ub
¶
The ub (undefined behavior) dialect.
Mirrors MLIR's UB dialect, which provides operations and attributes for representing deferred undefined behavior.
UB = Dialect('ub', [PoisonOp, UnreachableOp], [PoisonAttr])
module-attribute
¶
PoisonAttr
dataclass
¶
Bases: ParametrizedAttribute
Attribute carrying poison semantics for ub.poison.
A default (empty) #ub.poison indicates a fully poisoned result. Other
attributes (e.g. partially poisoned vectors) may be used to indicate
additional poison semantics; in MLIR this is modelled via the
PoisonAttrInterface.
Source code in xdsl/dialects/ub.py
name = 'ub.poison'
class-attribute
instance-attribute
¶
PoisonOp
¶
Bases: IRDLOperation
Materializes a compile-time poisoned constant value to indicate deferred undefined behavior.
The value attribute indicates optional additional poison semantics (e.g.
partially poisoned vectors); the default value indicates the result is
fully poisoned.
Examples:
// Short form (fully poisoned)
%0 = ub.poison : i32
// Long form (additional poison semantics)
%1 = ub.poison <#custom_poison_elements_attr> : vector<4xi64>
Source code in xdsl/dialects/ub.py
name = 'ub.poison'
class-attribute
instance-attribute
¶
value = prop_def(Attribute, default_value=PoisonAttr())
class-attribute
instance-attribute
¶
result = result_def()
class-attribute
instance-attribute
¶
traits = traits_def(ConstantLike(), Pure())
class-attribute
instance-attribute
¶
assembly_format = 'attr-dict (`<` $value^ `>`)? `:` type($result)'
class-attribute
instance-attribute
¶
UnreachableOp
dataclass
¶
Bases: IRDLOperation
Triggers immediate undefined behavior if executed.
Example: