Clang Project

clang_source_code/test/Driver/hip-toolchain-no-rdc.hip
1// 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"
20// CHECK-SAME: "-aux-triple" "x86_64-unknown-linux-gnu"
21// CHECK-SAME: "-emit-llvm-bc"
22// CHECK-SAME: {{.*}} "-main-file-name" "a.cu" {{.*}} "-target-cpu" "gfx803"
23// CHECK-SAME: "-fcuda-is-device" "-fvisibility" "hidden"
24// CHECK-SAME: "-fapply-global-visibility-to-externs"
25// CHECK-SAME: {{.*}} "-o" [[A_BC_803:".*bc"]] "-x" "hip"
26// CHECK-SAME: {{.*}} [[A_SRC:".*a.cu"]]
27
28// CHECK: [[LLVM_LINK:"*.llvm-link"]] [[A_BC_803]]
29// CHECK-SAME: "{{.*}}lib1.bc" "{{.*}}lib2.bc"
30// 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"
37// CHECK-SAME: "-filetype=obj"
38// CHECK-SAME: "-mcpu=gfx803" "-o" [[OBJ_DEV_A_803:".*-gfx803-.*o"]]
39
40// CHECK: [[LLD: ".*lld"]] "-flavor" "gnu" "--no-undefined" "-shared"
41// 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"
48// CHECK-SAME: "-aux-triple" "x86_64-unknown-linux-gnu"
49// CHECK-SAME: "-emit-llvm-bc"
50// CHECK-SAME: {{.*}} "-main-file-name" "a.cu" {{.*}} "-target-cpu" "gfx900"
51// CHECK-SAME: "-fcuda-is-device" "-fvisibility" "hidden"
52// CHECK-SAME: "-fapply-global-visibility-to-externs"
53// CHECK-SAME: {{.*}} "-o" [[A_BC_900:".*bc"]] "-x" "hip"
54// CHECK-SAME: {{.*}} [[A_SRC]]
55
56// CHECK: [[LLVM_LINK:"*.llvm-link"]] [[A_BC_900]]
57// CHECK-SAME: "{{.*}}lib1.bc" "{{.*}}lib2.bc"
58// 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"
65// CHECK-SAME: "-filetype=obj"
66// CHECK-SAME: "-mcpu=gfx900" "-o" [[OBJ_DEV_A_900:".*-gfx900-.*o"]]
67
68// CHECK: [[LLD: ".*lld"]] "-flavor" "gnu" "--no-undefined" "-shared"
69// 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"
80// CHECK-SAME: "-aux-triple" "amdgcn-amd-amdhsa"
81// CHECK-SAME: "-emit-obj"
82// CHECK-SAME: {{.*}} "-main-file-name" "a.cu"
83// CHECK-SAME: {{.*}} "-o" [[A_OBJ_HOST:".*o"]] "-x" "hip"
84// CHECK-SAME: {{.*}} [[A_SRC]]
85// CHECK-SAME: {{.*}} "-fcuda-include-gpubinary" "[[BUNDLE_A]]"
86
87//
88// Compile device code in b.hip to code object for gfx803.
89//
90
91// CHECK: [[CLANG:".*clang.*"]] "-cc1" "-triple" "amdgcn-amd-amdhsa"
92// CHECK-SAME: "-aux-triple" "x86_64-unknown-linux-gnu"
93// CHECK-SAME: "-emit-llvm-bc"
94// CHECK-SAME: {{.*}} "-main-file-name" "b.hip" {{.*}} "-target-cpu" "gfx803"
95// CHECK-SAME: "-fcuda-is-device" "-fvisibility" "hidden"
96// CHECK-SAME: "-fapply-global-visibility-to-externs"
97// CHECK-SAME: {{.*}} "-o" [[B_BC_803:".*bc"]] "-x" "hip"
98// CHECK-SAME: {{.*}} [[B_SRC:".*b.hip"]]
99
100// CHECK: [[LLVM_LINK:"*.llvm-link"]] [[B_BC_803]]
101// CHECK-SAME: "{{.*}}lib1.bc" "{{.*}}lib2.bc"
102// 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"
109// CHECK-SAME: "-filetype=obj"
110// CHECK-SAME: "-mcpu=gfx803" "-o" [[OBJ_DEV_B_803:".*-gfx803-.*o"]]
111
112// CHECK: [[LLD: ".*lld"]] "-flavor" "gnu" "--no-undefined" "-shared"
113// 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"
120// CHECK-SAME: "-aux-triple" "x86_64-unknown-linux-gnu"
121// CHECK-SAME: "-emit-llvm-bc"
122// CHECK-SAME: {{.*}} "-main-file-name" "b.hip" {{.*}} "-target-cpu" "gfx900"
123// CHECK-SAME: "-fcuda-is-device" "-fvisibility" "hidden"
124// CHECK-SAME: "-fapply-global-visibility-to-externs"
125// CHECK-SAME: {{.*}} "-o" [[B_BC_900:".*bc"]] "-x" "hip"
126// CHECK-SAME: {{.*}} [[B_SRC]]
127
128// CHECK: [[LLVM_LINK:"*.llvm-link"]] [[B_BC_900]]
129// CHECK-SAME: "{{.*}}lib1.bc" "{{.*}}lib2.bc"
130// 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"
137// CHECK-SAME: "-filetype=obj"
138// CHECK-SAME: "-mcpu=gfx900" "-o" [[OBJ_DEV_B_900:".*-gfx900-.*o"]]
139
140// CHECK: [[LLD: ".*lld"]] "-flavor" "gnu" "--no-undefined" "-shared"
141// 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"
152// CHECK-SAME: "-aux-triple" "amdgcn-amd-amdhsa"
153// CHECK-SAME: "-emit-obj"
154// CHECK-SAME: {{.*}} "-main-file-name" "b.hip"
155// CHECK-SAME: {{.*}} "-o" [[B_OBJ_HOST:".*o"]] "-x" "hip"
156// CHECK-SAME: {{.*}} [[B_SRC]]
157// CHECK-SAME: {{.*}} "-fcuda-include-gpubinary" "[[BUNDLE_A]]"
158
159//
160// Link host objects.
161//
162
163// CHECK: [[LD:".*ld.*"]] {{.*}} [[A_OBJ_HOST]] [[B_OBJ_HOST]]
164// CHECK-NOT: "-T" "{{.*}}.lk"
165