summaryrefslogtreecommitdiff
path: root/offload/DeviceRTL/src/Mapping.cpp
diff options
context:
space:
mode:
authorShilei Tian <i@tianshilei.me>2024-05-26 00:57:50 -0400
committerShilei Tian <i@tianshilei.me>2024-05-26 00:57:50 -0400
commit7b4865582299294455bc816358fd88a9c6e5e0be (patch)
treeccf01a80a61d58bc1fbd4a01ec39e65017c26979 /offload/DeviceRTL/src/Mapping.cpp
parentac17fbc07682c40a08a429cd061a2c57662570a4 (diff)
Reapply "[OpenMP][OMPX] Add shfl_down_sync (#93311)"
This reverts commit 9b31cc71d66064dfaf2afabf4a835211321bb4a0.
Diffstat (limited to 'offload/DeviceRTL/src/Mapping.cpp')
-rw-r--r--offload/DeviceRTL/src/Mapping.cpp24
1 files changed, 23 insertions, 1 deletions
diff --git a/offload/DeviceRTL/src/Mapping.cpp b/offload/DeviceRTL/src/Mapping.cpp
index 4f39d2a299ee..c1ce878746a6 100644
--- a/offload/DeviceRTL/src/Mapping.cpp
+++ b/offload/DeviceRTL/src/Mapping.cpp
@@ -364,8 +364,30 @@ _TGT_KERNEL_LANGUAGE(block_id, getBlockIdInKernel)
_TGT_KERNEL_LANGUAGE(block_dim, getNumberOfThreadsInBlock)
_TGT_KERNEL_LANGUAGE(grid_dim, getNumberOfBlocksInKernel)
-extern "C" uint64_t ompx_ballot_sync(uint64_t mask, int pred) {
+extern "C" {
+uint64_t ompx_ballot_sync(uint64_t mask, int pred) {
return utils::ballotSync(mask, pred);
}
+int ompx_shfl_down_sync_i(uint64_t mask, int var, unsigned delta, int width) {
+ return utils::shuffleDown(mask, var, delta, width);
+}
+
+float ompx_shfl_down_sync_f(uint64_t mask, float var, unsigned delta,
+ int width) {
+ return utils::convertViaPun<float>(utils::shuffleDown(
+ mask, utils::convertViaPun<int32_t>(var), delta, width));
+}
+
+long ompx_shfl_down_sync_l(uint64_t mask, long var, unsigned delta, int width) {
+ return utils::shuffleDown(mask, var, delta, width);
+}
+
+double ompx_shfl_down_sync_d(uint64_t mask, double var, unsigned delta,
+ int width) {
+ return utils::convertViaPun<double>(utils::shuffleDown(
+ mask, utils::convertViaPun<int64_t>(var), delta, width));
+}
+}
+
#pragma omp end declare target