| Modifier and Type | Field and Description |
|---|---|
| pack-priv static final ByteOrder | NATIVE_ENDIAN
The order of vector bytes when stored in natural, array elements of the same lane type. |
| pack-priv static final int | |
| pack-priv static final int | |
| pack-priv static final ByteOrder | REGISTER_ENDIAN
The order of vector bytes as stored in the register file. |
| Access | Constructor and Description |
|---|---|
| pack-priv |
| Modifier and Type | Method and Description |
|---|---|
| pack-priv abstract ByteVector | |
| pack-priv ByteVector | |
| pack-priv abstract AbstractVector | |
| pack-priv final AbstractVector | |
| pack-priv abstract <F> VectorShuffle | |
| pack-priv abstract <F> VectorShuffle | |
| pack-priv final <F> VectorShuffle | |
| public final <F> Vector | castShape(VectorSpecies<F> toSpecies, int part)
Implements abstract jdk. Convenience method for converting a vector from one lane type to another, reshaping as needed when lane sizes change. |
| public final <F> Vector | check(VectorSpecies<F> species)
Implements abstract jdk. Checks that this vector has the given species, and returns this vector unchanged. |
| public final <F> Vector | check(Class<F> elementType)
Implements abstract jdk. Checks that this vector has the given element type, and returns this vector unchanged. |
| pack-priv final <F> AbstractVector | |
| pack-priv final <F> AbstractVector | |
| pack-priv final <F> AbstractVector | |
| public final <F> Vector | convert(VectorOperators.
Implements abstract jdk. Convert this vector to a vector of the same shape and a new
element type, converting lane values from the current |
| pack-priv final <F> AbstractVector | |
| public abstract <F> Vector | convertShape(VectorOperators.
Implements abstract jdk. Converts this vector to a vector of the given species, shape and
element type, converting lane values from the current |
| pack-priv final <F> AbstractVector | convertShapeTemplate(VectorOperators.
This is the template for Vector::convertShape, to be specialized by each distinct vector class. |
| pack-priv final <F> AbstractVector | |
| pack-priv final <F> AbstractVector | defaultReinterpret(AbstractSpecies<F> rsp)
Helper function for all sorts of byte-wise reinterpretation casts. |
| pack-priv final <F> AbstractVector | defaultUCast(AbstractSpecies<F> dsp)
Helper function for all sorts of lane-wise unsigned conversions. |
| pack-priv ArithmeticException | |
| pack-priv abstract AbstractVector | |
| pack-priv abstract AbstractShuffle | |
| pack-priv abstract AbstractShuffle | |
| pack-priv final VectorShuffle | |
| pack-priv abstract int | |
| public final VectorMask | maskAll(boolean bit)
Implements abstract jdk. Returns a mask of same species as this vector, where each lane is set or unset according to given single boolean, which is broadcast to all lanes. |
| pack-priv abstract AbstractMask | |
| pack-priv abstract AbstractVector | |
| pack-priv static <T> VectorShuffle | |
| private static boolean | |
| private static boolean | |
| private static int | |
| public DoubleVector | reinterpretAsDoubles()
Implements abstract jdk. Reinterprets this vector as a vector of the same shape
and contents but a lane type of |
| public FloatVector | reinterpretAsFloats()
Implements abstract jdk. Reinterprets this vector as a vector of the same shape
and contents but a lane type of |
| public IntVector | reinterpretAsInts()
Implements abstract jdk. Reinterprets this vector as a vector of the same shape
and contents but a lane type of |
| public LongVector | reinterpretAsLongs()
Implements abstract jdk. Reinterprets this vector as a vector of the same shape
and contents but a lane type of |
| public ShortVector | reinterpretAsShorts()
Implements abstract jdk. Reinterprets this vector as a vector of the same shape
and contents but a lane type of |
| pack-priv final <F> AbstractVector | reinterpretShapeTemplate(VectorSpecies<F> toSpecies, int part)
This is the template for Vector::reinterpretShape, to be specialized by each distinct vector class. |
| private boolean | |
| private boolean | |
| pack-priv static int | shapeChangeOrigin(AbstractSpecies<?> dsp, AbstractSpecies<?> rsp, boolean lanewise, int part)
Check a part number and return it multiplied by the appropriate block factor to yield the origin of the operand block, as a lane number. |
| pack-priv abstract AbstractShuffle | |
| pack-priv abstract AbstractShuffle | |
| public abstract AbstractVector | slice(int origin, Vector<E> v1)
Implements abstract jdk. Slices a segment of adjacent lanes, starting at a given
|
| public abstract AbstractVector | slice(int origin)
Implements abstract jdk. Slices a segment of adjacent lanes, starting at a given
|
| public final VectorSpecies | species()
Implements abstract jdk. Returns the species of this vector. |
| pack-priv final int | |
| pack-priv VectorShuffle | |
| pack-priv abstract AbstractVector | |
| pack-priv abstract <F> VectorShuffle | |
| pack-priv abstract AbstractSpecies | |
| private static ArrayIndexOutOfBoundsException |
| NATIVE_ENDIAN | back to summary |
|---|---|
| pack-priv static final ByteOrder NATIVE_ENDIAN The order of vector bytes when stored in natural, array elements of the same lane type. This is also the behavior of the VectorSupport load/store instructions. If these instructions gain the capability to do byte swapping on the fly, add a bit to those instructions, but let this polarity be the "neutral" or "default" setting of the bit. | |
| OFFSET_IN_RANGE | back to summary |
|---|---|
| pack-priv static final int OFFSET_IN_RANGE | |
| OFFSET_OUT_OF_RANGE | back to summary |
|---|---|
| pack-priv static final int OFFSET_OUT_OF_RANGE | |
| REGISTER_ENDIAN | back to summary |
|---|---|
| pack-priv static final ByteOrder REGISTER_ENDIAN The order of vector bytes as stored in the register file. This becomes visible with the asRaw[Type]Vector operations, which convert between the internal byte-wise representation and the typed lane-wise representation. It is very possible for a platform to have big-endian memory layout and little-endian register layout, so this is a different setting from NATIVE_ENDIAN. In fact, both Intel and ARM use LE conventions here. Future work may be needed for resolutely BE platforms. | |
| AbstractVector | back to summary |
|---|---|
| pack-priv AbstractVector(Object bits) | |
| asByteVectorRaw | back to summary |
|---|---|
| pack-priv abstract ByteVector asByteVectorRaw() | |
| asByteVectorRawTemplate | back to summary |
|---|---|
pack-priv ByteVector asByteVectorRawTemplate()
| |
| asVectorRaw | back to summary |
|---|---|
| pack-priv abstract AbstractVector | |
| asVectorRawTemplate | back to summary |
|---|---|
pack-priv final AbstractVector
| |
| bitsToShuffle | back to summary |
|---|---|
| pack-priv abstract <F> VectorShuffle | |
| bitsToShuffle0 | back to summary |
|---|---|
| pack-priv abstract <F> VectorShuffle | |
| bitsToShuffleTemplate | back to summary |
|---|---|
pack-priv final <F> VectorShuffle
| |
| castShape | back to summary |
|---|---|
| public final <F> Vector Implements abstract jdk. Doc from jdk. Convenience method for converting a vector from one lane type
to another, reshaping as needed when lane sizes change.
This method returns the value of this expression:
If the old and new species have different shape, this is a shape-changing operation, and may have special implementation costs.
| |
| check | back to summary |
|---|---|
| public final <F> Vector Implements abstract jdk. Doc from jdk. Checks that this vector has the given species,
and returns this vector unchanged.
The effect is similar to this pseudocode:
| |
| check | back to summary |
|---|---|
| public final <F> Vector Implements abstract jdk. Doc from jdk. Checks that this vector has the given element type,
and returns this vector unchanged.
The effect is similar to this pseudocode:
| |
| check | back to summary |
|---|---|
pack-priv final <F> AbstractVector
| |
| check0 | back to summary |
|---|---|
pack-priv final <F> AbstractVector
| |
| check0 | back to summary |
|---|---|
pack-priv final <F> AbstractVector
| |
| convert | back to summary |
|---|---|
| public final <F> Vector Implements abstract jdk. Doc from jdk. Convert this vector to a vector of the same shape and a new
element type, converting lane values from the current This method is a restricted version of the more general
but less frequently used shape-changing method
As a combined effect of shape-invariance and lane size changes,
the input and output species may have different lane counts, causing
expansion or contraction, and
require selection or insertion.
Conceptually, the input is lane-wise converted into a logical
result that contains all converted elements, leading to a
logical expansion ratio Logical: Lane-wise Conversion Each specific conversion is described by a conversion
constant in the class A lanewise conversion operator may be classified as (respectively) in-place, expanding, or contracting, depending on whether the bit-size of its domain type is (respectively) equal to, less than, or greater than the bit-size of its range type. Independently, lanewise conversion operations can also be classified as reinterpreting or value-transforming, depending on whether the conversion copies representation bits unchanged, or changes the representation bits in order to retain (part or all of) the logical value of the input value. If a reinterpreting conversion contracts, it will truncate the upper bits of the input. If it expands, it will pad upper bits of the output with zero bits, when there are no corresponding input bits. An expanding conversion such as Shape-invariance can lead to Selection or InsertionThis classification of the lanewise operators as in-place, expanding and contracting is important, because, unless otherwise documented, conversion operations never change vector shape, regardless of how they may change lane sizes. To manage the details of these
expansions and contractions,
a
As an example, a conversion from
| |
| convert0 | back to summary |
|---|---|
| pack-priv final <F> AbstractVector Dispatch on conversion kind and target species. The code of this is arranged to fold up if the vector class is constant and the target species is also constant. This is often the case. Residual non-folded code may also perform acceptably in some cases due to type profiling, especially of rvtype. If only one shape is being used, the profiling of rvtype should help speculatively fold the code even when the target species is not a constant.
| |
| convertShape | back to summary |
|---|---|
| public abstract <F> Vector Implements abstract jdk. Doc from jdk. Converts this vector to a vector of the given species, shape and
element type, converting lane values from the current If the old and new species have the same shape, the behavior
is exactly the same as the simpler, shape-invariant method
As a combined effect of shape changes and lane size changes,
the input and output species may have different lane counts, causing
expansion or contraction, and
require selection or insertion.
Conceptually, the input is lane-wise converted into a logical
result that contains all converted elements, leading to a
logical expansion ratio
The following pseudocode illustrates the behavior of this method for in-place conversions, and those with selection or insertion. (This pseudocode also applies to the shape-invariant method, but with shape restrictions on the output species.) Note that only one of the three code paths is relevant to any particular combination of conversion operator and shapes.
| |
| convertShapeTemplate | back to summary |
|---|---|
| pack-priv final <F> AbstractVector This is the template for Vector::convertShape, to be specialized by each distinct vector class.
| |
| defaultCast | back to summary |
|---|---|
| pack-priv final <F> AbstractVector Helper function for all sorts of lane-wise conversions. This function kicks in after intrinsic failure.
| |
| defaultReinterpret | back to summary |
|---|---|
| pack-priv final <F> AbstractVector Helper function for all sorts of byte-wise reinterpretation casts. This function kicks in after intrinsic failure.
| |
| defaultUCast | back to summary |
|---|---|
| pack-priv final <F> AbstractVector Helper function for all sorts of lane-wise unsigned conversions. This function kicks in after intrinsic failure.
| |
| divZeroException | back to summary |
|---|---|
| pack-priv ArithmeticException divZeroException() | |
| fromMemorySegment0 | back to summary |
|---|---|
| pack-priv abstract AbstractVector | |
| iotaShuffle | back to summary |
|---|---|
| pack-priv abstract AbstractShuffle | |
| iotaShuffle | back to summary |
|---|---|
| pack-priv abstract AbstractShuffle | |
| iotaShuffleTemplate | back to summary |
|---|---|
pack-priv final VectorShuffle
| |
| laneTypeOrdinal | back to summary |
|---|---|
| pack-priv abstract int laneTypeOrdinal() | |
| maskAll | back to summary |
|---|---|
| public final VectorMask Implements abstract jdk. Doc from jdk. Returns a mask of same species as this vector, where each lane is set or unset according to given single boolean, which is broadcast to all lanes.
This method returns the value of this expression:
| |
| maskFromArray | back to summary |
|---|---|
| pack-priv abstract AbstractMask | |
| maybeSwap | back to summary |
|---|---|
| pack-priv abstract AbstractVector | |
| normalizeSubLanesForSpecies | back to summary |
|---|---|
pack-priv static <T> VectorShuffle
| |
| partInRange | back to summary |
|---|---|
private static boolean partInRange(int resSizeLog2, int phySizeLog2, int part)
| |
| partInRangeSlow | back to summary |
|---|---|
| private static boolean partInRangeSlow(int resSizeLog2, int phySizeLog2, int part) | |
| partLimit | back to summary |
|---|---|
| private static int partLimit(int resSizeLog2, int phySizeLog2) | |
| reinterpretAsDoubles | back to summary |
|---|---|
| public DoubleVector reinterpretAsDoubles() Implements abstract jdk. Doc from jdk. Reinterprets this vector as a vector of the same shape
and contents but a lane type of
| |
| reinterpretAsFloats | back to summary |
|---|---|
| public FloatVector reinterpretAsFloats() Implements abstract jdk. Doc from jdk. Reinterprets this vector as a vector of the same shape
and contents but a lane type of
| |
| reinterpretAsInts | back to summary |
|---|---|
| public IntVector reinterpretAsInts() Implements abstract jdk. Doc from jdk. Reinterprets this vector as a vector of the same shape
and contents but a lane type of
| |
| reinterpretAsLongs | back to summary |
|---|---|
| public LongVector reinterpretAsLongs() Implements abstract jdk. Doc from jdk. Reinterprets this vector as a vector of the same shape
and contents but a lane type of
| |
| reinterpretAsShorts | back to summary |
|---|---|
| public ShortVector reinterpretAsShorts() Implements abstract jdk. Doc from jdk. Reinterprets this vector as a vector of the same shape
and contents but a lane type of
| |
| reinterpretShapeTemplate | back to summary |
|---|---|
| pack-priv final <F> AbstractVector This is the template for Vector::reinterpretShape, to be specialized by each distinct vector class.
| |
| sameSpecies | back to summary |
|---|---|
private boolean sameSpecies(Vector<?> other)
| |
| sameSpecies | back to summary |
|---|---|
private boolean sameSpecies(VectorSpecies<?> species)
| |
| shapeChangeOrigin | back to summary |
|---|---|
| pack-priv static int shapeChangeOrigin(AbstractSpecies<?> dsp, AbstractSpecies<?> rsp, boolean lanewise, int part) Check a part number and return it multiplied by the appropriate block factor to yield the origin of the operand block, as a lane number. For selection (truncation) the origin is reckoned in the domain vector, since the domain vector has too much information and must be sliced. For insertion (padding) the origin is reckoned in the range vector, since the range vector has too many lanes and the result must be unsliced at the same position as the inverse selection. If the conversion is lanewise, then lane sizes may be changing as well. This affects the logical size of the result, and so the domain size is multiplied or divided by the lane size change.
| |
| shuffleFromArray | back to summary |
|---|---|
| pack-priv abstract AbstractShuffle | |
| shuffleFromOp | back to summary |
|---|---|
| pack-priv abstract AbstractShuffle | |
| slice | back to summary |
|---|---|
| public abstract AbstractVector Implements abstract jdk. Doc from jdk. Slices a segment of adjacent lanes, starting at a given
This is a cross-lane operation that shifts lane elements
to the front, from the current vector and the second vector.
Both vectors can be viewed as a combined "background" of length
The
| |
| slice | back to summary |
|---|---|
| public abstract AbstractVector Implements abstract jdk. Doc from jdk. Slices a segment of adjacent lanes, starting at a given
| |
| species | back to summary |
|---|---|
| public final VectorSpecies Implements abstract jdk. Doc from jdk. Returns the species of this vector.
| |
| subLanesToSwap | back to summary |
|---|---|
pack-priv final int subLanesToSwap(AbstractSpecies<?> srcSpecies)
| |
| swapBytesShuffle | back to summary |
|---|---|
pack-priv VectorShuffle
| |
| swapIfNeeded | back to summary |
|---|---|
| pack-priv abstract AbstractVector | |
| toShuffle | back to summary |
|---|---|
| pack-priv abstract <F> VectorShuffle | |
| vspecies | back to summary |
|---|---|
| pack-priv abstract AbstractSpecies | |
| wrongPart | back to summary |
|---|---|
| private static ArrayIndexOutOfBoundsException wrongPart(AbstractSpecies<?> dsp, AbstractSpecies<?> rsp, boolean lanewise, int part) | |