Skip to content

Commit 19118bd

Browse files
authored
Merge pull request #20653 from Spencer-Comin/popcnt
X: Remove popcnt specialization
2 parents b5ee59c + 37a43ae commit 19118bd

File tree

4 files changed

+1
-60
lines changed

4 files changed

+1
-60
lines changed

runtime/compiler/x/codegen/J9TreeEvaluator.cpp

Lines changed: 0 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -882,12 +882,10 @@ extern void TEMPORARY_initJ9X86TreeEvaluatorTable(TR::CodeGenerator *cg)
882882
tet[TR::ilbit] = TR::TreeEvaluator::integerLowestOneBit;
883883
tet[TR::inolz] = TR::TreeEvaluator::integerNumberOfLeadingZeros;
884884
tet[TR::inotz] = TR::TreeEvaluator::integerNumberOfTrailingZeros;
885-
tet[TR::ipopcnt] = TR::TreeEvaluator::integerBitCount;
886885
tet[TR::lhbit] = TR::TreeEvaluator::longHighestOneBit;
887886
tet[TR::llbit] = TR::TreeEvaluator::longLowestOneBit;
888887
tet[TR::lnolz] = TR::TreeEvaluator::longNumberOfLeadingZeros;
889888
tet[TR::lnotz] = TR::TreeEvaluator::longNumberOfTrailingZeros;
890-
tet[TR::lpopcnt] = TR::TreeEvaluator::longBitCount;
891889
tet[TR::tstart] = TR::TreeEvaluator::tstartEvaluator;
892890
tet[TR::tfinish] = TR::TreeEvaluator::tfinishEvaluator;
893891
tet[TR::tabort] = TR::TreeEvaluator::tabortEvaluator;
@@ -3978,51 +3976,6 @@ TR::Register *J9::X86::TreeEvaluator::longNumberOfTrailingZeros(TR::Node *node,
39783976
return resultReg;
39793977
}
39803978

3981-
static
3982-
TR::Register *bitCount(TR::Node *node, TR::CodeGenerator *cg, TR::Register *reg, bool is64Bit)
3983-
{
3984-
TR::Register *bsfReg = cg->allocateRegister();
3985-
generateRegRegInstruction(TR::InstOpCode::POPCNTRegReg(is64Bit), node, bsfReg, reg, cg);
3986-
return bsfReg;
3987-
}
3988-
3989-
TR::Register *J9::X86::TreeEvaluator::integerBitCount(TR::Node *node, TR::CodeGenerator *cg)
3990-
{
3991-
TR_ASSERT(node->getNumChildren() == 1, "Node has a wrong number of children (i.e. !=1 )! ");
3992-
TR::Node* child = node->getFirstChild();
3993-
TR::Register* inputReg = cg->evaluate(child);
3994-
TR::Register* resultReg = bitCount(node, cg, inputReg, cg->comp()->target().is64Bit());
3995-
node->setRegister(resultReg);
3996-
cg->decReferenceCount(child);
3997-
return resultReg;
3998-
}
3999-
4000-
TR::Register *J9::X86::TreeEvaluator::longBitCount(TR::Node *node, TR::CodeGenerator *cg)
4001-
{
4002-
TR_ASSERT(node->getNumChildren() == 1, "Node has a wrong number of children (i.e. !=1 )! ");
4003-
TR::Node * child = node->getFirstChild();
4004-
TR::Register * inputReg = cg->evaluate(child);
4005-
TR::Register * resultReg = NULL;
4006-
if (cg->comp()->target().is64Bit())
4007-
{
4008-
resultReg = bitCount(node, cg, inputReg, true);
4009-
}
4010-
else
4011-
{
4012-
//add low result and high result together
4013-
TR::Register * inputHigh = inputReg->getHighOrder();
4014-
TR::Register * inputLow = inputReg->getLowOrder();
4015-
TR::Register * resultLow = bitCount(node, cg, inputLow, false);
4016-
TR::Register * resultHigh = bitCount(node, cg, inputHigh, false);
4017-
generateRegRegInstruction(TR::InstOpCode::ADD4RegReg, node, resultLow, resultHigh, cg);
4018-
cg->stopUsingRegister(resultHigh);
4019-
resultReg = resultLow;
4020-
}
4021-
node->setRegister(resultReg);
4022-
cg->decReferenceCount(child);
4023-
return resultReg;
4024-
}
4025-
40263979
inline void generateInlinedCheckCastForDynamicCastClass(TR::Node* node, TR::CodeGenerator* cg)
40273980
{
40283981
TR::Compilation *comp = cg->comp();

runtime/compiler/x/codegen/J9TreeEvaluator.hpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -72,12 +72,10 @@ class OMR_EXTENSIBLE TreeEvaluator: public J9::TreeEvaluator
7272
static TR::Register *integerLowestOneBit(TR::Node *node, TR::CodeGenerator *cg);
7373
static TR::Register *integerNumberOfLeadingZeros(TR::Node *node, TR::CodeGenerator *cg);
7474
static TR::Register *integerNumberOfTrailingZeros(TR::Node *node, TR::CodeGenerator *cg);
75-
static TR::Register *integerBitCount(TR::Node *node, TR::CodeGenerator *cg);
7675
static TR::Register *longHighestOneBit(TR::Node *node, TR::CodeGenerator *cg);
7776
static TR::Register *longLowestOneBit(TR::Node *node, TR::CodeGenerator *cg);
7877
static TR::Register *longNumberOfLeadingZeros(TR::Node *node, TR::CodeGenerator *cg);
7978
static TR::Register *longNumberOfTrailingZeros(TR::Node *node, TR::CodeGenerator *cg);
80-
static TR::Register *longBitCount(TR::Node *node, TR::CodeGenerator *cg);
8179
static TR::Register *tstartEvaluator(TR::Node *node, TR::CodeGenerator *cg);
8280
static TR::Register *tfinishEvaluator(TR::Node *node, TR::CodeGenerator *cg);
8381
static TR::Register *tabortEvaluator(TR::Node *node, TR::CodeGenerator *cg);

runtime/compiler/x/env/J9CPU.cpp

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -115,15 +115,6 @@ J9::X86::CPU::getProcessorSignature()
115115
return self()->getX86ProcessorSignature();
116116
}
117117

118-
bool
119-
J9::X86::CPU::hasPopulationCountInstruction()
120-
{
121-
if ((self()->getX86ProcessorFeatureFlags2() & TR_POPCNT) != 0x00000000)
122-
return true;
123-
else
124-
return false;
125-
}
126-
127118
bool
128119
J9::X86::CPU::isCompatible(const OMRProcessorDesc& processorDescription)
129120
{

runtime/compiler/x/env/J9CPU.hpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ class OMR_EXTENSIBLE CPU : public J9::CPU
5252

5353
public:
5454

55-
/**
55+
/**
5656
* @brief A factory method used to construct a CPU object for portable AOT compilations
5757
* @param[in] omrPortLib : the port library
5858
* @return TR::CPU
@@ -73,7 +73,6 @@ class OMR_EXTENSIBLE CPU : public J9::CPU
7373
uint32_t getProcessorSignature();
7474

7575
bool testOSForSSESupport() { return true; } // VM guarantees SSE/SSE2 are available
76-
bool hasPopulationCountInstruction();
7776

7877
bool isCompatible(const OMRProcessorDesc& processorDescription);
7978

0 commit comments

Comments
 (0)