brintos

brintos / llvm-project-archived public Read only

0
0
Text · 9.6 KiB · bc56033 Raw
224 lines · plain
1// RUN: rm -rf %t && mkdir %t2// RUN: %clang -### --target=x86_64-linux-gnu -fno-gpu-rdc \3// RUN:   -x hip --cuda-gpu-arch=gfx803 --cuda-gpu-arch=gfx900 \4// RUN:   --hip-device-lib=lib1.bc --hip-device-lib=lib2.bc \5// RUN:   --hip-device-lib-path=%S/Inputs/hip_multiple_inputs/lib1 \6// RUN:   --hip-device-lib-path=%S/Inputs/hip_multiple_inputs/lib2 \7// RUN:   -fuse-ld=lld -B%S/Inputs/lld -nogpuinc \8// RUN:   %S/Inputs/hip_multiple_inputs/a.cu \9// RUN:   %S/Inputs/hip_multiple_inputs/b.hip \10// RUN: 2>&1 | FileCheck -check-prefixes=CHECK,LINK,OLD %s11 12// RUN: %clang -### --target=x86_64-linux-gnu -fno-gpu-rdc \13// RUN:   -x hip --cuda-gpu-arch=gfx803 --cuda-gpu-arch=gfx900 \14// RUN:   --hip-device-lib=lib1.bc --hip-device-lib=lib2.bc \15// RUN:   --hip-device-lib-path=%S/Inputs/hip_multiple_inputs/lib1 \16// RUN:   --hip-device-lib-path=%S/Inputs/hip_multiple_inputs/lib2 \17// RUN:   -fuse-ld=lld -B%S/Inputs/lld -nogpuinc -c \18// RUN:   %S/Inputs/hip_multiple_inputs/a.cu \19// RUN:   %S/Inputs/hip_multiple_inputs/b.hip \20// RUN: 2>&1 | FileCheck -check-prefixes=CHECK,OLD %s21 22// RUN: %clang -### --target=x86_64-linux-gnu -fno-gpu-rdc \23// RUN:   -x hip --cuda-gpu-arch=gfx803 --cuda-gpu-arch=gfx900 \24// RUN:   --hip-device-lib=lib1.bc --hip-device-lib=lib2.bc \25// RUN:   --hip-device-lib-path=%S/Inputs/hip_multiple_inputs/lib1 \26// RUN:   --hip-device-lib-path=%S/Inputs/hip_multiple_inputs/lib2 \27// RUN:   -fuse-ld=lld -B%S/Inputs/lld -nogpuinc --offload-new-driver -c \28// RUN:   %S/Inputs/hip_multiple_inputs/a.cu \29// RUN:   %S/Inputs/hip_multiple_inputs/b.hip \30// RUN: 2>&1 | FileCheck -check-prefixes=CHECK,NEW %s31 32// RUN: touch %t/a.o %t/b.o33// RUN: %clang -### --target=x86_64-linux-gnu \34// RUN:   --hip-link --cuda-gpu-arch=gfx803 --cuda-gpu-arch=gfx900 \35// RUN:   -fuse-ld=lld -B%S/Inputs/lld -nogpuinc \36// RUN:   %t/a.o %t/b.o \37// RUN: 2>&1 | FileCheck -check-prefixes=LKONLY %s38 39// RUN: %clang -### --target=x86_64-linux-gnu \40// RUN:   --offload-arch=amdgcnspirv --offload-arch=gfx900 \41// RUN:   %s -nogpuinc -nogpulib \42// RUN: 2>&1 | FileCheck -check-prefixes=AMDGCNSPIRV %s43 44//45// Compile device code in a.cu to code object for gfx803.46//47 48// CHECK: [[CLANG:".*clang.*"]] "-cc1" "-triple" "amdgcn-amd-amdhsa"49// CHECK-SAME: "-aux-triple" "x86_64-unknown-linux-gnu"50// OLD-SAME: "-emit-obj"51// NEW-SAME: "-emit-llvm-bc"52// CHECK-SAME: {{.*}} "-main-file-name" "a.cu"53// CHECK-SAME: "-fcuda-is-device" "-fno-threadsafe-statics" "-mllvm" "-amdgpu-internalize-symbols"54// CHECK-SAME: "-fcuda-allow-variadic-functions" "-fvisibility=hidden"55// CHECK-SAME: "-fapply-global-visibility-to-externs"56// CHECK-SAME: "{{.*}}lib1.bc" "{{.*}}lib2.bc"57// CHECK-SAME: "-target-cpu" "gfx803"58// CHECK-SAME: {{.*}} "-o" "[[OBJ_DEV_A_803:.*(o|bc)]]" "-x" "hip"59// CHECK-SAME: {{.*}} [[A_SRC:".*a.cu"]]60 61// CHECK-NOT: {{".*llvm-link"}}62// CHECK-NOT: {{".*opt"}}63// CHECK-NOT: {{".*llc"}}64 65// OLD: [[LLD: ".*lld.*"]] "-flavor" "gnu" "-m" "elf64_amdgpu" "--no-undefined" "-shared"66// OLD-SAME: "-o" "[[IMG_DEV_A_803:.*out]]" "[[OBJ_DEV_A_803]]"67 68//69// Compile device code in a.cu to code object for gfx900.70//71 72// CHECK: [[CLANG:".*clang.*"]] "-cc1" "-triple" "amdgcn-amd-amdhsa"73// CHECK-SAME: "-aux-triple" "x86_64-unknown-linux-gnu"74// CHECK-SAME: "-emit-{{(obj|llvm-bc)}}"75// CHECK-SAME: {{.*}} "-main-file-name" "a.cu"76// CHECK-SAME: "-fcuda-is-device" "-fno-threadsafe-statics" "-mllvm" "-amdgpu-internalize-symbols"77// CHECK-SAME: "-fcuda-allow-variadic-functions" "-fvisibility=hidden"78// CHECK-SAME: "-fapply-global-visibility-to-externs"79// CHECK-SAME: "{{.*}}lib1.bc" "{{.*}}lib2.bc"80// CHECK-SAME: "-target-cpu" "gfx900"81// CHECK-SAME: {{.*}} "-o" "[[OBJ_DEV_A_900:.*(o|bc)]]" "-x" "hip"82// CHECK-SAME: {{.*}} [[A_SRC]]83 84// CHECK-NOT: {{".*llvm-link"}}85// CHECK-NOT: {{".*opt"}}86// CHECK-NOT: {{".*llc"}}87 88// OLD: [[LLD]] "-flavor" "gnu" "-m" "elf64_amdgpu" "--no-undefined" "-shared"89// OLD-SAME: "-o" "[[IMG_DEV_A_900:.*out]]" "[[OBJ_DEV_A_900]]"90 91//92// Bundle and embed device code in host object for a.cu.93//94 95// OLD: [[BUNDLER:".*clang-offload-bundler"]] "-type=o"96// OLD-SAME: "-bundle-align=4096"97// OLD-SAME: "-targets={{.*}},hipv4-amdgcn-amd-amdhsa--gfx803,hipv4-amdgcn-amd-amdhsa--gfx900"98// OLD-SAME: "-input={{.*}}" "-input=[[IMG_DEV_A_803]]" "-input=[[IMG_DEV_A_900]]" "-output=[[BUNDLE_A:.*hipfb]]"99 100// NEW: [[PACKAGER:".*llvm-offload-binary"]] "-o" "[[PACKAGE_A:.*.out]]"101// NEW-SAME: "--image=file=[[OBJ_DEV_A_803]],triple=amdgcn-amd-amdhsa,arch=gfx803,kind=hip"102// NEW-SAME: "--image=file=[[OBJ_DEV_A_900]],triple=amdgcn-amd-amdhsa,arch=gfx900,kind=hip"103 104// NEW: [[WRAPPER:".*clang-linker-wrapper]]"105// NEW-SAME: "--emit-fatbin-only"106// NEW-SAME: "-o" "[[HIPFB_A:.*.hipfb]]" "[[PACKAGE_A]]"107 108// CHECK: [[CLANG]] "-cc1" "-triple" "x86_64-unknown-linux-gnu"109// CHECK-SAME: "-aux-triple" "amdgcn-amd-amdhsa"110// CHECK-SAME: "-emit-obj"111// CHECK-SAME: {{.*}} "-main-file-name" "a.cu"112// OLD-SAME: {{.*}} "-fcuda-include-gpubinary" "[[BUNDLE_A]]"113// NEW-SAME: {{.*}} "-fcuda-include-gpubinary" "[[HIPFB_A]]"114// CHECK-SAME: {{.*}} "-o" [[A_OBJ_HOST:".*o"]] "-x" "hip"115// CHECK-SAME: {{.*}} [[A_SRC]]116 117//118// Compile device code in b.hip to code object for gfx803.119//120 121// CHECK: [[CLANG:".*clang.*"]] "-cc1" "-triple" "amdgcn-amd-amdhsa"122// CHECK-SAME: "-aux-triple" "x86_64-unknown-linux-gnu"123// CHECK-SAME: "-emit-{{(obj|llvm-bc)}}"124// CHECK-SAME: {{.*}} "-main-file-name" "b.hip"125// CHECK-SAME: "-fcuda-is-device" "-fno-threadsafe-statics" "-mllvm" "-amdgpu-internalize-symbols"126// CHECK-SAME: "-fcuda-allow-variadic-functions" "-fvisibility=hidden"127// CHECK-SAME: "-fapply-global-visibility-to-externs"128// CHECK-SAME: "{{.*}}lib1.bc" "{{.*}}lib2.bc"129// CHECK-SAME: "-target-cpu" "gfx803"130// CHECK-SAME: {{.*}} "-o" "[[OBJ_DEV_B_803:.*(o|bc)]]" "-x" "hip"131// CHECK-SAME: {{.*}} [[B_SRC:".*b.hip"]]132 133// CHECK-NOT: {{".*llvm-link"}}134// CHECK-NOT: {{".*opt"}}135// CHECK-NOT: {{".*llc"}}136 137// OLD: [[LLD]] "-flavor" "gnu" "-m" "elf64_amdgpu" "--no-undefined" "-shared"138// OLD-SAME: "-o" "[[IMG_DEV_B_803:.*out]]" "[[OBJ_DEV_B_803]]"139 140//141// Compile device code in b.hip to code object for gfx900.142//143 144// CHECK: [[CLANG:".*clang.*"]] "-cc1" "-triple" "amdgcn-amd-amdhsa"145// CHECK-SAME: "-aux-triple" "x86_64-unknown-linux-gnu"146// CHECK-SAME: "-emit-{{(obj|llvm-bc)}}"147// CHECK-SAME: {{.*}} "-main-file-name" "b.hip"148// CHECK-SAME: "-fcuda-is-device" "-fno-threadsafe-statics" "-mllvm" "-amdgpu-internalize-symbols"149// CHECK-SAME: "-fcuda-allow-variadic-functions" "-fvisibility=hidden"150// CHECK-SAME: "-fapply-global-visibility-to-externs"151// CHECK-SAME: "{{.*}}lib1.bc" "{{.*}}lib2.bc"152// CHECK-SAME: "-target-cpu" "gfx900"153// CHECK-SAME: {{.*}} "-o" "[[OBJ_DEV_B_900:.*(o|bc)]]" "-x" "hip"154// CHECK-SAME: {{.*}} [[B_SRC]]155 156// CHECK-NOT: {{".*llvm-link"}}157// CHECK-NOT: {{".*opt"}}158// CHECK-NOT: {{".*llc"}}159 160// OLD: [[LLD]] "-flavor" "gnu" "-m" "elf64_amdgpu" "--no-undefined" "-shared"161// OLD-SAME: "-o" "[[IMG_DEV_B_900:.*out]]" "[[OBJ_DEV_B_900]]"162 163//164// Bundle and embed device code in host object for b.hip.165//166 167// OLD: [[BUNDLER:".*clang-offload-bundler"]] "-type=o"168// OLD-SAME: "-bundle-align=4096"169// OLD-SAME: "-targets={{.*}},hipv4-amdgcn-amd-amdhsa--gfx803,hipv4-amdgcn-amd-amdhsa--gfx900"170// OLD-SAME: "-input={{.*}}" "-input=[[IMG_DEV_B_803]]" "-input=[[IMG_DEV_B_900]]" "-output=[[BUNDLE_B:.*hipfb]]"171 172// NEW: [[PACKAGER:".*llvm-offload-binary"]] "-o" "[[PACKAGE_B:.*.out]]"173// NEW-SAME: "--image=file=[[OBJ_DEV_B_803]],triple=amdgcn-amd-amdhsa,arch=gfx803,kind=hip"174// NEW-SAME: "--image=file=[[OBJ_DEV_B_900]],triple=amdgcn-amd-amdhsa,arch=gfx900,kind=hip"175 176// NEW: [[WRAPPER:".*clang-linker-wrapper]]"177// NEW-SAME: "--emit-fatbin-only"178// NEW-SAME: "-o" "[[HIPFB_B:.*.hipfb]]" "[[PACKAGE_B]]"179 180// CHECK: [[CLANG]] "-cc1" "-triple" "x86_64-unknown-linux-gnu"181// CHECK-SAME: "-aux-triple" "amdgcn-amd-amdhsa"182// CHECK-SAME: "-emit-obj"183// CHECK-SAME: {{.*}} "-main-file-name" "b.hip"184// OLD-SAME: {{.*}} "-fcuda-include-gpubinary" "[[BUNDLE_B]]"185// NEW-SAME: {{.*}} "-fcuda-include-gpubinary" "[[HIPFB_B]]"186// CHECK-SAME: {{.*}} "-o" [[B_OBJ_HOST:".*o"]] "-x" "hip"187// CHECK-SAME: {{.*}} [[B_SRC]]188 189//190// Link host objects.191//192 193// LINK-NOT: {{".*/llvm-link"}}194// LINK-NOT: {{".*/opt"}}195// LINK-NOT: {{".*/llc"}}196// LINK: [[LD:".*ld.*"]] {{.*}} [[A_OBJ_HOST]] [[B_OBJ_HOST]]197// LINK-NOT: "-T" "{{.*}}.lk"198 199// LKONLY-NOT: {{".*/llvm-link"}}200// LKONLY-NOT: {{".*/opt"}}201// LKONLY-NOT: {{".*/llc"}}202// LKONLY: [[LD:".*ld.*"]] {{.*}} "{{.*/a.o}}" "{{.*/b.o}}"203// LKONLY-NOT: "-T" "{{.*}}.lk"204 205//206// Check mixed AMDGCNSPIRV and concrete GPU arch.207//208 209// AMDGCNSPIRV: "-cc1" "-triple" "spirv64-amd-amdhsa" {{.*}}"-emit-llvm-bc" {{.*}}"-fembed-bitcode=marker" "-disable-llvm-passes" {{.*}} "-o" "[[AMDGCNSPV_BC:.*bc]]"210// AMDGCNSPIRV: {{".*llvm-link.*"}} "-o" "[[AMDGCNSPV_TMP:.*bc]]" "[[AMDGCNSPV_BC]]"211// AMDGCNSPIRV: {{".*llvm-spirv.*"}} "--spirv-max-version=1.6" "--spirv-ext=+all" {{.*}} "[[AMDGCNSPV_TMP]]" {{.*}}"-o" "[[AMDGCNSPV_CO:.*out]]"212// AMDGCNSPIRV: "-cc1" "-triple" "amdgcn-amd-amdhsa" {{.*}}"-emit-obj" {{.*}}"-target-cpu" "gfx900"{{.*}} "-o" "[[GFX900_OBJ:.*o]]"213// AMDGCNSPIRV: {{".*lld.*"}} {{.*}}"-plugin-opt=mcpu=gfx900" {{.*}} "-o" "[[GFX900_CO:.*out]]" {{.*}}"[[GFX900_OBJ]]"214// AMDGCNSPIRV: {{".*clang-offload-bundler.*"}} "-type=o"215// AMDGCNSPIRV-SAME: "-targets={{.*}}hipv4-spirv64-amd-amdhsa--amdgcnspirv,hipv4-amdgcn-amd-amdhsa--gfx900"216// AMDGCNSPIRV-SAME: "-input=[[AMDGCNSPV_CO]]" "-input=[[GFX900_CO]]"217 218// Check verbose printing with the new driver.219// RUN: %clang -### --target=x86_64-linux-gnu -fno-gpu-rdc -nogpulib -nogpuinc \220// RUN:   --offload-new-driver --offload-arch=gfx908 -v %s 2>&1 | FileCheck %s --check-prefix=VERBOSE221// VERBOSE: clang-linker-wrapper222// VERBOSE-NOT: --device-compiler=amdgcn-amd-amdhsa=-v {{.*}}-o {{.*}}.hipfb223// VERBOSE-NOT: --wrapper-verbose {{.*}}-o {{.*}}.hipfb224