Skip to content

Commit

Permalink
Override x86 and Power undefined evaluators
Browse files Browse the repository at this point in the history
  • Loading branch information
fjeremic committed May 26, 2021
1 parent 00daa3e commit f17e0de
Show file tree
Hide file tree
Showing 4 changed files with 36 additions and 28 deletions.
14 changes: 0 additions & 14 deletions compiler/codegen/OMRCodeGenerator.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -114,20 +114,6 @@
namespace TR { class Optimizer; }
namespace TR { class RegisterDependencyConditions; }


#if defined(TR_TARGET_X86) || defined(TR_TARGET_POWER)
#define butestEvaluator badILOpEvaluator
#define sutestEvaluator badILOpEvaluator
#define iucmpEvaluator badILOpEvaluator
#define icmpEvaluator badILOpEvaluator
#endif
#ifdef TR_TARGET_X86 //x86 only
#define bucmpEvaluator badILOpEvaluator
#define bcmpEvaluator badILOpEvaluator
#define sucmpEvaluator badILOpEvaluator
#define scmpEvaluator badILOpEvaluator
#endif

TR_TreeEvaluatorFunctionPointer
OMR::CodeGenerator::_nodeToInstrEvaluators[] =
{
Expand Down
24 changes: 24 additions & 0 deletions compiler/p/codegen/OMRTreeEvaluator.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1491,6 +1491,18 @@ OMR::Power::TreeEvaluator::fullFenceEvaluator(TR::Node *node, TR::CodeGenerator
return TR::TreeEvaluator::badILOpEvaluator(node, cg);
}

TR::Register*
OMR::Power::TreeEvaluator::butestEvaluator(TR::Node *node, TR::CodeGenerator *cg)
{
return TR::TreeEvaluator::unImpOpEvaluator(node, cg);
}

TR::Register*
OMR::Power::TreeEvaluator::sutestEvaluator(TR::Node *node, TR::CodeGenerator *cg)
{
return TR::TreeEvaluator::unImpOpEvaluator(node, cg);
}

TR::Register*
OMR::Power::TreeEvaluator::bucmpEvaluator(TR::Node *node, TR::CodeGenerator *cg)
{
Expand All @@ -1515,6 +1527,18 @@ OMR::Power::TreeEvaluator::scmpEvaluator(TR::Node *node, TR::CodeGenerator *cg)
return TR::TreeEvaluator::icmpEvaluator(node, cg);
}

TR::Register*
OMR::Power::TreeEvaluator::iucmpEvaluator(TR::Node *node, TR::CodeGenerator *cg)
{
return TR::TreeEvaluator::unImpOpEvaluator(node, cg);
}

TR::Register*
OMR::Power::TreeEvaluator::icmpEvaluator(TR::Node *node, TR::CodeGenerator *cg)
{
return TR::TreeEvaluator::unImpOpEvaluator(node, cg);
}

TR::Register*
OMR::Power::TreeEvaluator::lucmpEvaluator(TR::Node *node, TR::CodeGenerator *cg)
{
Expand Down
4 changes: 4 additions & 0 deletions compiler/p/codegen/OMRTreeEvaluator.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -292,10 +292,14 @@ class OMR_EXTENSIBLE TreeEvaluator: public OMR::TreeEvaluator
static TR::Register *loadFenceEvaluator(TR::Node *node, TR::CodeGenerator *cg);
static TR::Register *storeFenceEvaluator(TR::Node *node, TR::CodeGenerator *cg);
static TR::Register *fullFenceEvaluator(TR::Node *node, TR::CodeGenerator *cg);
static TR::Register *butestEvaluator(TR::Node *node, TR::CodeGenerator *cg);
static TR::Register *sutestEvaluator(TR::Node *node, TR::CodeGenerator *cg);
static TR::Register *bucmpEvaluator(TR::Node *node, TR::CodeGenerator *cg);
static TR::Register *bcmpEvaluator(TR::Node *node, TR::CodeGenerator *cg);
static TR::Register *sucmpEvaluator(TR::Node *node, TR::CodeGenerator *cg);
static TR::Register *scmpEvaluator(TR::Node *node, TR::CodeGenerator *cg);
static TR::Register *iucmpEvaluator(TR::Node *node, TR::CodeGenerator *cg);
static TR::Register *icmpEvaluator(TR::Node *node, TR::CodeGenerator *cg);
static TR::Register *lucmpEvaluator(TR::Node *node, TR::CodeGenerator *cg);
static TR::Register *ificmpoEvaluator(TR::Node *node, TR::CodeGenerator *cg);
static TR::Register *ificmpnoEvaluator(TR::Node *node, TR::CodeGenerator *cg);
Expand Down
22 changes: 8 additions & 14 deletions compiler/x/codegen/OMRTreeEvaluator.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3820,48 +3820,42 @@ TR_X86ComputeCC::setCarryBorrow(TR::Node *flagNode, bool invertValue, TR::CodeGe

TR::Register *OMR::X86::TreeEvaluator::bcmpEvaluator(TR::Node *node, TR::CodeGenerator *cg)
{
TR::TreeEvaluator::compareBytesForOrder(node, cg);
return node->setRegister(NULL);
return TR::TreeEvaluator::badILOpEvaluator(node, cg);
}

TR::Register *OMR::X86::TreeEvaluator::bucmpEvaluator(TR::Node *node, TR::CodeGenerator *cg)
{
TR::TreeEvaluator::compareBytesForOrder(node, cg);
return node->setRegister(NULL);
return TR::TreeEvaluator::badILOpEvaluator(node, cg);
}

TR::Register *OMR::X86::TreeEvaluator::scmpEvaluator(TR::Node *node, TR::CodeGenerator *cg)
{
TR::TreeEvaluator::compare2BytesForOrder(node, cg);
return node->setRegister(NULL);
return TR::TreeEvaluator::badILOpEvaluator(node, cg);
}

TR::Register *OMR::X86::TreeEvaluator::sucmpEvaluator(TR::Node *node, TR::CodeGenerator *cg)
{
TR::TreeEvaluator::compare2BytesForOrder(node, cg);
return node->setRegister(NULL);
return TR::TreeEvaluator::badILOpEvaluator(node, cg);
}

TR::Register *OMR::X86::TreeEvaluator::icmpEvaluator(TR::Node *node, TR::CodeGenerator *cg)
{
TR::TreeEvaluator::compareIntegersForOrder(node, cg);
return node->setRegister(NULL);
return TR::TreeEvaluator::badILOpEvaluator(node, cg);
}

TR::Register *OMR::X86::TreeEvaluator::iucmpEvaluator(TR::Node *node, TR::CodeGenerator *cg)
{
TR::TreeEvaluator::compareIntegersForOrder(node, cg);
return node->setRegister(NULL);
return TR::TreeEvaluator::badILOpEvaluator(node, cg);
}

TR::Register *OMR::X86::TreeEvaluator::butestEvaluator(TR::Node *node, TR::CodeGenerator *cg)
{
return node->setRegister(NULL);
return TR::TreeEvaluator::badILOpEvaluator(node, cg);
}

TR::Register *OMR::X86::TreeEvaluator::sutestEvaluator(TR::Node *node, TR::CodeGenerator *cg)
{
return node->setRegister(NULL);
return TR::TreeEvaluator::badILOpEvaluator(node, cg);
}

// TR::ibatomicor TR::isatomicor TR::iiatomicor TR::ilatomicor
Expand Down

0 comments on commit f17e0de

Please sign in to comment.