42 intptr_t symbolCount) {
47 intptr_t symbolCount, intptr_t nAffineExprs,
48 MlirAffineExpr *affineExprs) {
69 unsigned *permutation) {
75 return unwrap(affineMap).isIdentity();
79 return unwrap(affineMap).isMinorIdentity();
83 return unwrap(affineMap).isEmpty();
87 return unwrap(affineMap).isSingleConstant();
91 return unwrap(affineMap).getSingleConstantResult();
95 return unwrap(affineMap).getNumDims();
99 return unwrap(affineMap).getNumSymbols();
103 return unwrap(affineMap).getNumResults();
107 return wrap(
unwrap(affineMap).getResult(
static_cast<unsigned>(pos)));
111 return unwrap(affineMap).getNumInputs();
115 return unwrap(affineMap).isProjectedPermutation();
119 return unwrap(affineMap).isPermutation();
123 intptr_t *resultPos) {
126 for (intptr_t i = 0; i < size; ++i)
127 pos.push_back(
static_cast<unsigned>(resultPos[i]));
128 return wrap(
unwrap(affineMap).getSubMap(pos));
132 intptr_t numResults) {
133 return wrap(
unwrap(affineMap).getMajorSubMap(numResults));
137 intptr_t numResults) {
138 return wrap(
unwrap(affineMap).getMinorSubMap(numResults));
142 MlirAffineExpr expression,
144 intptr_t numResultDims,
145 intptr_t numResultSyms) {
147 numResultDims, numResultSyms));
151 MlirAffineMap *affineMaps, intptr_t size,
void *
result,
152 void (*populateResult)(
void *res, intptr_t idx, MlirAffineMap m)) {
154 for (intptr_t idx = 0; idx < size; ++idx)
155 maps.push_back(
unwrap(affineMaps[idx]));
MlirAffineMap mlirAffineMapMultiDimIdentityGet(MlirContext ctx, intptr_t numDims)
MlirAffineMap mlirAffineMapPermutationGet(MlirContext ctx, intptr_t size, unsigned *permutation)
void mlirAffineMapDump(MlirAffineMap affineMap)
bool mlirAffineMapIsProjectedPermutation(MlirAffineMap affineMap)
bool mlirAffineMapIsEmpty(MlirAffineMap affineMap)
MlirAffineMap mlirAffineMapConstantGet(MlirContext ctx, int64_t val)
MlirAffineExpr mlirAffineMapGetResult(MlirAffineMap affineMap, intptr_t pos)
intptr_t mlirAffineMapGetNumInputs(MlirAffineMap affineMap)
bool mlirAffineMapIsMinorIdentity(MlirAffineMap affineMap)
MlirAffineMap mlirAffineMapZeroResultGet(MlirContext ctx, intptr_t dimCount, intptr_t symbolCount)
int64_t mlirAffineMapGetSingleConstantResult(MlirAffineMap affineMap)
MlirAffineMap mlirAffineMapGet(MlirContext ctx, intptr_t dimCount, intptr_t symbolCount, intptr_t nAffineExprs, MlirAffineExpr *affineExprs)
MlirAffineMap mlirAffineMapGetSubMap(MlirAffineMap affineMap, intptr_t size, intptr_t *resultPos)
MlirContext mlirAffineMapGetContext(MlirAffineMap affineMap)
Gets the context that the given affine map was created with.
void mlirAffineMapPrint(MlirAffineMap affineMap, MlirStringCallback callback, void *userData)
MlirAffineMap mlirAffineMapEmptyGet(MlirContext ctx)
MlirAffineMap mlirAffineMapGetMajorSubMap(MlirAffineMap affineMap, intptr_t numResults)
bool mlirAffineMapIsSingleConstant(MlirAffineMap affineMap)
MlirAffineMap mlirAffineMapMinorIdentityGet(MlirContext ctx, intptr_t dims, intptr_t results)
bool mlirAffineMapIsPermutation(MlirAffineMap affineMap)
MlirAffineMap mlirAffineMapGetMinorSubMap(MlirAffineMap affineMap, intptr_t numResults)
bool mlirAffineMapEqual(MlirAffineMap a1, MlirAffineMap a2)
Checks if two affine maps are equal.
intptr_t mlirAffineMapGetNumDims(MlirAffineMap affineMap)
intptr_t mlirAffineMapGetNumResults(MlirAffineMap affineMap)
MlirAffineMap mlirAffineMapReplace(MlirAffineMap affineMap, MlirAffineExpr expression, MlirAffineExpr replacement, intptr_t numResultDims, intptr_t numResultSyms)
void mlirAffineMapCompressUnusedSymbols(MlirAffineMap *affineMaps, intptr_t size, void *result, void(*populateResult)(void *res, intptr_t idx, MlirAffineMap m))
Prints an affine map by sending chunks of the string representation and forwarding userData to callba...
intptr_t mlirAffineMapGetNumSymbols(MlirAffineMap affineMap)
bool mlirAffineMapIsIdentity(MlirAffineMap affineMap)
*if copies could not be generated due to yet unimplemented cases *copyInPlacementStart and copyOutPlacementStart in copyPlacementBlock *specify the insertion points where the incoming copies and outgoing should be the output argument nBegin is set to its * replacement(set to `begin` if no invalidation happens). Since outgoing *copies could have been inserted at `end`
static llvm::ArrayRef< CppTy > unwrapList(size_t size, CTy *first, llvm::SmallVectorImpl< CppTy > &storage)
static AffineMap getMinorIdentityMap(unsigned dims, unsigned results, MLIRContext *context)
Returns an identity affine map (d0, ..., dn) -> (dp, ..., dn) on the most minor dimensions.
static AffineMap getMultiDimIdentityMap(unsigned numDims, MLIRContext *context)
Returns an AffineMap with 'numDims' identity result dim exprs.
static AffineMap get(MLIRContext *context)
Returns a zero result affine map with no dimensions or symbols: () -> ().
static AffineMap getPermutationMap(ArrayRef< unsigned > permutation, MLIRContext *context)
Returns an AffineMap representing a permutation.
static AffineMap getConstantMap(int64_t val, MLIRContext *context)
Returns a single constant result affine map.
void print(raw_ostream &os) const
Outputs this diagnostic to a stream.
A simple raw ostream subclass that forwards write_impl calls to the user-supplied callback together w...
MlirDiagnostic wrap(mlir::Diagnostic &diagnostic)
mlir::Diagnostic & unwrap(MlirDiagnostic diagnostic)
void(* MlirStringCallback)(MlirStringRef, void *)
A callback for returning string references.
Include the generated interface declarations.
AffineMap compressUnusedSymbols(AffineMap map)
Drop the symbols that are not used.