[all-commits] [llvm/llvm-project] be99c6: [OPENMP50]Codegen for iterator construct.

Alexey Bataev via All-commits all-commits at lists.llvm.org
Tue Apr 7 12:35:33 PDT 2020


  Branch: refs/heads/master
  Home:   https://github.com/llvm/llvm-project
  Commit: be99c6158841d0c01eaa8ba16cd7b9e5ade40c6b
      https://github.com/llvm/llvm-project/commit/be99c6158841d0c01eaa8ba16cd7b9e5ade40c6b
  Author: Alexey Bataev <a.bataev at hotmail.com>
  Date:   2020-04-07 (Tue, 07 Apr 2020)

  Changed paths:
    M clang/include/clang/AST/ExprOpenMP.h
    M clang/lib/AST/Expr.cpp
    M clang/lib/CodeGen/CGOpenMPRuntime.cpp
    M clang/lib/CodeGen/CGOpenMPRuntime.h
    M clang/lib/CodeGen/CGStmtOpenMP.cpp
    M clang/lib/Sema/SemaExpr.cpp
    M clang/lib/Serialization/ASTReaderStmt.cpp
    M clang/lib/Serialization/ASTWriterStmt.cpp
    M clang/test/OpenMP/depobj_ast_print.cpp
    M clang/test/OpenMP/depobj_codegen.cpp
    M clang/test/OpenMP/target_depend_codegen.cpp
    M clang/test/OpenMP/target_enter_data_depend_codegen.cpp
    M clang/test/OpenMP/target_exit_data_depend_codegen.cpp
    M clang/test/OpenMP/target_parallel_depend_codegen.cpp
    M clang/test/OpenMP/target_parallel_for_depend_codegen.cpp
    M clang/test/OpenMP/target_parallel_for_simd_depend_codegen.cpp
    M clang/test/OpenMP/target_simd_depend_codegen.cpp
    M clang/test/OpenMP/target_teams_depend_codegen.cpp
    M clang/test/OpenMP/target_teams_distribute_depend_codegen.cpp
    M clang/test/OpenMP/target_teams_distribute_parallel_for_depend_codegen.cpp
    M clang/test/OpenMP/target_teams_distribute_parallel_for_simd_depend_codegen.cpp
    M clang/test/OpenMP/target_teams_distribute_simd_depend_codegen.cpp
    M clang/test/OpenMP/target_update_depend_codegen.cpp
    M clang/test/OpenMP/task_codegen.c
    M clang/test/OpenMP/task_codegen.cpp

  Log Message:
  -----------
  [OPENMP50]Codegen for iterator construct.

Implemented codegen for the iterator expression in the depend clauses.
Iterator construct is emitted the following way:
iterator(cnt1, cnt2, ...), in : <dep>

<TotalNumDeps> = <cnt1_size> * <cnt2_size> * ...;
kmp_depend_t deps[<TotalNumDeps>];
deps_counter = 0;
for (cnt1) {
  for (cnt2) {
    ...
    deps[deps_counter].base_addr = &<dep>;
    deps[deps_counter].size = sizeof(<dep>);
    deps[deps_counter].flags = in;
    deps_counter += 1;
    ...
  }
}

For depobj construct the codegen is very similar, but the memory is
allocated dynamically and added extra first item reserved for internal use.




More information about the All-commits mailing list