]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - test/Driver/hip-toolchain-no-rdc.hip
Vendor import of clang trunk r351319 (just before the release_80 branch
[FreeBSD/FreeBSD.git] / 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" "-emit-llvm-bc"
21 // CHECK-SAME: {{.*}} "-main-file-name" "a.cu" {{.*}} "-target-cpu" "gfx803"
22 // CHECK-SAME: "-fcuda-is-device" "-fvisibility" "hidden"
23 // CHECK-SAME: {{.*}} "-o" [[A_BC_803:".*bc"]] "-x" "hip"
24 // CHECK-SAME: {{.*}} [[A_SRC:".*a.cu"]]
25
26 // CHECK: [[LLVM_LINK:"*.llvm-link"]] [[A_BC_803]]
27 // CHECK-SAME: "{{.*}}lib1.bc" "{{.*}}lib2.bc"
28 // CHECK-SAME: "-o" [[LINKED_BC_DEV_A_803:".*-gfx803-linked-.*bc"]]
29
30 // CHECK: [[OPT:".*opt"]] [[LINKED_BC_DEV_A_803]] "-mtriple=amdgcn-amd-amdhsa"
31 // CHECK-SAME: "-mcpu=gfx803"
32 // CHECK-SAME: "-o" [[OPT_BC_DEV_A_803:".*-gfx803-optimized.*bc"]]
33
34 // CHECK: [[LLC: ".*llc"]] [[OPT_BC_DEV_A_803]] "-mtriple=amdgcn-amd-amdhsa"
35 // CHECK-SAME: "-filetype=obj"
36 // CHECK-SAME: "-mattr=-code-object-v3"
37 // CHECK-SAME: "-mcpu=gfx803" "-o" [[OBJ_DEV_A_803:".*-gfx803-.*o"]]
38
39 // CHECK: [[LLD: ".*lld"]] "-flavor" "gnu" "--no-undefined" "-shared"
40 // CHECK-SAME: "-o" "[[IMG_DEV_A_803:.*out]]" [[OBJ_DEV_A_803]]
41
42 //
43 // Compile device code in a.cu to code object for gfx900.
44 //
45
46 // CHECK: [[CLANG:".*clang.*"]] "-cc1" "-triple" "amdgcn-amd-amdhsa"
47 // CHECK-SAME: "-aux-triple" "x86_64-unknown-linux-gnu" "-emit-llvm-bc"
48 // CHECK-SAME: {{.*}} "-main-file-name" "a.cu" {{.*}} "-target-cpu" "gfx900"
49 // CHECK-SAME: "-fcuda-is-device" "-fvisibility" "hidden"
50 // CHECK-SAME: {{.*}} "-o" [[A_BC_900:".*bc"]] "-x" "hip"
51 // CHECK-SAME: {{.*}} [[A_SRC]]
52
53 // CHECK: [[LLVM_LINK:"*.llvm-link"]] [[A_BC_900]]
54 // CHECK-SAME: "{{.*}}lib1.bc" "{{.*}}lib2.bc"
55 // CHECK-SAME: "-o" [[LINKED_BC_DEV_A_900:".*-gfx900-linked-.*bc"]]
56
57 // CHECK: [[OPT:".*opt"]] [[LINKED_BC_DEV_A_900]] "-mtriple=amdgcn-amd-amdhsa"
58 // CHECK-SAME: "-mcpu=gfx900"
59 // CHECK-SAME: "-o" [[OPT_BC_DEV_A_900:".*-gfx900-optimized.*bc"]]
60
61 // CHECK: [[LLC: ".*llc"]] [[OPT_BC_DEV_A_900]] "-mtriple=amdgcn-amd-amdhsa"
62 // CHECK-SAME: "-filetype=obj"
63 // CHECK-SAME: "-mattr=-code-object-v3"
64 // CHECK-SAME: "-mcpu=gfx900" "-o" [[OBJ_DEV_A_900:".*-gfx900-.*o"]]
65
66 // CHECK: [[LLD: ".*lld"]] "-flavor" "gnu" "--no-undefined" "-shared"
67 // CHECK-SAME: "-o" "[[IMG_DEV_A_900:.*out]]" [[OBJ_DEV_A_900]]
68
69 //
70 // Bundle and embed device code in host object for a.cu.
71 //
72
73 // CHECK: [[BUNDLER:".*clang-offload-bundler"]] "-type=o"
74 // CHECK-SAME: "-targets={{.*}},hip-amdgcn-amd-amdhsa-gfx803,hip-amdgcn-amd-amdhsa-gfx900"
75 // CHECK-SAME: "-inputs={{.*}},[[IMG_DEV_A_803]],[[IMG_DEV_A_900]]" "-outputs=[[BUNDLE_A:.*hipfb]]"
76
77 // CHECK: [[CLANG]] "-cc1" "-triple" "x86_64-unknown-linux-gnu"
78 // CHECK-SAME: "-aux-triple" "amdgcn-amd-amdhsa" "-emit-obj"
79 // CHECK-SAME: {{.*}} "-main-file-name" "a.cu"
80 // CHECK-SAME: {{.*}} "-o" [[A_OBJ_HOST:".*o"]] "-x" "hip"
81 // CHECK-SAME: {{.*}} [[A_SRC]]
82 // CHECK-SAME: {{.*}} "-fcuda-include-gpubinary" "[[BUNDLE_A]]"
83
84 //
85 // Compile device code in b.hip to code object for gfx803.
86 //
87
88 // CHECK: [[CLANG:".*clang.*"]] "-cc1" "-triple" "amdgcn-amd-amdhsa"
89 // CHECK-SAME: "-aux-triple" "x86_64-unknown-linux-gnu" "-emit-llvm-bc"
90 // CHECK-SAME: {{.*}} "-main-file-name" "b.hip" {{.*}} "-target-cpu" "gfx803"
91 // CHECK-SAME: "-fcuda-is-device" "-fvisibility" "hidden"
92 // CHECK-SAME: {{.*}} "-o" [[B_BC_803:".*bc"]] "-x" "hip"
93 // CHECK-SAME: {{.*}} [[B_SRC:".*b.hip"]]
94
95 // CHECK: [[LLVM_LINK:"*.llvm-link"]] [[B_BC_803]]
96 // CHECK-SAME: "{{.*}}lib1.bc" "{{.*}}lib2.bc"
97 // CHECK-SAME: "-o" [[LINKED_BC_DEV_B_803:".*-gfx803-linked-.*bc"]]
98
99 // CHECK: [[OPT:".*opt"]] [[LINKED_BC_DEV_B_803]] "-mtriple=amdgcn-amd-amdhsa"
100 // CHECK-SAME: "-mcpu=gfx803"
101 // CHECK-SAME: "-o" [[OPT_BC_DEV_B_803:".*-gfx803-optimized.*bc"]]
102
103 // CHECK: [[LLC: ".*llc"]] [[OPT_BC_DEV_B_803]] "-mtriple=amdgcn-amd-amdhsa"
104 // CHECK-SAME: "-filetype=obj"
105 // CHECK-SAME: "-mattr=-code-object-v3"
106 // CHECK-SAME: "-mcpu=gfx803" "-o" [[OBJ_DEV_B_803:".*-gfx803-.*o"]]
107
108 // CHECK: [[LLD: ".*lld"]] "-flavor" "gnu" "--no-undefined" "-shared"
109 // CHECK-SAME: "-o" "[[IMG_DEV_B_803:.*out]]" [[OBJ_DEV_B_803]]
110
111 //
112 // Compile device code in b.hip to code object for gfx900.
113 //
114
115 // CHECK: [[CLANG:".*clang.*"]] "-cc1" "-triple" "amdgcn-amd-amdhsa"
116 // CHECK-SAME: "-aux-triple" "x86_64-unknown-linux-gnu" "-emit-llvm-bc"
117 // CHECK-SAME: {{.*}} "-main-file-name" "b.hip" {{.*}} "-target-cpu" "gfx900"
118 // CHECK-SAME: "-fcuda-is-device" "-fvisibility" "hidden"
119 // CHECK-SAME: {{.*}} "-o" [[B_BC_900:".*bc"]] "-x" "hip"
120 // CHECK-SAME: {{.*}} [[B_SRC]]
121
122 // CHECK: [[LLVM_LINK:"*.llvm-link"]] [[B_BC_900]]
123 // CHECK-SAME: "{{.*}}lib1.bc" "{{.*}}lib2.bc"
124 // CHECK-SAME: "-o" [[LINKED_BC_DEV_B_900:".*-gfx900-linked-.*bc"]]
125
126 // CHECK: [[OPT:".*opt"]] [[LINKED_BC_DEV_B_900]] "-mtriple=amdgcn-amd-amdhsa"
127 // CHECK-SAME: "-mcpu=gfx900"
128 // CHECK-SAME: "-o" [[OPT_BC_DEV_B_900:".*-gfx900-optimized.*bc"]]
129
130 // CHECK: [[LLC: ".*llc"]] [[OPT_BC_DEV_B_900]] "-mtriple=amdgcn-amd-amdhsa"
131 // CHECK-SAME: "-filetype=obj"
132 // CHECK-SAME: "-mattr=-code-object-v3"
133 // CHECK-SAME: "-mcpu=gfx900" "-o" [[OBJ_DEV_B_900:".*-gfx900-.*o"]]
134
135 // CHECK: [[LLD: ".*lld"]] "-flavor" "gnu" "--no-undefined" "-shared"
136 // CHECK-SAME: "-o" "[[IMG_DEV_B_900:.*out]]" [[OBJ_DEV_B_900]]
137
138 //
139 // Bundle and embed device code in host object for b.hip.
140 //
141
142 // CHECK: [[BUNDLER:".*clang-offload-bundler"]] "-type=o"
143 // CHECK-SAME: "-targets={{.*}},hip-amdgcn-amd-amdhsa-gfx803,hip-amdgcn-amd-amdhsa-gfx900"
144 // CHECK-SAME: "-inputs={{.*}},[[IMG_DEV_B_803]],[[IMG_DEV_B_900]]" "-outputs=[[BUNDLE_A:.*hipfb]]"
145
146 // CHECK: [[CLANG]] "-cc1" "-triple" "x86_64-unknown-linux-gnu"
147 // CHECK-SAME: "-aux-triple" "amdgcn-amd-amdhsa" "-emit-obj"
148 // CHECK-SAME: {{.*}} "-main-file-name" "b.hip"
149 // CHECK-SAME: {{.*}} "-o" [[B_OBJ_HOST:".*o"]] "-x" "hip"
150 // CHECK-SAME: {{.*}} [[B_SRC]]
151 // CHECK-SAME: {{.*}} "-fcuda-include-gpubinary" "[[BUNDLE_A]]"
152
153 //
154 // Link host objects.
155 //
156
157 // CHECK: [[LD:".*ld.*"]] {{.*}} [[A_OBJ_HOST]] [[B_OBJ_HOST]]
158 // CHECK-NOT: "-T" "{{.*}}.lk"