@@ -55,7 +55,7 @@ struct Header {
55
55
};
56
56
57
57
// / The maximum number of parallel ports that the RPC interface can support.
58
- constexpr uint64_t MAX_PORT_COUNT = 4096 ;
58
+ constexpr static uint64_t MAX_PORT_COUNT = 4096 ;
59
59
60
60
// / A common process used to synchronize communication between a client and a
61
61
// / server. The process contains a read-only inbox and a write-only outbox used
@@ -166,8 +166,7 @@ template <bool Invert> struct Process {
166
166
// / lane_mask is a bitmap of the threads in the warp that would hold the
167
167
// / single lock on success, e.g. the result of rpc::get_lane_mask()
168
168
// / The lock is held when the n-th bit of the lock bitfield is set.
169
- [[clang::convergent]] LIBC_INLINE bool try_lock (uint64_t lane_mask,
170
- uint32_t index) {
169
+ LIBC_INLINE bool try_lock (uint64_t lane_mask, uint32_t index) {
171
170
// On amdgpu, test and set to the nth lock bit and a sync_lane would suffice
172
171
// On volta, need to handle differences between the threads running and
173
172
// the threads that were detected in the previous call to get_lane_mask()
@@ -207,8 +206,7 @@ template <bool Invert> struct Process {
207
206
208
207
// / Unlock the lock at index. We need a lane sync to keep this function
209
208
// / convergent, otherwise the compiler will sink the store and deadlock.
210
- [[clang::convergent]] LIBC_INLINE void unlock (uint64_t lane_mask,
211
- uint32_t index) {
209
+ LIBC_INLINE void unlock (uint64_t lane_mask, uint32_t index) {
212
210
// Do not move any writes past the unlock.
213
211
__scoped_atomic_thread_fence (__ATOMIC_RELEASE, __MEMORY_SCOPE_DEVICE);
214
212
@@ -518,8 +516,7 @@ LIBC_INLINE void Port<T>::recv_n(void **dst, uint64_t *size, A &&alloc) {
518
516
// / port. Each port instance uses an associated \p opcode to tell the server
519
517
// / what to do. The Client interface provides the appropriate lane size to the
520
518
// / port using the platform's returned value.
521
- template <uint32_t opcode>
522
- [[clang::convergent]] LIBC_INLINE Client::Port Client::open () {
519
+ template <uint32_t opcode> LIBC_INLINE Client::Port Client::open () {
523
520
// Repeatedly perform a naive linear scan for a port that can be opened to
524
521
// send data.
525
522
for (uint32_t index = 0 ;; ++index) {
@@ -553,7 +550,7 @@ template <uint32_t opcode>
553
550
554
551
// / Attempts to open a port to use as the server. The server can only open a
555
552
// / port if it has a pending receive operation
556
- [[clang::convergent]] LIBC_INLINE rpc::optional<typename Server::Port>
553
+ LIBC_INLINE rpc::optional<typename Server::Port>
557
554
Server::try_open (uint32_t lane_size, uint32_t start) {
558
555
// Perform a naive linear scan for a port that has a pending request.
559
556
for (uint32_t index = start; index < process.port_count ; ++index) {
0 commit comments