[Mlir-commits] [mlir] 74f15d9 - [mlir][openacc] Add check for the private list in acc.serial
Valentin Clement
llvmlistbot at llvm.org
Wed May 24 10:44:09 PDT 2023
Author: Valentin Clement
Date: 2023-05-24T10:43:29-07:00
New Revision: 74f15d9c0b03b91ad999f3e1c847f8290e67f1ab
URL: https://github.com/llvm/llvm-project/commit/74f15d9c0b03b91ad999f3e1c847f8290e67f1ab
DIFF: https://github.com/llvm/llvm-project/commit/74f15d9c0b03b91ad999f3e1c847f8290e67f1ab.diff
LOG: [mlir][openacc] Add check for the private list in acc.serial
Add the missing check on private list information. The
check is the same than the one done for acc.parallel.
Depends on D151146
Reviewed By: razvanlupusoru, jeanPerier
Differential Revision: https://reviews.llvm.org/D151149
Added:
Modified:
mlir/include/mlir/Dialect/OpenACC/OpenACCOps.td
mlir/lib/Dialect/OpenACC/IR/OpenACC.cpp
mlir/test/Dialect/OpenACC/ops.mlir
Removed:
################################################################################
diff --git a/mlir/include/mlir/Dialect/OpenACC/OpenACCOps.td b/mlir/include/mlir/Dialect/OpenACC/OpenACCOps.td
index fd4e9edb541f..a662ad95a93e 100644
--- a/mlir/include/mlir/Dialect/OpenACC/OpenACCOps.td
+++ b/mlir/include/mlir/Dialect/OpenACC/OpenACCOps.td
@@ -705,8 +705,8 @@ def OpenACC_SerialOp : OpenACC_Op<"serial",
Optional<I1>:$ifCond,
Optional<I1>:$selfCond,
UnitAttr:$selfAttr,
- OptionalAttr<OpenACC_ReductionOperatorAttr>:$reductionOp,
Variadic<AnyType>:$reductionOperands,
+ OptionalAttr<SymbolRefArrayAttr>:$reductionRecipes,
Variadic<OpenACC_PointerLikeTypeInterface>:$gangPrivateOperands,
OptionalAttr<SymbolRefArrayAttr>:$privatizations,
Variadic<AnyType>:$gangFirstPrivateOperands,
@@ -735,7 +735,9 @@ def OpenACC_SerialOp : OpenACC_Op<"serial",
| `wait` `(` $waitOperands `:` type($waitOperands) `)`
| `self` `(` $selfCond `)`
| `if` `(` $ifCond `)`
- | `reduction` `(` $reductionOperands `:` type($reductionOperands) `)`
+ | `reduction` `(` custom<SymOperandList>(
+ $reductionOperands, type($reductionOperands), $reductionRecipes)
+ `)`
)
$region attr-dict-with-keyword
}];
diff --git a/mlir/lib/Dialect/OpenACC/IR/OpenACC.cpp b/mlir/lib/Dialect/OpenACC/IR/OpenACC.cpp
index 73f34093fc22..e5d7888efb55 100644
--- a/mlir/lib/Dialect/OpenACC/IR/OpenACC.cpp
+++ b/mlir/lib/Dialect/OpenACC/IR/OpenACC.cpp
@@ -584,6 +584,10 @@ LogicalResult acc::SerialOp::verify() {
*this, getPrivatizations(), getGangPrivateOperands(), "private",
"privatizations")))
return failure();
+ if (failed(checkSymOperandList<mlir::acc::ReductionRecipeOp>(
+ *this, getReductionRecipes(), getReductionOperands(), "reduction",
+ "reductions")))
+ return failure();
return checkDataOperands<acc::SerialOp>(*this, getDataClauseOperands());
}
diff --git a/mlir/test/Dialect/OpenACC/ops.mlir b/mlir/test/Dialect/OpenACC/ops.mlir
index 5d9d59abbd14..fca5a5ffe1a2 100644
--- a/mlir/test/Dialect/OpenACC/ops.mlir
+++ b/mlir/test/Dialect/OpenACC/ops.mlir
@@ -1440,3 +1440,25 @@ func.func @acc_reduc_test(%a : i64) -> () {
// CHECK-LABEL: func.func @acc_reduc_test(
// CHECK-SAME: %[[ARG0:.*]]: i64)
// CHECK: acc.parallel reduction(@reduction_add_i64 -> %[[ARG0]] : i64)
+
+// -----
+
+acc.reduction.recipe @reduction_add_i64 : i64 reduction_operator<add> init {
+^bb0(%0: i64):
+ %1 = arith.constant 0 : i64
+ acc.yield %1 : i64
+} combiner {
+^bb0(%0: i64, %1: i64):
+ %2 = arith.addi %0, %1 : i64
+ acc.yield %2 : i64
+}
+
+func.func @acc_reduc_test(%a : i64) -> () {
+ acc.serial reduction(@reduction_add_i64 -> %a : i64) {
+ }
+ return
+}
+
+// CHECK-LABEL: func.func @acc_reduc_test(
+// CHECK-SAME: %[[ARG0:.*]]: i64)
+// CHECK: acc.serial reduction(@reduction_add_i64 -> %[[ARG0]] : i64)
More information about the Mlir-commits
mailing list