[llvm] [clang] [clang-tools-extra] DAG: Implement promotion for strict_fp_round (PR #74332)
Craig Topper via cfe-commits
cfe-commits at lists.llvm.org
Thu Jan 4 19:59:20 PST 2024
================
@@ -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
More information about the cfe-commits
mailing list