Skip to content

Commit

Permalink
Remove vicmpany family IL opcodes
Browse files Browse the repository at this point in the history
* vicmpanyeq
* vicmpanyne
* vicmpanygt
* vicmpanyge
* vicmpanylt
* vicmpanyle

Issue: #6003

Signed-off-by: Daryl Maier <maier@ca.ibm.com>
  • Loading branch information
0xdaryl committed Jun 2, 2021
1 parent 858cf12 commit 0597110
Show file tree
Hide file tree
Showing 17 changed files with 0 additions and 433 deletions.
36 changes: 0 additions & 36 deletions compiler/aarch64/codegen/OMRTreeEvaluator.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1160,42 +1160,6 @@ OMR::ARM64::TreeEvaluator::vicmpleEvaluator(TR::Node *node, TR::CodeGenerator *c
return TR::TreeEvaluator::unImpOpEvaluator(node, cg);
}

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

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

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

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

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

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

TR::Register*
OMR::ARM64::TreeEvaluator::vbitselectEvaluator(TR::Node *node, TR::CodeGenerator *cg)
{
Expand Down
6 changes: 0 additions & 6 deletions compiler/aarch64/codegen/OMRTreeEvaluator.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -589,12 +589,6 @@ class OMR_EXTENSIBLE TreeEvaluator: public OMR::TreeEvaluator
static TR::Register *vicmpgeEvaluator(TR::Node *node, TR::CodeGenerator *cg);
static TR::Register *vicmpltEvaluator(TR::Node *node, TR::CodeGenerator *cg);
static TR::Register *vicmpleEvaluator(TR::Node *node, TR::CodeGenerator *cg);
static TR::Register *vicmpanyeqEvaluator(TR::Node *node, TR::CodeGenerator *cg);
static TR::Register *vicmpanyneEvaluator(TR::Node *node, TR::CodeGenerator *cg);
static TR::Register *vicmpanygtEvaluator(TR::Node *node, TR::CodeGenerator *cg);
static TR::Register *vicmpanygeEvaluator(TR::Node *node, TR::CodeGenerator *cg);
static TR::Register *vicmpanyltEvaluator(TR::Node *node, TR::CodeGenerator *cg);
static TR::Register *vicmpanyleEvaluator(TR::Node *node, TR::CodeGenerator *cg);
static TR::Register *vnotEvaluator(TR::Node *node, TR::CodeGenerator *cg);
static TR::Register *vbitselectEvaluator(TR::Node *node, TR::CodeGenerator *cg);
static TR::Register *vpermEvaluator(TR::Node *node, TR::CodeGenerator *cg);
Expand Down
36 changes: 0 additions & 36 deletions compiler/arm/codegen/OMRTreeEvaluator.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1465,42 +1465,6 @@ OMR::ARM::TreeEvaluator::vicmpleEvaluator(TR::Node *node, TR::CodeGenerator *cg)
return TR::TreeEvaluator::unImpOpEvaluator(node, cg);
}

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

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

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

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

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

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

TR::Register*
OMR::ARM::TreeEvaluator::vnotEvaluator(TR::Node *node, TR::CodeGenerator *cg)
{
Expand Down
6 changes: 0 additions & 6 deletions compiler/arm/codegen/OMRTreeEvaluator.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -294,12 +294,6 @@ class OMR_EXTENSIBLE TreeEvaluator: public OMR::TreeEvaluator
static TR::Register *vicmpgeEvaluator(TR::Node *node, TR::CodeGenerator *cg);
static TR::Register *vicmpltEvaluator(TR::Node *node, TR::CodeGenerator *cg);
static TR::Register *vicmpleEvaluator(TR::Node *node, TR::CodeGenerator *cg);
static TR::Register *vicmpanyeqEvaluator(TR::Node *node, TR::CodeGenerator *cg);
static TR::Register *vicmpanyneEvaluator(TR::Node *node, TR::CodeGenerator *cg);
static TR::Register *vicmpanygtEvaluator(TR::Node *node, TR::CodeGenerator *cg);
static TR::Register *vicmpanygeEvaluator(TR::Node *node, TR::CodeGenerator *cg);
static TR::Register *vicmpanyltEvaluator(TR::Node *node, TR::CodeGenerator *cg);
static TR::Register *vicmpanyleEvaluator(TR::Node *node, TR::CodeGenerator *cg);
static TR::Register *vnotEvaluator(TR::Node *node, TR::CodeGenerator *cg);
static TR::Register *vbitselectEvaluator(TR::Node *node, TR::CodeGenerator *cg);
static TR::Register *vpermEvaluator(TR::Node *node, TR::CodeGenerator *cg);
Expand Down
96 changes: 0 additions & 96 deletions compiler/il/OMROpcodes.enum
Original file line number Diff line number Diff line change
Expand Up @@ -6275,102 +6275,6 @@ OPCODE_MACRO(\
/* .ifCompareOpCode = */ TR::BadILOp, \
/* .description = vector integer compare less equal */ \
)
OPCODE_MACRO(\
/* .opcode = */ vicmpanyeq, \
/* .name = */ "vicmpanyeq", \
/* .properties1 = */ 0, \
/* .properties2 = */ 0, \
/* .properties3 = */ 0, \
/* .properties4 = */ 0, \
/* .dataType = */ TR::Int32, \
/* .typeProperties = */ ILTypeProp::Size_4 | ILTypeProp::Unsigned, \
/* .childProperties = */ TWO_SAME_CHILD(ILChildProp::UnspecifiedChildType), \
/* .swapChildrenOpCode = */ TR::BadILOp, \
/* .reverseBranchOpCode = */ TR::BadILOp, \
/* .booleanCompareOpCode = */ TR::BadILOp, \
/* .ifCompareOpCode = */ TR::BadILOp, \
/* .description = vector integer any equal */ \
)
OPCODE_MACRO(\
/* .opcode = */ vicmpanyne, \
/* .name = */ "vicmpanyne", \
/* .properties1 = */ 0, \
/* .properties2 = */ 0, \
/* .properties3 = */ 0, \
/* .properties4 = */ 0, \
/* .dataType = */ TR::Int32, \
/* .typeProperties = */ ILTypeProp::Size_4 | ILTypeProp::Unsigned, \
/* .childProperties = */ TWO_SAME_CHILD(ILChildProp::UnspecifiedChildType), \
/* .swapChildrenOpCode = */ TR::BadILOp, \
/* .reverseBranchOpCode = */ TR::BadILOp, \
/* .booleanCompareOpCode = */ TR::BadILOp, \
/* .ifCompareOpCode = */ TR::BadILOp, \
/* .description = vector integer any not equal */ \
)
OPCODE_MACRO(\
/* .opcode = */ vicmpanygt, \
/* .name = */ "vicmpanygt", \
/* .properties1 = */ 0, \
/* .properties2 = */ 0, \
/* .properties3 = */ 0, \
/* .properties4 = */ 0, \
/* .dataType = */ TR::Int32, \
/* .typeProperties = */ ILTypeProp::Size_4 | ILTypeProp::Unsigned, \
/* .childProperties = */ TWO_SAME_CHILD(ILChildProp::UnspecifiedChildType), \
/* .swapChildrenOpCode = */ TR::BadILOp, \
/* .reverseBranchOpCode = */ TR::BadILOp, \
/* .booleanCompareOpCode = */ TR::BadILOp, \
/* .ifCompareOpCode = */ TR::BadILOp, \
/* .description = vector integer any greater than */ \
)
OPCODE_MACRO(\
/* .opcode = */ vicmpanyge, \
/* .name = */ "vicmpanyge", \
/* .properties1 = */ 0, \
/* .properties2 = */ 0, \
/* .properties3 = */ 0, \
/* .properties4 = */ 0, \
/* .dataType = */ TR::Int32, \
/* .typeProperties = */ ILTypeProp::Size_4 | ILTypeProp::Unsigned, \
/* .childProperties = */ TWO_SAME_CHILD(ILChildProp::UnspecifiedChildType), \
/* .swapChildrenOpCode = */ TR::BadILOp, \
/* .reverseBranchOpCode = */ TR::BadILOp, \
/* .booleanCompareOpCode = */ TR::BadILOp, \
/* .ifCompareOpCode = */ TR::BadILOp, \
/* .description = vector integer any greater equal */ \
)
OPCODE_MACRO(\
/* .opcode = */ vicmpanylt, \
/* .name = */ "vicmpanylt", \
/* .properties1 = */ 0, \
/* .properties2 = */ 0, \
/* .properties3 = */ 0, \
/* .properties4 = */ 0, \
/* .dataType = */ TR::Int32, \
/* .typeProperties = */ ILTypeProp::Size_4 | ILTypeProp::Unsigned, \
/* .childProperties = */ TWO_SAME_CHILD(ILChildProp::UnspecifiedChildType), \
/* .swapChildrenOpCode = */ TR::BadILOp, \
/* .reverseBranchOpCode = */ TR::BadILOp, \
/* .booleanCompareOpCode = */ TR::BadILOp, \
/* .ifCompareOpCode = */ TR::BadILOp, \
/* .description = vector integer any less than */ \
)
OPCODE_MACRO(\
/* .opcode = */ vicmpanyle, \
/* .name = */ "vicmpanyle", \
/* .properties1 = */ 0, \
/* .properties2 = */ 0, \
/* .properties3 = */ 0, \
/* .properties4 = */ 0, \
/* .dataType = */ TR::Int32, \
/* .typeProperties = */ ILTypeProp::Size_4 | ILTypeProp::Unsigned, \
/* .childProperties = */ TWO_SAME_CHILD(ILChildProp::UnspecifiedChildType), \
/* .swapChildrenOpCode = */ TR::BadILOp, \
/* .reverseBranchOpCode = */ TR::BadILOp, \
/* .booleanCompareOpCode = */ TR::BadILOp, \
/* .ifCompareOpCode = */ TR::BadILOp, \
/* .description = vector integer any less equal */ \
)
OPCODE_MACRO(\
/* .opcode = */ vnot, \
/* .name = */ "vnot", \
Expand Down
6 changes: 0 additions & 6 deletions compiler/optimizer/OMRSimplifierTable.enum
Original file line number Diff line number Diff line change
Expand Up @@ -414,12 +414,6 @@
#define vicmpgeSimplifierHandler dftSimplifier
#define vicmpltSimplifierHandler dftSimplifier
#define vicmpleSimplifierHandler dftSimplifier
#define vicmpanyeqSimplifierHandler dftSimplifier
#define vicmpanyneSimplifierHandler dftSimplifier
#define vicmpanygtSimplifierHandler dftSimplifier
#define vicmpanygeSimplifierHandler dftSimplifier
#define vicmpanyltSimplifierHandler dftSimplifier
#define vicmpanyleSimplifierHandler dftSimplifier
#define vnotSimplifierHandler dftSimplifier
#define vbitselectSimplifierHandler dftSimplifier
#define vpermSimplifierHandler dftSimplifier
Expand Down
6 changes: 0 additions & 6 deletions compiler/optimizer/ValuePropagationTable.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -556,12 +556,6 @@ TR::Node * constrainLongBitCount(OMR::ValuePropagation *vp, TR::Node *node);
#define vicmpgeVPHandler constrainChildren
#define vicmpltVPHandler constrainChildren
#define vicmpleVPHandler constrainChildren
#define vicmpanyeqVPHandler constrainChildren
#define vicmpanyneVPHandler constrainChildren
#define vicmpanygtVPHandler constrainChildren
#define vicmpanygeVPHandler constrainChildren
#define vicmpanyltVPHandler constrainChildren
#define vicmpanyleVPHandler constrainChildren
#define vnotVPHandler constrainChildren
#define vbitselectVPHandler constrainChildren
#define vpermVPHandler constrainChildren
Expand Down
66 changes: 0 additions & 66 deletions compiler/p/codegen/OMRTreeEvaluator.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3799,72 +3799,6 @@ TR::Register *OMR::Power::TreeEvaluator::vl2vdEvaluator(TR::Node *node, TR::Code
return TR::TreeEvaluator::inlineVectorUnaryOp(node, cg, TR::InstOpCode::xvcvsxddp);
}

// Branch if all are true in VMX
#define PPCOp_bva TR::InstOpCode::blt
// Branch if at least one is false in VMX
#define PPCOp_bvna TR::InstOpCode::bge
// Branch if none is true in VMX
#define PPCOp_bvn TR::InstOpCode::beq
// Branch if at least one is true in VMX
#define PPCOp_bvnn TR::InstOpCode::bne


TR::Register *OMR::Power::TreeEvaluator::vicmpanyHelper(TR::Node *node, TR::CodeGenerator *cg, TR::InstOpCode::Mnemonic op, int nBit)
{
TR::Node *firstChild = node->getFirstChild();
TR::Node *secondChild = node->getSecondChild();
TR::Register *lhsReg = NULL, *rhsReg = NULL;

lhsReg = cg->evaluate(firstChild);
rhsReg = cg->evaluate(secondChild);

TR::Register *tempReg = cg->allocateRegister(TR_VRF);
TR::Register *resReg = cg->allocateRegister(TR_GPR);
node->setRegister(resReg);

generateTrg1Src2Instruction(cg, op, node, tempReg, lhsReg, rhsReg);
generateTrg1ImmInstruction(cg, TR::InstOpCode::mfocrf, node, resReg, 0x2);
generateTrg1Src1Imm2Instruction(cg, TR::InstOpCode::rlwinm, node, resReg, resReg, nBit, 0x1);
generateTrg1Src1ImmInstruction(cg, TR::InstOpCode::subfic, node, resReg, resReg, 1);

cg->stopUsingRegister(tempReg);
cg->decReferenceCount(firstChild);
cg->decReferenceCount(secondChild);

return resReg;

}

TR::Register *OMR::Power::TreeEvaluator::vicmpanyeqEvaluator(TR::Node *node, TR::CodeGenerator *cg)
{
return TR::TreeEvaluator::vicmpanyHelper(node, cg, TR::InstOpCode::vcmpequw_r, 27);
}

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

TR::Register *OMR::Power::TreeEvaluator::vicmpanygtEvaluator(TR::Node *node, TR::CodeGenerator *cg)
{
return TR::TreeEvaluator::vicmpanyHelper(node, cg, TR::InstOpCode::vcmpgtsw_r, 27);
}
TR::Register *OMR::Power::TreeEvaluator::vicmpanygeEvaluator(TR::Node *node, TR::CodeGenerator *cg)
{
node->swapChildren();
return TR::TreeEvaluator::vicmpanyHelper(node, cg, TR::InstOpCode::vcmpgtsw_r, 25);
}
TR::Register *OMR::Power::TreeEvaluator::vicmpanyltEvaluator(TR::Node *node, TR::CodeGenerator *cg)
{
node->swapChildren();
return TR::TreeEvaluator::vicmpanyHelper(node, cg, TR::InstOpCode::vcmpgtsw_r, 27);
}
TR::Register *OMR::Power::TreeEvaluator::vicmpanyleEvaluator(TR::Node *node, TR::CodeGenerator *cg)
{
return TR::TreeEvaluator::vicmpanyHelper(node, cg, TR::InstOpCode::vcmpgtsw_r, 25);
}


static void inlineArrayCopy(TR::Node *node, int64_t byteLen, TR::Register *src, TR::Register *dst, TR::CodeGenerator *cg)
{
if (byteLen == 0)
Expand Down
7 changes: 0 additions & 7 deletions compiler/p/codegen/OMRTreeEvaluator.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -630,13 +630,6 @@ class OMR_EXTENSIBLE TreeEvaluator: public OMR::TreeEvaluator
static TR::Register *vicmpltEvaluator(TR::Node *node, TR::CodeGenerator *cg);
static TR::Register *vicmpgeEvaluator(TR::Node *node, TR::CodeGenerator *cg);
static TR::Register *vicmpleEvaluator(TR::Node *node, TR::CodeGenerator *cg);
static TR::Register *vicmpanyHelper(TR::Node *node, TR::CodeGenerator *cg, TR::InstOpCode::Mnemonic op, int nBit);
static TR::Register *vicmpanyeqEvaluator(TR::Node *node, TR::CodeGenerator *cg);
static TR::Register *vicmpanyneEvaluator(TR::Node *node, TR::CodeGenerator *cg);
static TR::Register *vicmpanygtEvaluator(TR::Node *node, TR::CodeGenerator *cg);
static TR::Register *vicmpanygeEvaluator(TR::Node *node, TR::CodeGenerator *cg);
static TR::Register *vicmpanyltEvaluator(TR::Node *node, TR::CodeGenerator *cg);
static TR::Register *vicmpanyleEvaluator(TR::Node *node, TR::CodeGenerator *cg);
static TR::Register *vigetelemEvaluator(TR::Node *node, TR::CodeGenerator *cg);
static TR::Register *getvelemEvaluator(TR::Node *node, TR::CodeGenerator *cg);
static TR::Register *getvelemDirectMoveHelper(TR::Node *node, TR::CodeGenerator *cg);
Expand Down
36 changes: 0 additions & 36 deletions compiler/riscv/codegen/OMRTreeEvaluator.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1305,42 +1305,6 @@ OMR::RV::TreeEvaluator::vicmpleEvaluator(TR::Node *node, TR::CodeGenerator *cg)
return TR::TreeEvaluator::unImpOpEvaluator(node, cg);
}

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

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

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

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

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

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

TR::Register*
OMR::RV::TreeEvaluator::vnotEvaluator(TR::Node *node, TR::CodeGenerator *cg)
{
Expand Down
6 changes: 0 additions & 6 deletions compiler/riscv/codegen/OMRTreeEvaluator.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -312,12 +312,6 @@ class OMR_EXTENSIBLE TreeEvaluator: public OMR::TreeEvaluator
static TR::Register *vicmpgeEvaluator(TR::Node *node, TR::CodeGenerator *cg);
static TR::Register *vicmpltEvaluator(TR::Node *node, TR::CodeGenerator *cg);
static TR::Register *vicmpleEvaluator(TR::Node *node, TR::CodeGenerator *cg);
static TR::Register *vicmpanyeqEvaluator(TR::Node *node, TR::CodeGenerator *cg);
static TR::Register *vicmpanyneEvaluator(TR::Node *node, TR::CodeGenerator *cg);
static TR::Register *vicmpanygtEvaluator(TR::Node *node, TR::CodeGenerator *cg);
static TR::Register *vicmpanygeEvaluator(TR::Node *node, TR::CodeGenerator *cg);
static TR::Register *vicmpanyltEvaluator(TR::Node *node, TR::CodeGenerator *cg);
static TR::Register *vicmpanyleEvaluator(TR::Node *node, TR::CodeGenerator *cg);
static TR::Register *vnotEvaluator(TR::Node *node, TR::CodeGenerator *cg);
static TR::Register *vbitselectEvaluator(TR::Node *node, TR::CodeGenerator *cg);
static TR::Register *vpermEvaluator(TR::Node *node, TR::CodeGenerator *cg);
Expand Down
Loading

0 comments on commit 0597110

Please sign in to comment.