diff options
| -rw-r--r-- | clang/lib/Driver/ToolChains/HIP.cpp | 9 | ||||
| -rw-r--r-- | clang/test/Driver/hip-toolchain-mllvm.hip | 36 |
2 files changed, 45 insertions, 0 deletions
diff --git a/clang/lib/Driver/ToolChains/HIP.cpp b/clang/lib/Driver/ToolChains/HIP.cpp index 10be27c354e..fb3626d9be6 100644 --- a/clang/lib/Driver/ToolChains/HIP.cpp +++ b/clang/lib/Driver/ToolChains/HIP.cpp @@ -140,6 +140,11 @@ const char *AMDGCN::Linker::constructOptCommand( } OptArgs.push_back("-mtriple=amdgcn-amd-amdhsa"); OptArgs.push_back(Args.MakeArgString("-mcpu=" + SubArchName)); + + for (const Arg *A : Args.filtered(options::OPT_mllvm)) { + OptArgs.push_back(A->getValue(0)); + } + OptArgs.push_back("-o"); std::string TmpFileName = C.getDriver().GetTemporaryPath( OutputFilePrefix.str() + "-optimized", "bc"); @@ -177,6 +182,10 @@ const char *AMDGCN::Linker::constructLlcCommand( if(!Features.empty()) LlcArgs.push_back(Args.MakeArgString(MAttrString)); + for (const Arg *A : Args.filtered(options::OPT_mllvm)) { + LlcArgs.push_back(A->getValue(0)); + } + // Add output filename LlcArgs.push_back("-o"); std::string LlcOutputFileName = diff --git a/clang/test/Driver/hip-toolchain-mllvm.hip b/clang/test/Driver/hip-toolchain-mllvm.hip new file mode 100644 index 00000000000..b8ebb414a4a --- /dev/null +++ b/clang/test/Driver/hip-toolchain-mllvm.hip @@ -0,0 +1,36 @@ +// REQUIRES: clang-driver +// REQUIRES: x86-registered-target +// REQUIRES: amdgpu-registered-target + +// RUN: %clang -### -target x86_64-linux-gnu \ +// RUN: -x hip --cuda-gpu-arch=gfx803 --cuda-gpu-arch=gfx900 \ +// RUN: -mllvm -amdgpu-function-calls=0 \ +// RUN: %s 2>&1 | FileCheck %s + +// CHECK: [[CLANG:".*clang.*"]] "-cc1" "-triple" "amdgcn-amd-amdhsa" +// CHECK-SAME: "-aux-triple" "x86_64-unknown-linux-gnu" "-emit-llvm-bc" +// CHECK-SAME: {{.*}} "-target-cpu" "gfx803" +// CHECK-SAME: {{.*}} "-mllvm" "-amdgpu-function-calls=0" {{.*}} + +// CHECK: [[OPT:".*opt"]] {{".*-gfx803-linked.*bc"}} "-mtriple=amdgcn-amd-amdhsa" +// CHECK-SAME: "-mcpu=gfx803" "-amdgpu-function-calls=0" +// CHECK-SAME: "-o" [[OPT_803_BC:".*-gfx803-optimized.*bc"]] + +// CHECK: [[LLC: ".*llc"]] [[OPT_803_BC]] +// CHECK-SAME: "-mtriple=amdgcn-amd-amdhsa" "-filetype=obj" +// CHECK-SAME: {{.*}} "-mcpu=gfx803" +// CHECK-SAME: "-amdgpu-function-calls=0" "-o" {{".*-gfx803-.*o"}} + +// CHECK: [[CLANG]] "-cc1" "-triple" "amdgcn-amd-amdhsa" +// CHECK-SAME: "-aux-triple" "x86_64-unknown-linux-gnu" "-emit-llvm-bc" +// CHECK-SAME: {{.*}} "-target-cpu" "gfx900" +// CHECK-SAME: {{.*}} "-mllvm" "-amdgpu-function-calls=0" {{.*}} + +// CHECK: [[OPT]] {{".*-gfx900-linked.*bc"}} "-mtriple=amdgcn-amd-amdhsa" +// CHECK-SAME: "-mcpu=gfx900" "-amdgpu-function-calls=0" +// CHECK-SAME: "-o" [[OPT_900_BC:".*-gfx900-optimized.*bc"]] + +// CHECK: [[LLC]] [[OPT_900_BC]] +// CHECK-SAME: "-mtriple=amdgcn-amd-amdhsa" "-filetype=obj" +// CHECK-SAME: {{.*}} "-mcpu=gfx900" +// CHECK-SAME: "-amdgpu-function-calls=0" "-o" {{".*-gfx900-.*o"}} |

