TIFitis marked 4 inline comments as done. TIFitis added a comment. In D142914#4144475 <https://reviews.llvm.org/D142914#4144475>, @kiranchandramohan wrote:
> Please add tests for the MLIR portion. Can you please tell me where to add these? > Could you also post the full LLVM IR for a construct with the map clause? The following is a simple example, let me know if you'd like a more complex example with loop :) **Flang:** subroutine openmp_target_data integer :: i !$omp target data map(tofrom: i) i = 99; !$omp end target data end subroutine openmp_target_data **FIR:** func.func @_QPopenmp_target_data() { %0 = fir.alloca i32 {bindc_name = "i", uniq_name = "_QFopenmp_target_dataEi"} omp.target_data map((tofrom -> %0 : !fir.ref<i32>)) { %c99_i32 = arith.constant 99 : i32 fir.store %c99_i32 to %0 : !fir.ref<i32> omp.terminator } return } **LLVMIR:** llvm.func @_QPopenmp_target_data() { %0 = llvm.mlir.constant(1 : i64) : i64 %1 = llvm.alloca %0 x i32 {bindc_name = "i", in_type = i32, operand_segment_sizes = array<i32: 0, 0>, uniq_name = "_QFopenmp_target_dataEi"} : (i64) -> !llvm.ptr<i32> omp.target_data map((tofrom -> %1 : !llvm.ptr<i32>)) { %2 = llvm.mlir.constant(99 : i32) : i32 llvm.store %2, %1 : !llvm.ptr<i32> omp.terminator } llvm.return } **llvm IR .ll:** ; ModuleID = 'LLVMDialectModule' source_filename = "LLVMDialectModule" target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" target triple = "aarch64-unknown-linux-gnu" %struct.ident_t = type { i32, i32, i32, i32, ptr } @0 = private unnamed_addr constant [26 x i8] c";test.mlir;unknown;4;10;;\00", align 1 @1 = private unnamed_addr constant [23 x i8] c";unknown;unknown;0;0;;\00", align 1 @2 = private unnamed_addr constant %struct.ident_t { i32 0, i32 2, i32 0, i32 22, ptr @1 }, align 8 @.offload_maptypes = private unnamed_addr constant [1 x i64] [i64 3] @.offload_mapnames = private constant [1 x ptr] [ptr @0] declare ptr @malloc(i64) declare void @free(ptr) define void @_QPopenmp_target_data() { %1 = alloca [1 x ptr], align 8 %2 = alloca [1 x ptr], align 8 %3 = alloca [1 x i64], align 8 %4 = alloca i32, i64 1, align 4 br label %entry entry: ; preds = %0 %5 = getelementptr inbounds [1 x ptr], ptr %1, i32 0, i32 0 store ptr %4, ptr %5, align 8 %6 = getelementptr inbounds [1 x ptr], ptr %2, i32 0, i32 0 store ptr %4, ptr %6, align 8 %7 = getelementptr inbounds [1 x i64], ptr %3, i32 0, i32 0 store i64 ptrtoint (ptr getelementptr (ptr, ptr null, i32 1) to i64), ptr %7, align 8 %8 = getelementptr inbounds [1 x ptr], ptr %1, i32 0, i32 0 %9 = getelementptr inbounds [1 x ptr], ptr %2, i32 0, i32 0 %10 = getelementptr inbounds [1 x i64], ptr %3, i32 0, i32 0 call void @__tgt_target_data_begin_mapper(ptr @2, i64 -1, i32 1, ptr %8, ptr %9, ptr %10, ptr @.offload_maptypes, ptr @.offload_mapnames, ptr null) br label %omp.data.region omp.data.region: ; preds = %entry store i32 99, ptr %4, align 4 br label %omp.region.cont omp.region.cont: ; preds = %omp.data.region %11 = getelementptr inbounds [1 x ptr], ptr %1, i32 0, i32 0 %12 = getelementptr inbounds [1 x ptr], ptr %2, i32 0, i32 0 %13 = getelementptr inbounds [1 x i64], ptr %3, i32 0, i32 0 call void @__tgt_target_data_end_mapper(ptr @2, i64 -1, i32 1, ptr %11, ptr %12, ptr %13, ptr @.offload_maptypes, ptr @.offload_mapnames, ptr null) ret void } ; Function Attrs: nounwind declare void @__tgt_target_data_begin_mapper(ptr, i64, i32, ptr, ptr, ptr, ptr, ptr, ptr) #0 ; Function Attrs: nounwind declare void @__tgt_target_data_end_mapper(ptr, i64, i32, ptr, ptr, ptr, ptr, ptr, ptr) #0 attributes #0 = { nounwind } !llvm.module.flags = !{!0} !0 = !{i32 2, !"Debug Info Version", i32 3} Cheers, Akash ================ Comment at: mlir/lib/Target/LLVMIR/Dialect/Utils.cpp:1 +//===- Utils.cpp - General Utils for translating MLIR dialect to LLVM IR---===// +// ---------------- kiranchandramohan wrote: > Nit: I would prefer the OpenMPCommon.cpp name suggested in > https://discourse.llvm.org/t/rfc-adding-new-util-file-to-mlir-dialect-translation/68221. > Would you also like me to move the file inside OpenMP ( `mlir/lib/Target/LLVMIR/Dialect/OpenMP` ) ? Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D142914/new/ https://reviews.llvm.org/D142914 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits