aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorValentin Clement (バレンタイン クレメン) <clementval@gmail.com>2024-01-22 08:40:33 -0800
committerGitHub <noreply@github.com>2024-01-22 08:40:33 -0800
commitb5df6a90f5365e61d2dfa1583d36cbc79ab5775b (patch)
tree3c3d0cc8e5c787593eb6feb5bf9438e550d099d2
parentf188f4589cc8f690779c62996520663718df106d (diff)
downloadllvm-b5df6a90f5365e61d2dfa1583d36cbc79ab5775b.zip
llvm-b5df6a90f5365e61d2dfa1583d36cbc79ab5775b.tar.gz
llvm-b5df6a90f5365e61d2dfa1583d36cbc79ab5775b.tar.bz2
[mlir][openacc] Fix num_gang parser (#78792)
Nb of operand per segment is not correctly computed.
-rw-r--r--mlir/lib/Dialect/OpenACC/IR/OpenACC.cpp4
-rw-r--r--mlir/test/Dialect/OpenACC/ops.mlir9
2 files changed, 11 insertions, 2 deletions
diff --git a/mlir/lib/Dialect/OpenACC/IR/OpenACC.cpp b/mlir/lib/Dialect/OpenACC/IR/OpenACC.cpp
index bc03adb..80f0529 100644
--- a/mlir/lib/Dialect/OpenACC/IR/OpenACC.cpp
+++ b/mlir/lib/Dialect/OpenACC/IR/OpenACC.cpp
@@ -818,6 +818,7 @@ static ParseResult parseNumGangs(
if (failed(parser.parseLBrace()))
return failure();
+ int32_t crtOperandsSize = operands.size();
if (failed(parser.parseCommaSeparatedList(
mlir::AsmParser::Delimiter::None, [&]() {
if (parser.parseOperand(operands.emplace_back()) ||
@@ -826,8 +827,7 @@ static ParseResult parseNumGangs(
return success();
})))
return failure();
-
- seg.push_back(operands.size());
+ seg.push_back(operands.size() - crtOperandsSize);
if (failed(parser.parseRBrace()))
return failure();
diff --git a/mlir/test/Dialect/OpenACC/ops.mlir b/mlir/test/Dialect/OpenACC/ops.mlir
index 99b4418..bda31a1 100644
--- a/mlir/test/Dialect/OpenACC/ops.mlir
+++ b/mlir/test/Dialect/OpenACC/ops.mlir
@@ -1878,3 +1878,12 @@ func.func @acc_atomic_capture(%v: memref<i32>, %x: memref<i32>, %expr: i32) {
return
}
+
+// -----
+
+%c2 = arith.constant 2 : i32
+%c1 = arith.constant 1 : i32
+acc.parallel num_gangs({%c2 : i32} [#acc.device_type<default>], {%c1 : i32, %c1 : i32, %c1 : i32} [#acc.device_type<nvidia>]) {
+}
+
+// CHECK: acc.parallel num_gangs({%c2{{.*}} : i32} [#acc.device_type<default>], {%c1{{.*}} : i32, %c1{{.*}} : i32, %c1{{.*}} : i32} [#acc.device_type<nvidia>])