pub struct ExecuteRegionOperation<'c> { /* private fields */ }Expand description
An execute_region operation. Operation that executes its region exactly once.
The scf.execute_region operation is used to allow multiple blocks within SCF
and other operations which can hold only one block. The scf.execute_region
operation executes the region held exactly once and cannot have any operands.
As such, its region has no arguments. All SSA values that dominate the op can
be accessed inside the op. The op’s region can have multiple blocks and the
blocks can have multiple distinct terminators. Values returned from this op’s
region define the op’s results.
The optional ‘no_inline’ flag can be set to request the ExecuteRegionOp to be
preserved as much as possible and not being inlined in the parent block until
an explicit lowering step.
Example:
scf.for %i = 0 to 128 step %c1 {
%y = scf.execute_region -> i32 {
%x = load %A[%i] : memref<128xi32>
scf.yield %x : i32
}
}
// the same as above but with no_inline attribute
scf.for %i = 0 to 128 step %c1 {
%y = scf.execute_region -> i32 no_inline {
%x = load %A[%i] : memref<128xi32>
scf.yield %x : i32
}
}
affine.for %i = 0 to 100 {
"foo"() : () -> ()
%v = scf.execute_region -> i64 {
cf.cond_br %cond, ^bb1, ^bb2
^bb1:
%c1 = arith.constant 1 : i64
cf.br ^bb3(%c1 : i64)
^bb2:
%c2 = arith.constant 2 : i64
cf.br ^bb3(%c2 : i64)
^bb3(%x : i64):
scf.yield %x : i64
}
"bar"(%v) : (i64) -> ()
}Implementations§
Source§impl<'c> ExecuteRegionOperation<'c>
impl<'c> ExecuteRegionOperation<'c>
Sourcepub fn as_operation(&self) -> &Operation<'c>
pub fn as_operation(&self) -> &Operation<'c>
Returns a generic operation.
Sourcepub fn builder(
context: &'c Context,
location: Location<'c>,
) -> ExecuteRegionOperationBuilder<'c, Unset>
pub fn builder( context: &'c Context, location: Location<'c>, ) -> ExecuteRegionOperationBuilder<'c, Unset>
Creates a builder.
pub fn region(&self) -> Result<RegionRef<'c, '_>, Error>
pub fn no_inline(&self) -> Result<Attribute<'c>, Error>
pub fn set_no_inline(&mut self, value: Attribute<'c>)
pub fn remove_no_inline(&mut self) -> Result<(), Error>
Trait Implementations§
Source§impl<'c> Clone for ExecuteRegionOperation<'c>
impl<'c> Clone for ExecuteRegionOperation<'c>
Source§fn clone(&self) -> ExecuteRegionOperation<'c>
fn clone(&self) -> ExecuteRegionOperation<'c>
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more