[llvm] SelectionDAG: Support nofpclass (PR #108350)
Jay Foad via llvm-commits
llvm-commits at lists.llvm.org
Thu Sep 12 06:43:26 PDT 2024
================
@@ -11773,6 +11773,14 @@ void SelectionDAGISel::LowerArguments(const Function &F) {
AssertOp = ISD::AssertSext;
else if (Arg.hasAttribute(Attribute::ZExt))
AssertOp = ISD::AssertZext;
+ if (Arg.hasAttribute(Attribute::NoFPClass)) {
+ SDNodeFlags InValFlags = InVals[i]->getFlags();
+ InValFlags.setNonNeg(Arg.getNoFPClass() & llvm::fcNegative);
+ InValFlags.setNoNaNs(Arg.getNoFPClass() & llvm::fcNan);
+ InValFlags.setNoInfs(Arg.getNoFPClass() & llvm::fcInf);
+ InValFlags.setNoSignedZeros(Arg.getNoFPClass() & llvm::fcNegZero);
----------------
jayfoad wrote:
> Yes, "the value is known not to be -0.0" is one case
I don't think that's true - unless you can point me at some evidence? (I am more familiar with how these flags are defined in IR and MIR than in SDNodes.) I think the NoSignedZeros flag only makes sense on certain _operations_ like FADD, not on arbitrary _values_.
https://github.com/llvm/llvm-project/pull/108350
More information about the llvm-commits
mailing list