Skip to content

Commit

Permalink
[HIP] Fix bug in driver about wavefront size
Browse files Browse the repository at this point in the history
The static variable causes it only initialized once and take
the same value for different GPU archs, whereas they
may be different for different GPU archs, e.g. when
there are both gfx900 and gfx1010.

Removing static fixes that.

Differential Revision: https://reviews.llvm.org/D92628
  • Loading branch information
yxsamliu committed Dec 4, 2020
1 parent dcec2ca commit 0519e1d
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 1 deletion.
2 changes: 1 addition & 1 deletion clang/lib/Driver/ToolChains/AMDGPU.cpp
Expand Up @@ -499,7 +499,7 @@ llvm::DenormalMode AMDGPUToolChain::getDefaultDenormalModeForType(
bool AMDGPUToolChain::isWave64(const llvm::opt::ArgList &DriverArgs,
llvm::AMDGPU::GPUKind Kind) {
const unsigned ArchAttr = llvm::AMDGPU::getArchAttrAMDGCN(Kind);
static bool HasWave32 = (ArchAttr & llvm::AMDGPU::FEATURE_WAVE32);
bool HasWave32 = (ArchAttr & llvm::AMDGPU::FEATURE_WAVE32);

return !HasWave32 || DriverArgs.hasFlag(
options::OPT_mwavefrontsize64, options::OPT_mno_wavefrontsize64, false);
Expand Down
21 changes: 21 additions & 0 deletions clang/test/Driver/hip-wavefront-size.hip
@@ -0,0 +1,21 @@
// REQUIRES: clang-driver,amdgpu-registered-target

// RUN: %clang -### -target x86_64-linux-gnu \
// RUN: --cuda-gpu-arch=gfx900 \
// RUN: --rocm-path=%S/Inputs/rocm --cuda-device-only %s \
// RUN: 2>&1 | FileCheck %s --check-prefixes=WAVE64
// WAVE64: "-mlink-builtin-bitcode" "{{.*}}oclc_wavefrontsize64_on.bc"{{.*}} "-target-cpu" "gfx900"

// RUN: %clang -### -target x86_64-linux-gnu \
// RUN: --cuda-gpu-arch=gfx1010 \
// RUN: --rocm-path=%S/Inputs/rocm --cuda-device-only %s \
// RUN: 2>&1 | FileCheck %s --check-prefixes=WAVE32
// WAVE32: "-mlink-builtin-bitcode" "{{.*}}oclc_wavefrontsize64_off.bc"{{.*}} "-target-cpu" "gfx1010"

// RUN: %clang -### -target x86_64-linux-gnu \
// RUN: --cuda-gpu-arch=gfx1010 \
// RUN: --cuda-gpu-arch=gfx900 \
// RUN: --rocm-path=%S/Inputs/rocm --cuda-device-only %s \
// RUN: 2>&1 | FileCheck %s --check-prefixes=BOTH
// BOTH-DAG: "-mlink-builtin-bitcode" "{{.*}}oclc_wavefrontsize64_on.bc"{{.*}} "-target-cpu" "gfx900"
// BOTH-DAG: "-mlink-builtin-bitcode" "{{.*}}oclc_wavefrontsize64_off.bc"{{.*}} "-target-cpu" "gfx1010"

0 comments on commit 0519e1d

Please sign in to comment.