Skip to content

Commit

Permalink
Remove unused x87 code from FPTreeEvaluator
Browse files Browse the repository at this point in the history
Issue: #964
Signed-off-by: BradleyWood <bradley.wood@ibm.com>
  • Loading branch information
BradleyWood committed Jul 7, 2021
1 parent b383e11 commit f306fad
Show file tree
Hide file tree
Showing 2 changed files with 0 additions and 54 deletions.
53 changes: 0 additions & 53 deletions compiler/x/codegen/FPTreeEvaluator.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -748,59 +748,6 @@ TR::Register *OMR::X86::TreeEvaluator::fpRemEvaluator(TR::Node *node, TR::CodeGe
return targetRegister;
}


TR::Register *OMR::X86::TreeEvaluator::commonFPRemEvaluator(TR::Node *node,
TR::CodeGenerator *cg,
bool isDouble)
{
TR::Node *divisor = node->getSecondChild();
TR::Node *dividend = node->getFirstChild();
TR::Compilation *comp = cg->comp();

TR::Register *divisorReg = cg->evaluate( divisor);
TR_ASSERT(divisorReg->getKind() == TR_X87, "X87 Instructions only.");

if (divisorReg->needsPrecisionAdjustment())
TR::TreeEvaluator::insertPrecisionAdjustment(divisorReg, divisor, cg);

TR::Register *dividendReg = cg->evaluate( dividend);
TR_ASSERT(dividendReg->getKind() == TR_X87, "X87 Instructions only.");

if (dividendReg->needsPrecisionAdjustment())
TR::TreeEvaluator::insertPrecisionAdjustment(dividendReg, dividend, cg);

if (isDouble)
dividendReg = cg->doubleClobberEvaluate(dividend);
else
dividendReg = cg->floatClobberEvaluate(dividend);

TR::Register *accReg = cg->allocateRegister();
TR::RegisterDependencyConditions *deps = generateRegisterDependencyConditions((uint8_t) 0, 1, cg);
deps->addPostCondition( accReg, TR::RealRegister::eax, cg);

generateFPRemainderRegRegInstruction( TR::InstOpCode::FPREMRegReg, node, dividendReg, divisorReg, accReg, deps, cg);
cg->stopUsingRegister(accReg);

node->setRegister( dividendReg);
cg->decReferenceCount( dividend);

if (divisorReg && divisorReg->getKind() == TR_X87 && divisor->getReferenceCount() == 1)
generateFPSTiST0RegRegInstruction(TR::InstOpCode::FSTRegReg, node, divisorReg, divisorReg, cg);

cg->decReferenceCount( divisor);

dividendReg->setMayNeedPrecisionAdjustment();

if ((node->getOpCode().isFloat() && !comp->getJittedMethodSymbol()->usesSinglePrecisionMode()) ||
comp->getCurrentMethod()->isStrictFP() ||
comp->getOption(TR_StrictFP))
{
dividendReg->setNeedsPrecisionAdjustment();
}

return dividendReg;
}

// also handles b2f, bu2f, s2f, su2f evaluators
TR::Register *OMR::X86::TreeEvaluator::i2fEvaluator(TR::Node *node, TR::CodeGenerator *cg)
{
Expand Down
1 change: 0 additions & 1 deletion compiler/x/codegen/OMRTreeEvaluator.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -395,7 +395,6 @@ class OMR_EXTENSIBLE TreeEvaluator: public OMR::TreeEvaluator
static TR::Register *integerEqualityHelper(TR::Node *node, TR::InstOpCode::Mnemonic setOp, TR::CodeGenerator *cg);
static TR::Register *integerOrderHelper(TR::Node *node, TR::InstOpCode::Mnemonic setOp, TR::CodeGenerator *cg);
static TR::Register *evaluateNULLCHKWithPossibleResolve(TR::Node *node, bool needResolution, TR::CodeGenerator *cg);
static TR::Register *commonFPRemEvaluator( TR::Node *node, TR::CodeGenerator *cg, bool isDouble);
static TR::Register *generateLEAForLoadAddr(TR::Node *node, TR::MemoryReference *memRef, TR::SymbolReference *symRef,TR::CodeGenerator *cg, bool isInternalPointer);

static bool constNodeValueIs32BitSigned(TR::Node *node, intptr_t *value, TR::CodeGenerator *cg);
Expand Down

0 comments on commit f306fad

Please sign in to comment.