[all-commits] [llvm/llvm-project] 0c9412: [mlir][SCF] `ValueBoundsConstraintSet`: Support pr...
Matthias Springer via All-commits
all-commits at lists.llvm.org
Wed Mar 20 02:46:19 PDT 2024
Branch: refs/heads/users/matthias-springer/value_bounds_scf_if
Home: https://github.com/llvm/llvm-project
Commit: 0c94128d19247277a32c2278868fc8ce85a68c12
https://github.com/llvm/llvm-project/commit/0c94128d19247277a32c2278868fc8ce85a68c12
Author: Matthias Springer <springerm at google.com>
Date: 2024-03-20 (Wed, 20 Mar 2024)
Changed paths:
M mlir/include/mlir/Interfaces/ValueBoundsOpInterface.h
M mlir/lib/Dialect/SCF/IR/ValueBoundsOpInterfaceImpl.cpp
M mlir/lib/Interfaces/ValueBoundsOpInterface.cpp
M mlir/test/Dialect/SCF/value-bounds-op-interface-impl.mlir
Log Message:
-----------
[mlir][SCF] `ValueBoundsConstraintSet`: Support preliminary support for branches
This commit adds support for `scf.if` to `ValueBoundsConstraintSet`.
Example:
```
%0 = scf.if ... -> index {
scf.yield %a : index
} else {
scf.yield %b : index
}
```
The following constraints hold for %0:
* %0 >= min(%a, %b)
* %0 <= max(%a, %b)
Such constraints cannot be added to the constraint set; min/max is not supported by `IntegerRelation`. However, if we know which one of %a and %b is larger, we can add constraints for %0. E.g., if %a <= %b:
* %0 >= %a
* %0 <= %b
This commit required a few minor changes to the `ValueBoundsConstraintSet` infrastructure, so that values can be compared while we are still in the process of traversing the IR/adding constraints.
To unsubscribe from these emails, change your notification settings at https://github.com/llvm/llvm-project/settings/notifications
More information about the All-commits
mailing list