[clang] [clang] fix half && bfloat16 convert node expr codegen (PR #89051)

Matt Arsenault via cfe-commits cfe-commits at lists.llvm.org
Tue Apr 23 04:50:58 PDT 2024


================
@@ -1431,9 +1431,13 @@ Value *ScalarExprEmitter::EmitScalarCast(Value *Src, QualType SrcType,
     return Builder.CreateFPToUI(Src, DstTy, "conv");
   }
 
-  if (DstElementTy->getTypeID() < SrcElementTy->getTypeID())
+  if ((DstElementTy->is16bitFPTy() && SrcElementTy->is16bitFPTy())) {
+    Value *FloatVal = Builder.CreateFPExt(Src, Builder.getFloatTy(), "conv");
+    return Builder.CreateFPTrunc(FloatVal, DstTy, "conv");
+  } else if (DstElementTy->getTypeID() < SrcElementTy->getTypeID())
----------------
arsenm wrote:

No else after return (although it's already violated in the existing code) 

https://github.com/llvm/llvm-project/pull/89051


More information about the cfe-commits mailing list