[llvm-branch-commits] [clang] clang/AMDGPU: Enable opencl 2.0 features for unknown target (PR #170308)
via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Tue Dec 2 08:15:49 PST 2025
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-clang
Author: Matt Arsenault (arsenm)
<details>
<summary>Changes</summary>
Assume amdhsa triples support flat addressing, which matches
the backend logic for the default target. This fixes the
rocm device-libs build.
---
Full diff: https://github.com/llvm/llvm-project/pull/170308.diff
2 Files Affected:
- (modified) clang/lib/Basic/Targets/AMDGPU.h (+13-1)
- (modified) clang/test/Misc/amdgcn.languageOptsOpenCL.cl (+3)
``````````diff
diff --git a/clang/lib/Basic/Targets/AMDGPU.h b/clang/lib/Basic/Targets/AMDGPU.h
index 1d8f27ab915e2..8dcf1d1c9561a 100644
--- a/clang/lib/Basic/Targets/AMDGPU.h
+++ b/clang/lib/Basic/Targets/AMDGPU.h
@@ -84,6 +84,18 @@ class LLVM_LIBRARY_VISIBILITY AMDGPUTargetInfo final : public TargetInfo {
return TT.getArch() == llvm::Triple::r600;
}
+ bool hasFlatSupport() const {
+ if (GPUKind >= llvm::AMDGPU::GK_GFX700)
+ return true;
+
+ // Dummy target is assumed to be gfx700+ for amdhsa.
+ if (GPUKind == llvm::AMDGPU::GK_NONE &&
+ getTriple().getOS() == llvm::Triple::AMDHSA)
+ return true;
+
+ return false;
+ }
+
public:
AMDGPUTargetInfo(const llvm::Triple &Triple, const TargetOptions &Opts);
@@ -325,7 +337,7 @@ class LLVM_LIBRARY_VISIBILITY AMDGPUTargetInfo final : public TargetInfo {
Opts["__opencl_c_atomic_order_seq_cst"] = true;
Opts["__opencl_c_atomic_scope_all_devices"] = true;
- if (GPUKind >= llvm::AMDGPU::GK_GFX700) {
+ if (hasFlatSupport()) {
Opts["__opencl_c_generic_address_space"] = true;
Opts["__opencl_c_device_enqueue"] = true;
}
diff --git a/clang/test/Misc/amdgcn.languageOptsOpenCL.cl b/clang/test/Misc/amdgcn.languageOptsOpenCL.cl
index 57ea891b3eb29..08715fc5a1f4a 100644
--- a/clang/test/Misc/amdgcn.languageOptsOpenCL.cl
+++ b/clang/test/Misc/amdgcn.languageOptsOpenCL.cl
@@ -11,6 +11,9 @@
// RUN: %clang_cc1 -x cl -cl-std=CL3.0 %s -verify -triple amdgcn-unknown-unknown -Wpedantic-core-features -DTEST_CORE_FEATURES
// RUN: %clang_cc1 -x cl -cl-std=CL3.0 %s -verify -triple amdgcn-unknown-unknown -target-cpu gfx700 -Wpedantic-core-features -DTEST_CORE_FEATURES -DFLAT_SUPPORT
+// Test none target with amdhsa triple, which implies >= gfx700
+// RUN: %clang_cc1 -x cl -cl-std=CL3.0 %s -verify -triple amdgcn-unknown-amdhsa -Wpedantic-core-features -DTEST_CORE_FEATURES -DFLAT_SUPPORT
+
// Extensions in all versions
#ifndef cl_clang_storage_class_specifiers
#error "Missing cl_clang_storage_class_specifiers define"
``````````
</details>
https://github.com/llvm/llvm-project/pull/170308
More information about the llvm-branch-commits
mailing list