Skip to content

Commit 1e3b9dc

Browse files
committed
Implement new vector opcodes
- Handle new vector opcodes introduced by OMR
1 parent 3991785 commit 1e3b9dc

16 files changed

+62
-104
lines changed

runtime/compiler/aarch64/codegen/J9TreeEvaluator.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@
5353
*/
5454
extern void TEMPORARY_initJ9ARM64TreeEvaluatorTable(TR::CodeGenerator *cg)
5555
{
56-
TR_TreeEvaluatorFunctionPointer *tet = cg->getTreeEvaluatorTable();
56+
OMR::TreeEvaluatorFunctionPointerTable tet = cg->getTreeEvaluatorTable();
5757

5858
tet[TR::awrtbar] = TR::TreeEvaluator::awrtbarEvaluator;
5959
tet[TR::awrtbari] = TR::TreeEvaluator::awrtbariEvaluator;

runtime/compiler/arm/codegen/J9TreeEvaluator.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*******************************************************************************
2-
* Copyright (c) 2000, 2021 IBM Corp. and others
2+
* Copyright (c) 2000, 2022 IBM Corp. and others
33
*
44
* This program and the accompanying materials are made available under
55
* the terms of the Eclipse Public License 2.0 which accompanies this
@@ -45,7 +45,7 @@
4545
*/
4646
extern void TEMPORARY_initJ9ARMTreeEvaluatorTable(TR::CodeGenerator *cg)
4747
{
48-
TR_TreeEvaluatorFunctionPointer *tet = cg->getTreeEvaluatorTable();
48+
OMR::TreeEvaluatorFunctionPointerTable tet = cg->getTreeEvaluatorTable();
4949

5050
tet[TR::ResolveCHK] = TR::TreeEvaluator::resolveCHKEvaluator;
5151
tet[TR::monexitfence] = TR::TreeEvaluator::monexitfenceEvaluator;

runtime/compiler/codegen/CodeGenGPU.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@
4646

4747
static const char* getOpCodeName(TR::ILOpCodes opcode) {
4848

49-
TR_ASSERT(opcode < TR::NumIlOps, "Wrong opcode");
49+
TR_ASSERT(opcode < ILOpCode::NumAllIlOps, "Wrong opcode");
5050

5151
switch(opcode)
5252
{

runtime/compiler/il/ILOpCodesEnum.hpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*******************************************************************************
2-
* Copyright (c) 2000, 2020 IBM Corp. and others
2+
* Copyright (c) 2000, 2022 IBM Corp. and others
33
*
44
* This program and the accompanying materials are made available under
55
* the terms of the Eclipse Public License 2.0 which accompanies this
@@ -25,7 +25,7 @@
2525

2626
#include "compiler/il/OMRILOpCodesEnum.hpp"
2727

28-
FirstJ9Op = LastOMROp + 1,
28+
FirstJ9Op = LastScalarOMROp + 1,
2929
LastJ9Op = BCDCHK,
3030
FirstTROp = FirstOMROp,
3131
LastTROp = LastJ9Op,

runtime/compiler/il/ILOps.hpp

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*******************************************************************************
2-
* Copyright (c) 2000, 2016 IBM Corp. and others
2+
* Copyright (c) 2000, 2022 IBM Corp. and others
33
*
44
* This program and the accompanying materials are made available under
55
* the terms of the Eclipse Public License 2.0 which accompanies this
@@ -28,15 +28,15 @@
2828
namespace TR
2929
{
3030

31-
class ILOpCode : public J9::ILOpCode
31+
class ILOpCode : public J9::ILOpCode
3232
{
33-
public:
33+
public:
3434
ILOpCode() : J9::ILOpCode() {}
3535

3636
ILOpCode(TR::ILOpCodes opCode)
3737
: J9::ILOpCode(opCode)
3838
{
39-
TR_ASSERT(opCode <= TR::LastTROp, "assertion failure");
39+
TR_ASSERT(opCode < NumAllILOps, "assertion failure");
4040
}
4141

4242

runtime/compiler/il/J9IL.cpp

+5-5
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222

2323
#include "il/IL.hpp"
2424
#include "il/ILOpCodes.hpp"
25+
#include "il/OMRILOps.hpp"
2526
#include "il/DataTypes.hpp"
2627
#include "infra/Assert.hpp"
2728

@@ -195,8 +196,7 @@ static_assert(TR::LastJ9Type - TR::FirstJ9Type + 1 == (sizeof(J9::IL::opCodesFor
195196
TR::ILOpCodes
196197
J9::IL::opCodeForCorrespondingIndirectLoad(TR::ILOpCodes loadOpCode)
197198
{
198-
199-
if (loadOpCode <= TR::LastOMROp)
199+
if (OMR::ILOpCode::isOMROpCode(loadOpCode))
200200
{
201201
return OMR::IL::opCodeForCorrespondingIndirectLoad(loadOpCode);
202202
}
@@ -223,7 +223,7 @@ TR::ILOpCodes
223223
J9::IL::opCodeForCorrespondingIndirectStore(TR::ILOpCodes storeOpCode)
224224
{
225225

226-
if (storeOpCode <= TR::LastOMROp)
226+
if (OMR::ILOpCode::isOMROpCode(storeOpCode))
227227
{
228228
return OMR::IL::opCodeForCorrespondingIndirectStore(storeOpCode);
229229
}
@@ -249,7 +249,7 @@ TR::ILOpCodes
249249
J9::IL::opCodeForCorrespondingDirectLoad(TR::ILOpCodes loadOpCode)
250250
{
251251

252-
if (loadOpCode <= TR::LastOMROp)
252+
if (OMR::ILOpCode::isOMROpCode(loadOpCode))
253253
{
254254
return OMR::IL::opCodeForCorrespondingDirectLoad(loadOpCode);
255255
}
@@ -276,7 +276,7 @@ TR::ILOpCodes
276276
J9::IL::opCodeForCorrespondingDirectStore(TR::ILOpCodes storeOpCode)
277277
{
278278

279-
if (storeOpCode <= TR::LastOMROp)
279+
if (OMR::ILOpCode::isOMROpCode(storeOpCode))
280280
{
281281
return OMR::IL::opCodeForCorrespondingDirectStore(storeOpCode);
282282
}

runtime/compiler/optimizer/IdiomRecognition.cpp

+7-7
Original file line numberDiff line numberDiff line change
@@ -133,15 +133,15 @@ TR_CISCNode::initializeMembers(uint32_t opc, uint16_t id, int16_t dagId, uint16_
133133
bool
134134
TR_CISCNode::isEqualOpc(TR_CISCNode *t)
135135
{
136-
//TR_ASSERT((int)TR::NumIlOps == TR_variable, "assumption for reducing compilation time");
137-
static_assert((int)TR::NumIlOps == TR_variable,
136+
//TR_ASSERT((int)OMR::ILOpCode::NumAllIlOps == TR_variable, "assumption for reducing compilation time");
137+
static_assert((int)OMR::ILOpCode::NumAllIlOps == TR_variable,
138138
"assumption for reducing compilation time");
139139

140140
int32_t pOpc = _opcode;
141141
int32_t tOpc = t->_opcode;
142142

143143
if (pOpc == tOpc) return true;
144-
else if (pOpc > TR::NumIlOps) // Please see the above assumption
144+
else if (pOpc > OMR::ILOpCode::NumAllIlOps) // Please see the above assumption
145145
{
146146
switch(pOpc)
147147
{
@@ -195,7 +195,7 @@ TR_CISCNode::isEqualOpc(TR_CISCNode *t)
195195
const char *
196196
TR_CISCNode::getName(TR_CISCOps op, TR::Compilation * comp)
197197
{
198-
if (op < (TR_CISCOps)TR::NumIlOps)
198+
if (op < (TR_CISCOps)OMR::ILOpCode::NumAllIlOps)
199199
{
200200
TR::ILOpCode opCode;
201201
opCode.setOpCodeValue((enum TR::ILOpCodes)op);
@@ -765,7 +765,7 @@ TR_CISCNode::checkParentsNonRec(TR_CISCNode *p, TR_CISCNode *t, int8_t level, TR
765765
void
766766
TR_CISCNode::reverseBranchOpCodes()
767767
{
768-
TR_ASSERT(_opcode < TR::NumIlOps && _ilOpCode.isIf(), "error: not isIf");
768+
TR_ASSERT(_opcode < OMR::ILOpCode::NumAllIlOps && _ilOpCode.isIf(), "error: not isIf");
769769
TR_ASSERT(_numSuccs == 2, "error: _numSuccs != 2");
770770
TR_CISCNode *swap = _succs[0];
771771
_succs[0] = _succs[1];
@@ -972,7 +972,7 @@ TR_CISCGraphAspectsWithCounts::setAspectsByOpcode(int opc)
972972
set(iadd);
973973
break;
974974
default:
975-
if (opc < TR::NumIlOps)
975+
if (opc < OMR::ILOpCode::NumAllIlOps)
976976
{
977977
TR::ILOpCode opCode;
978978
opCode.setOpCodeValue((enum TR::ILOpCodes)opc);
@@ -7735,7 +7735,7 @@ TR_CISCTransformer::embeddingHasConflictingBranches()
77357735
uint32_t op = pn->getOpcode();
77367736
bool isIf =
77377737
op == (uint32_t)TR_ifcmpall
7738-
|| (op < (uint32_t)TR::NumIlOps && pn->getIlOpCode().isIf());
7738+
|| (op < (uint32_t)OMR::ILOpCode::NumAllIlOps && pn->getIlOpCode().isIf());
77397739

77407740
if (!isIf)
77417741
continue;

runtime/compiler/optimizer/IdiomRecognition.hpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ namespace TR { class TreeTop; }
5757

5858
typedef enum
5959
{
60-
TR_variable = TR::NumIlOps,
60+
TR_variable = OMR::ILOpCode::NumAllIlOps,
6161
TR_booltable,
6262
TR_entrynode,
6363
TR_exitnode,
@@ -417,7 +417,7 @@ class TR_CISCNode
417417
void setOpcode(uint32_t opc)
418418
{
419419
_opcode = opc;
420-
_ilOpCode.setOpCodeValue(opc < TR::NumIlOps ? (TR::ILOpCodes)opc : TR::BadILOp);
420+
_ilOpCode.setOpCodeValue(opc < OMR::ILOpCode::NumAllIlOps ? (TR::ILOpCodes)opc : TR::BadILOp);
421421
}
422422
uint32_t _opcode; // TR::ILOpCodes enum
423423
TR::ILOpCode _ilOpCode;

runtime/compiler/optimizer/SPMDParallelizer.cpp

+12-7
Original file line numberDiff line numberDiff line change
@@ -333,7 +333,7 @@ bool TR_SPMDKernelParallelizer::visitTreeTopToSIMDize(TR::TreeTop *tt, TR_SPMDKe
333333
TR::SymbolReference *symRef = node->getSymbolReference();
334334
TR::SymbolReference *vecSymRef = pSPMDInfo->getVectorSymRef(symRef);
335335
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);
337337

338338
if (isCheckMode && vectorOpCode == TR::BadILOp)
339339
return false;
@@ -431,7 +431,7 @@ bool TR_SPMDKernelParallelizer::visitTreeTopToSIMDize(TR::TreeTop *tt, TR_SPMDKe
431431
}
432432

433433
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);
435435
TR_ASSERT(vectorOpCode != TR::BadILOp, "BAD IL Opcode to be assigned during transformation");
436436

437437
dupNode->setSymbolReference(vecSymRef);
@@ -519,7 +519,7 @@ bool TR_SPMDKernelParallelizer::visitTreeTopToSIMDize(TR::TreeTop *tt, TR_SPMDKe
519519
}
520520

521521
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);
523523

524524
if (isCheckMode && vectorOpCode == TR::BadILOp)
525525
return false;
@@ -657,7 +657,7 @@ bool TR_SPMDKernelParallelizer::visitNodeToSIMDize(TR::Node *parent, int32_t chi
657657

658658
TR::SymbolReference *piv = pSPMDInfo->getInductionVariableSymRef();
659659
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);
661661
int32_t pivStride = INVALID_STRIDE;
662662

663663
if (trace)
@@ -732,8 +732,11 @@ bool TR_SPMDKernelParallelizer::visitNodeToSIMDize(TR::Node *parent, int32_t chi
732732
// confirm platform supports vectorizing PIV uses
733733
bool platformSupport = comp->cg()->getSupportsOpCodeForAutoSIMD(TR::vstore, node->getDataType(), VECTOR_LENGTH);
734734
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);
737740

738741
if (trace && platformSupport)
739742
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
821824
vsetelem3Node->setAndIncChild(1, TR::Node::create(TR::iconst, 0, 3));
822825
vsetelem3Node->setAndIncChild(2, TR::Node::create(TR::iconst, 0, 3));
823826

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);
825830
vaddNode->setAndIncChild(0, splatsNode);
826831
vaddNode->setAndIncChild(1, vsetelem3Node);
827832

runtime/compiler/optimizer/SPMDPreCheck.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ bool SPMDPreCheck::isSPMDCandidate(TR::Compilation *comp, TR_RegionStructure *lo
7272

7373
if (opcode.isStore())
7474
{
75-
TR::ILOpCodes vectorOp = TR::ILOpCode::convertScalarToVector(opcode.getOpCodeValue());
75+
TR::ILOpCodes vectorOp = TR::ILOpCode::convertScalarToVector(opcode.getOpCodeValue(), VECTOR_LENGTH);
7676
if (vectorOp == TR::BadILOp)
7777
{
7878
if (trace)

runtime/compiler/optimizer/SimplifierTable.hpp

+4-3
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*******************************************************************************
2-
* Copyright (c) 2000, 2020 IBM Corp. and others
2+
* Copyright (c) 2000, 2022 IBM Corp. and others
33
*
44
* This program and the accompanying materials are made available under
55
* the terms of the Eclipse Public License 2.0 which accompanies this
@@ -30,9 +30,10 @@ namespace TR { class Simplifier; }
3030
#include "optimizer/OMRSimplifierHandlers.hpp"
3131
#include "optimizer/J9SimplifierHandlers.hpp"
3232

33-
typedef TR::Node *(* SimplifierPtr)(TR::Node *node, TR::Block *block, TR::Simplifier *s);
3433

35-
const SimplifierPtr simplifierOpts[TR::NumIlOps] =
34+
const SimplifierPtrTable simplifierOpts;
35+
36+
const SimplifierPtr SimplifierPtrTable::table[] =
3637
{
3738
#include "optimizer/J9SimplifierTable.enum"
3839
};

runtime/compiler/optimizer/VectorAPIExpansion.cpp

+11-7
Original file line numberDiff line numberDiff line change
@@ -1343,8 +1343,8 @@ TR::Node *TR_VectorAPIExpansion::naryIntrinsicHandler(TR_VectorAPIExpansion *opt
13431343
if (elementType == TR::Int8 || elementType == TR::Int16)
13441344
opType = TR::Int32;
13451345

1346-
TR::ILOpCodes scalarOpCode = ILOpcodeFromVectorAPIOpcode(vectorAPIOpcode, opType, true/*scalar*/);
1347-
TR::ILOpCodes vectorOpCode = ILOpcodeFromVectorAPIOpcode(vectorAPIOpcode, opType, false);
1346+
TR::ILOpCodes scalarOpCode = ILOpcodeFromVectorAPIOpcode(vectorAPIOpcode, opType, 0);
1347+
TR::ILOpCodes vectorOpCode = ILOpcodeFromVectorAPIOpcode(vectorAPIOpcode, opType, vectorLength);
13481348

13491349
if (scalarOpCode == TR::BadILOp)
13501350
if (opt->_trace) traceMsg(comp, "Unsupported opcode in node %p\n", node);
@@ -1502,8 +1502,8 @@ TR::Node *TR_VectorAPIExpansion::compareIntrinsicHandler(TR_VectorAPIExpansion *
15021502
if (elementType == TR::Int8 || elementType == TR::Int16)
15031503
opType = TR::Int32;
15041504

1505-
TR::ILOpCodes scalarOpCode = ILOpcodeFromVectorAPIOpcode(vectorAPIOpcode, opType, true/*scalar*/, true/*compare*/);
1506-
TR::ILOpCodes vectorOpCode = ILOpcodeFromVectorAPIOpcode(vectorAPIOpcode, opType, false/*vector*/, true/*compare*/);
1505+
TR::ILOpCodes scalarOpCode = ILOpcodeFromVectorAPIOpcode(vectorAPIOpcode, opType, 0, true/*compare*/);
1506+
TR::ILOpCodes vectorOpCode = ILOpcodeFromVectorAPIOpcode(vectorAPIOpcode, opType, vectorLength, true/*compare*/);
15071507

15081508
if (mode == checkVectorization || mode == doVectorization)
15091509
{
@@ -1539,8 +1539,10 @@ TR::Node *TR_VectorAPIExpansion::compareIntrinsicHandler(TR_VectorAPIExpansion *
15391539
5/*first operand*/, 2, useVcall);
15401540
}
15411541

1542-
TR::ILOpCodes TR_VectorAPIExpansion::ILOpcodeFromVectorAPIOpcode(int32_t vectorAPIOpCode, TR::DataType elementType, bool scalar, bool compare)
1542+
TR::ILOpCodes TR_VectorAPIExpansion::ILOpcodeFromVectorAPIOpcode(int32_t vectorAPIOpCode, TR::DataType elementType, vec_sz_t bitsLength, bool compare)
15431543
{
1544+
bool scalar = (bitsLength == 0);
1545+
15441546
if (compare)
15451547
{
15461548
switch (vectorAPIOpCode)
@@ -1556,13 +1558,15 @@ TR::ILOpCodes TR_VectorAPIExpansion::ILOpcodeFromVectorAPIOpcode(int32_t vectorA
15561558
}
15571559
}
15581560

1561+
TR::VectorLength vectorLength = OMR::DataType::bitsToVectorLength(bitsLength);
15591562

15601563
switch (vectorAPIOpCode)
15611564
{
15621565
case VECTOR_OP_ABS: return scalar ? TR::ILOpCode::absOpCode(elementType) : TR::BadILOp;
15631566
case VECTOR_OP_NEG: return scalar ? TR::ILOpCode::negateOpCode(elementType) : TR::vneg;
15641567
case VECTOR_OP_SQRT:return TR::BadILOp;
1565-
case VECTOR_OP_ADD: return scalar ? TR::ILOpCode::addOpCode(elementType, true) : TR::vadd;
1568+
case VECTOR_OP_ADD: return scalar ? TR::ILOpCode::addOpCode(elementType, true)
1569+
: TR::ILOpCode::createVectorOpCode(OMR::vadd, TR::DataType::createVectorType(elementType.getDataType(), vectorLength)).getOpCodeValue();
15661570
case VECTOR_OP_SUB: return scalar ? TR::ILOpCode::subtractOpCode(elementType) : TR::vsub;
15671571
case VECTOR_OP_MUL: return scalar ? TR::ILOpCode::multiplyOpCode(elementType) : TR::vmul;
15681572
case VECTOR_OP_DIV: return scalar ? TR::ILOpCode::divideOpCode(elementType) : TR::vdiv;
@@ -1571,7 +1575,7 @@ TR::ILOpCodes TR_VectorAPIExpansion::ILOpcodeFromVectorAPIOpcode(int32_t vectorA
15711575
case VECTOR_OP_AND: return scalar ? TR::ILOpCode::andOpCode(elementType) : TR::vand;
15721576
case VECTOR_OP_OR: return scalar ? TR::ILOpCode::orOpCode(elementType) : TR::vor;
15731577
case VECTOR_OP_XOR: return scalar ? TR::ILOpCode::xorOpCode(elementType) : TR::vxor;
1574-
case VECTOR_OP_FMA: return TR::BadILOp;
1578+
case VECTOR_OP_FMA: return scalar ? TR::BadILOp : TR::ILOpCode::createVectorOpCode(OMR::vfma, TR::DataType::createVectorType(elementType.getDataType(), vectorLength)).getOpCodeValue();
15751579
default:
15761580
return TR::BadILOp;
15771581
// shiftLeftOpCode

runtime/compiler/optimizer/VectorAPIExpansion.hpp

+3-3
Original file line numberDiff line numberDiff line change
@@ -467,16 +467,16 @@ class TR_VectorAPIExpansion : public TR::Optimization
467467
* \param elementType
468468
* Element type
469469
*
470-
* \param scalar
471-
* return scalar opcode
470+
* \param vectorLength
471+
* return scalar opcode if vectorLength == 0 and vector opcode otherwise
472472
*
473473
* \param compare
474474
* true if it's compare opcode
475475
*
476476
* \return
477477
* scalar TR::IL opcode if scalar is true, otherwise vector opcode
478478
*/
479-
static TR::ILOpCodes ILOpcodeFromVectorAPIOpcode(int32_t vectorOpCode, TR::DataType elementType, bool scalar, bool compare = false);
479+
static TR::ILOpCodes ILOpcodeFromVectorAPIOpcode(int32_t vectorOpCode, TR::DataType elementType, vec_sz_t vectorLength, bool compare = false);
480480

481481
/** \brief
482482
* For the node's symbol reference, creates and records(if it does not exist yet)

0 commit comments

Comments
 (0)