Skip to content

Commit db9e8f3

Browse files
committed
fix fp semantics lookup for vectors
1 parent fe2c76c commit db9e8f3

File tree

1 file changed

+18
-18
lines changed

1 file changed

+18
-18
lines changed

llvm/lib/CodeGen/GlobalISel/GISelValueTracking.cpp

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1030,7 +1030,7 @@ void GISelValueTracking::computeKnownFPClass(Register R,
10301030
//
10311031
if ((Known.KnownFPClasses & fcZero) != fcNone &&
10321032
!Known.isKnownNeverSubnormal()) {
1033-
DenormalMode Mode = MF->getDenormalMode(getFltSemanticForLLT(DstTy));
1033+
DenormalMode Mode = MF->getDenormalMode(getFltSemanticForLLT(DstTy.getScalarType()));
10341034
if (Mode != DenormalMode::getIEEE())
10351035
Known.KnownFPClasses |= fcZero;
10361036
}
@@ -1092,8 +1092,8 @@ void GISelValueTracking::computeKnownFPClass(Register R,
10921092

10931093
// If the parent function flushes denormals, the canonical output cannot
10941094
// be a denormal.
1095-
LLT Ty = MRI.getType(Val);
1096-
const fltSemantics &FPType = getFltSemanticForLLT(Ty.getScalarType());
1095+
LLT Ty = MRI.getType(Val).getScalarType();
1096+
const fltSemantics &FPType = getFltSemanticForLLT(Ty);
10971097
DenormalMode DenormMode = MF->getDenormalMode(FPType);
10981098
if (DenormMode == DenormalMode::getIEEE()) {
10991099
if (KnownSrc.isKnownNever(fcPosZero))
@@ -1203,8 +1203,8 @@ void GISelValueTracking::computeKnownFPClass(Register R,
12031203
if (KnownSrc.isKnownNeverNaN() && KnownSrc.cannotBeOrderedLessThanZero())
12041204
Known.knownNot(fcNan);
12051205

1206-
LLT Ty = MRI.getType(Val);
1207-
const fltSemantics &FltSem = getFltSemanticForLLT(Ty.getScalarType());
1206+
LLT Ty = MRI.getType(Val).getScalarType();
1207+
const fltSemantics &FltSem = getFltSemanticForLLT(Ty);
12081208
DenormalMode Mode = MF->getDenormalMode(FltSem);
12091209

12101210
if (KnownSrc.isKnownNeverLogicalZero(Mode))
@@ -1323,18 +1323,18 @@ void GISelValueTracking::computeKnownFPClass(Register R,
13231323

13241324
// (fadd x, 0.0) is guaranteed to return +0.0, not -0.0.
13251325
if ((KnownLHS.isKnownNeverLogicalNegZero(
1326-
MF->getDenormalMode(getFltSemanticForLLT(DstTy))) ||
1326+
MF->getDenormalMode(getFltSemanticForLLT(DstTy.getScalarType()))) ||
13271327
KnownRHS.isKnownNeverLogicalNegZero(
1328-
MF->getDenormalMode(getFltSemanticForLLT(DstTy)))) &&
1328+
MF->getDenormalMode(getFltSemanticForLLT(DstTy.getScalarType())))) &&
13291329
// Make sure output negative denormal can't flush to -0
13301330
outputDenormalIsIEEEOrPosZero(*MF, DstTy))
13311331
Known.knownNot(fcNegZero);
13321332
} else {
13331333
// Only fsub -0, +0 can return -0
13341334
if ((KnownLHS.isKnownNeverLogicalNegZero(
1335-
MF->getDenormalMode(getFltSemanticForLLT(DstTy))) ||
1335+
MF->getDenormalMode(getFltSemanticForLLT(DstTy.getScalarType()))) ||
13361336
KnownRHS.isKnownNeverLogicalPosZero(
1337-
MF->getDenormalMode(getFltSemanticForLLT(DstTy)))) &&
1337+
MF->getDenormalMode(getFltSemanticForLLT(DstTy.getScalarType())))) &&
13381338
// Make sure output negative denormal can't flush to -0
13391339
outputDenormalIsIEEEOrPosZero(*MF, DstTy))
13401340
Known.knownNot(fcNegZero);
@@ -1381,10 +1381,10 @@ void GISelValueTracking::computeKnownFPClass(Register R,
13811381

13821382
if ((KnownRHS.isKnownNeverInfinity() ||
13831383
KnownLHS.isKnownNeverLogicalZero(
1384-
MF->getDenormalMode(getFltSemanticForLLT(DstTy)))) &&
1384+
MF->getDenormalMode(getFltSemanticForLLT(DstTy.getScalarType())))) &&
13851385
(KnownLHS.isKnownNeverInfinity() ||
13861386
KnownRHS.isKnownNeverLogicalZero(
1387-
MF->getDenormalMode(getFltSemanticForLLT(DstTy)))))
1387+
MF->getDenormalMode(getFltSemanticForLLT(DstTy.getScalarType())))))
13881388
Known.knownNot(fcNan);
13891389

13901390
break;
@@ -1437,9 +1437,9 @@ void GISelValueTracking::computeKnownFPClass(Register R,
14371437
(KnownLHS.isKnownNeverInfinity() ||
14381438
KnownRHS.isKnownNeverInfinity()) &&
14391439
((KnownLHS.isKnownNeverLogicalZero(
1440-
MF->getDenormalMode(getFltSemanticForLLT(DstTy)))) ||
1440+
MF->getDenormalMode(getFltSemanticForLLT(DstTy.getScalarType())))) ||
14411441
(KnownRHS.isKnownNeverLogicalZero(
1442-
MF->getDenormalMode(getFltSemanticForLLT(DstTy)))))) {
1442+
MF->getDenormalMode(getFltSemanticForLLT(DstTy.getScalarType())))))) {
14431443
Known.knownNot(fcNan);
14441444
}
14451445

@@ -1453,7 +1453,7 @@ void GISelValueTracking::computeKnownFPClass(Register R,
14531453
if (KnownLHS.isKnownNeverNaN() && KnownRHS.isKnownNeverNaN() &&
14541454
KnownLHS.isKnownNeverInfinity() &&
14551455
KnownRHS.isKnownNeverLogicalZero(
1456-
MF->getDenormalMode(getFltSemanticForLLT(DstTy)))) {
1456+
MF->getDenormalMode(getFltSemanticForLLT(DstTy.getScalarType())))) {
14571457
Known.knownNot(fcNan);
14581458
}
14591459

@@ -1478,10 +1478,10 @@ void GISelValueTracking::computeKnownFPClass(Register R,
14781478
// Infinity, nan and zero propagate from source.
14791479
computeKnownFPClass(R, DemandedElts, InterestedClasses, Known, Depth + 1);
14801480

1481-
LLT DstTy = MRI.getType(Dst);
1482-
const fltSemantics &DstSem = getFltSemanticForLLT(DstTy.getScalarType());
1483-
LLT SrcTy = MRI.getType(Src);
1484-
const fltSemantics &SrcSem = getFltSemanticForLLT(SrcTy.getScalarType());
1481+
LLT DstTy = MRI.getType(Dst).getScalarType();
1482+
const fltSemantics &DstSem = getFltSemanticForLLT(DstTy);
1483+
LLT SrcTy = MRI.getType(Src).getScalarType();
1484+
const fltSemantics &SrcSem = getFltSemanticForLLT(SrcTy);
14851485

14861486
// All subnormal inputs should be in the normal range in the result type.
14871487
if (APFloat::isRepresentableAsNormalIn(SrcSem, DstSem)) {

0 commit comments

Comments
 (0)