< prev index next >
src/jdk.incubator.vector/share/classes/jdk/incubator/vector/VectorIntrinsics.java
Print this page
rev 54658 : refactored mask and shuffle creation methods, moved classes to top-level
*** 85,102 ****
static final int BT_overflow = 2;
static final int BT_no_overflow = 6;
/* ============================================================================ */
interface BroadcastOperation<V, E> {
! V broadcast(long l, Vector.Species<E> s);
}
@HotSpotIntrinsicCandidate
static
<VM, E>
VM broadcastCoerced(Class<VM> vmClass, Class<?> E, int length,
! long bits, Vector.Species<E> s,
BroadcastOperation<VM, E> defaultImpl) {
assert isNonCapturingLambda(defaultImpl) : defaultImpl;
return defaultImpl.broadcast(bits, s);
}
--- 85,102 ----
static final int BT_overflow = 2;
static final int BT_no_overflow = 6;
/* ============================================================================ */
interface BroadcastOperation<V, E> {
! V broadcast(long l, VectorSpecies<E> s);
}
@HotSpotIntrinsicCandidate
static
<VM, E>
VM broadcastCoerced(Class<VM> vmClass, Class<?> E, int length,
! long bits, VectorSpecies<E> s,
BroadcastOperation<VM, E> defaultImpl) {
assert isNonCapturingLambda(defaultImpl) : defaultImpl;
return defaultImpl.broadcast(bits, s);
}
*** 147,157 ****
@HotSpotIntrinsicCandidate
static
<VM>
VM unaryOp(int oprId, Class<VM> vmClass, Class<?> elementType, int length,
! VM vm, /*Vector.Mask<E,S> m,*/
Function<VM, VM> defaultImpl) {
assert isNonCapturingLambda(defaultImpl) : defaultImpl;
return defaultImpl.apply(vm);
}
--- 147,157 ----
@HotSpotIntrinsicCandidate
static
<VM>
VM unaryOp(int oprId, Class<VM> vmClass, Class<?> elementType, int length,
! VM vm,
Function<VM, VM> defaultImpl) {
assert isNonCapturingLambda(defaultImpl) : defaultImpl;
return defaultImpl.apply(vm);
}
*** 159,169 ****
@HotSpotIntrinsicCandidate
static
<VM>
VM binaryOp(int oprId, Class<? extends VM> vmClass, Class<?> elementType, int length,
! VM vm1, VM vm2, /*Vector.Mask<E,S> m,*/
BiFunction<VM, VM, VM> defaultImpl) {
assert isNonCapturingLambda(defaultImpl) : defaultImpl;
return defaultImpl.apply(vm1, vm2);
}
--- 159,169 ----
@HotSpotIntrinsicCandidate
static
<VM>
VM binaryOp(int oprId, Class<? extends VM> vmClass, Class<?> elementType, int length,
! VM vm1, VM vm2,
BiFunction<VM, VM, VM> defaultImpl) {
assert isNonCapturingLambda(defaultImpl) : defaultImpl;
return defaultImpl.apply(vm1, vm2);
}
*** 175,223 ****
@HotSpotIntrinsicCandidate
static
<VM>
VM ternaryOp(int oprId, Class<VM> vmClass, Class<?> elementType, int length,
! VM vm1, VM vm2, VM vm3, /*Vector.Mask<E,S> m,*/
TernaryOperation<VM> defaultImpl) {
assert isNonCapturingLambda(defaultImpl) : defaultImpl;
return defaultImpl.apply(vm1, vm2, vm3);
}
/* ============================================================================ */
// Memory operations
interface LoadOperation<C, V, E> {
! V load(C container, int index, Vector.Species<E> s);
}
@HotSpotIntrinsicCandidate
static
<C, VM, E>
VM load(Class<VM> vmClass, Class<?> E, int length,
Object base, long offset, // Unsafe addressing
! // Vector.Mask<E,S> m,
! C container, int index, Vector.Species<E> s, // Arguments for default implementation
LoadOperation<C, VM, E> defaultImpl) {
assert isNonCapturingLambda(defaultImpl) : defaultImpl;
return defaultImpl.load(container, index, s);
}
/* ============================================================================ */
interface LoadVectorOperationWithMap<C, V extends Vector<?>, E> {
! V loadWithMap(C container, int index, int[] indexMap, int indexM, Vector.Species<E> s);
}
@HotSpotIntrinsicCandidate
static
<C, V extends Vector<?>, W extends IntVector, E>
V loadWithMap(Class<?> vectorClass, Class<?> E, int length, Class<?> vectorIndexClass,
Object base, long offset, // Unsafe addressing
W index_vector,
! C container, int index, int[] indexMap, int indexM, Vector.Species<E> s, // Arguments for default implementation
LoadVectorOperationWithMap<C, V, E> defaultImpl) {
assert isNonCapturingLambda(defaultImpl) : defaultImpl;
return defaultImpl.loadWithMap(container, index, indexMap, indexM, s);
}
--- 175,222 ----
@HotSpotIntrinsicCandidate
static
<VM>
VM ternaryOp(int oprId, Class<VM> vmClass, Class<?> elementType, int length,
! VM vm1, VM vm2, VM vm3,
TernaryOperation<VM> defaultImpl) {
assert isNonCapturingLambda(defaultImpl) : defaultImpl;
return defaultImpl.apply(vm1, vm2, vm3);
}
/* ============================================================================ */
// Memory operations
interface LoadOperation<C, V, E> {
! V load(C container, int index, VectorSpecies<E> s);
}
@HotSpotIntrinsicCandidate
static
<C, VM, E>
VM load(Class<VM> vmClass, Class<?> E, int length,
Object base, long offset, // Unsafe addressing
! C container, int index, VectorSpecies<E> s, // Arguments for default implementation
LoadOperation<C, VM, E> defaultImpl) {
assert isNonCapturingLambda(defaultImpl) : defaultImpl;
return defaultImpl.load(container, index, s);
}
/* ============================================================================ */
interface LoadVectorOperationWithMap<C, V extends Vector<?>, E> {
! V loadWithMap(C container, int index, int[] indexMap, int indexM, VectorSpecies<E> s);
}
@HotSpotIntrinsicCandidate
static
<C, V extends Vector<?>, W extends IntVector, E>
V loadWithMap(Class<?> vectorClass, Class<?> E, int length, Class<?> vectorIndexClass,
Object base, long offset, // Unsafe addressing
W index_vector,
! C container, int index, int[] indexMap, int indexM, VectorSpecies<E> s, // Arguments for default implementation
LoadVectorOperationWithMap<C, V, E> defaultImpl) {
assert isNonCapturingLambda(defaultImpl) : defaultImpl;
return defaultImpl.loadWithMap(container, index, indexMap, indexM, s);
}
*** 231,241 ****
static
<C, V extends Vector<?>>
void store(Class<?> vectorClass, Class<?> elementType, int length,
Object base, long offset, // Unsafe addressing
V v,
- // Vector.Mask<E,S> m,
C container, int index, // Arguments for default implementation
StoreVectorOperation<C, V> defaultImpl) {
assert isNonCapturingLambda(defaultImpl) : defaultImpl;
defaultImpl.store(container, index, v);
}
--- 230,239 ----
*** 276,286 ****
M apply(V v1, V v2);
}
@HotSpotIntrinsicCandidate
static <V extends Vector<E>,
! M extends Vector.Mask<E>,
E>
M compare(int cond, Class<V> vectorClass, Class<M> maskClass, Class<?> elementType, int length,
V v1, V v2,
VectorCompareOp<V,M> defaultImpl) {
assert isNonCapturingLambda(defaultImpl) : defaultImpl;
--- 274,284 ----
M apply(V v1, V v2);
}
@HotSpotIntrinsicCandidate
static <V extends Vector<E>,
! M extends VectorMask<E>,
E>
M compare(int cond, Class<V> vectorClass, Class<M> maskClass, Class<?> elementType, int length,
V v1, V v2,
VectorCompareOp<V,M> defaultImpl) {
assert isNonCapturingLambda(defaultImpl) : defaultImpl;
*** 288,306 ****
}
/* ============================================================================ */
interface VectorRearrangeOp<V extends Vector<E>,
! Sh extends Vector.Shuffle<E>,
E> {
V apply(V v1, Sh shuffle);
}
@HotSpotIntrinsicCandidate
static
<V extends Vector<E>,
! Sh extends Vector.Shuffle<E>,
E>
V rearrangeOp(Class<V> vectorClass, Class<Sh> shuffleClass, Class<?> elementType, int vlen,
V v1, Sh sh,
VectorRearrangeOp<V,Sh, E> defaultImpl) {
assert isNonCapturingLambda(defaultImpl) : defaultImpl;
--- 286,304 ----
}
/* ============================================================================ */
interface VectorRearrangeOp<V extends Vector<E>,
! Sh extends VectorShuffle<E>,
E> {
V apply(V v1, Sh shuffle);
}
@HotSpotIntrinsicCandidate
static
<V extends Vector<E>,
! Sh extends VectorShuffle<E>,
E>
V rearrangeOp(Class<V> vectorClass, Class<Sh> shuffleClass, Class<?> elementType, int vlen,
V v1, Sh sh,
VectorRearrangeOp<V,Sh, E> defaultImpl) {
assert isNonCapturingLambda(defaultImpl) : defaultImpl;
*** 308,326 ****
}
/* ============================================================================ */
interface VectorBlendOp<V extends Vector<E>,
! M extends Vector.Mask<E>,
E> {
V apply(V v1, V v2, M mask);
}
@HotSpotIntrinsicCandidate
static
<V extends Vector<E>,
! M extends Vector.Mask<E>,
E>
V blend(Class<V> vectorClass, Class<M> maskClass, Class<?> elementType, int length,
V v1, V v2, M m,
VectorBlendOp<V,M, E> defaultImpl) {
assert isNonCapturingLambda(defaultImpl) : defaultImpl;
--- 306,324 ----
}
/* ============================================================================ */
interface VectorBlendOp<V extends Vector<E>,
! M extends VectorMask<E>,
E> {
V apply(V v1, V v2, M mask);
}
@HotSpotIntrinsicCandidate
static
<V extends Vector<E>,
! M extends VectorMask<E>,
E>
V blend(Class<V> vectorClass, Class<M> maskClass, Class<?> elementType, int length,
V v1, V v2, M m,
VectorBlendOp<V,M, E> defaultImpl) {
assert isNonCapturingLambda(defaultImpl) : defaultImpl;
< prev index next >