aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/TargetParser/TargetParser.cpp
diff options
context:
space:
mode:
authorStanislav Mekhanoshin <rampitec@users.noreply.github.com>2024-07-09 14:25:58 -0700
committerGitHub <noreply@github.com>2024-07-09 14:25:58 -0700
commitf363e30f15ef274f94dba53a13d73998066a0148 (patch)
tree8900c32b2b4b5caae51f827f8ae3fe81f6838b0d /llvm/lib/TargetParser/TargetParser.cpp
parentaf21bc19172410f29606cac82a96c33d6710fe38 (diff)
downloadllvm-f363e30f15ef274f94dba53a13d73998066a0148.zip
llvm-f363e30f15ef274f94dba53a13d73998066a0148.tar.gz
llvm-f363e30f15ef274f94dba53a13d73998066a0148.tar.bz2
[AMDGPU] Report error in clang if wave32 is requested where unsupported (#97633)
Diffstat (limited to 'llvm/lib/TargetParser/TargetParser.cpp')
-rw-r--r--llvm/lib/TargetParser/TargetParser.cpp19
1 files changed, 10 insertions, 9 deletions
diff --git a/llvm/lib/TargetParser/TargetParser.cpp b/llvm/lib/TargetParser/TargetParser.cpp
index 00df92e..cd48575 100644
--- a/llvm/lib/TargetParser/TargetParser.cpp
+++ b/llvm/lib/TargetParser/TargetParser.cpp
@@ -616,18 +616,19 @@ static bool isWave32Capable(StringRef GPU, const Triple &T) {
return IsWave32Capable;
}
-bool AMDGPU::insertWaveSizeFeature(StringRef GPU, const Triple &T,
- StringMap<bool> &Features,
- std::string &ErrorMsg) {
+std::pair<FeatureError, StringRef>
+AMDGPU::insertWaveSizeFeature(StringRef GPU, const Triple &T,
+ StringMap<bool> &Features) {
bool IsWave32Capable = isWave32Capable(GPU, T);
const bool IsNullGPU = GPU.empty();
- // FIXME: Not diagnosing wavefrontsize32 on wave64 only targets.
- const bool HaveWave32 =
- (IsWave32Capable || IsNullGPU) && Features.count("wavefrontsize32");
+ const bool HaveWave32 = Features.count("wavefrontsize32");
const bool HaveWave64 = Features.count("wavefrontsize64");
if (HaveWave32 && HaveWave64) {
- ErrorMsg = "'wavefrontsize32' and 'wavefrontsize64' are mutually exclusive";
- return false;
+ return {AMDGPU::INVALID_FEATURE_COMBINATION,
+ "'wavefrontsize32' and 'wavefrontsize64' are mutually exclusive"};
+ }
+ if (HaveWave32 && !IsNullGPU && !IsWave32Capable) {
+ return {AMDGPU::UNSUPPORTED_TARGET_FEATURE, "wavefrontsize32"};
}
// Don't assume any wavesize with an unknown subtarget.
if (!IsNullGPU) {
@@ -638,5 +639,5 @@ bool AMDGPU::insertWaveSizeFeature(StringRef GPU, const Triple &T,
Features.insert(std::make_pair(DefaultWaveSizeFeature, true));
}
}
- return true;
+ return {NO_ERROR, StringRef()};
}