From: Aaron Enye Shi Date: Fri, 15 Mar 2019 17:31:51 +0000 (+0000) Subject: [HIP-Clang] propagate -mllvm options to opt and llc X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=c386253f5bb5a1f8a781e9eaedce21d413e40011;p=clang [HIP-Clang] propagate -mllvm options to opt and llc Change the HIP Toolchain to pass the OPT_mllvm options into OPT and LLC stages. Added a lit test to verify the command args. Reviewers: yaxunl Differential Revision: https://reviews.llvm.org/D59316 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@356277 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Driver/ToolChains/HIP.cpp b/lib/Driver/ToolChains/HIP.cpp index 10be27c354..fb3626d9be 100644 --- a/lib/Driver/ToolChains/HIP.cpp +++ b/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/test/Driver/hip-toolchain-mllvm.hip b/test/Driver/hip-toolchain-mllvm.hip new file mode 100644 index 0000000000..b8ebb414a4 --- /dev/null +++ b/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"}}