[RISCV][VLOPT] Add vector narrowing integer right shift instructions to isSupportedIn...
[llvm-project.git] / flang / test / Fir / omp-reduction-embox-codegen.fir
blob1645e1a407ad41129c088acc59e25ad286ce8cc3
1 // RUN: tco %s | FileCheck %s
3 // the fir.embox in the init region is turned into an alloca for the box. Test
4 // that CodeGen.cpp knows where to place an alloca when it is inside of an
5 // omp.declare_reduction
7 // regretably this has to be nonsense IR because we need the subsequent patches
8 // to process anything useful
10 omp.declare_reduction @test_reduction : !fir.ref<!fir.box<i32>> init {
11 ^bb0(%arg0: !fir.ref<!fir.box<i32>>):
12   %0 = fir.alloca !fir.box<i32>
13   %1 = fir.alloca i32
14   %2 = fir.embox %1 : (!fir.ref<i32>) -> !fir.box<i32>
16   // use the embox for something so it isn't removed
17   fir.store %2 to %0 : !fir.ref<!fir.box<i32>>
19   omp.yield(%0 : !fir.ref<!fir.box<i32>>)
20 } combiner {
21 ^bb0(%arg0: !fir.ref<!fir.box<i32>>, %arg1: !fir.ref<!fir.box<i32>>):
22   %0 = fir.undefined !fir.ref<!fir.box<i32>>
23   omp.yield(%0 : !fir.ref<!fir.box<i32>>)
26 func.func @_QQmain() attributes {fir.bindc_name = "reduce"} {
27   %4 = fir.alloca !fir.box<i32>
28   omp.parallel reduction(byref @test_reduction %4 -> %arg0 : !fir.ref<!fir.box<i32>>) {
29     omp.terminator
30   }
31   return
34 // basically we are testing that there isn't a crash
35 // CHECK-LABEL: define void @_QQmain
36 // CHECK-NEXT:    alloca { ptr, i64, i32, i8, i8, i8, i8 }, i64 1, align 8