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