[libc] Implement a generic streaming interface in the RPC
authorJoseph Huber <jhuber6@vols.utk.edu>
Thu, 11 May 2023 16:11:24 +0000 (11:11 -0500)
committerJoseph Huber <jhuber6@vols.utk.edu>
Thu, 11 May 2023 16:55:41 +0000 (11:55 -0500)
commitd21e507cfc9f7f5b2881e928d656fddbc9d31147
treeb2033f0e685d708888f3b278db489a1b7d5b6c3b
parentdc0d00c5fcac5e292f67e19f61bf0bbe436dfd03
[libc] Implement a generic streaming interface in the RPC

Currently we provide the `send_n` and `recv_n` functions. These were
somewhat divergent and not tested on the GPU. This patch changes the
support to be more common. We do this my making the CPU provide an array
equal the to at least the lane size while the GPU can rely on the
private memory address of its stack variables. This allows us to send
data back and forth generically.

Reviewed By: JonChesterfield

Differential Revision: https://reviews.llvm.org/D150379
libc/src/__support/RPC/rpc.h
libc/src/__support/RPC/rpc_util.h
libc/test/integration/startup/gpu/CMakeLists.txt
libc/test/integration/startup/gpu/rpc_stream_test.cpp [new file with mode: 0644]
libc/utils/gpu/loader/Server.h