Skip to content

Commit

Permalink
Implement vadd for types ShortVector and ByteVector of size 128
Browse files Browse the repository at this point in the history
Signed-off-by: midronij <jackie.midroni@ibm.com>
  • Loading branch information
midronij committed Nov 10, 2021
1 parent 3e22bee commit 49d98ce
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 2 deletions.
2 changes: 2 additions & 0 deletions compiler/p/codegen/OMRCodeGenerator.cpp
Expand Up @@ -1773,6 +1773,8 @@ bool OMR::Power::CodeGenerator::getSupportsOpCodeForAutoSIMD(TR::ILOpCode opcode
switch (opcode.getOpCodeValue())
{
case TR::vadd:
if (dt == TR::Int16 || dt == TR::Int8)
return true;
case TR::vsub:
case TR::vmul:
case TR::vdiv:
Expand Down
6 changes: 4 additions & 2 deletions compiler/p/codegen/OMRTreeEvaluator.cpp
Expand Up @@ -3388,9 +3388,11 @@ TR::Register *OMR::Power::TreeEvaluator::vaddEvaluator(TR::Node *node, TR::CodeG
{
switch(node->getDataType())
{
case TR::VectorInt8: return TR::TreeEvaluator::inlineVectorBinaryOp(node, cg, TR::InstOpCode::vaddubm);
case TR::VectorInt16: return TR::TreeEvaluator::inlineVectorBinaryOp(node, cg, TR::InstOpCode::vadduhm);
case TR::VectorInt32: return TR::TreeEvaluator::inlineVectorBinaryOp(node, cg, TR::InstOpCode::vadduwm);
case TR::VectorInt64: return TR::TreeEvaluator::inlineVectorBinaryOp(node, cg, TR::InstOpCode::vaddudm);
case TR::VectorFloat: return TR::TreeEvaluator::inlineVectorBinaryOp(node, cg, TR::InstOpCode::xvaddsp);
case TR::VectorFloat: return TR::TreeEvaluator::inlineVectorBinaryOp(node, cg, TR::InstOpCode::xvaddsp);
case TR::VectorDouble: return TR::TreeEvaluator::inlineVectorBinaryOp(node, cg, TR::InstOpCode::xvadddp);
default: TR_ASSERT(false, "unrecognized vector type %s\n", node->getDataType().toString()); return NULL;
}
Expand All @@ -3403,7 +3405,7 @@ TR::Register *OMR::Power::TreeEvaluator::vsubEvaluator(TR::Node *node, TR::CodeG
{
case TR::VectorInt32: return TR::TreeEvaluator::inlineVectorBinaryOp(node, cg, TR::InstOpCode::vsubuwm);
case TR::VectorInt64: return TR::TreeEvaluator::inlineVectorBinaryOp(node, cg, TR::InstOpCode::vsubudm);
case TR::VectorFloat: return TR::TreeEvaluator::inlineVectorBinaryOp(node, cg, TR::InstOpCode::xvsubsp);
case TR::VectorFloat: return TR::TreeEvaluator::inlineVectorBinaryOp(node, cg, TR::InstOpCode::xvsubsp);
case TR::VectorDouble: return TR::TreeEvaluator::inlineVectorBinaryOp(node, cg, TR::InstOpCode::xvsubdp);
default: TR_ASSERT(false, "unrecognized vector type %s\n", node->getDataType().toString()); return NULL;
}
Expand Down

0 comments on commit 49d98ce

Please sign in to comment.