[libc] Enable integration tests targeting the GPU
authorJoseph Huber <jhuber6@vols.utk.edu>
Thu, 16 Mar 2023 16:42:57 +0000 (11:42 -0500)
committerJoseph Huber <jhuber6@vols.utk.edu>
Fri, 17 Mar 2023 17:55:32 +0000 (12:55 -0500)
commit39e91098b58bfbef973bc759803fbfcc6064b42b
treebe9222b9067fef316b46777a254afd00b34cf450
parent8e4f9b1fcbfd5e747b0df9a2de511b43bfa13348
[libc] Enable integration tests targeting the GPU

This patch enables integration tests running on the GPU. This uses the
RPC interface implemented in D145913 to compile the necessary
dependencies for the integration test object. We can then use this to
compile the objects for the GPU directly and execute them using the AMD
HSA loader combined with its RPC server. For example, the compiler is
performing the following actions to execute the integration tests.

```
$ clang++ --target=amdgcn-amd-amdhsa -mcpu=gfx1030 -nostdlib -flto -ffreestanding \
    crt1.o io.o quick_exit.o test.o rpc_client.o args_test.o -o image
$ ./amdhsa_loader image 1 2 5
args_test.cpp:24: Expected 'my_streq(argv[3], "3")' to be true, but is false
```

This currently only works with a single threaded client implementation
running on AMDGPU. Further work will implement multiple clients for AMD
and the ability to run on NVPTX as well.

Depends on D145913

Reviewed By: sivachandra, JonChesterfield

Differential Revision: https://reviews.llvm.org/D146256
libc/CMakeLists.txt
libc/cmake/modules/LLVMLibCTestRules.cmake
libc/startup/gpu/amdgpu/CMakeLists.txt
libc/test/CMakeLists.txt
libc/test/IntegrationTest/CMakeLists.txt
libc/test/integration/startup/gpu/CMakeLists.txt [new file with mode: 0644]
libc/test/integration/startup/gpu/args_test.cpp [new file with mode: 0644]
libc/utils/gpu/loader/CMakeLists.txt