[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