================
@@ -2621,6 +2642,29 @@ SDValue 
DAGTypeLegalizer::PromoteFloatRes_FP_ROUND(SDNode *N) {
   return DAG.getNode(GetPromotionOpcode(VT, NVT), DL, NVT, Round);
 }
 
+// Explicit operation to reduce precision.  Reduce the value to half precision
+// and promote it back to the legal type.
+SDValue DAGTypeLegalizer::PromoteFloatRes_STRICT_FP_ROUND(SDNode *N) {
----------------
topperc wrote:

There are two promotion legalizers, Promote and SoftPromoteHalf. X86 and RISC-V 
use SoftPromoteHalf. Other targets use Promote. Promote doesn't convert back to 
fp16 in the right places in my opinion. If I recall correctly Promote doesn't 
convert to fp16 between two promoted fadds for example so it keeps extra 
precision.

https://github.com/llvm/llvm-project/pull/74332
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to