[clang] 7f12dca - [HIP] Fix regression about `__fp16` args and return value
Yaxun Liu via cfe-commits
cfe-commits at lists.llvm.org
Tue Aug 1 08:29:35 PDT 2023
Author: Yaxun (Sam) Liu
Date: 2023-08-01T11:29:19-04:00
New Revision: 7f12dcac79f3d2653ae77cd1be0768e64ff7a518
URL: https://github.com/llvm/llvm-project/commit/7f12dcac79f3d2653ae77cd1be0768e64ff7a518
DIFF: https://github.com/llvm/llvm-project/commit/7f12dcac79f3d2653ae77cd1be0768e64ff7a518.diff
LOG: [HIP] Fix regression about `__fp16` args and return value
HIP allows __fp16 as function arguments and return value by passing
-fallow-half-arguments-and-returns to clang through hipcc.
https://reviews.llvm.org/D133885 removed -fallow-half-arguments-and-returns
and add a TargetInfo member to control it.
This caused regressions in some HIP apps
(https://github.com/ROCm-Developer-Tools/HIP/issues/3178).
Reviewed by: Artem Belevich
Differential Revision: https://reviews.llvm.org/D145345
Fixes: https://github.com/ROCm-Developer-Tools/HIP/issues/3178
Added:
clang/test/SemaCUDA/fp16-arg-return.cu
Modified:
clang/lib/Basic/Targets/AMDGPU.cpp
Removed:
################################################################################
diff --git a/clang/lib/Basic/Targets/AMDGPU.cpp b/clang/lib/Basic/Targets/AMDGPU.cpp
index f15216ac15a100..0567fcdf080d4f 100644
--- a/clang/lib/Basic/Targets/AMDGPU.cpp
+++ b/clang/lib/Basic/Targets/AMDGPU.cpp
@@ -245,6 +245,7 @@ AMDGPUTargetInfo::AMDGPUTargetInfo(const llvm::Triple &Triple,
MaxAtomicPromoteWidth = MaxAtomicInlineWidth = 64;
CUMode = !(GPUFeatures & llvm::AMDGPU::FEATURE_WGP);
ReadOnlyFeatures.insert("image-insts");
+ HalfArgsAndReturns = true;
}
void AMDGPUTargetInfo::adjust(DiagnosticsEngine &Diags, LangOptions &Opts) {
diff --git a/clang/test/SemaCUDA/fp16-arg-return.cu b/clang/test/SemaCUDA/fp16-arg-return.cu
new file mode 100644
index 00000000000000..23a9613b18b284
--- /dev/null
+++ b/clang/test/SemaCUDA/fp16-arg-return.cu
@@ -0,0 +1,7 @@
+// RUN: %clang_cc1 -emit-llvm -o - -triple amdgcn-amd-amdhsa -fcuda-is-device -fsyntax-only -verify %s
+
+// expected-no-diagnostics
+
+__fp16 testFP16AsArgAndReturn(__fp16 x) {
+ return x;
+}
More information about the cfe-commits
mailing list