Skip to content

Commit 7c2c03d

Browse files
committed
move register kind check to COPY
1 parent a07f176 commit 7c2c03d

File tree

1 file changed

+22
-23
lines changed

1 file changed

+22
-23
lines changed

llvm/lib/CodeGen/GlobalISel/GISelValueTracking.cpp

Lines changed: 22 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -715,9 +715,6 @@ static bool outputDenormalIsIEEEOrPosZero(const MachineFunction &MF, LLT Ty) {
715715
void GISelValueTracking::computeKnownFPClass(Register R, KnownFPClass &Known,
716716
FPClassTest InterestedClasses,
717717
unsigned Depth) {
718-
if (!R.isVirtual())
719-
return;
720-
721718
LLT Ty = MRI.getType(R);
722719
APInt DemandedElts =
723720
Ty.isFixedVector() ? APInt::getAllOnes(Ty.getNumElements()) : APInt(1, 1);
@@ -761,9 +758,6 @@ void GISelValueTracking::computeKnownFPClass(Register R,
761758

762759
assert(Depth <= MaxAnalysisRecursionDepth && "Limit Search Depth");
763760

764-
if (!R.isVirtual())
765-
return;
766-
767761
MachineInstr &MI = *MRI.getVRegDef(R);
768762
unsigned Opcode = MI.getOpcode();
769763
LLT DstTy = MRI.getType(R);
@@ -1052,7 +1046,8 @@ void GISelValueTracking::computeKnownFPClass(Register R,
10521046
//
10531047
if ((Known.KnownFPClasses & fcZero) != fcNone &&
10541048
!Known.isKnownNeverSubnormal()) {
1055-
DenormalMode Mode = MF->getDenormalMode(getFltSemanticForLLT(DstTy.getScalarType()));
1049+
DenormalMode Mode =
1050+
MF->getDenormalMode(getFltSemanticForLLT(DstTy.getScalarType()));
10561051
if (Mode != DenormalMode::getIEEE())
10571052
Known.KnownFPClasses |= fcZero;
10581053
}
@@ -1344,19 +1339,19 @@ void GISelValueTracking::computeKnownFPClass(Register R,
13441339
Known.knownNot(KnownFPClass::OrderedLessThanZeroMask);
13451340

13461341
// (fadd x, 0.0) is guaranteed to return +0.0, not -0.0.
1347-
if ((KnownLHS.isKnownNeverLogicalNegZero(
1348-
MF->getDenormalMode(getFltSemanticForLLT(DstTy.getScalarType()))) ||
1349-
KnownRHS.isKnownNeverLogicalNegZero(
1350-
MF->getDenormalMode(getFltSemanticForLLT(DstTy.getScalarType())))) &&
1342+
if ((KnownLHS.isKnownNeverLogicalNegZero(MF->getDenormalMode(
1343+
getFltSemanticForLLT(DstTy.getScalarType()))) ||
1344+
KnownRHS.isKnownNeverLogicalNegZero(MF->getDenormalMode(
1345+
getFltSemanticForLLT(DstTy.getScalarType())))) &&
13511346
// Make sure output negative denormal can't flush to -0
13521347
outputDenormalIsIEEEOrPosZero(*MF, DstTy))
13531348
Known.knownNot(fcNegZero);
13541349
} else {
13551350
// Only fsub -0, +0 can return -0
1356-
if ((KnownLHS.isKnownNeverLogicalNegZero(
1357-
MF->getDenormalMode(getFltSemanticForLLT(DstTy.getScalarType()))) ||
1358-
KnownRHS.isKnownNeverLogicalPosZero(
1359-
MF->getDenormalMode(getFltSemanticForLLT(DstTy.getScalarType())))) &&
1351+
if ((KnownLHS.isKnownNeverLogicalNegZero(MF->getDenormalMode(
1352+
getFltSemanticForLLT(DstTy.getScalarType()))) ||
1353+
KnownRHS.isKnownNeverLogicalPosZero(MF->getDenormalMode(
1354+
getFltSemanticForLLT(DstTy.getScalarType())))) &&
13601355
// Make sure output negative denormal can't flush to -0
13611356
outputDenormalIsIEEEOrPosZero(*MF, DstTy))
13621357
Known.knownNot(fcNegZero);
@@ -1402,8 +1397,8 @@ void GISelValueTracking::computeKnownFPClass(Register R,
14021397
}
14031398

14041399
if ((KnownRHS.isKnownNeverInfinity() ||
1405-
KnownLHS.isKnownNeverLogicalZero(
1406-
MF->getDenormalMode(getFltSemanticForLLT(DstTy.getScalarType())))) &&
1400+
KnownLHS.isKnownNeverLogicalZero(MF->getDenormalMode(
1401+
getFltSemanticForLLT(DstTy.getScalarType())))) &&
14071402
(KnownLHS.isKnownNeverInfinity() ||
14081403
KnownRHS.isKnownNeverLogicalZero(
14091404
MF->getDenormalMode(getFltSemanticForLLT(DstTy.getScalarType())))))
@@ -1458,10 +1453,10 @@ void GISelValueTracking::computeKnownFPClass(Register R,
14581453
if (KnownLHS.isKnownNeverNaN() && KnownRHS.isKnownNeverNaN() &&
14591454
(KnownLHS.isKnownNeverInfinity() ||
14601455
KnownRHS.isKnownNeverInfinity()) &&
1461-
((KnownLHS.isKnownNeverLogicalZero(
1462-
MF->getDenormalMode(getFltSemanticForLLT(DstTy.getScalarType())))) ||
1463-
(KnownRHS.isKnownNeverLogicalZero(
1464-
MF->getDenormalMode(getFltSemanticForLLT(DstTy.getScalarType())))))) {
1456+
((KnownLHS.isKnownNeverLogicalZero(MF->getDenormalMode(
1457+
getFltSemanticForLLT(DstTy.getScalarType())))) ||
1458+
(KnownRHS.isKnownNeverLogicalZero(MF->getDenormalMode(
1459+
getFltSemanticForLLT(DstTy.getScalarType())))))) {
14651460
Known.knownNot(fcNan);
14661461
}
14671462

@@ -1474,8 +1469,8 @@ void GISelValueTracking::computeKnownFPClass(Register R,
14741469
// Inf REM x and x REM 0 produce NaN.
14751470
if (KnownLHS.isKnownNeverNaN() && KnownRHS.isKnownNeverNaN() &&
14761471
KnownLHS.isKnownNeverInfinity() &&
1477-
KnownRHS.isKnownNeverLogicalZero(
1478-
MF->getDenormalMode(getFltSemanticForLLT(DstTy.getScalarType())))) {
1472+
KnownRHS.isKnownNeverLogicalZero(MF->getDenormalMode(
1473+
getFltSemanticForLLT(DstTy.getScalarType())))) {
14791474
Known.knownNot(fcNan);
14801475
}
14811476

@@ -1696,6 +1691,10 @@ void GISelValueTracking::computeKnownFPClass(Register R,
16961691
}
16971692
case TargetOpcode::COPY: {
16981693
Register Src = MI.getOperand(1).getReg();
1694+
1695+
if (!Src.isVirtual())
1696+
return;
1697+
16991698
computeKnownFPClass(Src, DemandedElts, InterestedClasses, Known, Depth + 1);
17001699
break;
17011700
}

0 commit comments

Comments
 (0)