blob: 540b9328605388e22ed2541a9e36d88607d2f4ec [file] [log] [blame]
Yaxun Liud46d1512018-10-02 17:48:54 +00001// REQUIRES: clang-driver
2// REQUIRES: x86-registered-target
3// REQUIRES: amdgpu-registered-target
4
5// RUN: %clang -### -target x86_64-linux-gnu -fno-gpu-rdc \
6// RUN: -x hip --cuda-gpu-arch=gfx803 --cuda-gpu-arch=gfx900 \
7// RUN: --hip-device-lib=lib1.bc --hip-device-lib=lib2.bc \
8// RUN: --hip-device-lib-path=%S/Inputs/hip_multiple_inputs/lib1 \
9// RUN: --hip-device-lib-path=%S/Inputs/hip_multiple_inputs/lib2 \
10// RUN: -fuse-ld=lld \
11// RUN: %S/Inputs/hip_multiple_inputs/a.cu \
12// RUN: %S/Inputs/hip_multiple_inputs/b.hip \
13// RUN: 2>&1 | FileCheck -check-prefixes=CHECK %s
14
15//
16// Compile device code in a.cu to code object for gfx803.
17//
18
19// CHECK: [[CLANG:".*clang.*"]] "-cc1" "-triple" "amdgcn-amd-amdhsa"
Douglas Yung7d408802019-02-14 01:11:32 +000020// CHECK-SAME: "-aux-triple" "x86_64-unknown-linux-gnu"
21// CHECK-SAME: "-emit-llvm-bc"
Yaxun Liud46d1512018-10-02 17:48:54 +000022// CHECK-SAME: {{.*}} "-main-file-name" "a.cu" {{.*}} "-target-cpu" "gfx803"
23// CHECK-SAME: "-fcuda-is-device" "-fvisibility" "hidden"
Scott Lindere68bc492019-01-28 17:12:19 +000024// CHECK-SAME: "-fapply-global-visibility-to-externs"
Yaxun Liu61e80a32019-04-12 16:23:31 +000025// CHECK-SAME: "{{.*}}lib1.bc" "{{.*}}lib2.bc"
Yaxun Liud46d1512018-10-02 17:48:54 +000026// CHECK-SAME: {{.*}} "-o" [[A_BC_803:".*bc"]] "-x" "hip"
27// CHECK-SAME: {{.*}} [[A_SRC:".*a.cu"]]
28
29// CHECK: [[LLVM_LINK:"*.llvm-link"]] [[A_BC_803]]
Yaxun Liud46d1512018-10-02 17:48:54 +000030// CHECK-SAME: "-o" [[LINKED_BC_DEV_A_803:".*-gfx803-linked-.*bc"]]
31
32// CHECK: [[OPT:".*opt"]] [[LINKED_BC_DEV_A_803]] "-mtriple=amdgcn-amd-amdhsa"
33// CHECK-SAME: "-mcpu=gfx803"
34// CHECK-SAME: "-o" [[OPT_BC_DEV_A_803:".*-gfx803-optimized.*bc"]]
35
36// CHECK: [[LLC: ".*llc"]] [[OPT_BC_DEV_A_803]] "-mtriple=amdgcn-amd-amdhsa"
Yaxun Liubcda7072018-10-16 17:36:23 +000037// CHECK-SAME: "-filetype=obj"
Yaxun Liubcda7072018-10-16 17:36:23 +000038// CHECK-SAME: "-mcpu=gfx803" "-o" [[OBJ_DEV_A_803:".*-gfx803-.*o"]]
Yaxun Liud46d1512018-10-02 17:48:54 +000039
Yaxun Liu8d068d62019-06-26 03:47:37 +000040// CHECK: [[LLD: ".*lld"]] "-flavor" "gnu" "-shared"
Yaxun Liud46d1512018-10-02 17:48:54 +000041// CHECK-SAME: "-o" "[[IMG_DEV_A_803:.*out]]" [[OBJ_DEV_A_803]]
42
43//
44// Compile device code in a.cu to code object for gfx900.
45//
46
47// CHECK: [[CLANG:".*clang.*"]] "-cc1" "-triple" "amdgcn-amd-amdhsa"
Douglas Yung7d408802019-02-14 01:11:32 +000048// CHECK-SAME: "-aux-triple" "x86_64-unknown-linux-gnu"
49// CHECK-SAME: "-emit-llvm-bc"
Yaxun Liud46d1512018-10-02 17:48:54 +000050// CHECK-SAME: {{.*}} "-main-file-name" "a.cu" {{.*}} "-target-cpu" "gfx900"
51// CHECK-SAME: "-fcuda-is-device" "-fvisibility" "hidden"
Scott Lindere68bc492019-01-28 17:12:19 +000052// CHECK-SAME: "-fapply-global-visibility-to-externs"
Yaxun Liu61e80a32019-04-12 16:23:31 +000053// CHECK-SAME: "{{.*}}lib1.bc" "{{.*}}lib2.bc"
Yaxun Liud46d1512018-10-02 17:48:54 +000054// CHECK-SAME: {{.*}} "-o" [[A_BC_900:".*bc"]] "-x" "hip"
55// CHECK-SAME: {{.*}} [[A_SRC]]
56
57// CHECK: [[LLVM_LINK:"*.llvm-link"]] [[A_BC_900]]
Yaxun Liud46d1512018-10-02 17:48:54 +000058// CHECK-SAME: "-o" [[LINKED_BC_DEV_A_900:".*-gfx900-linked-.*bc"]]
59
60// CHECK: [[OPT:".*opt"]] [[LINKED_BC_DEV_A_900]] "-mtriple=amdgcn-amd-amdhsa"
61// CHECK-SAME: "-mcpu=gfx900"
62// CHECK-SAME: "-o" [[OPT_BC_DEV_A_900:".*-gfx900-optimized.*bc"]]
63
64// CHECK: [[LLC: ".*llc"]] [[OPT_BC_DEV_A_900]] "-mtriple=amdgcn-amd-amdhsa"
Yaxun Liubcda7072018-10-16 17:36:23 +000065// CHECK-SAME: "-filetype=obj"
Yaxun Liubcda7072018-10-16 17:36:23 +000066// CHECK-SAME: "-mcpu=gfx900" "-o" [[OBJ_DEV_A_900:".*-gfx900-.*o"]]
Yaxun Liud46d1512018-10-02 17:48:54 +000067
Yaxun Liu8d068d62019-06-26 03:47:37 +000068// CHECK: [[LLD: ".*lld"]] "-flavor" "gnu" "-shared"
Yaxun Liud46d1512018-10-02 17:48:54 +000069// CHECK-SAME: "-o" "[[IMG_DEV_A_900:.*out]]" [[OBJ_DEV_A_900]]
70
71//
72// Bundle and embed device code in host object for a.cu.
73//
74
75// CHECK: [[BUNDLER:".*clang-offload-bundler"]] "-type=o"
76// CHECK-SAME: "-targets={{.*}},hip-amdgcn-amd-amdhsa-gfx803,hip-amdgcn-amd-amdhsa-gfx900"
77// CHECK-SAME: "-inputs={{.*}},[[IMG_DEV_A_803]],[[IMG_DEV_A_900]]" "-outputs=[[BUNDLE_A:.*hipfb]]"
78
79// CHECK: [[CLANG]] "-cc1" "-triple" "x86_64-unknown-linux-gnu"
Douglas Yung7d408802019-02-14 01:11:32 +000080// CHECK-SAME: "-aux-triple" "amdgcn-amd-amdhsa"
81// CHECK-SAME: "-emit-obj"
Yaxun Liud46d1512018-10-02 17:48:54 +000082// CHECK-SAME: {{.*}} "-main-file-name" "a.cu"
Reid Klecknerb16a80b2019-05-23 18:35:43 +000083// CHECK-SAME: {{.*}} "-fcuda-include-gpubinary" "[[BUNDLE_A]]"
Yaxun Liud46d1512018-10-02 17:48:54 +000084// CHECK-SAME: {{.*}} "-o" [[A_OBJ_HOST:".*o"]] "-x" "hip"
85// CHECK-SAME: {{.*}} [[A_SRC]]
Yaxun Liud46d1512018-10-02 17:48:54 +000086
87//
88// Compile device code in b.hip to code object for gfx803.
89//
90
91// CHECK: [[CLANG:".*clang.*"]] "-cc1" "-triple" "amdgcn-amd-amdhsa"
Douglas Yung7d408802019-02-14 01:11:32 +000092// CHECK-SAME: "-aux-triple" "x86_64-unknown-linux-gnu"
93// CHECK-SAME: "-emit-llvm-bc"
Yaxun Liud46d1512018-10-02 17:48:54 +000094// CHECK-SAME: {{.*}} "-main-file-name" "b.hip" {{.*}} "-target-cpu" "gfx803"
95// CHECK-SAME: "-fcuda-is-device" "-fvisibility" "hidden"
Scott Lindere68bc492019-01-28 17:12:19 +000096// CHECK-SAME: "-fapply-global-visibility-to-externs"
Yaxun Liu61e80a32019-04-12 16:23:31 +000097// CHECK-SAME: "{{.*}}lib1.bc" "{{.*}}lib2.bc"
Yaxun Liud46d1512018-10-02 17:48:54 +000098// CHECK-SAME: {{.*}} "-o" [[B_BC_803:".*bc"]] "-x" "hip"
99// CHECK-SAME: {{.*}} [[B_SRC:".*b.hip"]]
100
101// CHECK: [[LLVM_LINK:"*.llvm-link"]] [[B_BC_803]]
Yaxun Liud46d1512018-10-02 17:48:54 +0000102// CHECK-SAME: "-o" [[LINKED_BC_DEV_B_803:".*-gfx803-linked-.*bc"]]
103
104// CHECK: [[OPT:".*opt"]] [[LINKED_BC_DEV_B_803]] "-mtriple=amdgcn-amd-amdhsa"
105// CHECK-SAME: "-mcpu=gfx803"
106// CHECK-SAME: "-o" [[OPT_BC_DEV_B_803:".*-gfx803-optimized.*bc"]]
107
108// CHECK: [[LLC: ".*llc"]] [[OPT_BC_DEV_B_803]] "-mtriple=amdgcn-amd-amdhsa"
Yaxun Liubcda7072018-10-16 17:36:23 +0000109// CHECK-SAME: "-filetype=obj"
Yaxun Liubcda7072018-10-16 17:36:23 +0000110// CHECK-SAME: "-mcpu=gfx803" "-o" [[OBJ_DEV_B_803:".*-gfx803-.*o"]]
Yaxun Liud46d1512018-10-02 17:48:54 +0000111
Yaxun Liu8d068d62019-06-26 03:47:37 +0000112// CHECK: [[LLD: ".*lld"]] "-flavor" "gnu" "-shared"
Yaxun Liud46d1512018-10-02 17:48:54 +0000113// CHECK-SAME: "-o" "[[IMG_DEV_B_803:.*out]]" [[OBJ_DEV_B_803]]
114
115//
116// Compile device code in b.hip to code object for gfx900.
117//
118
119// CHECK: [[CLANG:".*clang.*"]] "-cc1" "-triple" "amdgcn-amd-amdhsa"
Douglas Yung7d408802019-02-14 01:11:32 +0000120// CHECK-SAME: "-aux-triple" "x86_64-unknown-linux-gnu"
121// CHECK-SAME: "-emit-llvm-bc"
Yaxun Liud46d1512018-10-02 17:48:54 +0000122// CHECK-SAME: {{.*}} "-main-file-name" "b.hip" {{.*}} "-target-cpu" "gfx900"
123// CHECK-SAME: "-fcuda-is-device" "-fvisibility" "hidden"
Scott Lindere68bc492019-01-28 17:12:19 +0000124// CHECK-SAME: "-fapply-global-visibility-to-externs"
Yaxun Liu61e80a32019-04-12 16:23:31 +0000125// CHECK-SAME: "{{.*}}lib1.bc" "{{.*}}lib2.bc"
Yaxun Liud46d1512018-10-02 17:48:54 +0000126// CHECK-SAME: {{.*}} "-o" [[B_BC_900:".*bc"]] "-x" "hip"
127// CHECK-SAME: {{.*}} [[B_SRC]]
128
129// CHECK: [[LLVM_LINK:"*.llvm-link"]] [[B_BC_900]]
Yaxun Liud46d1512018-10-02 17:48:54 +0000130// CHECK-SAME: "-o" [[LINKED_BC_DEV_B_900:".*-gfx900-linked-.*bc"]]
131
132// CHECK: [[OPT:".*opt"]] [[LINKED_BC_DEV_B_900]] "-mtriple=amdgcn-amd-amdhsa"
133// CHECK-SAME: "-mcpu=gfx900"
134// CHECK-SAME: "-o" [[OPT_BC_DEV_B_900:".*-gfx900-optimized.*bc"]]
135
136// CHECK: [[LLC: ".*llc"]] [[OPT_BC_DEV_B_900]] "-mtriple=amdgcn-amd-amdhsa"
Yaxun Liubcda7072018-10-16 17:36:23 +0000137// CHECK-SAME: "-filetype=obj"
Yaxun Liubcda7072018-10-16 17:36:23 +0000138// CHECK-SAME: "-mcpu=gfx900" "-o" [[OBJ_DEV_B_900:".*-gfx900-.*o"]]
Yaxun Liud46d1512018-10-02 17:48:54 +0000139
Yaxun Liu8d068d62019-06-26 03:47:37 +0000140// CHECK: [[LLD: ".*lld"]] "-flavor" "gnu" "-shared"
Yaxun Liud46d1512018-10-02 17:48:54 +0000141// CHECK-SAME: "-o" "[[IMG_DEV_B_900:.*out]]" [[OBJ_DEV_B_900]]
142
143//
144// Bundle and embed device code in host object for b.hip.
145//
146
147// CHECK: [[BUNDLER:".*clang-offload-bundler"]] "-type=o"
148// CHECK-SAME: "-targets={{.*}},hip-amdgcn-amd-amdhsa-gfx803,hip-amdgcn-amd-amdhsa-gfx900"
149// CHECK-SAME: "-inputs={{.*}},[[IMG_DEV_B_803]],[[IMG_DEV_B_900]]" "-outputs=[[BUNDLE_A:.*hipfb]]"
150
151// CHECK: [[CLANG]] "-cc1" "-triple" "x86_64-unknown-linux-gnu"
Douglas Yung7d408802019-02-14 01:11:32 +0000152// CHECK-SAME: "-aux-triple" "amdgcn-amd-amdhsa"
153// CHECK-SAME: "-emit-obj"
Yaxun Liud46d1512018-10-02 17:48:54 +0000154// CHECK-SAME: {{.*}} "-main-file-name" "b.hip"
Reid Klecknerb16a80b2019-05-23 18:35:43 +0000155// CHECK-SAME: {{.*}} "-fcuda-include-gpubinary" "[[BUNDLE_A]]"
Yaxun Liud46d1512018-10-02 17:48:54 +0000156// CHECK-SAME: {{.*}} "-o" [[B_OBJ_HOST:".*o"]] "-x" "hip"
157// CHECK-SAME: {{.*}} [[B_SRC]]
Yaxun Liud46d1512018-10-02 17:48:54 +0000158
159//
160// Link host objects.
161//
162
163// CHECK: [[LD:".*ld.*"]] {{.*}} [[A_OBJ_HOST]] [[B_OBJ_HOST]]
164// CHECK-NOT: "-T" "{{.*}}.lk"