@@ -5768,15 +5768,14 @@ bool SelectionDAG::isKnownNeverNaN(SDValue Op, const APInt &DemandedElts,
57685768 APInt DemandedSrcElts = DemandedElts & ~DemandedMask;
57695769 APInt DemandedSubElts = DemandedElts.extractBits(NumSubElts, Idx);
57705770
5771- if (!DemandedSrcElts.isZero() && !DemandedSubElts.isZero()) {
5772- return isKnownNeverNaN(BaseVector, DemandedSrcElts, SNaN, Depth + 1) &&
5773- isKnownNeverNaN(SubVector, DemandedSubElts, SNaN, Depth + 1);
5774- }
5771+ bool NeverNaN = true;
57755772 if (!DemandedSrcElts.isZero())
5776- return isKnownNeverNaN(BaseVector, DemandedSrcElts, SNaN, Depth + 1);
5777- if (!DemandedSubElts.isZero())
5778- return isKnownNeverNaN(SubVector, DemandedSubElts, SNaN, Depth + 1);
5779- return true;
5773+ NeverNaN &=
5774+ isKnownNeverNaN(BaseVector, DemandedSrcElts, SNaN, Depth + 1);
5775+ if (NeverNaN && !DemandedSubElts.isZero())
5776+ NeverNaN &=
5777+ isKnownNeverNaN(SubVector, DemandedSubElts, SNaN, Depth + 1);
5778+ return NeverNaN;
57805779 }
57815780 return isKnownNeverNaN(BaseVector, SNaN, Depth + 1) &&
57825781 isKnownNeverNaN(SubVector, SNaN, Depth + 1);
0 commit comments