[PATCH] D82506: [HIP] Add missing options for lto
This revision was automatically updated to reflect the committed changes. Closed by commit rG8013ce449022: [HIP] Add missing options for lto (authored by yaxunl). Herald added a project: clang. Changed prior to commit: https://reviews.llvm.org/D82506?vs=273424&id=273588#toc Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D82506/new/ https://reviews.llvm.org/D82506 Files: clang/lib/Driver/ToolChains/AMDGPU.h clang/lib/Driver/ToolChains/HIP.cpp clang/test/Driver/hip-link-save-temps.hip clang/test/Driver/hip-save-temps.hip clang/test/Driver/hip-toolchain-features.hip clang/test/Driver/hip-toolchain-mllvm.hip clang/test/Driver/hip-toolchain-opt.hip clang/test/Driver/hip-toolchain-rdc-separate.hip clang/test/Driver/hip-toolchain-rdc.hip Index: clang/test/Driver/hip-toolchain-rdc.hip === --- clang/test/Driver/hip-toolchain-rdc.hip +++ clang/test/Driver/hip-toolchain-rdc.hip @@ -53,7 +53,8 @@ // CHECK-NOT: "*.llvm-link" // CHECK-NOT: ".*opt" // CHECK-NOT: ".*llc" -// CHECK: {{".*lld.*"}} {{.*}} "-mllvm" "-amdgpu-internalize-symbols" +// CHECK: {{".*lld.*"}} {{.*}} "-plugin-opt=-amdgpu-internalize-symbols" +// CHECK-SAME: "-plugin-opt=mcpu=gfx803" // CHECK-SAME: "-o" "[[IMG_DEV1:.*.out]]" [[A_BC1]] [[B_BC1]] // generate image for device side path on gfx900 @@ -80,7 +81,8 @@ // CHECK-NOT: "*.llvm-link" // CHECK-NOT: ".*opt" // CHECK-NOT: ".*llc" -// CHECK: {{".*lld.*"}} {{.*}} "-mllvm" "-amdgpu-internalize-symbols" +// CHECK: {{".*lld.*"}} {{.*}} "-plugin-opt=-amdgpu-internalize-symbols" +// CHECK-SAME: "-plugin-opt=mcpu=gfx900" // CHECK-SAME: "-o" "[[IMG_DEV2:.*.out]]" [[A_BC2]] [[B_BC2]] // combine images generated into hip fat binary object Index: clang/test/Driver/hip-toolchain-rdc-separate.hip === --- clang/test/Driver/hip-toolchain-rdc-separate.hip +++ clang/test/Driver/hip-toolchain-rdc-separate.hip @@ -107,13 +107,15 @@ // LINK-NOT: "*.llvm-link" // LINK-NOT: ".*opt" // LINK-NOT: ".*llc" -// LINK: {{".*lld.*"}} {{.*}} "-mllvm" "-amdgpu-internalize-symbols" +// LINK: {{".*lld.*"}} {{.*}} "-plugin-opt=-amdgpu-internalize-symbols" +// LINK: "-plugin-opt=mcpu=gfx803" // LINK-SAME: "-o" "[[IMG_DEV1:.*.out]]" "[[A_BC1]]" "[[B_BC1]]" // LINK-NOT: "*.llvm-link" // LINK-NOT: ".*opt" // LINK-NOT: ".*llc" -// LINK: {{".*lld.*"}} {{.*}} "-mllvm" "-amdgpu-internalize-symbols" +// LINK: {{".*lld.*"}} {{.*}} "-plugin-opt=-amdgpu-internalize-symbols" +// LINK: "-plugin-opt=mcpu=gfx900" // LINK-SAME: "-o" "[[IMG_DEV2:.*.out]]" "[[A_BC2]]" "[[B_BC2]]" // LINK: [[BUNDLER:".*clang-offload-bundler"]] "-type=o" Index: clang/test/Driver/hip-toolchain-opt.hip === --- clang/test/Driver/hip-toolchain-opt.hip +++ clang/test/Driver/hip-toolchain-opt.hip @@ -72,6 +72,16 @@ // ALL-NOT: "{{.*}}llc" +// ALL: "{{.*}}lld{{.*}}" {{.*}} "-plugin-opt=mcpu=gfx900" +// DEFAULT-NOT: "-plugin-opt=O{{.*}}" +// O0-SAME: "-plugin-opt=O0" +// O1-SAME: "-plugin-opt=O1" +// O2-SAME: "-plugin-opt=O2" +// O3-SAME: "-plugin-opt=O3" +// Os-SAME: "-plugin-opt=O2" +// Oz-SAME: "-plugin-opt=O2" +// Og-SAME: "-plugin-opt=O1" + // ALL: "{{.*}}clang{{.*}}" "-cc1" "-triple" "x86_64-unknown-linux-gnu" // DEFAULT-NOT: "-O{{.}}" // O0-SAME: "-O0" Index: clang/test/Driver/hip-toolchain-mllvm.hip === --- clang/test/Driver/hip-toolchain-mllvm.hip +++ clang/test/Driver/hip-toolchain-mllvm.hip @@ -7,20 +7,25 @@ // RUN: -mllvm -amdgpu-function-calls=0 \ // RUN: %s 2>&1 | FileCheck %s +// RUN: %clang -### -target x86_64-linux-gnu \ +// RUN: --cuda-gpu-arch=gfx803 --cuda-gpu-arch=gfx900 \ +// RUN: -fgpu-rdc -mllvm -amdgpu-function-calls=0 \ +// RUN: %s 2>&1 | FileCheck -check-prefixes=CHECK,RDC %s + // CHECK: [[CLANG:".*clang.*"]] "-cc1" "-triple" "amdgcn-amd-amdhsa" // CHECK-SAME: "-aux-triple" "x86_64-unknown-linux-gnu" -// CHECK-SAME: "-emit-obj" // CHECK-SAME: {{.*}} "-target-cpu" "gfx803" // CHECK-SAME: {{.*}} "-mllvm" "-amdgpu-function-calls=0" {{.*}} // CHECK-NOT: {{".*opt"}} // CHECK-NOT: {{".*llc"}} +// RDC: [[LLD:".*lld.*"]] {{.*}} "-plugin-opt=-amdgpu-function-calls=0" // CHECK: [[CLANG]] "-cc1" "-triple" "amdgcn-amd-amdhsa" // CHECK-SAME: "-aux-triple" "x86_64-unknown-linux-gnu" -// CHECK-SAME: "-emit-obj" // CHECK-SAME: {{.*}} "-target-cpu" "gfx900" // CHECK-SAME: {{.*}} "-mllvm" "-amdgpu-function-calls=0" {{.*}} // CHECK-NOT: {{".*opt"}} // CHECK-NOT: {{".*llc"}} +// RDC: [[LLD:".*lld.*"]] {{.*}} "-plugin-opt=-amdgpu-function-calls=0" Index: clang/test/Driver/hip-toolchain-features.hip === --- clang/test/Driver/hip-toolchain-features.hip +++ clang/test/Driver/hip-toolchain-features.hip @@ -2,39 +2,45 @@ // REQUI
[PATCH] D82506: [HIP] Add missing options for lto
tra accepted this revision. tra added a comment. This revision is now accepted and ready to land. LGTM. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D82506/new/ https://reviews.llvm.org/D82506 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D82506: [HIP] Add missing options for lto
yaxunl marked an inline comment as done. yaxunl added inline comments. Comment at: clang/lib/Driver/ToolChains/HIP.cpp:76 +MAttrString.append(Args.MakeArgString(OneFeature)); +if (OneFeature != Features.back()) + MAttrString.append(","); tra wrote: > I think StringRef will result in comparison by value. If we happen to have > duplicate features, we may end up skipping a comma. > You need to either iterate ofer the pointers to elements of the Features, or > use a different method of figuring out if a comma is necessary. > E.g. us a bool set at the end of the body. > > > Fixed by using unifyTargetFeatures. This makes sure the features are unique. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D82506/new/ https://reviews.llvm.org/D82506 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D82506: [HIP] Add missing options for lto
yaxunl updated this revision to Diff 273424. yaxunl marked an inline comment as done. yaxunl added a comment. Herald added subscribers: kerbowa, nhaehnle, jvesely. Fix issue about -mattr. Also use generic LTO option translation and use -plugin-opt. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D82506/new/ https://reviews.llvm.org/D82506 Files: clang/lib/Driver/ToolChains/AMDGPU.h clang/lib/Driver/ToolChains/HIP.cpp clang/test/Driver/hip-link-save-temps.hip clang/test/Driver/hip-save-temps.hip clang/test/Driver/hip-toolchain-features.hip clang/test/Driver/hip-toolchain-mllvm.hip clang/test/Driver/hip-toolchain-opt.hip clang/test/Driver/hip-toolchain-rdc-separate.hip clang/test/Driver/hip-toolchain-rdc.hip Index: clang/test/Driver/hip-toolchain-rdc.hip === --- clang/test/Driver/hip-toolchain-rdc.hip +++ clang/test/Driver/hip-toolchain-rdc.hip @@ -53,7 +53,8 @@ // CHECK-NOT: "*.llvm-link" // CHECK-NOT: ".*opt" // CHECK-NOT: ".*llc" -// CHECK: {{".*lld.*"}} {{.*}} "-mllvm" "-amdgpu-internalize-symbols" +// CHECK: {{".*lld.*"}} {{.*}} "-plugin-opt=-amdgpu-internalize-symbols" +// CHECK-SAME: "-plugin-opt=mcpu=gfx803" // CHECK-SAME: "-o" "[[IMG_DEV1:.*.out]]" [[A_BC1]] [[B_BC1]] // generate image for device side path on gfx900 @@ -80,7 +81,8 @@ // CHECK-NOT: "*.llvm-link" // CHECK-NOT: ".*opt" // CHECK-NOT: ".*llc" -// CHECK: {{".*lld.*"}} {{.*}} "-mllvm" "-amdgpu-internalize-symbols" +// CHECK: {{".*lld.*"}} {{.*}} "-plugin-opt=-amdgpu-internalize-symbols" +// CHECK-SAME: "-plugin-opt=mcpu=gfx900" // CHECK-SAME: "-o" "[[IMG_DEV2:.*.out]]" [[A_BC2]] [[B_BC2]] // combine images generated into hip fat binary object Index: clang/test/Driver/hip-toolchain-rdc-separate.hip === --- clang/test/Driver/hip-toolchain-rdc-separate.hip +++ clang/test/Driver/hip-toolchain-rdc-separate.hip @@ -107,13 +107,15 @@ // LINK-NOT: "*.llvm-link" // LINK-NOT: ".*opt" // LINK-NOT: ".*llc" -// LINK: {{".*lld.*"}} {{.*}} "-mllvm" "-amdgpu-internalize-symbols" +// LINK: {{".*lld.*"}} {{.*}} "-plugin-opt=-amdgpu-internalize-symbols" +// LINK: "-plugin-opt=mcpu=gfx803" // LINK-SAME: "-o" "[[IMG_DEV1:.*.out]]" "[[A_BC1]]" "[[B_BC1]]" // LINK-NOT: "*.llvm-link" // LINK-NOT: ".*opt" // LINK-NOT: ".*llc" -// LINK: {{".*lld.*"}} {{.*}} "-mllvm" "-amdgpu-internalize-symbols" +// LINK: {{".*lld.*"}} {{.*}} "-plugin-opt=-amdgpu-internalize-symbols" +// LINK: "-plugin-opt=mcpu=gfx900" // LINK-SAME: "-o" "[[IMG_DEV2:.*.out]]" "[[A_BC2]]" "[[B_BC2]]" // LINK: [[BUNDLER:".*clang-offload-bundler"]] "-type=o" Index: clang/test/Driver/hip-toolchain-opt.hip === --- clang/test/Driver/hip-toolchain-opt.hip +++ clang/test/Driver/hip-toolchain-opt.hip @@ -72,6 +72,16 @@ // ALL-NOT: "{{.*}}llc" +// ALL: "{{.*}}lld{{.*}}" {{.*}} "-plugin-opt=mcpu=gfx900" +// DEFAULT-NOT: "-plugin-opt=O{{.*}}" +// O0-SAME: "-plugin-opt=O0" +// O1-SAME: "-plugin-opt=O1" +// O2-SAME: "-plugin-opt=O2" +// O3-SAME: "-plugin-opt=O3" +// Os-SAME: "-plugin-opt=O2" +// Oz-SAME: "-plugin-opt=O2" +// Og-SAME: "-plugin-opt=O1" + // ALL: "{{.*}}clang{{.*}}" "-cc1" "-triple" "x86_64-unknown-linux-gnu" // DEFAULT-NOT: "-O{{.}}" // O0-SAME: "-O0" Index: clang/test/Driver/hip-toolchain-mllvm.hip === --- clang/test/Driver/hip-toolchain-mllvm.hip +++ clang/test/Driver/hip-toolchain-mllvm.hip @@ -7,20 +7,25 @@ // RUN: -mllvm -amdgpu-function-calls=0 \ // RUN: %s 2>&1 | FileCheck %s +// RUN: %clang -### -target x86_64-linux-gnu \ +// RUN: --cuda-gpu-arch=gfx803 --cuda-gpu-arch=gfx900 \ +// RUN: -fgpu-rdc -mllvm -amdgpu-function-calls=0 \ +// RUN: %s 2>&1 | FileCheck -check-prefixes=CHECK,RDC %s + // CHECK: [[CLANG:".*clang.*"]] "-cc1" "-triple" "amdgcn-amd-amdhsa" // CHECK-SAME: "-aux-triple" "x86_64-unknown-linux-gnu" -// CHECK-SAME: "-emit-obj" // CHECK-SAME: {{.*}} "-target-cpu" "gfx803" // CHECK-SAME: {{.*}} "-mllvm" "-amdgpu-function-calls=0" {{.*}} // CHECK-NOT: {{".*opt"}} // CHECK-NOT: {{".*llc"}} +// RDC: [[LLD:".*lld.*"]] {{.*}} "-plugin-opt=-amdgpu-function-calls=0" // CHECK: [[CLANG]] "-cc1" "-triple" "amdgcn-amd-amdhsa" // CHECK-SAME: "-aux-triple" "x86_64-unknown-linux-gnu" -// CHECK-SAME: "-emit-obj" // CHECK-SAME: {{.*}} "-target-cpu" "gfx900" // CHECK-SAME: {{.*}} "-mllvm" "-amdgpu-function-calls=0" {{.*}} // CHECK-NOT: {{".*opt"}} // CHECK-NOT: {{".*llc"}} +// RDC: [[LLD:".*lld.*"]] {{.*}} "-plugin-opt=-amdgpu-function-calls=0" Index: clang/test/Driver/hip-toolchain-features.hip === --- clang/test/Driver/hip-toolchain-features.hip +++ clang/test/Driver/hip-toolchain-features.hip @@ -2,38 +2,45 @@ // REQUIRES: x86-registered-target // REQUIRES: amdgpu-registered-target
[PATCH] D82506: [HIP] Add missing options for lto
tra added inline comments. Comment at: clang/lib/Driver/ToolChains/HIP.cpp:76 +MAttrString.append(Args.MakeArgString(OneFeature)); +if (OneFeature != Features.back()) + MAttrString.append(","); I think StringRef will result in comparison by value. If we happen to have duplicate features, we may end up skipping a comma. You need to either iterate ofer the pointers to elements of the Features, or use a different method of figuring out if a comma is necessary. E.g. us a bool set at the end of the body. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D82506/new/ https://reviews.llvm.org/D82506 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D82506: [HIP] Add missing options for lto
yaxunl created this revision. yaxunl added reviewers: tra, arsenm, ashi1. Herald added subscribers: dexonsmith, inglorion, wdng. Add -mcpu, -mattr, -mllvm, and -save-temps options for lto when necessary. https://reviews.llvm.org/D82506 Files: clang/lib/Driver/ToolChains/HIP.cpp clang/test/Driver/hip-save-temps.hip clang/test/Driver/hip-toolchain-features.hip clang/test/Driver/hip-toolchain-mllvm.hip clang/test/Driver/hip-toolchain-rdc-separate.hip clang/test/Driver/hip-toolchain-rdc.hip Index: clang/test/Driver/hip-toolchain-rdc.hip === --- clang/test/Driver/hip-toolchain-rdc.hip +++ clang/test/Driver/hip-toolchain-rdc.hip @@ -54,6 +54,7 @@ // CHECK-NOT: ".*opt" // CHECK-NOT: ".*llc" // CHECK: {{".*lld.*"}} {{.*}} "-mllvm" "-amdgpu-internalize-symbols" +// CHECK-SAME: "-mllvm" "-mcpu=gfx803" // CHECK-SAME: "-o" "[[IMG_DEV1:.*.out]]" [[A_BC1]] [[B_BC1]] // generate image for device side path on gfx900 @@ -81,6 +82,7 @@ // CHECK-NOT: ".*opt" // CHECK-NOT: ".*llc" // CHECK: {{".*lld.*"}} {{.*}} "-mllvm" "-amdgpu-internalize-symbols" +// CHECK-SAME: "-mllvm" "-mcpu=gfx900" // CHECK-SAME: "-o" "[[IMG_DEV2:.*.out]]" [[A_BC2]] [[B_BC2]] // combine images generated into hip fat binary object Index: clang/test/Driver/hip-toolchain-rdc-separate.hip === --- clang/test/Driver/hip-toolchain-rdc-separate.hip +++ clang/test/Driver/hip-toolchain-rdc-separate.hip @@ -108,12 +108,14 @@ // LINK-NOT: ".*opt" // LINK-NOT: ".*llc" // LINK: {{".*lld.*"}} {{.*}} "-mllvm" "-amdgpu-internalize-symbols" +// LINK: "-mllvm" "-mcpu=gfx803" // LINK-SAME: "-o" "[[IMG_DEV1:.*.out]]" "[[A_BC1]]" "[[B_BC1]]" // LINK-NOT: "*.llvm-link" // LINK-NOT: ".*opt" // LINK-NOT: ".*llc" // LINK: {{".*lld.*"}} {{.*}} "-mllvm" "-amdgpu-internalize-symbols" +// LINK: "-mllvm" "-mcpu=gfx900" // LINK-SAME: "-o" "[[IMG_DEV2:.*.out]]" "[[A_BC2]]" "[[B_BC2]]" // LINK: [[BUNDLER:".*clang-offload-bundler"]] "-type=o" Index: clang/test/Driver/hip-toolchain-mllvm.hip === --- clang/test/Driver/hip-toolchain-mllvm.hip +++ clang/test/Driver/hip-toolchain-mllvm.hip @@ -7,20 +7,25 @@ // RUN: -mllvm -amdgpu-function-calls=0 \ // RUN: %s 2>&1 | FileCheck %s +// RUN: %clang -### -target x86_64-linux-gnu \ +// RUN: --cuda-gpu-arch=gfx803 --cuda-gpu-arch=gfx900 \ +// RUN: -fgpu-rdc -mllvm -amdgpu-function-calls=0 \ +// RUN: %s 2>&1 | FileCheck -check-prefixes=CHECK,RDC %s + // CHECK: [[CLANG:".*clang.*"]] "-cc1" "-triple" "amdgcn-amd-amdhsa" // CHECK-SAME: "-aux-triple" "x86_64-unknown-linux-gnu" -// CHECK-SAME: "-emit-obj" // CHECK-SAME: {{.*}} "-target-cpu" "gfx803" // CHECK-SAME: {{.*}} "-mllvm" "-amdgpu-function-calls=0" {{.*}} // CHECK-NOT: {{".*opt"}} // CHECK-NOT: {{".*llc"}} +// RDC: [[LLD:".*lld.*"]] {{.*}} "-mllvm" "-amdgpu-function-calls=0" // CHECK: [[CLANG]] "-cc1" "-triple" "amdgcn-amd-amdhsa" // CHECK-SAME: "-aux-triple" "x86_64-unknown-linux-gnu" -// CHECK-SAME: "-emit-obj" // CHECK-SAME: {{.*}} "-target-cpu" "gfx900" // CHECK-SAME: {{.*}} "-mllvm" "-amdgpu-function-calls=0" {{.*}} // CHECK-NOT: {{".*opt"}} // CHECK-NOT: {{".*llc"}} +// RDC: [[LLD:".*lld.*"]] {{.*}} "-mllvm" "-amdgpu-function-calls=0" Index: clang/test/Driver/hip-toolchain-features.hip === --- clang/test/Driver/hip-toolchain-features.hip +++ clang/test/Driver/hip-toolchain-features.hip @@ -2,36 +2,42 @@ // REQUIRES: x86-registered-target // REQUIRES: amdgpu-registered-target -// RUN: %clang -### -c -target x86_64-linux-gnu -fgpu-rdc \ +// RUN: %clang -### -target x86_64-linux-gnu -fgpu-rdc -nogpulib \ // RUN: --cuda-gpu-arch=gfx803 --cuda-gpu-arch=gfx900 %s \ // RUN: -mxnack 2>&1 | FileCheck %s -check-prefix=XNACK -// RUN: %clang -### -c -target x86_64-linux-gnu -fgpu-rdc \ +// RUN: %clang -### -target x86_64-linux-gnu -fgpu-rdc -nogpulib \ // RUN: --cuda-gpu-arch=gfx803 --cuda-gpu-arch=gfx900 %s \ // RUN: -mno-xnack 2>&1 | FileCheck %s -check-prefix=NOXNACK // XNACK: {{.*}}clang{{.*}}"-target-feature" "+xnack" +// XNACK: {{.*}}lld{{.*}}"-mllvm" "-mattr=+xnack" // NOXNACK: {{.*}}clang{{.*}}"-target-feature" "-xnack" +// NOXNACK: {{.*}}lld{{.*}}"-mllvm" "-mattr=-xnack" -// RUN: %clang -### -c -target x86_64-linux-gnu -fgpu-rdc \ +// RUN: %clang -### -target x86_64-linux-gnu -fgpu-rdc -nogpulib \ // RUN: --cuda-gpu-arch=gfx803 --cuda-gpu-arch=gfx900 %s \ // RUN: -msram-ecc 2>&1 | FileCheck %s -check-prefix=SRAM -// RUN: %clang -### -c -target x86_64-linux-gnu -fgpu-rdc \ +// RUN: %clang -### -target x86_64-linux-gnu -fgpu-rdc -nogpulib \ // RUN: --cuda-gpu-arch=gfx803 --cuda-gpu-arch=gfx900 %s \ // RUN: -mno-sram-ecc 2>&1 | FileCheck %s -check-prefix=NOSRAM // SRAM: {{.*}}clang{{.*}}"-target-feature" "+sram-ecc" +// SRAM: {{.*}