[clang] 9c39663 - Only Remove implicit conversion for the target that support fp16

Jim Lin via cfe-commits cfe-commits at lists.llvm.org
Tue Dec 10 03:11:01 PST 2019


Author: Jim Lin
Date: 2019-12-10T19:15:11+08:00
New Revision: 9c3966379813c198129c57aa3ebecd68d6af1ebd

URL: https://github.com/llvm/llvm-project/commit/9c3966379813c198129c57aa3ebecd68d6af1ebd
DIFF: https://github.com/llvm/llvm-project/commit/9c3966379813c198129c57aa3ebecd68d6af1ebd.diff

LOG: Only Remove implicit conversion for the target that support fp16

Remove implicit conversion that promotes half to double
for the target that support fp16. If the target doesn't
support fp16, fp16 will be converted to fp16 intrinsic.

Added: 
    

Modified: 
    clang/lib/Sema/SemaChecking.cpp

Removed: 
    


################################################################################
diff  --git a/clang/lib/Sema/SemaChecking.cpp b/clang/lib/Sema/SemaChecking.cpp
index 2be9effffcec..aff63aef2934 100644
--- a/clang/lib/Sema/SemaChecking.cpp
+++ b/clang/lib/Sema/SemaChecking.cpp
@@ -5822,7 +5822,8 @@ bool Sema::SemaBuiltinFPClassification(CallExpr *TheCall, unsigned NumArgs) {
             "promotion from float to either float, double, or long double is "
             "the only expected cast here");
         IgnoreCast = true;
-      } else if (CastArg->getType()->isSpecificBuiltinType(BuiltinType::Half)) {
+      } else if (CastArg->getType()->isSpecificBuiltinType(BuiltinType::Half) &&
+                 !Context.getTargetInfo().useFP16ConversionIntrinsics()) {
         assert(
             (Cast->getType()->isSpecificBuiltinType(BuiltinType::Double) ||
              Cast->getType()->isSpecificBuiltinType(BuiltinType::Float) ||


        


More information about the cfe-commits mailing list