[mlir][OpenMP] omp.parallel side effects
Add `NoSideEffects` trait to omp.parallel operation. Reviewed By: ftynse Differential Revision: https://reviews.llvm.org/D130657
This commit is contained in:
parent
4ac00789e1
commit
dd14d471a5
|
@ -125,7 +125,7 @@ def ParallelOp : OpenMP_Op<"parallel", [
|
|||
}];
|
||||
}
|
||||
|
||||
def TerminatorOp : OpenMP_Op<"terminator", [Terminator]> {
|
||||
def TerminatorOp : OpenMP_Op<"terminator", [Terminator, NoSideEffect]> {
|
||||
let summary = "terminator for OpenMP regions";
|
||||
let description = [{
|
||||
A terminator operation for regions that appear in the body of OpenMP
|
||||
|
|
|
@ -72,3 +72,57 @@ func.func @update_unnecessary_computations(%x: memref<i32>) {
|
|||
// CHECK-LABEL: func.func @update_unnecessary_computations
|
||||
// CHECK-NOT: omp.atomic.update
|
||||
// CHECK: omp.atomic.write
|
||||
|
||||
// -----
|
||||
|
||||
// CHECK-LABEL: func.func @parallel_empty
|
||||
func.func @parallel_empty() {
|
||||
omp.parallel {}
|
||||
return
|
||||
}
|
||||
|
||||
// CHECK-NOT: omp.parallel
|
||||
|
||||
// -----
|
||||
|
||||
// CHECK-LABEL: func.func @parallel_only_terminator
|
||||
func.func @parallel_only_terminator() {
|
||||
omp.parallel {
|
||||
omp.terminator
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// CHECK-NOT: omp.parallel
|
||||
// CHECK-NOT: omp.terminator
|
||||
|
||||
// -----
|
||||
|
||||
// CHECK-LABEL: func.func @parallel_no_side_effects
|
||||
func.func @parallel_no_side_effects(%a: i32, %b: i32) {
|
||||
omp.parallel {
|
||||
%x = arith.addi %a, %b : i32
|
||||
omp.terminator
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// CHECK-NOT: omp.parallel
|
||||
// CHECK-NOT: omp.terminator
|
||||
|
||||
// -----
|
||||
|
||||
// CHECK-LABEL: func.func @parallel_maybe_side_effects
|
||||
func.func @parallel_maybe_side_effects(%a: i32, %b: i32) {
|
||||
omp.parallel {
|
||||
func.call @foo() : () -> ()
|
||||
omp.terminator
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func.func private @foo() -> ()
|
||||
|
||||
// CHECK: omp.parallel
|
||||
// CHECK: func.call @foo() : () -> ()
|
||||
// CHECK: omp.terminator
|
||||
|
|
Loading…
Reference in New Issue