brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.4 KiB · 97f4980 Raw
49 lines · plain
1// RUN: mlir-translate -mlir-to-llvmir -split-input-file %s | FileCheck %s2 3llvm.func @free(!llvm.ptr)4 5llvm.func @parallel_op_dealloc(%arg0: !llvm.ptr) {6  omp.parallel private(@x.privatizer %arg0 -> %arg2 : !llvm.ptr) {7    %0 = llvm.load %arg2 : !llvm.ptr -> f328    omp.terminator9  }10  llvm.return11}12 13omp.private {type = firstprivate} @x.privatizer : f32 copy {14^bb0(%arg0: !llvm.ptr, %arg1: !llvm.ptr):15  %0 = llvm.load %arg0 : !llvm.ptr -> f3216  llvm.store %0, %arg1 : f32, !llvm.ptr17  omp.yield(%arg1 : !llvm.ptr)18} dealloc {19^bb0(%arg0: !llvm.ptr):20  %0 = llvm.ptrtoint %arg0 : !llvm.ptr to i6421  %c0 = llvm.mlir.constant(0 : i64) : i6422  %1 = llvm.icmp "ne" %0, %c0 : i6423  llvm.cond_br %1, ^bb1, ^bb224 25^bb1:26  llvm.call @free(%arg0) : (!llvm.ptr) -> ()27  llvm.br ^bb228 29^bb2:30  omp.yield31}32 33// CHECK-LABEL: define internal void @parallel_op_dealloc..omp_par34// CHECK:         %[[LOCAL_ALLOC:.*]] = alloca float, align 435 36// CHECK:      omp.par.pre_finalize:37// CHECK:        br label %[[DEALLOC_REG_START:.*]]38 39// CHECK:      [[DEALLOC_REG_START]]:40// CHECK:        %[[LOCAL_ALLOC_CONV:.*]] = ptrtoint ptr %[[LOCAL_ALLOC]] to i6441// CHECK:        %[[COND:.*]] = icmp ne i64 %[[LOCAL_ALLOC_CONV]], 042// CHECK:        br i1 %[[COND]], label %[[DEALLOC_REG_BB1:.*]], label %[[DEALLOC_REG_BB2:.*]]43 44// CHECK:      [[DEALLOC_REG_BB2]]:45 46// CHECK:      [[DEALLOC_REG_BB1]]:47// CHECK-NEXT:   call void @free(ptr %[[LOCAL_ALLOC]])48// CHECK-NEXT:   br label %[[DEALLOC_REG_BB2]]49