[Mlir-commits] [mlir] 60210f9 - [mlir][OpenMP] Added assemblyformat for TargetOp
Shraiysh Vaishay
llvmlistbot at llvm.org
Fri Feb 18 11:53:15 PST 2022
Author: Shraiysh Vaishay
Date: 2022-02-19T01:22:59+05:30
New Revision: 60210f9acbd760272856495175636bc2da0b1fcd
URL: https://github.com/llvm/llvm-project/commit/60210f9acbd760272856495175636bc2da0b1fcd
DIFF: https://github.com/llvm/llvm-project/commit/60210f9acbd760272856495175636bc2da0b1fcd.diff
LOG: [mlir][OpenMP] Added assemblyformat for TargetOp
This patch removes custom parser/printer for `omp.target` and adds
assemblyformat.
Reviewed By: rriddle
Differential Revision: https://reviews.llvm.org/D120138
Added:
Modified:
mlir/include/mlir/Dialect/OpenMP/OpenMPOps.td
mlir/lib/Dialect/OpenMP/IR/OpenMPDialect.cpp
mlir/test/Dialect/OpenMP/ops.mlir
Removed:
################################################################################
diff --git a/mlir/include/mlir/Dialect/OpenMP/OpenMPOps.td b/mlir/include/mlir/Dialect/OpenMP/OpenMPOps.td
index 5933326489dd3..ec535edf81d9f 100644
--- a/mlir/include/mlir/Dialect/OpenMP/OpenMPOps.td
+++ b/mlir/include/mlir/Dialect/OpenMP/OpenMPOps.td
@@ -372,7 +372,13 @@ def TargetOp : OpenMP_Op<"target",[AttrSizedOperandSegments]> {
let regions = (region AnyRegion:$region);
- let hasCustomAssemblyFormat = 1;
+ let assemblyFormat = [{
+ oilist( `if` `(` $if_expr `)`
+ | `device` `(` $device `:` type($device) `)`
+ | `thread_limit` `(` $thread_limit `:` type($thread_limit) `)`
+ | `nowait`
+ ) $region attr-dict
+ }];
}
diff --git a/mlir/lib/Dialect/OpenMP/IR/OpenMPDialect.cpp b/mlir/lib/Dialect/OpenMP/IR/OpenMPDialect.cpp
index b6f45bf044f06..bc3b595483d78 100644
--- a/mlir/lib/Dialect/OpenMP/IR/OpenMPDialect.cpp
+++ b/mlir/lib/Dialect/OpenMP/IR/OpenMPDialect.cpp
@@ -145,23 +145,6 @@ void ParallelOp::print(OpAsmPrinter &p) {
p.printRegion(getRegion());
}
-void TargetOp::print(OpAsmPrinter &p) {
- p << " ";
- if (auto ifCond = if_expr())
- p << "if(" << ifCond << " : " << ifCond.getType() << ") ";
-
- if (auto device = this->device())
- p << "device(" << device << " : " << device.getType() << ") ";
-
- if (auto threads = thread_limit())
- p << "thread_limit(" << threads << " : " << threads.getType() << ") ";
-
- if (nowait())
- p << "nowait ";
-
- p.printRegion(getRegion());
-}
-
//===----------------------------------------------------------------------===//
// Parser and printer for Linear Clause
//===----------------------------------------------------------------------===//
@@ -846,33 +829,6 @@ ParseResult ParallelOp::parse(OpAsmParser &parser, OperationState &result) {
return success();
}
-/// Parses a target operation.
-///
-/// operation ::= `omp.target` clause-list
-/// clause-list ::= clause | clause clause-list
-/// clause ::= if | device | thread_limit | nowait
-///
-ParseResult TargetOp::parse(OpAsmParser &parser, OperationState &result) {
- SmallVector<ClauseType> clauses = {ifClause, deviceClause, threadLimitClause,
- nowaitClause};
-
- SmallVector<int> segments;
-
- if (failed(parseClauses(parser, result, clauses, segments)))
- return failure();
-
- result.addAttribute(
- TargetOp::AttrSizedOperandSegments::getOperandSegmentSizeAttr(),
- parser.getBuilder().getI32VectorAttr(segments));
-
- Region *body = result.addRegion();
- SmallVector<OpAsmParser::OperandType> regionArgs;
- SmallVector<Type> regionArgTypes;
- if (parser.parseRegion(*body, regionArgs, regionArgTypes))
- return failure();
- return success();
-}
-
//===----------------------------------------------------------------------===//
// Parser, printer and verifier for SectionsOp
//===----------------------------------------------------------------------===//
diff --git a/mlir/test/Dialect/OpenMP/ops.mlir b/mlir/test/Dialect/OpenMP/ops.mlir
index 1c16ae75c68af..573b036f5746a 100644
--- a/mlir/test/Dialect/OpenMP/ops.mlir
+++ b/mlir/test/Dialect/OpenMP/ops.mlir
@@ -307,7 +307,7 @@ func @omp_target(%if_cond : i1, %device : si32, %num_threads : si32) -> () {
"omp.target"(%if_cond, %device, %num_threads) ({
// CHECK: omp.terminator
omp.terminator
- }) {operand_segment_sizes = dense<[1,1,1]>: vector<3xi32>, nowait } : ( i1, si32, si32 ) -> ()
+ }) {if, device, nowait, operand_segment_sizes = dense<[1,1,1]>: vector<3xi32>, thread_limit} : ( i1, si32, si32 ) -> ()
// CHECK: omp.barrier
omp.barrier
@@ -318,12 +318,12 @@ func @omp_target(%if_cond : i1, %device : si32, %num_threads : si32) -> () {
// CHECK-LABEL: omp_target_pretty
func @omp_target_pretty(%if_cond : i1, %device : si32, %num_threads : si32) -> () {
// CHECK: omp.target if({{.*}}) device({{.*}})
- omp.target if(%if_cond : i1) device(%device : si32) {
+ omp.target if(%if_cond) device(%device : si32) {
omp.terminator
}
// CHECK: omp.target if({{.*}}) device({{.*}}) nowait
- omp.target if(%if_cond : i1) device(%device : si32) thread_limit(%num_threads : si32) nowait {
+ omp.target if(%if_cond) device(%device : si32) thread_limit(%num_threads : si32) nowait {
omp.terminator
}
More information about the Mlir-commits
mailing list