Rename LoopNestBuilder to AffineLoopNestBuilder - NFC
PiperOrigin-RevId: 275310747
diff --git a/bindings/python/pybind.cpp b/bindings/python/pybind.cpp
index 93cea06..cc8fc6e 100644
--- a/bindings/python/pybind.cpp
+++ b/bindings/python/pybind.cpp
@@ -348,7 +348,7 @@
handlePtrs.reserve(steps.size());
for (auto &h : handles)
handlePtrs.push_back(&h.value);
- builder = new LoopNestBuilder(
+ builder = new AffineLoopNestBuilder(
handlePtrs, std::vector<ValueHandle>(lbs.begin(), lbs.end()),
std::vector<ValueHandle>(ubs.begin(), ubs.end()), steps);
return handles;
@@ -363,7 +363,7 @@
std::vector<PythonValueHandle> lbs;
std::vector<PythonValueHandle> ubs;
std::vector<int64_t> steps;
- LoopNestBuilder *builder = nullptr;
+ AffineLoopNestBuilder *builder = nullptr;
};
struct PythonBlockAppender {
diff --git a/g3doc/Tutorials/Linalg/DeclarativeBuilders.md b/g3doc/Tutorials/Linalg/DeclarativeBuilders.md
index 5474112..dfbbce2 100644
--- a/g3doc/Tutorials/Linalg/DeclarativeBuilders.md
+++ b/g3doc/Tutorials/Linalg/DeclarativeBuilders.md
@@ -38,9 +38,9 @@
using store = InstructionBuilder<StoreOp>;
```
-## LoopBuilder and LoopNestBuilder
+## LoopBuilder and AffineLoopNestBuilder
-`mlir::edsc::LoopNestBuilder` provides an interface to allow writing concise and
+`mlir::edsc::AffineLoopNestBuilder` provides an interface to allow writing concise and
structured loop nests.
```c++
@@ -86,7 +86,7 @@
auto ivs = makeIndexHandles(view_A.rank());
auto pivs = makePIndexHandles(ivs);
IndexedValue A(arg_A), B(arg_B), C(arg_C);
- LoopNestBuilder(pivs, view_A.getLbs(), view_A.getUbs(), view_A.getSteps())(
+ AffineLoopNestBuilder(pivs, view_A.getLbs(), view_A.getUbs(), view_A.getSteps())(
[&]{
C(ivs) = A(ivs) + B(ivs)
});
diff --git a/include/mlir/Dialect/Linalg/Utils/Utils.h b/include/mlir/Dialect/Linalg/Utils/Utils.h
index 1f240ef..fcb44a8 100644
--- a/include/mlir/Dialect/Linalg/Utils/Utils.h
+++ b/include/mlir/Dialect/Linalg/Utils/Utils.h
@@ -55,8 +55,8 @@
};
/// Helper class to sugar building loop.for loop nests from ranges.
-/// This is similar to edsc::LoopNestBuilder except it works on ranges directly.
-/// In the current implementation it produces loop.for operations.
+/// This is similar to edsc::AffineLoopNestBuilder except it works on ranges
+/// directly. In the current implementation it produces loop.for operations.
class LoopNestRangeBuilder {
public:
LoopNestRangeBuilder(llvm::ArrayRef<edsc::ValueHandle *> ivs,
diff --git a/include/mlir/EDSC/Builders.h b/include/mlir/EDSC/Builders.h
index 51c5c33..9fbca89 100644
--- a/include/mlir/EDSC/Builders.h
+++ b/include/mlir/EDSC/Builders.h
@@ -182,25 +182,26 @@
/// Usage:
///
/// ```c++
-/// LoopNestBuilder({&i, &j, &k}, {lb, lb, lb}, {ub, ub, ub}, {1, 1, 1})(
+/// AffineLoopNestBuilder({&i, &j, &k}, {lb, lb, lb}, {ub, ub, ub}, {1, 1,
+/// 1})(
/// [&](){
/// ...
/// });
/// ```
///
/// ```c++
-/// LoopNestBuilder({&i}, {lb}, {ub}, {1})([&](){
-/// LoopNestBuilder({&j}, {lb}, {ub}, {1})([&](){
-/// LoopNestBuilder({&k}, {lb}, {ub}, {1})([&](){
+/// AffineLoopNestBuilder({&i}, {lb}, {ub}, {1})([&](){
+/// AffineLoopNestBuilder({&j}, {lb}, {ub}, {1})([&](){
+/// AffineLoopNestBuilder({&k}, {lb}, {ub}, {1})([&](){
/// ...
/// }),
/// }),
/// });
/// ```
-class LoopNestBuilder {
+class AffineLoopNestBuilder {
public:
- LoopNestBuilder(ArrayRef<ValueHandle *> ivs, ArrayRef<ValueHandle> lbs,
- ArrayRef<ValueHandle> ubs, ArrayRef<int64_t> steps);
+ AffineLoopNestBuilder(ArrayRef<ValueHandle *> ivs, ArrayRef<ValueHandle> lbs,
+ ArrayRef<ValueHandle> ubs, ArrayRef<int64_t> steps);
ValueHandle operator()(llvm::function_ref<void(void)> fun = nullptr);
diff --git a/lib/EDSC/Builders.cpp b/lib/EDSC/Builders.cpp
index c620ac5..ba14a14 100644
--- a/lib/EDSC/Builders.cpp
+++ b/lib/EDSC/Builders.cpp
@@ -206,10 +206,9 @@
return ValueHandle::null();
}
-mlir::edsc::LoopNestBuilder::LoopNestBuilder(ArrayRef<ValueHandle *> ivs,
- ArrayRef<ValueHandle> lbs,
- ArrayRef<ValueHandle> ubs,
- ArrayRef<int64_t> steps) {
+mlir::edsc::AffineLoopNestBuilder::AffineLoopNestBuilder(
+ ArrayRef<ValueHandle *> ivs, ArrayRef<ValueHandle> lbs,
+ ArrayRef<ValueHandle> ubs, ArrayRef<int64_t> steps) {
assert(ivs.size() == lbs.size() && "Mismatch in number of arguments");
assert(ivs.size() == ubs.size() && "Mismatch in number of arguments");
assert(ivs.size() == steps.size() && "Mismatch in number of arguments");
@@ -219,8 +218,8 @@
}
}
-ValueHandle
-mlir::edsc::LoopNestBuilder::operator()(llvm::function_ref<void(void)> fun) {
+ValueHandle mlir::edsc::AffineLoopNestBuilder::operator()(
+ llvm::function_ref<void(void)> fun) {
if (fun)
fun();
// Iterate on the calling operator() on all the loops in the nest.
diff --git a/lib/Transforms/LowerVectorTransfers.cpp b/lib/Transforms/LowerVectorTransfers.cpp
index 5ffee64..c7d986c 100644
--- a/lib/Transforms/LowerVectorTransfers.cpp
+++ b/lib/Transforms/LowerVectorTransfers.cpp
@@ -126,7 +126,7 @@
/// Analyzes the `transfer` to find an access dimension along the fastest remote
/// MemRef dimension. If such a dimension with coalescing properties is found,
/// `pivs` and `vectorView` are swapped so that the invocation of
-/// LoopNestBuilder captures it in the innermost loop.
+/// AffineLoopNestBuilder captures it in the innermost loop.
template <typename VectorTransferOpTy>
void coalesceCopy(VectorTransferOpTy transfer,
SmallVectorImpl<edsc::ValueHandle *> *pivs,
@@ -288,7 +288,7 @@
ValueHandle tmp = alloc(tmpMemRefType(transfer));
IndexedValue local(tmp);
ValueHandle vec = vector_type_cast(tmp, vectorMemRefType(transfer));
- LoopNestBuilder(pivs, lbs, ubs, steps)([&] {
+ AffineLoopNestBuilder(pivs, lbs, ubs, steps)([&] {
// Computes clippedScalarAccessExprs in the loop nest scope (ivs exist).
local(ivs) = remote(clip(transfer, view, ivs));
});
@@ -349,7 +349,7 @@
IndexedValue local(tmp);
ValueHandle vec = vector_type_cast(tmp, vectorMemRefType(transfer));
std_store(vectorValue, vec, {constant_index(0)});
- LoopNestBuilder(pivs, lbs, ubs, steps)([&] {
+ AffineLoopNestBuilder(pivs, lbs, ubs, steps)([&] {
// Computes clippedScalarAccessExprs in the loop nest scope (ivs exist).
remote(clip(transfer, view, ivs)) = local(ivs);
});
diff --git a/test/EDSC/builder-api-test.cpp b/test/EDSC/builder-api-test.cpp
index e8dbc87..73b2141 100644
--- a/test/EDSC/builder-api-test.cpp
+++ b/test/EDSC/builder-api-test.cpp
@@ -343,7 +343,7 @@
lb2 = vA.lb(2);
ub2 = vA.ub(2);
step2 = vA.step(2);
- LoopNestBuilder({&i, &j}, {lb0, lb1}, {ub0, ub1}, {step0, step1})([&]{
+ AffineLoopNestBuilder({&i, &j}, {lb0, lb1}, {ub0, ub1}, {step0, step1})([&]{
LoopBuilder(&k1, lb2, ub2, step2)([&]{
C(i, j, k1) = f7 + A(i, j, k1) + B(i, j, k1);
});
@@ -392,7 +392,7 @@
OperationHandle ih0, ih2;
IndexHandle m, n, M(f.getArgument(0)), N(f.getArgument(1));
IndexHandle ten(index_t(10)), twenty(index_t(20));
- LoopNestBuilder({&m, &n}, {M, N}, {M + ten, N + twenty}, {1, 1})([&]{
+ AffineLoopNestBuilder({&m, &n}, {M, N}, {M + ten, N + twenty}, {1, 1})([&]{
vh = MY_CUSTOM_OP({m, m + n}, {indexType}, {});
ih0 = MY_CUSTOM_OP_0({m, m + n}, {});
ih2 = MY_CUSTOM_OP_2({m, m + n}, {indexType, indexType});
@@ -455,7 +455,7 @@
MemRefView vA(f.getArgument(0));
IndexedValue A(f.getArgument(0));
IndexHandle i, j;
- LoopNestBuilder({&i, &j}, {zero, zero}, {one, one}, {1, 1})([&]{
+ AffineLoopNestBuilder({&i, &j}, {zero, zero}, {one, one}, {1, 1})([&]{
// This test exercises IndexedValue::operator Value*.
// Without it, one must force conversion to ValueHandle as such:
// edsc::intrinsics::select(
@@ -490,7 +490,7 @@
MemRefView vA(f.getArgument(0)), vB(f.getArgument(1));
IndexedValue A(f.getArgument(0)), B(f.getArgument(1));
IndexHandle i, j;
- LoopNestBuilder({&i, &j}, {zero, zero}, {one, one}, {1, 1})([&]{
+ AffineLoopNestBuilder({&i, &j}, {zero, zero}, {one, one}, {1, 1})([&]{
edsc::intrinsics::select(B(i, j) == B(i+one, j), *A(zero, zero), *A(i, j));
edsc::intrinsics::select(B(i, j) != B(i+one, j), *A(zero, zero), *A(i, j));
@@ -568,11 +568,11 @@
IndexHandle i, j, k1, k2, M(vC.ub(0)), N(vC.ub(1)), O(vC.ub(2));
// clang-format off
- LoopNestBuilder({&i, &j}, {zero, zero}, {M, N}, {1, 1})([&]{
- LoopNestBuilder(&k1, zero, O, 1)([&]{
+ AffineLoopNestBuilder({&i, &j}, {zero, zero}, {M, N}, {1, 1})([&]{
+ AffineLoopNestBuilder(&k1, zero, O, 1)([&]{
C(i, j, k1) = A(i, j, k1) + B(i, j, k1);
});
- LoopNestBuilder(&k2, zero, O, 1)([&]{
+ AffineLoopNestBuilder(&k2, zero, O, 1)([&]{
C(i, j, k2) = A(i, j, k2) + B(i, j, k2);
});
});
@@ -645,8 +645,8 @@
// clang-format off
IndexHandle i, j, k;
- LoopNestBuilder({&i, &j, &k}, {zero, zero, zero}, {M, N, P}, {1, 1, 1})([&]{
- C(i, j, k) = A(i, j, k) + B(i, j, k);
+ AffineLoopNestBuilder({&i, &j, &k}, {zero, zero, zero}, {M, N, P}, {1, 1,
+1})([&]{ C(i, j, k) = A(i, j, k) + B(i, j, k);
});
ret();
diff --git a/test/mlir-tblgen/reference-impl.td b/test/mlir-tblgen/reference-impl.td
index 07baa87..c62335a 100644
--- a/test/mlir-tblgen/reference-impl.td
+++ b/test/mlir-tblgen/reference-impl.td
@@ -19,7 +19,7 @@
auto ivs = IndexedLinalgValuemakeIndexHandles(view_A.rank());
auto pivs = IndexedLinalgValuemakeIndexHandlePointers(ivs);
IndexedValue A(arg_A), B(arg_B), C(arg_C);
- LoopNestBuilder(pivs, view_A.getLbs(), view_A.getUbs(), view_A.getSteps())({
+ AffineLoopNestBuilder(pivs, view_A.getLbs(), view_A.getUbs(), view_A.getSteps())({
C(ivs) = A(ivs) + B(ivs)
});
}];