Skip to content

Commit 28aedd4

Browse files
authored
Merge pull request #19192 from gita-omr/v0.44.0-release
(0.44) Enable VectorAPI in Java 22
2 parents 747f86c + 95873a7 commit 28aedd4

File tree

2 files changed

+24
-0
lines changed

2 files changed

+24
-0
lines changed

runtime/compiler/env/j9method.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3034,7 +3034,11 @@ void TR_ResolvedJ9Method::construct()
30343034

30353035
static X VectorSupportMethods[] =
30363036
{
3037+
#if JAVA_SPEC_VERSION <= 21
30373038
{x(TR::jdk_internal_vm_vector_VectorSupport_load, "load", "(Ljava/lang/Class;Ljava/lang/Class;ILjava/lang/Object;JLjava/lang/Object;JLjdk/internal/vm/vector/VectorSupport$VectorSpecies;Ljdk/internal/vm/vector/VectorSupport$LoadOperation;)Ljdk/internal/vm/vector/VectorSupport$VectorPayload;")},
3039+
#else
3040+
{x(TR::jdk_internal_vm_vector_VectorSupport_load, "load", "(Ljava/lang/Class;Ljava/lang/Class;ILjava/lang/Object;JZLjava/lang/Object;JLjdk/internal/vm/vector/VectorSupport$VectorSpecies;Ljdk/internal/vm/vector/VectorSupport$LoadOperation;)Ljdk/internal/vm/vector/VectorSupport$VectorPayload;")},
3041+
#endif
30383042
{x(TR::jdk_internal_vm_vector_VectorSupport_binaryOp, "binaryOp", "(ILjava/lang/Class;Ljava/lang/Class;Ljava/lang/Class;ILjdk/internal/vm/vector/VectorSupport$VectorPayload;Ljdk/internal/vm/vector/VectorSupport$VectorPayload;Ljdk/internal/vm/vector/VectorSupport$VectorMask;Ljdk/internal/vm/vector/VectorSupport$BinaryOperation;)Ljdk/internal/vm/vector/VectorSupport$VectorPayload;" )},
30393043
{x(TR::jdk_internal_vm_vector_VectorSupport_blend, "blend", "(Ljava/lang/Class;Ljava/lang/Class;Ljava/lang/Class;ILjdk/internal/vm/vector/VectorSupport$Vector;Ljdk/internal/vm/vector/VectorSupport$Vector;Ljdk/internal/vm/vector/VectorSupport$VectorMask;Ljdk/internal/vm/vector/VectorSupport$VectorBlendOp;)Ljdk/internal/vm/vector/VectorSupport$Vector;")},
30403044
{x(TR::jdk_internal_vm_vector_VectorSupport_broadcastInt, "broadcastInt", "(ILjava/lang/Class;Ljava/lang/Class;Ljava/lang/Class;ILjdk/internal/vm/vector/VectorSupport$Vector;ILjdk/internal/vm/vector/VectorSupport$VectorMask;Ljdk/internal/vm/vector/VectorSupport$VectorBroadcastIntOp;)Ljdk/internal/vm/vector/VectorSupport$Vector;")},
@@ -3047,7 +3051,11 @@ void TR_ResolvedJ9Method::construct()
30473051
{x(TR::jdk_internal_vm_vector_VectorSupport_ternaryOp, "ternaryOp", "(ILjava/lang/Class;Ljava/lang/Class;Ljava/lang/Class;ILjdk/internal/vm/vector/VectorSupport$Vector;Ljdk/internal/vm/vector/VectorSupport$Vector;Ljdk/internal/vm/vector/VectorSupport$Vector;Ljdk/internal/vm/vector/VectorSupport$VectorMask;Ljdk/internal/vm/vector/VectorSupport$TernaryOperation;)Ljdk/internal/vm/vector/VectorSupport$Vector;")},
30483052
{x(TR::jdk_internal_vm_vector_VectorSupport_test, "test", "(ILjava/lang/Class;Ljava/lang/Class;ILjdk/internal/vm/vector/VectorSupport$VectorMask;Ljdk/internal/vm/vector/VectorSupport$VectorMask;Ljava/util/function/BiFunction;)Z")},
30493053
{x(TR::jdk_internal_vm_vector_VectorSupport_unaryOp, "unaryOp", "(ILjava/lang/Class;Ljava/lang/Class;Ljava/lang/Class;ILjdk/internal/vm/vector/VectorSupport$Vector;Ljdk/internal/vm/vector/VectorSupport$VectorMask;Ljdk/internal/vm/vector/VectorSupport$UnaryOperation;)Ljdk/internal/vm/vector/VectorSupport$Vector;")},
3054+
#if JAVA_SPEC_VERSION <= 21
30503055
{x(TR::jdk_internal_vm_vector_VectorSupport_store, "store", "(Ljava/lang/Class;Ljava/lang/Class;ILjava/lang/Object;JLjdk/internal/vm/vector/VectorSupport$VectorPayload;Ljava/lang/Object;JLjdk/internal/vm/vector/VectorSupport$StoreVectorOperation;)V")},
3056+
#else
3057+
{x(TR::jdk_internal_vm_vector_VectorSupport_store, "store", "(Ljava/lang/Class;Ljava/lang/Class;ILjava/lang/Object;JZLjdk/internal/vm/vector/VectorSupport$VectorPayload;Ljava/lang/Object;JLjdk/internal/vm/vector/VectorSupport$StoreVectorOperation;)V")},
3058+
#endif
30513059
{ TR::unknownMethod}
30523060
};
30533061

runtime/compiler/optimizer/VectorAPIExpansion.cpp

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1445,8 +1445,13 @@ TR::Node *TR_VectorAPIExpansion::loadIntrinsicHandler(TR_VectorAPIExpansion *opt
14451445
if (opt->_trace)
14461446
traceMsg(comp, "loadIntrinsicHandler for node %p\n", node);
14471447

1448+
#if JAVA_SPEC_VERSION <= 21
14481449
TR::Node *array = node->getChild(5);
14491450
TR::Node *arrayIndex = node->getChild(6);
1451+
#else
1452+
TR::Node *array = node->getChild(6);
1453+
TR::Node *arrayIndex = node->getChild(7);
1454+
#endif
14501455

14511456
return transformLoadFromArray(opt, treeTop, node, elementType, vectorLength, numLanes, mode, array, arrayIndex, objType);
14521457
}
@@ -1654,9 +1659,15 @@ TR::Node *TR_VectorAPIExpansion::storeIntrinsicHandler(TR_VectorAPIExpansion *op
16541659
if (opt->_trace)
16551660
traceMsg(comp, "storeIntrinsicHandler for node %p\n", node);
16561661

1662+
#if JAVA_SPEC_VERSION <= 21
16571663
TR::Node *valueToWrite = node->getChild(5);
16581664
TR::Node *array = node->getChild(6);
16591665
TR::Node *arrayIndex = node->getChild(7);
1666+
#else
1667+
TR::Node *valueToWrite = node->getChild(6);
1668+
TR::Node *array = node->getChild(7);
1669+
TR::Node *arrayIndex = node->getChild(8);
1670+
#endif
16601671

16611672
return transformStoreToArray(opt, treeTop, node, elementType, vectorLength, numLanes, mode, valueToWrite, array, arrayIndex, objType);
16621673
}
@@ -2639,7 +2650,11 @@ TR_VectorAPIExpansion::methodTableEntry
26392650
TR_VectorAPIExpansion::methodTable[] =
26402651
{
26412652
{loadIntrinsicHandler, Unknown, 1, 2, -1, 0, -1, {Unknown, ElementType, NumLanes}}, // jdk_internal_vm_vector_VectorSupport_load
2653+
#if JAVA_SPEC_VERSION <= 21
26422654
{storeIntrinsicHandler, Unknown, 1, 2, 5, 1, -1, {Unknown, ElementType, NumLanes, Unknown, Unknown, Vector}}, // jdk_internal_vm_vector_VectorSupport_store
2655+
#else
2656+
{storeIntrinsicHandler, Unknown, 1, 2, 6, 1, -1, {Unknown, ElementType, NumLanes, Unknown, Unknown, Unknown, Vector}}, // jdk_internal_vm_vector_VectorSupport_store
2657+
#endif
26432658
{binaryIntrinsicHandler, Vector, 3, 4, 5, 2, 7, {Unknown, Unknown, Unknown, ElementType, NumLanes, Vector, Vector, Mask}}, // jdk_internal_vm_vector_VectorSupport_binaryOp
26442659
{blendIntrinsicHandler, Vector, 2, 3, 4, 3, -1, {Unknown, Unknown, ElementType, NumLanes, Vector, Vector, Vector, Unknown}}, // jdk_internal_vm_vector_VectorSupport_blend
26452660
{broadcastIntIntrinsicHandler, Vector, 3, 4, 5, 2, 7, {Unknown, Unknown, Unknown, ElementType, NumLanes, Vector, Unknown, Mask}}, //jdk_internal_vm_vector_VectorSupport_broadcastInt
@@ -2664,6 +2679,7 @@ TR_VectorAPIExpansion::TR_VectorAPIExpansion(TR::OptimizationManager *manager)
26642679

26652680

26662681
//TODOs:
2682+
// 1) Use getFirstOperandIndex in all handlers instead of the hardcoded numbers
26672683
// 4) handle OSR guards
26682684
// 6) make scalarization and vectorization coexist in one web
26692685
// 7) handle all intrinsics

0 commit comments

Comments
 (0)