Skip to content

Commit b39e064

Browse files
committed
FEAT : Added InvertedFPClassTest in LegalizerHelper
1 parent 5b65b4d commit b39e064

File tree

1 file changed

+10
-3
lines changed

1 file changed

+10
-3
lines changed

llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
//===----------------------------------------------------------------------===//
1414

1515
#include "llvm/CodeGen/GlobalISel/LegalizerHelper.h"
16+
#include "llvm/CodeGen/CodeGenCommonISel.h"
1617
#include "llvm/CodeGen/GlobalISel/CallLowering.h"
1718
#include "llvm/CodeGen/GlobalISel/GISelChangeObserver.h"
1819
#include "llvm/CodeGen/GlobalISel/GISelValueTracking.h"
@@ -9100,8 +9101,12 @@ LegalizerHelper::lowerISFPCLASS(MachineInstr &MI) {
91009101
return Legalized;
91019102
}
91029103

9103-
// TODO: Try inverting the test with getInvertedFPClassTest like the DAG
9104-
// version
9104+
bool isInverted = false;
9105+
FPClassTest InvertedTest = llvm::invertFPClassTestIfSimpler(Mask, false);
9106+
if (Inverse != fcNone) {
9107+
Mask = InvertedTest;
9108+
isInverted = true;
9109+
}
91059110

91069111
unsigned BitSize = SrcTy.getScalarSizeInBits();
91079112
const fltSemantics &Semantics = getFltSemanticForLLT(SrcTy.getScalarType());
@@ -9252,7 +9257,9 @@ LegalizerHelper::lowerISFPCLASS(MachineInstr &MI) {
92529257
}
92539258
appendToRes(NormalRes);
92549259
}
9255-
9260+
if (isInverted) {
9261+
Res = MIRBuilder.buildNot(DstTy, Res);
9262+
}
92569263
MIRBuilder.buildCopy(DstReg, Res);
92579264
MI.eraseFromParent();
92589265
return Legalized;

0 commit comments

Comments
 (0)