[llvm] SelectionDAG: Support nofpclass(nan/qnan/snan/nzero) in arguments (PR #130051)
Matt Arsenault via llvm-commits
llvm-commits at lists.llvm.org
Thu Apr 17 05:26:57 PDT 2025
================
@@ -11827,10 +11827,25 @@ void SelectionDAGISel::LowerArguments(const Function &F) {
AssertOp = ISD::AssertSext;
else if (Arg.hasAttribute(Attribute::ZExt))
AssertOp = ISD::AssertZext;
-
- ArgValues.push_back(getCopyFromParts(DAG, dl, &InVals[i], NumParts,
- PartVT, VT, nullptr, NewRoot,
- F.getCallingConv(), AssertOp));
+ SDValue OutVal =
+ getCopyFromParts(DAG, dl, &InVals[i], NumParts, PartVT, VT, nullptr,
+ NewRoot, F.getCallingConv(), AssertOp);
+ if (Arg.hasAttribute(Attribute::NoFPClass) &&
+ OutVal.getValueType().isFloatingPoint()) {
+ SDNodeFlags OutValFlags = OutVal->getFlags();
+ bool NoSNaN = ((Arg.getNoFPClass() & llvm::fcSNan) == llvm::fcSNan);
----------------
arsenm wrote:
AssertNoFPClass should have an explicit integer mask argument that directly copies the value. You shouldn't be trying to re-encode that value as fast math flags
https://github.com/llvm/llvm-project/pull/130051
More information about the llvm-commits
mailing list