[PATCH] D144893: [OpenMP][WIP] `spir64` device runtime library template

Shilei Tian via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu Mar 9 17:45:30 PST 2023


tianshilei1992 added inline comments.


================
Comment at: openmp/libomptarget/DeviceRTL/src/LibC.cpp:37
+/// Intel implementation
+#pragma omp begin declare variant match(device = {arch(spir64)})
+namespace impl {
----------------
spoutn1k wrote:
> tianshilei1992 wrote:
> > I'm thinking potentially we can have a generic implementation of `omp_vprintf` that just returns -1 and having the NVPTX version calls `vprintf`. In this way we don't need to do it for every target.
> How do I go about doing this ? Declare `omp_vprintf` as weak ?
just something like:
```
int32_t omp_vprintf(const char *Format, void *Arguments, uint32_t) {
  return -1;
}
#pragma omp begin declare variant match(device = {arch(nvptx64)})
int32_t omp_vprintf(const char *Format, void *Arguments, uint32_t) {
  return vprintf(...);
}
#pragma omp end declare variant
```
In this way, when the arch is NVPTX64, that variant will replace the default one.


================
Comment at: openmp/libomptarget/DeviceRTL/src/Mapping.cpp:162
+uint32_t getNumHardwareThreadsInBlock() {
+  return __spirv_BuiltInWorkgroupSize(0);
+}
----------------
Do we have these builtins in LLVM right now?


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D144893/new/

https://reviews.llvm.org/D144893



More information about the llvm-commits mailing list