34
34
#include " llvm/ADT/SmallVector.h"
35
35
#include " llvm/ADT/TypeSwitch.h"
36
36
#include " llvm/Support/Debug.h"
37
+ #include " llvm/Support/InterleavedRange.h"
37
38
38
39
using namespace mlir ;
39
40
using namespace mlir ::gpu;
@@ -50,10 +51,8 @@ using namespace mlir::transform::gpu;
50
51
template <typename ThreadOrBlockIdOp>
51
52
static Value buildLinearId (RewriterBase &rewriter, Location loc,
52
53
ArrayRef<OpFoldResult> originalBasisOfr) {
53
- LLVM_DEBUG (llvm::interleaveComma (
54
- originalBasisOfr,
55
- DBGS () << " ----buildLinearId with originalBasisOfr: " );
56
- llvm::dbgs () << " \n " );
54
+ LLVM_DEBUG (DBGS () << " ----buildLinearId with originalBasisOfr: "
55
+ << llvm::interleaved (originalBasisOfr) << " \n " );
57
56
assert (originalBasisOfr.size () == 3 && " expected 3 sizes" );
58
57
IndexType indexType = rewriter.getIndexType ();
59
58
AffineExpr tx, ty, tz, bdx, bdy;
@@ -99,32 +98,25 @@ static GpuIdBuilderFnType commonLinearIdBuilderFn(int64_t multiplicity = 1) {
99
98
affine::makeComposedAffineApply (rewriter, loc, e, {scaledLinearId}));
100
99
}
101
100
102
- // clang-format off
103
- LLVM_DEBUG (llvm::interleaveComma (reverseBasisSizes,
104
- DBGS () << " --delinearization basis: " );
105
- llvm::dbgs () << " \n " ;
106
- llvm::interleaveComma (strides,
107
- DBGS () << " --delinearization strides: " );
108
- llvm::dbgs () << " \n " ;
109
- llvm::interleaveComma (delinearizingExprs,
110
- DBGS () << " --delinearization exprs: " );
111
- llvm::dbgs () << " \n " ;
112
- llvm::interleaveComma (ids, DBGS () << " --ids: " );
113
- llvm::dbgs () << " \n " ;);
114
- // clang-format on
101
+ LLVM_DEBUG (DBGS () << " --delinearization basis: "
102
+ << llvm::interleaved (reverseBasisSizes) << " \n " ;
103
+ DBGS () << " --delinearization strides: "
104
+ << llvm::interleaved (strides) << " \n " ;
105
+ DBGS () << " --delinearization exprs: "
106
+ << llvm::interleaved (delinearizingExprs) << " \n " ;
107
+ DBGS () << " --ids: " << llvm::interleaved (ids) << " \n " );
115
108
116
109
// Return n-D ids for indexing and 1-D size + id for predicate generation.
117
- return IdBuilderResult{
118
- /* mappingIdOps=*/ ids,
119
- /* availableMappingSizes=*/
120
- SmallVector<int64_t >{computeProduct (originalBasis)},
121
- // `forallMappingSizes` iterate in the scaled basis, they need to be
122
- // scaled back into the original basis to provide tight
123
- // activeMappingSizes quantities for predication.
124
- /* activeMappingSizes=*/
125
- SmallVector<int64_t >{computeProduct (forallMappingSizes) *
126
- multiplicity},
127
- /* activeIdOps=*/ SmallVector<Value>{cast<Value>(linearId)}};
110
+ return IdBuilderResult{
111
+ /* mappingIdOps=*/ ids,
112
+ /* availableMappingSizes=*/
113
+ SmallVector<int64_t >{computeProduct (originalBasis)},
114
+ // `forallMappingSizes` iterate in the scaled basis, they need to be
115
+ // scaled back into the original basis to provide tight
116
+ // activeMappingSizes quantities for predication.
117
+ /* activeMappingSizes=*/
118
+ SmallVector<int64_t >{computeProduct (forallMappingSizes) * multiplicity},
119
+ /* activeIdOps=*/ SmallVector<Value>{cast<Value>(linearId)}};
128
120
};
129
121
130
122
return res;
0 commit comments