diff --git a/openmp/libomptarget/include/Shared/Profile.h b/openmp/libomptarget/include/Shared/Profile.h new file mode 100644 index 0000000000000..bbdefea06d90e --- /dev/null +++ b/openmp/libomptarget/include/Shared/Profile.h @@ -0,0 +1,36 @@ +//===-- Shared/Profile.h - Target independent OpenMP target RTL -*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +// +// Macros to provide profile support via LLVM's time profiler. +// +//===----------------------------------------------------------------------===// + +#include "llvm/Support/TimeProfiler.h" + +/// Time spend in the current scope, assigned to the function name. +#define TIMESCOPE() llvm::TimeTraceScope TimeScope(__FUNCTION__) + +/// Time spend in the current scope, assigned to the function name and source +/// info. +#define TIMESCOPE_WITH_IDENT(IDENT) \ + SourceInfo SI(IDENT); \ + llvm::TimeTraceScope TimeScope(__FUNCTION__, SI.getProfileLocation()) + +/// Time spend in the current scope, assigned to the given name and source +/// info. +#define TIMESCOPE_WITH_NAME_AND_IDENT(NAME, IDENT) \ + SourceInfo SI(IDENT); \ + llvm::TimeTraceScope TimeScope(NAME, SI.getProfileLocation()) + +/// Time spend in the current scope, assigned to the function name and source +/// info and RegionTypeMsg. +#define TIMESCOPE_WITH_RTM_AND_IDENT(RegionTypeMsg, IDENT) \ + SourceInfo SI(IDENT); \ + std::string ProfileLocation = SI.getProfileLocation(); \ + std::string RTM = RegionTypeMsg; \ + llvm::TimeTraceScope TimeScope(__FUNCTION__, ProfileLocation + RTM) diff --git a/openmp/libomptarget/src/LegacyAPI.cpp b/openmp/libomptarget/src/LegacyAPI.cpp index 54dbe19c17144..d0f21a36513ad 100644 --- a/openmp/libomptarget/src/LegacyAPI.cpp +++ b/openmp/libomptarget/src/LegacyAPI.cpp @@ -13,6 +13,8 @@ #include "omptarget.h" #include "private.h" +#include "Shared/Profile.h" + EXTERN void __tgt_target_data_begin(int64_t DeviceId, int32_t ArgNum, void **ArgsBase, void **Args, int64_t *ArgSizes, int64_t *ArgTypes) { diff --git a/openmp/libomptarget/src/api.cpp b/openmp/libomptarget/src/api.cpp index ecef02c8a0d3d..7fc13cb698213 100644 --- a/openmp/libomptarget/src/api.cpp +++ b/openmp/libomptarget/src/api.cpp @@ -15,6 +15,8 @@ #include "private.h" #include "rtl.h" +#include "Shared/Profile.h" + #include "llvm/ADT/SmallVector.h" #include diff --git a/openmp/libomptarget/src/interface.cpp b/openmp/libomptarget/src/interface.cpp index 4735469b55aa0..8a1dcf577f1ba 100644 --- a/openmp/libomptarget/src/interface.cpp +++ b/openmp/libomptarget/src/interface.cpp @@ -18,6 +18,7 @@ #include "private.h" #include "rtl.h" +#include "Shared/Profile.h" #include "Shared/Utils.h" #include diff --git a/openmp/libomptarget/src/omptarget.cpp b/openmp/libomptarget/src/omptarget.cpp index d3b299ca58f51..f4b244aac13ae 100644 --- a/openmp/libomptarget/src/omptarget.cpp +++ b/openmp/libomptarget/src/omptarget.cpp @@ -18,6 +18,8 @@ #include "private.h" #include "rtl.h" +#include "Shared/Profile.h" + #include "OpenMP/omp.h" #include "llvm/ADT/StringExtras.h" diff --git a/openmp/libomptarget/src/private.h b/openmp/libomptarget/src/private.h index f082f6e3b9fc8..e9b9794308f09 100644 --- a/openmp/libomptarget/src/private.h +++ b/openmp/libomptarget/src/private.h @@ -419,23 +419,4 @@ class ExponentialBackoff { bool isAboveThreshold() const { return Count > CountThreshold; } }; -#include "llvm/Support/TimeProfiler.h" -#define TIMESCOPE() llvm::TimeTraceScope TimeScope(__FUNCTION__) -#define TIMESCOPE_WITH_IDENT(IDENT) \ - SourceInfo SI(IDENT); \ - llvm::TimeTraceScope TimeScope(__FUNCTION__, SI.getProfileLocation()) -#define TIMESCOPE_WITH_NAME_AND_IDENT(NAME, IDENT) \ - SourceInfo SI(IDENT); \ - llvm::TimeTraceScope TimeScope(NAME, SI.getProfileLocation()) -#define TIMESCOPE_WITH_RTM_AND_IDENT(RegionTypeMsg, IDENT) \ - SourceInfo SI(IDENT); \ - std::string ProfileLocation = SI.getProfileLocation(); \ - std::string RTM = RegionTypeMsg; \ - llvm::TimeTraceScope TimeScope(__FUNCTION__, ProfileLocation + RTM) -#else -#define TIMESCOPE() -#define TIMESCOPE_WITH_IDENT(IDENT) -#define TIMESCOPE_WITH_NAME_AND_IDENT(NAME, IDENT) -#define TIMESCOPE_WITH_RTM_AND_IDENT(RegionTypeMsg, IDENT) - #endif diff --git a/openmp/libomptarget/src/rtl.cpp b/openmp/libomptarget/src/rtl.cpp index 86509cd69c561..6e012bae8a6ac 100644 --- a/openmp/libomptarget/src/rtl.cpp +++ b/openmp/libomptarget/src/rtl.cpp @@ -17,6 +17,7 @@ #include "private.h" #include "rtl.h" +#include "Shared/Profile.h" #include "Shared/Utils.h" #include