@@ -333,7 +333,7 @@ bool TR_SPMDKernelParallelizer::visitTreeTopToSIMDize(TR::TreeTop *tt, TR_SPMDKe
333
333
TR::SymbolReference *symRef = node->getSymbolReference ();
334
334
TR::SymbolReference *vecSymRef = pSPMDInfo->getVectorSymRef (symRef);
335
335
TR::ILOpCode scalarOp = node->getOpCode ();
336
- TR::ILOpCodes vectorOpCode = TR::ILOpCode::convertScalarToVector (scalarOp.getOpCodeValue ());
336
+ TR::ILOpCodes vectorOpCode = TR::ILOpCode::convertScalarToVector (scalarOp.getOpCodeValue (), VECTOR_LENGTH );
337
337
338
338
if (isCheckMode && vectorOpCode == TR::BadILOp)
339
339
return false ;
@@ -431,7 +431,7 @@ bool TR_SPMDKernelParallelizer::visitTreeTopToSIMDize(TR::TreeTop *tt, TR_SPMDKe
431
431
}
432
432
433
433
TR::ILOpCode scalarOp = node->getOpCode ();
434
- TR::ILOpCodes vectorOpCode = TR::ILOpCode::convertScalarToVector (scalarOp.getOpCodeValue ());
434
+ TR::ILOpCodes vectorOpCode = TR::ILOpCode::convertScalarToVector (scalarOp.getOpCodeValue (), VECTOR_LENGTH );
435
435
TR_ASSERT (vectorOpCode != TR::BadILOp, " BAD IL Opcode to be assigned during transformation" );
436
436
437
437
dupNode->setSymbolReference (vecSymRef);
@@ -519,7 +519,7 @@ bool TR_SPMDKernelParallelizer::visitTreeTopToSIMDize(TR::TreeTop *tt, TR_SPMDKe
519
519
}
520
520
521
521
TR::ILOpCode scalarOp = node->getOpCode ();
522
- TR::ILOpCodes vectorOpCode = TR::ILOpCode::convertScalarToVector (scalarOp.getOpCodeValue ());
522
+ TR::ILOpCodes vectorOpCode = TR::ILOpCode::convertScalarToVector (scalarOp.getOpCodeValue (), VECTOR_LENGTH );
523
523
524
524
if (isCheckMode && vectorOpCode == TR::BadILOp)
525
525
return false ;
@@ -657,7 +657,7 @@ bool TR_SPMDKernelParallelizer::visitNodeToSIMDize(TR::Node *parent, int32_t chi
657
657
658
658
TR::SymbolReference *piv = pSPMDInfo->getInductionVariableSymRef ();
659
659
TR::ILOpCode scalarOp = node->getOpCode ();
660
- TR::ILOpCodes vectorOpCode = TR::ILOpCode::convertScalarToVector (scalarOp.getOpCodeValue ());
660
+ TR::ILOpCodes vectorOpCode = TR::ILOpCode::convertScalarToVector (scalarOp.getOpCodeValue (), VECTOR_LENGTH );
661
661
int32_t pivStride = INVALID_STRIDE;
662
662
663
663
if (trace)
@@ -732,8 +732,11 @@ bool TR_SPMDKernelParallelizer::visitNodeToSIMDize(TR::Node *parent, int32_t chi
732
732
// confirm platform supports vectorizing PIV uses
733
733
bool platformSupport = comp->cg ()->getSupportsOpCodeForAutoSIMD (TR::vstore, node->getDataType (), VECTOR_LENGTH);
734
734
platformSupport = platformSupport && comp->cg ()->getSupportsOpCodeForAutoSIMD (TR::vsetelem, node->getDataType (), VECTOR_LENGTH);
735
- platformSupport = platformSupport && comp->cg ()->getSupportsOpCodeForAutoSIMD (TR::vadd, node->getDataType (), VECTOR_LENGTH);
736
- platformSupport = platformSupport && comp->cg ()->getSupportsOpCodeForAutoSIMD (TR::vsplats, node->getDataType (), VECTOR_LENGTH);
735
+
736
+ TR::ILOpCodes vectorAddOpCode = TR::ILOpCode::createVectorOpCode (OMR::vadd, TR::DataType::createVectorType ((TR::DataTypes)node->getDataType ().getDataType (), VECTOR_LENGTH)).getOpCodeValue ();
737
+
738
+ platformSupport = platformSupport && comp->cg ()->getSupportsOpCodeForAutoSIMD (vectorAddOpCode, node->getDataType (), VECTOR_LENGTH);
739
+ platformSupport = platformSupport && comp->cg ()->getSupportsOpCodeForAutoSIMD (TR::vsplats, node->getDataType (), VECTOR_LENGTH);
737
740
738
741
if (trace && platformSupport)
739
742
traceMsg (comp, " Found use of induction variable at node [%p]\n " , node);
@@ -821,7 +824,9 @@ bool TR_SPMDKernelParallelizer::visitNodeToSIMDize(TR::Node *parent, int32_t chi
821
824
vsetelem3Node->setAndIncChild (1 , TR::Node::create (TR::iconst, 0 , 3 ));
822
825
vsetelem3Node->setAndIncChild (2 , TR::Node::create (TR::iconst, 0 , 3 ));
823
826
824
- TR::Node *vaddNode = TR::Node::create (TR::vadd, 2 );
827
+ TR::ILOpCodes vectorAddOpCode = TR::ILOpCode::createVectorOpCode (OMR::vadd, TR::DataType::createVectorType (TR::Int32, VECTOR_LENGTH)).getOpCodeValue ();
828
+
829
+ TR::Node *vaddNode = TR::Node::create (vectorAddOpCode, 2 );
825
830
vaddNode->setAndIncChild (0 , splatsNode);
826
831
vaddNode->setAndIncChild (1 , vsetelem3Node);
827
832
0 commit comments