[llvm] Fix legalizing `FNEG` and `FABS` with `TypeSoftPromoteHalf` (PR #156343)
via llvm-commits
llvm-commits at lists.llvm.org
Tue Sep 2 09:15:32 PDT 2025
================
@@ -3670,6 +3674,24 @@ SDValue DAGTypeLegalizer::SoftPromoteHalfRes_UnaryOp(SDNode *N) {
return DAG.getNode(GetPromotionOpcode(NVT, OVT), dl, MVT::i16, Res);
}
+SDValue DAGTypeLegalizer::SoftPromoteHalfRes_FABS(SDNode *N) {
+ SDValue Op = GetSoftPromotedHalf(N->getOperand(0));
+ SDLoc dl(N);
+
+ // Clear the sign bit.
+ return DAG.getNode(ISD::AND, dl, MVT::i16, Op,
+ DAG.getConstant(0x7fff, dl, MVT::i16));
----------------
beetrees wrote:
`TypeSoftPromoteHalf` seems to be explicitly designed for only `f16`/`bf16`, so I think explicitly spelling out the constant makes it clearer.
https://github.com/llvm/llvm-project/pull/156343
More information about the llvm-commits
mailing list