pub struct ConstantOp { /* private fields */ }Expand description
Constant value operation for the LLVM dialect. Similar to MLIR’s llvm.mlir.constant.
The constant value is held as one of the following attributes: [IntegerAttr], dyn FloatAttr, AggregateAttr SplatAttr, BytesAttr, SymbolAddrAttr.
§Results:
| result | description |
|---|---|
result | the type of the value attribute |
§Attribute(s):
Note: Only attributes defined directly as part of this operation are listed here. There may be others, not listed here, defined by interface implementations.
| Name | Static Name Identifier | Type |
|---|---|---|
llvm_constant_value | ATTR_KEY_LLVM_CONSTANT_VALUE | Any |
Implementations§
Source§impl ConstantOp
impl ConstantOp
Sourcepub fn get_attr_llvm_constant_value<'a>(
&self,
ctx: &'a Context,
) -> Option<Ref<'a, AttrObj>>
pub fn get_attr_llvm_constant_value<'a>( &self, ctx: &'a Context, ) -> Option<Ref<'a, AttrObj>>
Get a Ref to the value of the attribute named llvm_constant_value.
The Ref is a borrow of the containing Operation object.
Sourcepub fn set_attr_llvm_constant_value(&self, ctx: &Context, value: AttrObj)
pub fn set_attr_llvm_constant_value(&self, ctx: &Context, value: AttrObj)
Set the value of the attribute named llvm_constant_value.
Source§impl ConstantOp
impl ConstantOp
Sourcepub fn get_value<'a>(&self, ctx: &'a Context) -> Ref<'a, dyn TypedAttrInterface>
pub fn get_value<'a>(&self, ctx: &'a Context) -> Ref<'a, dyn TypedAttrInterface>
Get the constant value that this Op defines. The Ref is a borrow of the containing [Operation] object.
Use pliron::dyn_clone::clone_box to clone the value if required.
Sourcepub fn new(ctx: &mut Context, value: Box<dyn TypedAttrInterface>) -> Self
pub fn new(ctx: &mut Context, value: Box<dyn TypedAttrInterface>) -> Self
Create a new ConstantOp holding value.
Trait Implementations§
Source§impl Clone for ConstantOp
impl Clone for ConstantOp
Source§fn clone(&self) -> ConstantOp
fn clone(&self) -> ConstantOp
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl ConstFoldInterface for ConstantOp
impl ConstFoldInterface for ConstantOp
Source§fn check_fold(
&self,
ctx: &Context,
_operand_attrs: &[Option<AttrObj>],
) -> Vec<Option<AttrObj>>
fn check_fold( &self, ctx: &Context, _operand_attrs: &[Option<AttrObj>], ) -> Vec<Option<AttrObj>>
operand_attrs corresponding to each operand, indicating a known
compile time constant value for that operand (if any), returns a vector corresponding
to each result, indicating the folded (inferred constant) value, if any.Source§fn fold_in_place(
&self,
_ctx: &mut Context,
_operand_attrs: &[Option<AttrObj>],
_rewriter: &mut dyn Rewriter,
) -> IRStatus
fn fold_in_place( &self, _ctx: &mut Context, _operand_attrs: &[Option<AttrObj>], _rewriter: &mut dyn Rewriter, ) -> IRStatus
operand_attrs corresponding to each operand, indicating a known
compile time constant value for that operand (if any), attempts to fold the op in
place using the provided rewriter. Assumes that rewriter is positioned just
before the op to be folded. Read more§fn fold_with_materialization(
&self,
ctx: &mut Context,
operand_attrs: &[Option<Box<dyn Attribute>>],
rewriter: &mut dyn Rewriter,
) -> IRStatus
fn fold_with_materialization( &self, ctx: &mut Context, operand_attrs: &[Option<Box<dyn Attribute>>], rewriter: &mut dyn Rewriter, ) -> IRStatus
impl Copy for ConstantOp
impl Eq for ConstantOp
Source§impl Hash for ConstantOp
impl Hash for ConstantOp
Source§impl NOpdsInterface<0> for ConstantOp
impl NOpdsInterface<0> for ConstantOp
§fn get_operand_i(&self, ctx: &Context, i: LessThanN<N>) -> Value
fn get_operand_i(&self, ctx: &Context, i: LessThanN<N>) -> Value
i’th operand.§fn operand_type_i(&self, ctx: &Context, i: LessThanN<N>) -> TypeHandle
fn operand_type_i(&self, ctx: &Context, i: LessThanN<N>) -> TypeHandle
i’th operand.Source§impl OneResultInterface for ConstantOp
impl OneResultInterface for ConstantOp
§fn get_result(&self, ctx: &Context) -> Value
fn get_result(&self, ctx: &Context) -> Value
§fn result_type(&self, ctx: &Context) -> TypeHandle
fn result_type(&self, ctx: &Context) -> TypeHandle
Source§impl Op for ConstantOp
impl Op for ConstantOp
Source§fn get_operation(&self) -> Ptr<Operation>
fn get_operation(&self) -> Ptr<Operation>
Source§fn get_opid_static() -> OpId
fn get_opid_static() -> OpId
§fn get_concrete_op_info() -> (fn(Ptr<Operation>) -> OpBox, TypeId)where
Self: Sized,
fn get_concrete_op_info() -> (fn(Ptr<Operation>) -> OpBox, TypeId)where
Self: Sized,
Source§impl Parsable for ConstantOp
impl Parsable for ConstantOp
Source§type Arg = Vec<(Identifier, Location)>
type Arg = Vec<(Identifier, Location)>
Source§fn parse<'__pliron_parse>(
state_stream: &mut StateStream<'__pliron_parse>,
arg: Self::Arg,
) -> ParseResult<'__pliron_parse, Self::Parsed>
fn parse<'__pliron_parse>( state_stream: &mut StateStream<'__pliron_parse>, arg: Self::Arg, ) -> ParseResult<'__pliron_parse, Self::Parsed>
into on [Parser::parse_stream] to get the final [ParseResult].
Use state_stream.state as necessary.Source§impl PartialEq for ConstantOp
impl PartialEq for ConstantOp
Source§fn eq(&self, other: &ConstantOp) -> bool
fn eq(&self, other: &ConstantOp) -> bool
self and other values to be equal, and is used by ==.Source§impl Printable for ConstantOp
impl Printable for ConstantOp
Source§impl SideEffects for ConstantOp
impl SideEffects for ConstantOp
Source§fn has_side_effects(&self, _ctx: &Context) -> bool
fn has_side_effects(&self, _ctx: &Context) -> bool
true if the operation has side effects, and false otherwise.impl StructuralPartialEq for ConstantOp
Auto Trait Implementations§
impl !RefUnwindSafe for ConstantOp
impl !UnwindSafe for ConstantOp
impl Freeze for ConstantOp
impl Send for ConstantOp
impl Sync for ConstantOp
impl Unpin for ConstantOp
impl UnsafeUnpin for ConstantOp
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>, which can then be
downcast into Box<dyn ConcreteType> where ConcreteType implements Trait.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>, which can then be further
downcast into Rc<ConcreteType> where ConcreteType implements Trait.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.§impl<T> DowncastSend for T
impl<T> DowncastSend for T
§impl<T> DowncastSync for T
impl<T> DowncastSync for T
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.