[flang-commits] [flang] [llvm] [mlir] [flang][OpenMP] Enable tiling (PR #143715)
Michael Kruse via flang-commits
flang-commits at lists.llvm.org
Tue Aug 19 05:09:16 PDT 2025
================
@@ -317,6 +317,38 @@ class OpenMP_DeviceClauseSkip<
def OpenMP_DeviceClause : OpenMP_DeviceClauseSkip<>;
+//===----------------------------------------------------------------------===//
+// V5.2: [XX.X] `collapse` clause
+//===----------------------------------------------------------------------===//
+
+class OpenMP_CollapseClauseSkip<
+ bit traits = false, bit arguments = false, bit assemblyFormat = false,
+ bit description = false, bit extraClassDeclaration = false
+ > : OpenMP_Clause<traits, arguments, assemblyFormat, description,
+ extraClassDeclaration> {
+ let arguments = (ins
+ DefaultValuedOptionalAttr<I64Attr, "1">:$num_collapse
+ );
+}
+
+def OpenMP_CollapseClause : OpenMP_CollapseClauseSkip<>;
+
+//===----------------------------------------------------------------------===//
+// V5.2: [xx.x] `sizes` clause
+//===----------------------------------------------------------------------===//
+
+class OpenMP_TileSizesClauseSkip<
+ bit traits = false, bit arguments = false, bit assemblyFormat = false,
+ bit description = false, bit extraClassDeclaration = false
+ > : OpenMP_Clause<traits, arguments, assemblyFormat, description,
+ extraClassDeclaration> {
+ let arguments = (ins
+ OptionalAttr<DenseI64ArrayAttr>:$tile_sizes
+ );
+}
+
+def OpenMP_TileSizesClause : OpenMP_TileSizesClauseSkip<>;
----------------
Meinersbur wrote:
My current version of this is:
```suggestion
class OpenMP_SizesClauseSkip<
bit traits = false, bit arguments = false, bit assemblyFormat = false,
bit description = false, bit extraClassDeclaration = false
> : OpenMP_Clause<traits, arguments, assemblyFormat, description,
extraClassDeclaration> {
let arguments = (ins
Variadic<IntLikeType>:$sizes
);
let optAssemblyFormat = [{
`sizes` `(` $sizes `:` type($sizes) `)`
}];
let description = [{
`sizes` clause description # TODO: Add desctription
}];
}
def OpenMP_SizesClause : OpenMP_SizesClauseSkip<>;
```
1. `sizes` is also used for `stripe`, so I would avoid `Tile` in the name
2. OpenMP does not require the sizes to be constants
3. Parsing can be handled by mlir-tblgen generated code (at least here it can)
https://github.com/llvm/llvm-project/pull/143715
More information about the flang-commits
mailing list