================
@@ -58,6 +60,22 @@ class GlobalTy {
   void setPtr(void *P) { Ptr = P; }
 };
 
+typedef void *IntPtrT;
+struct __llvm_profile_data {
+#define INSTR_PROF_DATA(Type, LLVMType, Name, Initializer) Type Name;
+#include "llvm/ProfileData/InstrProfData.inc"
+};
+
+/// PGO profiling data extracted from a GPU device
+struct GPUProfGlobals {
+  std::string names;
+  std::vector<std::vector<int64_t>> counts;
+  std::vector<__llvm_profile_data> data;
+  Triple targetTriple;
+
----------------
EthanLuisMcDonough wrote:

The basic idea is that the fields in this struct are going to be passed to 
compiler-rt to be made into a profraw file for this specific target.

I don't know if `llvm::StringRef` would work for the names field. The names 
data is constant on the GPU device, but dynamic data still has to be allocated 
on the host in order to read the GPU value. I think it makes the most sense to 
make the struct own the name data. 

Do you think I should change all the vectors to `SmallVector` or just the 
innermost `Counts` vector?

https://github.com/llvm/llvm-project/pull/76587
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to