diff options
author | River Riddle <riverriddle@google.com> | 2019-12-22 21:59:55 -0800 |
---|---|---|
committer | A. Unique TensorFlower <gardener@tensorflow.org> | 2019-12-22 22:00:23 -0800 |
commit | 35807bc4c5c9d8abc31ba0b2f955a82abf276e12 (patch) | |
tree | d083d37d993a774239081509a50e3e6c65366421 /mlir/lib/Dialect/Linalg/Transforms/LinalgToLoops.cpp | |
parent | 22954a0e408afde1d8686dffb3a3dcab107a2cd3 (diff) | |
download | bcm5719-llvm-35807bc4c5c9d8abc31ba0b2f955a82abf276e12.tar.gz bcm5719-llvm-35807bc4c5c9d8abc31ba0b2f955a82abf276e12.zip |
NFC: Introduce new ValuePtr/ValueRef typedefs to simplify the transition to Value being value-typed.
This is an initial step to refactoring the representation of OpResult as proposed in: https://groups.google.com/a/tensorflow.org/g/mlir/c/XXzzKhqqF_0/m/v6bKb08WCgAJ
This change will make it much simpler to incrementally transition all of the existing code to use value-typed semantics.
PiperOrigin-RevId: 286844725
Diffstat (limited to 'mlir/lib/Dialect/Linalg/Transforms/LinalgToLoops.cpp')
-rw-r--r-- | mlir/lib/Dialect/Linalg/Transforms/LinalgToLoops.cpp | 44 |
1 files changed, 22 insertions, 22 deletions
diff --git a/mlir/lib/Dialect/Linalg/Transforms/LinalgToLoops.cpp b/mlir/lib/Dialect/Linalg/Transforms/LinalgToLoops.cpp index c50c495750f..e468c19a0b4 100644 --- a/mlir/lib/Dialect/Linalg/Transforms/LinalgToLoops.cpp +++ b/mlir/lib/Dialect/Linalg/Transforms/LinalgToLoops.cpp @@ -49,7 +49,7 @@ using edsc::op::operator==; static SmallVector<ValueHandle, 8> makeCanonicalAffineApplies(OpBuilder &b, Location loc, AffineMap map, - ArrayRef<Value *> vals) { + ArrayRef<ValuePtr> vals) { assert(map.getNumSymbols() == 0); assert(map.getNumInputs() == vals.size()); SmallVector<ValueHandle, 8> res; @@ -57,35 +57,35 @@ makeCanonicalAffineApplies(OpBuilder &b, Location loc, AffineMap map, auto dims = map.getNumDims(); for (auto e : map.getResults()) { auto exprMap = AffineMap::get(dims, 0, e); - SmallVector<Value *, 4> operands(vals.begin(), vals.end()); + SmallVector<ValuePtr, 4> operands(vals.begin(), vals.end()); canonicalizeMapAndOperands(&exprMap, &operands); res.push_back(affine_apply(exprMap, operands)); } return res; } -static SmallVector<Value *, 4> permuteIvs(ArrayRef<Value *> ivs, - Optional<AffineMap> permutation) { +static SmallVector<ValuePtr, 4> permuteIvs(ArrayRef<ValuePtr> ivs, + Optional<AffineMap> permutation) { return permutation ? applyMapToValues(ScopedContext::getBuilder(), ScopedContext::getLocation(), permutation.getValue(), ivs) - : SmallVector<Value *, 4>(ivs.begin(), ivs.end()); + : SmallVector<ValuePtr, 4>(ivs.begin(), ivs.end()); } // Creates a number of ranges equal to the number of results in `map`. // The returned ranges correspond to the loop ranges, in the proper order, for // which new loops will be created. -static SmallVector<Value *, 4> emitLoopRanges(OpBuilder &b, Location loc, - AffineMap map, - ArrayRef<Value *> allViewSizes); -SmallVector<Value *, 4> emitLoopRanges(OpBuilder &b, Location loc, - AffineMap map, - ArrayRef<Value *> allViewSizes) { +static SmallVector<ValuePtr, 4> emitLoopRanges(OpBuilder &b, Location loc, + AffineMap map, + ArrayRef<ValuePtr> allViewSizes); +SmallVector<ValuePtr, 4> emitLoopRanges(OpBuilder &b, Location loc, + AffineMap map, + ArrayRef<ValuePtr> allViewSizes) { // Apply `map` to get view sizes in loop order. auto sizes = applyMapToValues(b, loc, map, allViewSizes); // Create a new range with the applied tile sizes. ScopedContext scope(b, loc); - SmallVector<Value *, 4> res; + SmallVector<ValuePtr, 4> res; for (unsigned idx = 0, e = map.getNumResults(); idx < e; ++idx) { res.push_back(range(constant_index(0), sizes[idx], constant_index(1))); } @@ -98,7 +98,7 @@ class LinalgScopedEmitter {}; template <typename IndexedValueType> class LinalgScopedEmitter<IndexedValueType, CopyOp> { public: - static void emitScalarImplementation(ArrayRef<Value *> allIvs, + static void emitScalarImplementation(ArrayRef<ValuePtr> allIvs, CopyOp copyOp) { auto nPar = copyOp.getNumParallelLoops(); assert(nPar == allIvs.size()); @@ -121,7 +121,7 @@ public: template <typename IndexedValueType> class LinalgScopedEmitter<IndexedValueType, FillOp> { public: - static void emitScalarImplementation(ArrayRef<Value *> allIvs, + static void emitScalarImplementation(ArrayRef<ValuePtr> allIvs, FillOp fillOp) { auto nPar = fillOp.getNumParallelLoops(); assert(nPar == allIvs.size()); @@ -138,7 +138,7 @@ public: template <typename IndexedValueType> class LinalgScopedEmitter<IndexedValueType, DotOp> { public: - static void emitScalarImplementation(ArrayRef<Value *> allIvs, DotOp dotOp) { + static void emitScalarImplementation(ArrayRef<ValuePtr> allIvs, DotOp dotOp) { assert(allIvs.size() == 1); IndexHandle r_i(allIvs[0]); IndexedValueType A(dotOp.getInput(0)), B(dotOp.getInput(1)), @@ -151,7 +151,7 @@ public: template <typename IndexedValueType> class LinalgScopedEmitter<IndexedValueType, MatvecOp> { public: - static void emitScalarImplementation(ArrayRef<Value *> allIvs, + static void emitScalarImplementation(ArrayRef<ValuePtr> allIvs, MatvecOp matvecOp) { assert(allIvs.size() == 2); IndexHandle i(allIvs[0]), r_j(allIvs[1]); @@ -165,7 +165,7 @@ public: template <typename IndexedValueType> class LinalgScopedEmitter<IndexedValueType, MatmulOp> { public: - static void emitScalarImplementation(ArrayRef<Value *> allIvs, + static void emitScalarImplementation(ArrayRef<ValuePtr> allIvs, MatmulOp matmulOp) { assert(allIvs.size() == 3); IndexHandle i(allIvs[0]), j(allIvs[1]), r_k(allIvs[2]); @@ -179,7 +179,7 @@ public: template <typename IndexedValueType> class LinalgScopedEmitter<IndexedValueType, ConvOp> { public: - static void emitScalarImplementation(ArrayRef<Value *> allIvs, + static void emitScalarImplementation(ArrayRef<ValuePtr> allIvs, ConvOp convOp) { auto b = ScopedContext::getBuilder(); auto loc = ScopedContext::getLocation(); @@ -229,14 +229,14 @@ public: template <typename IndexedValueType> class LinalgScopedEmitter<IndexedValueType, GenericOp> { public: - static void emitScalarImplementation(ArrayRef<Value *> allIvs, + static void emitScalarImplementation(ArrayRef<ValuePtr> allIvs, GenericOp genericOp) { auto b = ScopedContext::getBuilder(); auto loc = ScopedContext::getLocation(); using edsc::intrinsics::detail::ValueHandleArray; unsigned nInputs = genericOp.getNumInputs(); unsigned nOutputs = genericOp.getNumOutputs(); - SmallVector<Value *, 4> indexedValues(nInputs + nOutputs); + SmallVector<ValuePtr, 4> indexedValues(nInputs + nOutputs); // 1.a. Emit std_load from input views. for (unsigned i = 0; i < nInputs; ++i) { @@ -324,7 +324,7 @@ public: template <typename IndexedValueType> class LinalgScopedEmitter<IndexedValueType, IndexedGenericOp> { public: - static void emitScalarImplementation(ArrayRef<Value *> allIvs, + static void emitScalarImplementation(ArrayRef<ValuePtr> allIvs, IndexedGenericOp indexedGenericOp) { auto b = ScopedContext::getBuilder(); auto loc = ScopedContext::getLocation(); @@ -332,7 +332,7 @@ public: unsigned nInputs = indexedGenericOp.getNumInputs(); unsigned nOutputs = indexedGenericOp.getNumOutputs(); unsigned nLoops = allIvs.size(); - SmallVector<Value *, 4> indexedValues(nLoops + nInputs + nOutputs); + SmallVector<ValuePtr, 4> indexedValues(nLoops + nInputs + nOutputs); for (unsigned i = 0; i < nLoops; ++i) { indexedValues[i] = allIvs[i]; |