scf.if
← scf dialect
Conditional execution with optional else region for resultless conditionals.
Operation contract
| Property |
Value |
| Semantic phase |
source structure |
| Traits |
ImplicitTerminator(scf.yield) |
| Interfaces |
RegionBranch |
Signature
| Kind |
Name |
Type |
Cardinality |
Description |
| Operand |
condition |
i1 |
required |
— |
| Result |
results |
any |
variadic |
— |
| Region |
then_region |
region |
required |
Executed when condition is true. Terminated by scf.yield. (single block, terminator scf.yield.) |
| Region |
else_region |
region |
optional |
Executed when condition is false. Terminated by scf.yield. (single block, terminator scf.yield.) |
Verification constraints
YieldCountMatchesResults(then_region, results)
YieldTypesMatchResults(then_region, results)
YieldCountMatchesResults(else_region, results)
YieldTypesMatchResults(else_region, results)
Examples
scf.if %cond {
scf.yield
}
scf.if %cond {
scf.yield
} else {
scf.yield
}
%result = scf.if %cond -> (f32) {
scf.yield %a : f32
} else {
scf.yield %b : f32
}