Changeset View
Changeset View
Standalone View
Standalone View
mlir/test/Dialect/OpenMP/ops.mlir
Show First 20 Lines • Show All 130 Lines • ▼ Show 20 Lines | |||||
} | } | ||||
return | return | ||||
} | } | ||||
// CHECK-LABEL: omp_wsloop | // CHECK-LABEL: omp_wsloop | ||||
func.func @omp_wsloop(%lb : index, %ub : index, %step : index, %data_var : memref<i32>, %linear_var : i32, %chunk_var : i32) -> () { | func.func @omp_wsloop(%lb : index, %ub : index, %step : index, %data_var : memref<i32>, %linear_var : i32, %chunk_var : i32) -> () { | ||||
// CHECK: omp.wsloop collapse(2) ordered(1) | // CHECK: omp.wsloop ordered(1) | ||||
// CHECK-SAME: for (%{{.*}}) : index = (%{{.*}}) to (%{{.*}}) step (%{{.*}}) | // CHECK-SAME: for (%{{.*}}) : index = (%{{.*}}) to (%{{.*}}) step (%{{.*}}) | ||||
"omp.wsloop" (%lb, %ub, %step) ({ | "omp.wsloop" (%lb, %ub, %step) ({ | ||||
^bb0(%iv: index): | ^bb0(%iv: index): | ||||
omp.yield | omp.yield | ||||
}) {operand_segment_sizes = dense<[1,1,1,0,0,0,0]> : vector<7xi32>, collapse_val = 2, ordered_val = 1} : | }) {operand_segment_sizes = dense<[1,1,1,0,0,0,0]> : vector<7xi32>, ordered_val = 1} : | ||||
(index, index, index) -> () | (index, index, index) -> () | ||||
// CHECK: omp.wsloop linear(%{{.*}} = %{{.*}} : memref<i32>) schedule(static) | // CHECK: omp.wsloop linear(%{{.*}} = %{{.*}} : memref<i32>) schedule(static) | ||||
// CHECK-SAMe: for (%{{.*}}) : index = (%{{.*}}) to (%{{.*}}) step (%{{.*}}) | // CHECK-SAMe: for (%{{.*}}) : index = (%{{.*}}) to (%{{.*}}) step (%{{.*}}) | ||||
"omp.wsloop" (%lb, %ub, %step, %data_var, %linear_var) ({ | "omp.wsloop" (%lb, %ub, %step, %data_var, %linear_var) ({ | ||||
^bb0(%iv: index): | ^bb0(%iv: index): | ||||
omp.yield | omp.yield | ||||
}) {operand_segment_sizes = dense<[1,1,1,1,1,0,0]> : vector<7xi32>, schedule_val = #omp<"schedulekind static">} : | }) {operand_segment_sizes = dense<[1,1,1,1,1,0,0]> : vector<7xi32>, schedule_val = #omp<"schedulekind static">} : | ||||
(index, index, index, memref<i32>, i32) -> () | (index, index, index, memref<i32>, i32) -> () | ||||
// CHECK: omp.wsloop linear(%{{.*}} = %{{.*}} : memref<i32>, %{{.*}} = %{{.*}} : memref<i32>) schedule(static) | // CHECK: omp.wsloop linear(%{{.*}} = %{{.*}} : memref<i32>, %{{.*}} = %{{.*}} : memref<i32>) schedule(static) | ||||
// CHECK-SAME: for (%{{.*}}) : index = (%{{.*}}) to (%{{.*}}) step (%{{.*}}) | // CHECK-SAME: for (%{{.*}}) : index = (%{{.*}}) to (%{{.*}}) step (%{{.*}}) | ||||
"omp.wsloop" (%lb, %ub, %step, %data_var, %data_var, %linear_var, %linear_var) ({ | "omp.wsloop" (%lb, %ub, %step, %data_var, %data_var, %linear_var, %linear_var) ({ | ||||
^bb0(%iv: index): | ^bb0(%iv: index): | ||||
omp.yield | omp.yield | ||||
}) {operand_segment_sizes = dense<[1,1,1,2,2,0,0]> : vector<7xi32>, schedule_val = #omp<"schedulekind static">} : | }) {operand_segment_sizes = dense<[1,1,1,2,2,0,0]> : vector<7xi32>, schedule_val = #omp<"schedulekind static">} : | ||||
(index, index, index, memref<i32>, memref<i32>, i32, i32) -> () | (index, index, index, memref<i32>, memref<i32>, i32, i32) -> () | ||||
// CHECK: omp.wsloop linear(%{{.*}} = %{{.*}} : memref<i32>) schedule(dynamic = %{{.*}}) collapse(3) ordered(2) | // CHECK: omp.wsloop linear(%{{.*}} = %{{.*}} : memref<i32>) schedule(dynamic = %{{.*}}) ordered(2) | ||||
// CHECK-SAME: for (%{{.*}}) : index = (%{{.*}}) to (%{{.*}}) step (%{{.*}}) | // CHECK-SAME: for (%{{.*}}) : index = (%{{.*}}) to (%{{.*}}) step (%{{.*}}) | ||||
"omp.wsloop" (%lb, %ub, %step, %data_var, %linear_var, %chunk_var) ({ | "omp.wsloop" (%lb, %ub, %step, %data_var, %linear_var, %chunk_var) ({ | ||||
^bb0(%iv: index): | ^bb0(%iv: index): | ||||
omp.yield | omp.yield | ||||
}) {operand_segment_sizes = dense<[1,1,1,1,1,0,1]> : vector<7xi32>, schedule_val = #omp<"schedulekind dynamic">, collapse_val = 3, ordered_val = 2} : | }) {operand_segment_sizes = dense<[1,1,1,1,1,0,1]> : vector<7xi32>, schedule_val = #omp<"schedulekind dynamic">, ordered_val = 2} : | ||||
(index, index, index, memref<i32>, i32, i32) -> () | (index, index, index, memref<i32>, i32, i32) -> () | ||||
// CHECK: omp.wsloop schedule(auto) nowait | // CHECK: omp.wsloop schedule(auto) nowait | ||||
// CHECK-SAME: for (%{{.*}}) : index = (%{{.*}}) to (%{{.*}}) step (%{{.*}}) | // CHECK-SAME: for (%{{.*}}) : index = (%{{.*}}) to (%{{.*}}) step (%{{.*}}) | ||||
"omp.wsloop" (%lb, %ub, %step) ({ | "omp.wsloop" (%lb, %ub, %step) ({ | ||||
^bb0(%iv: index): | ^bb0(%iv: index): | ||||
omp.yield | omp.yield | ||||
}) {operand_segment_sizes = dense<[1,1,1,0,0,0,0]> : vector<7xi32>, nowait, schedule_val = #omp<"schedulekind auto">} : | }) {operand_segment_sizes = dense<[1,1,1,0,0,0,0]> : vector<7xi32>, nowait, schedule_val = #omp<"schedulekind auto">} : | ||||
(index, index, index) -> () | (index, index, index) -> () | ||||
return | return | ||||
} | } | ||||
// CHECK-LABEL: omp_wsloop_pretty | // CHECK-LABEL: omp_wsloop_pretty | ||||
func.func @omp_wsloop_pretty(%lb : index, %ub : index, %step : index, %data_var : memref<i32>, %linear_var : i32, %chunk_var : i32, %chunk_var2 : i16) -> () { | func.func @omp_wsloop_pretty(%lb : index, %ub : index, %step : index, %data_var : memref<i32>, %linear_var : i32, %chunk_var : i32, %chunk_var2 : i16) -> () { | ||||
// CHECK: omp.wsloop collapse(2) ordered(2) | // CHECK: omp.wsloop ordered(2) | ||||
// CHECK-SAME: for (%{{.*}}) : index = (%{{.*}}) to (%{{.*}}) step (%{{.*}}) | // CHECK-SAME: for (%{{.*}}) : index = (%{{.*}}) to (%{{.*}}) step (%{{.*}}) | ||||
omp.wsloop collapse(2) ordered(2) | omp.wsloop ordered(2) | ||||
for (%iv) : index = (%lb) to (%ub) step (%step) { | for (%iv) : index = (%lb) to (%ub) step (%step) { | ||||
omp.yield | omp.yield | ||||
} | } | ||||
// CHECK: omp.wsloop linear(%{{.*}} = %{{.*}} : memref<i32>) schedule(static) | // CHECK: omp.wsloop linear(%{{.*}} = %{{.*}} : memref<i32>) schedule(static) | ||||
// CHECK-SAME: for (%{{.*}}) : index = (%{{.*}}) to (%{{.*}}) step (%{{.*}}) | // CHECK-SAME: for (%{{.*}}) : index = (%{{.*}}) to (%{{.*}}) step (%{{.*}}) | ||||
omp.wsloop schedule(static) linear(%data_var = %linear_var : memref<i32>) | omp.wsloop schedule(static) linear(%data_var = %linear_var : memref<i32>) | ||||
for (%iv) : index = (%lb) to (%ub) step (%step) { | for (%iv) : index = (%lb) to (%ub) step (%step) { | ||||
omp.yield | omp.yield | ||||
} | } | ||||
// CHECK: omp.wsloop linear(%{{.*}} = %{{.*}} : memref<i32>) schedule(static = %{{.*}} : i32) collapse(3) ordered(2) | // CHECK: omp.wsloop linear(%{{.*}} = %{{.*}} : memref<i32>) schedule(static = %{{.*}} : i32) ordered(2) | ||||
// CHECK-SAME: for (%{{.*}}) : index = (%{{.*}}) to (%{{.*}}) step (%{{.*}}) | // CHECK-SAME: for (%{{.*}}) : index = (%{{.*}}) to (%{{.*}}) step (%{{.*}}) | ||||
omp.wsloop ordered(2) linear(%data_var = %linear_var : memref<i32>) schedule(static = %chunk_var : i32) collapse(3) | omp.wsloop ordered(2) linear(%data_var = %linear_var : memref<i32>) schedule(static = %chunk_var : i32) | ||||
for (%iv) : index = (%lb) to (%ub) step (%step) { | for (%iv) : index = (%lb) to (%ub) step (%step) { | ||||
omp.yield | omp.yield | ||||
} | } | ||||
// CHECK: omp.wsloop linear(%{{.*}} = %{{.*}} : memref<i32>) schedule(dynamic = %{{.*}} : i32, nonmonotonic) collapse(3) ordered(2) | // CHECK: omp.wsloop linear(%{{.*}} = %{{.*}} : memref<i32>) schedule(dynamic = %{{.*}} : i32, nonmonotonic) ordered(2) | ||||
// CHECK-SAME: for (%{{.*}}) : index = (%{{.*}}) to (%{{.*}}) step (%{{.*}}) | // CHECK-SAME: for (%{{.*}}) : index = (%{{.*}}) to (%{{.*}}) step (%{{.*}}) | ||||
omp.wsloop ordered(2) linear(%data_var = %linear_var : memref<i32>) schedule(dynamic = %chunk_var : i32, nonmonotonic) collapse(3) | omp.wsloop ordered(2) linear(%data_var = %linear_var : memref<i32>) schedule(dynamic = %chunk_var : i32, nonmonotonic) | ||||
for (%iv) : index = (%lb) to (%ub) step (%step) { | for (%iv) : index = (%lb) to (%ub) step (%step) { | ||||
omp.yield | omp.yield | ||||
} | } | ||||
// CHECK: omp.wsloop linear(%{{.*}} = %{{.*}} : memref<i32>) schedule(dynamic = %{{.*}} : i16, monotonic) collapse(3) ordered(2) | // CHECK: omp.wsloop linear(%{{.*}} = %{{.*}} : memref<i32>) schedule(dynamic = %{{.*}} : i16, monotonic) ordered(2) | ||||
// CHECK-SAME: for (%{{.*}}) : index = (%{{.*}}) to (%{{.*}}) step (%{{.*}}) | // CHECK-SAME: for (%{{.*}}) : index = (%{{.*}}) to (%{{.*}}) step (%{{.*}}) | ||||
omp.wsloop ordered(2) linear(%data_var = %linear_var : memref<i32>) schedule(dynamic = %chunk_var2 : i16, monotonic) collapse(3) | omp.wsloop ordered(2) linear(%data_var = %linear_var : memref<i32>) schedule(dynamic = %chunk_var2 : i16, monotonic) | ||||
for (%iv) : index = (%lb) to (%ub) step (%step) { | for (%iv) : index = (%lb) to (%ub) step (%step) { | ||||
omp.yield | omp.yield | ||||
} | } | ||||
// CHECK: omp.wsloop for (%{{.*}}) : index = (%{{.*}}) to (%{{.*}}) step (%{{.*}}) | // CHECK: omp.wsloop for (%{{.*}}) : index = (%{{.*}}) to (%{{.*}}) step (%{{.*}}) | ||||
omp.wsloop for (%iv) : index = (%lb) to (%ub) step (%step) { | omp.wsloop for (%iv) : index = (%lb) to (%ub) step (%step) { | ||||
omp.yield | omp.yield | ||||
} | } | ||||
▲ Show 20 Lines • Show All 1,272 Lines • Show Last 20 Lines |