Skip to content
This repository was archived by the owner on Apr 23, 2020. It is now read-only.

Commit 731769f

Browse files
[libomptarget][nfc] Update remaining uint32 to use lanemask_t
Summary: [libomptarget][nfc] Update remaining uint32 to use lanemask_t Update a few functions in the API to use lanemask_t instead of i32. NFC for nvptx. Also update the ActiveThreads type in DataSharingStateTy. This removes a lot of #ifdef from the downsteam amdgcn implementation. Reviewers: ABataev, jdoerfert, grokos, ronlieb, RaviNarayanaswamy Subscribers: openmp-commits Tags: #openmp Differential Revision: https://reviews.llvm.org/D68513 git-svn-id: https://llvm.org/svn/llvm-project/openmp/trunk@373806 91177308-0d34-0410-b5e6-96231b3b80d8
1 parent 3bdcaec commit 731769f

File tree

6 files changed

+27
-20
lines changed

6 files changed

+27
-20
lines changed

libomptarget/deviceRTLs/nvptx/src/data_sharing.cu

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ __kmpc_initialize_data_sharing_environment(__kmpc_data_sharing_slot *rootS,
9696

9797
EXTERN void *__kmpc_data_sharing_environment_begin(
9898
__kmpc_data_sharing_slot **SavedSharedSlot, void **SavedSharedStack,
99-
void **SavedSharedFrame, int32_t *SavedActiveThreads,
99+
void **SavedSharedFrame, __kmpc_impl_lanemask_t *SavedActiveThreads,
100100
size_t SharingDataSize, size_t SharingDefaultDataSize,
101101
int16_t IsOMPRuntimeInitialized) {
102102

@@ -117,7 +117,7 @@ EXTERN void *__kmpc_data_sharing_environment_begin(
117117
__kmpc_data_sharing_slot *&SlotP = DataSharingState.SlotPtr[WID];
118118
void *&StackP = DataSharingState.StackPtr[WID];
119119
void * volatile &FrameP = DataSharingState.FramePtr[WID];
120-
int32_t &ActiveT = DataSharingState.ActiveThreads[WID];
120+
__kmpc_impl_lanemask_t &ActiveT = DataSharingState.ActiveThreads[WID];
121121

122122
DSPRINT0(DSFLAG, "Save current slot/stack values.\n");
123123
// Save the current values.
@@ -225,7 +225,7 @@ EXTERN void *__kmpc_data_sharing_environment_begin(
225225

226226
EXTERN void __kmpc_data_sharing_environment_end(
227227
__kmpc_data_sharing_slot **SavedSharedSlot, void **SavedSharedStack,
228-
void **SavedSharedFrame, int32_t *SavedActiveThreads,
228+
void **SavedSharedFrame, __kmpc_impl_lanemask_t *SavedActiveThreads,
229229
int32_t IsEntryPoint) {
230230

231231
DSPRINT0(DSFLAG, "Entering __kmpc_data_sharing_environment_end\n");
@@ -260,7 +260,7 @@ EXTERN void __kmpc_data_sharing_environment_end(
260260
// assume that threads will converge right after the call site that started
261261
// the environment.
262262
if (IsWarpMasterActiveThread()) {
263-
int32_t &ActiveT = DataSharingState.ActiveThreads[WID];
263+
__kmpc_impl_lanemask_t &ActiveT = DataSharingState.ActiveThreads[WID];
264264

265265
DSPRINT0(DSFLAG, "Before restoring the stack\n");
266266
// Zero the bits in the mask. If it is still different from zero, then we

libomptarget/deviceRTLs/nvptx/src/interface.h

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
#define _INTERFACES_H_
2020

2121
#include "option.h"
22+
#include "target_impl.h"
2223

2324
////////////////////////////////////////////////////////////////////////////////
2425
// OpenMP interface
@@ -422,9 +423,9 @@ EXTERN void __kmpc_end_critical(kmp_Ident *loc, int32_t global_tid,
422423
EXTERN void __kmpc_flush(kmp_Ident *loc);
423424

424425
// vote
425-
EXTERN int32_t __kmpc_warp_active_thread_mask();
426+
EXTERN __kmpc_impl_lanemask_t __kmpc_warp_active_thread_mask();
426427
// syncwarp
427-
EXTERN void __kmpc_syncwarp(int32_t);
428+
EXTERN void __kmpc_syncwarp(__kmpc_impl_lanemask_t);
428429

429430
// tasks
430431
EXTERN kmp_TaskDescr *__kmpc_omp_task_alloc(kmp_Ident *loc,
@@ -475,11 +476,13 @@ EXTERN void __kmpc_kernel_prepare_parallel(void *WorkFn,
475476
EXTERN bool __kmpc_kernel_parallel(void **WorkFn,
476477
int16_t IsOMPRuntimeInitialized);
477478
EXTERN void __kmpc_kernel_end_parallel();
478-
EXTERN bool __kmpc_kernel_convergent_parallel(void *buffer, uint32_t Mask,
479+
EXTERN bool __kmpc_kernel_convergent_parallel(void *buffer,
480+
__kmpc_impl_lanemask_t Mask,
479481
bool *IsFinal,
480482
int32_t *LaneSource);
481483
EXTERN void __kmpc_kernel_end_convergent_parallel(void *buffer);
482-
EXTERN bool __kmpc_kernel_convergent_simd(void *buffer, uint32_t Mask,
484+
EXTERN bool __kmpc_kernel_convergent_simd(void *buffer,
485+
__kmpc_impl_lanemask_t Mask,
483486
bool *IsFinal, int32_t *LaneSource,
484487
int32_t *LaneId, int32_t *NumLanes);
485488
EXTERN void __kmpc_kernel_end_convergent_simd(void *buffer);
@@ -510,12 +513,13 @@ __kmpc_initialize_data_sharing_environment(__kmpc_data_sharing_slot *RootS,
510513
size_t InitialDataSize);
511514
EXTERN void *__kmpc_data_sharing_environment_begin(
512515
__kmpc_data_sharing_slot **SavedSharedSlot, void **SavedSharedStack,
513-
void **SavedSharedFrame, int32_t *SavedActiveThreads,
516+
void **SavedSharedFrame, __kmpc_impl_lanemask_t *SavedActiveThreads,
514517
size_t SharingDataSize, size_t SharingDefaultDataSize,
515518
int16_t IsOMPRuntimeInitialized);
516519
EXTERN void __kmpc_data_sharing_environment_end(
517520
__kmpc_data_sharing_slot **SavedSharedSlot, void **SavedSharedStack,
518-
void **SavedSharedFrame, int32_t *SavedActiveThreads, int32_t IsEntryPoint);
521+
void **SavedSharedFrame, __kmpc_impl_lanemask_t *SavedActiveThreads,
522+
int32_t IsEntryPoint);
519523

520524
EXTERN void *
521525
__kmpc_get_data_sharing_environment_frame(int32_t SourceThreadID,

libomptarget/deviceRTLs/nvptx/src/loop.cu

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -380,7 +380,8 @@ public:
380380
////////////////////////////////////////////////////////////////////////////////
381381
// Support for dispatch next
382382

383-
INLINE static int64_t Shuffle(unsigned active, int64_t val, int leader) {
383+
INLINE static uint64_t Shuffle(__kmpc_impl_lanemask_t active, int64_t val,
384+
int leader) {
384385
uint32_t lo, hi;
385386
__kmpc_impl_unpack(val, lo, hi);
386387
hi = __kmpc_impl_shfl_sync(active, hi, leader);

libomptarget/deviceRTLs/nvptx/src/omptarget-nvptx.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ struct DataSharingStateTy {
107107
__kmpc_data_sharing_slot *SlotPtr[DS_Max_Warp_Number];
108108
void *StackPtr[DS_Max_Warp_Number];
109109
void * volatile FramePtr[DS_Max_Warp_Number];
110-
int32_t ActiveThreads[DS_Max_Warp_Number];
110+
__kmpc_impl_lanemask_t ActiveThreads[DS_Max_Warp_Number];
111111
};
112112
// Additional worker slot type which is initialized with the default worker slot
113113
// size of 4*32 bytes.

libomptarget/deviceRTLs/nvptx/src/parallel.cu

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -44,13 +44,14 @@ typedef struct ConvergentSimdJob {
4444
////////////////////////////////////////////////////////////////////////////////
4545
// support for convergent simd (team of threads in a warp only)
4646
////////////////////////////////////////////////////////////////////////////////
47-
EXTERN bool __kmpc_kernel_convergent_simd(void *buffer, uint32_t Mask,
47+
EXTERN bool __kmpc_kernel_convergent_simd(void *buffer,
48+
__kmpc_impl_lanemask_t Mask,
4849
bool *IsFinal, int32_t *LaneSource,
4950
int32_t *LaneId, int32_t *NumLanes) {
5051
PRINT0(LD_IO, "call to __kmpc_kernel_convergent_simd\n");
51-
uint32_t ConvergentMask = Mask;
52+
__kmpc_impl_lanemask_t ConvergentMask = Mask;
5253
int32_t ConvergentSize = __kmpc_impl_popc(ConvergentMask);
53-
uint32_t WorkRemaining = ConvergentMask >> (*LaneSource + 1);
54+
__kmpc_impl_lanemask_t WorkRemaining = ConvergentMask >> (*LaneSource + 1);
5455
*LaneSource += __kmpc_impl_ffs(WorkRemaining);
5556
*IsFinal = __kmpc_impl_popc(WorkRemaining) == 1;
5657
__kmpc_impl_lanemask_t lanemask_lt = __kmpc_impl_lanemask_lt();
@@ -117,13 +118,14 @@ typedef struct ConvergentParallelJob {
117118
////////////////////////////////////////////////////////////////////////////////
118119
// support for convergent parallelism (team of threads in a warp only)
119120
////////////////////////////////////////////////////////////////////////////////
120-
EXTERN bool __kmpc_kernel_convergent_parallel(void *buffer, uint32_t Mask,
121+
EXTERN bool __kmpc_kernel_convergent_parallel(void *buffer,
122+
__kmpc_impl_lanemask_t Mask,
121123
bool *IsFinal,
122124
int32_t *LaneSource) {
123125
PRINT0(LD_IO, "call to __kmpc_kernel_convergent_parallel\n");
124-
uint32_t ConvergentMask = Mask;
126+
__kmpc_impl_lanemask_t ConvergentMask = Mask;
125127
int32_t ConvergentSize = __kmpc_impl_popc(ConvergentMask);
126-
uint32_t WorkRemaining = ConvergentMask >> (*LaneSource + 1);
128+
__kmpc_impl_lanemask_t WorkRemaining = ConvergentMask >> (*LaneSource + 1);
127129
*LaneSource += __kmpc_impl_ffs(WorkRemaining);
128130
*IsFinal = __kmpc_impl_popc(WorkRemaining) == 1;
129131
__kmpc_impl_lanemask_t lanemask_lt = __kmpc_impl_lanemask_lt();

libomptarget/deviceRTLs/nvptx/src/sync.cu

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,7 @@ EXTERN void __kmpc_flush(kmp_Ident *loc) {
140140
// Vote
141141
////////////////////////////////////////////////////////////////////////////////
142142

143-
EXTERN int32_t __kmpc_warp_active_thread_mask() {
143+
EXTERN __kmpc_impl_lanemask_t __kmpc_warp_active_thread_mask() {
144144
PRINT0(LD_IO, "call __kmpc_warp_active_thread_mask\n");
145145
return __kmpc_impl_activemask();
146146
}
@@ -149,7 +149,7 @@ EXTERN int32_t __kmpc_warp_active_thread_mask() {
149149
// Syncwarp
150150
////////////////////////////////////////////////////////////////////////////////
151151

152-
EXTERN void __kmpc_syncwarp(int32_t Mask) {
152+
EXTERN void __kmpc_syncwarp(__kmpc_impl_lanemask_t Mask) {
153153
PRINT0(LD_IO, "call __kmpc_syncwarp\n");
154154
__kmpc_impl_syncwarp(Mask);
155155
}

0 commit comments

Comments
 (0)