[llvm-branch-commits] [flang] [mlir] [OpenMP][MLIR] Add thread_limit with dims modifier support (PR #171825)
via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Fri Jan 16 20:53:27 PST 2026
================
@@ -1452,15 +1452,49 @@ class OpenMP_ThreadLimitClauseSkip<
> : OpenMP_Clause<traits, arguments, assemblyFormat, description,
extraClassDeclaration> {
let arguments = (ins
- Optional<AnyInteger>:$thread_limit
+ Variadic<IntLikeType>:$thread_limit_vals
);
let optAssemblyFormat = [{
- `thread_limit` `(` $thread_limit `:` type($thread_limit) `)`
+ `thread_limit` `(` custom<ThreadLimitClause>(
+ $thread_limit_vals, type($thread_limit_vals)
+ ) `)`
}];
let description = [{
- The optional `thread_limit` specifies the limit on the number of threads.
+ The `thread_limit` clause specifies the limit on the number of threads.
+
+ Multi-dimensional format (dims modifier):
+ - Multiple values can be specified for multi-dimensional thread limits.
+ - The number of dimensions is derived from the number of values.
+ - Values can have different integer types.
+ - Format: `thread_limit(%v1, %v2, ... : type1, type2, ...)`
+ - Example: `thread_limit(%n, %m : i32, i64)`
+
+ Single value format:
+ - A single value specifies the thread limit.
+ - Format: `thread_limit(%value : type)`
+ - Example: `thread_limit(%n : i32)`
+ }];
+
+ let extraClassDeclaration = [{
+ /// Returns true if using multi-dimensional values (more than one value)
+ bool hasThreadLimitMultiDim() {
+ return getThreadLimitVals().size() > 1;
+ }
+
+ /// Returns the number of dimensions specified for thread_limit
+ unsigned getThreadLimitDimsCount() {
+ return getThreadLimitVals().size();
+ }
+
+ /// Returns the value for a specific dimension index
+ /// Index must be less than getThreadLimitVals().size()
+ ::mlir::Value getThreadLimitVal(unsigned index) {
----------------
skc7 wrote:
updated in latest patch
https://github.com/llvm/llvm-project/pull/171825
More information about the llvm-branch-commits
mailing list