diff options
author | Valentin Clement (バレンタイン クレメン) <clementval@gmail.com> | 2024-01-22 08:40:33 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-01-22 08:40:33 -0800 |
commit | b5df6a90f5365e61d2dfa1583d36cbc79ab5775b (patch) | |
tree | 3c3d0cc8e5c787593eb6feb5bf9438e550d099d2 | |
parent | f188f4589cc8f690779c62996520663718df106d (diff) | |
download | llvm-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.cpp | 4 | ||||
-rw-r--r-- | mlir/test/Dialect/OpenACC/ops.mlir | 9 |
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>]) |