1+ // Test HIPSPV static device library linking
2+ // REQUIRES: system-linux
3+ // UNSUPPORTED: system-windows
4+
5+ // Create a dummy archive to test SDL linking
6+ // RUN: rm -rf %t && mkdir %t
7+ // RUN: touch %t/dummy.bc
8+ // RUN: llvm-ar cr %t/libSDL.a %t/dummy.bc
9+
10+ // Test that -l options are passed to llvm-link for --offload=spirv64
11+ // RUN: %clang -### --target=x86_64-linux-gnu --offload=spirv64 \
12+ // RUN: --hip-path=%S/Inputs/hipspv -nohipwrapperinc %s \
13+ // RUN: -L%t -lSDL \
14+ // RUN: 2>&1 | FileCheck -check-prefix=SDL-LINK %s
15+
16+ // Test that .a files are properly unbundled and passed to llvm-link
17+ // RUN: %clang -### --target=x86_64-linux-gnu --offload=spirv64 \
18+ // RUN: --hip-path=%S/Inputs/hipspv -nohipwrapperinc %s \
19+ // RUN: %t/libSDL.a \
20+ // RUN: 2>&1 | FileCheck -check-prefix=SDL-ARCHIVE %s
21+
22+ // Verify that the input files are added before the SDL files in llvm-link command
23+ // This tests the ordering fix to match HIPAMD behavior
24+ // SDL-LINK: "{{.*}}clang-offload-bundler" "-unbundle" "-type=a" "-input={{.*}}libSDL.a" "-targets=hip-spirv64-unknown-unknown-unknown-generic" "-output=[[SDL_A:.*\.a]]" "-allow-missing-bundles"
25+ // SDL-LINK: "{{.*}}llvm-link" "{{.*}}.bc" "[[SDL_A]]" "-o"
26+
27+ // SDL-ARCHIVE: "{{.*}}clang-offload-bundler" "-unbundle" "-type=a" "-input={{.*}}libSDL.a" "-targets=hip-spirv64-unknown-unknown-unknown-generic" "-output=[[SDL_A:.*\.a]]" "-allow-missing-bundles"
28+ // SDL-ARCHIVE: "{{.*}}llvm-link" "{{.*}}.bc" "[[SDL_A]]" "-o"
29+
30+ // Test that no SDL linking occurs when --no-offloadlib is used
31+ // RUN: %clang -### --target=x86_64-linux-gnu --offload=spirv64 \
32+ // RUN: --hip-path=%S/Inputs/hipspv -nohipwrapperinc --no-offloadlib %s \
33+ // RUN: -L%t -lSDL \
34+ // RUN: 2>&1 | FileCheck -check-prefix=NO-SDL %s
35+
36+ // NO-SDL-NOT: "{{.*}}clang-offload-bundler" "-unbundle" "-type=a" "-input={{.*}}libSDL.a"
37+
38+ __global__ void kernel () {}
0 commit comments