xref: /llvm-project/flang/test/Transforms/generic-loop-rewriting-todo.mlir (revision 1e2d5f7943d09d658a5fbacf661d2c6c361f857c)
181f544d4SKareem Ergawy// RUN: fir-opt --omp-generic-loop-conversion -verify-diagnostics %s
281f544d4SKareem Ergawy
3*1e2d5f79SKareem Ergawyfunc.func @_QPparallel_loop() {
481f544d4SKareem Ergawy  omp.parallel {
581f544d4SKareem Ergawy    %c0 = arith.constant 0 : i32
681f544d4SKareem Ergawy    %c10 = arith.constant 10 : i32
781f544d4SKareem Ergawy    %c1 = arith.constant 1 : i32
8*1e2d5f79SKareem Ergawy    // expected-error@below {{not yet implemented: Combined `parallel loop` directive}}
981f544d4SKareem Ergawy    omp.loop {
1081f544d4SKareem Ergawy      omp.loop_nest (%arg3) : i32 = (%c0) to (%c10) inclusive step (%c1) {
1181f544d4SKareem Ergawy        omp.yield
1281f544d4SKareem Ergawy      }
1381f544d4SKareem Ergawy    }
1481f544d4SKareem Ergawy    omp.terminator
1581f544d4SKareem Ergawy  }
1681f544d4SKareem Ergawy  return
1781f544d4SKareem Ergawy}
1881f544d4SKareem Ergawy
19*1e2d5f79SKareem Ergawyfunc.func @_QPloop_bind() {
2081f544d4SKareem Ergawy  omp.teams {
2181f544d4SKareem Ergawy    %c0 = arith.constant 0 : i32
2281f544d4SKareem Ergawy    %c10 = arith.constant 10 : i32
2381f544d4SKareem Ergawy    %c1 = arith.constant 1 : i32
2481f544d4SKareem Ergawy    // expected-error@below {{not yet implemented: Unhandled clause bind in omp.loop operation}}
2581f544d4SKareem Ergawy    omp.loop bind(thread) {
2681f544d4SKareem Ergawy      omp.loop_nest (%arg3) : i32 = (%c0) to (%c10) inclusive step (%c1) {
2781f544d4SKareem Ergawy        omp.yield
2881f544d4SKareem Ergawy      }
2981f544d4SKareem Ergawy    }
3081f544d4SKareem Ergawy    omp.terminator
3181f544d4SKareem Ergawy  }
3281f544d4SKareem Ergawy  return
3381f544d4SKareem Ergawy}
3481f544d4SKareem Ergawy
3581f544d4SKareem Ergawyomp.declare_reduction @add_reduction_i32 : i32 init {
3681f544d4SKareem Ergawy  ^bb0(%arg0: i32):
3781f544d4SKareem Ergawy    %c0_i32 = arith.constant 0 : i32
3881f544d4SKareem Ergawy    omp.yield(%c0_i32 : i32)
3981f544d4SKareem Ergawy  } combiner {
4081f544d4SKareem Ergawy  ^bb0(%arg0: i32, %arg1: i32):
4181f544d4SKareem Ergawy    %0 = arith.addi %arg0, %arg1 : i32
4281f544d4SKareem Ergawy    omp.yield(%0 : i32)
4381f544d4SKareem Ergawy  }
4481f544d4SKareem Ergawy
45*1e2d5f79SKareem Ergawyfunc.func @_QPloop_order() {
4681f544d4SKareem Ergawy  omp.teams {
4781f544d4SKareem Ergawy    %c0 = arith.constant 0 : i32
4881f544d4SKareem Ergawy    %c10 = arith.constant 10 : i32
4981f544d4SKareem Ergawy    %c1 = arith.constant 1 : i32
5081f544d4SKareem Ergawy    %sum = fir.alloca i32 {bindc_name = "i", uniq_name = "_QFtest_orderEi"}
5181f544d4SKareem Ergawy
5281f544d4SKareem Ergawy    // expected-error@below {{not yet implemented: Unhandled clause reduction in omp.loop operation}}
5381f544d4SKareem Ergawy    omp.loop reduction(@add_reduction_i32 %sum -> %arg2 : !fir.ref<i32>) {
5481f544d4SKareem Ergawy      omp.loop_nest (%arg3) : i32 = (%c0) to (%c10) inclusive step (%c1) {
5581f544d4SKareem Ergawy        omp.yield
5681f544d4SKareem Ergawy      }
5781f544d4SKareem Ergawy    }
5881f544d4SKareem Ergawy    omp.terminator
5981f544d4SKareem Ergawy  }
6081f544d4SKareem Ergawy  return
6181f544d4SKareem Ergawy}
62