Class IntVector
- 
Field SummaryFieldsModifier and TypeFieldDescriptionstatic final VectorSpecies<Integer> Species representingIntVectors ofVectorShape.S_128_BIT.static final VectorSpecies<Integer> Species representingIntVectors ofVectorShape.S_256_BIT.static final VectorSpecies<Integer> Species representingIntVectors ofVectorShape.S_512_BIT.static final VectorSpecies<Integer> Species representingIntVectors ofVectorShape.S_64_BIT.static final VectorSpecies<Integer> Species representingIntVectors ofVectorShape.S_Max_BIT.static final VectorSpecies<Integer> Preferred species forIntVectors.
- 
Method SummaryModifier and TypeMethodDescriptionfinal IntVectorabs()Returns the absolute value of this vector.final IntVectoradd(int e) Adds this vector to the broadcast of an input scalar.final IntVectoradd(int e, VectorMask<Integer> m) Adds this vector to the broadcast of an input scalar, selecting lane elements controlled by a mask.final IntVectorAdds this vector to a second input vector.final IntVectoradd(Vector<Integer> v, VectorMask<Integer> m) Adds this vector to a second input vector, selecting lanes under the control of a mask.abstract IntVectoraddIndex(int scale) Adds the lanes of this vector to their corresponding lane numbers, scaled by a given constant.final IntVectorand(int e) Computes the bitwise logical conjunction (&) of this vector and a scalar.final IntVectorComputes the bitwise logical conjunction (&) of this vector and a second input vector.final IntVectorbitwiseBlend(int bits, int mask) Blends together the bits of a vector and a scalar under the control of another scalar, which supplies mask bits.final IntVectorbitwiseBlend(int bits, Vector<Integer> mask) Blends together the bits of a vector and a scalar under the control of another vector, which supplies mask bits.final IntVectorbitwiseBlend(Vector<Integer> bits, int mask) Blends together the bits of two vectors under the control of a scalar, which supplies mask bits.final IntVectorbitwiseBlend(Vector<Integer> bits, Vector<Integer> mask) Blends together the bits of two vectors under the control of a third, which supplies mask bits.final IntVectorblend(int e, VectorMask<Integer> m) Replaces selected lanes of this vector with a scalar value under the control of a mask.final IntVectorblend(long e, VectorMask<Integer> m) Replaces selected lanes of this vector with a scalar value under the control of a mask.abstract IntVectorblend(Vector<Integer> v, VectorMask<Integer> m) Replaces selected lanes of this vector with corresponding lanes from a second input vector under the control of a mask.abstract IntVectorbroadcast(int e) Returns a vector of the same species as this one where all lane elements are set to the primitive valuee.abstract IntVectorbroadcast(long e) Returns a vector of the same species as this one where all lane elements are set to the primitive valuee.static IntVectorbroadcast(VectorSpecies<Integer> species, int e) Returns a vector of the given species where all lane elements are set to the primitive valuee.static IntVectorbroadcast(VectorSpecies<Integer> species, long e) Returns a vector of the given species where all lane elements are set to the primitive valuee.final <F> Vector<F> castShape(VectorSpecies<F> toSpecies, int part) Convenience method for converting a vector from one lane type to another, reshaping as needed when lane sizes change.final <F> Vector<F> Checks that this vector has the given element type, and returns this vector unchanged.final <F> Vector<F> check(VectorSpecies<F> species) Checks that this vector has the given species, and returns this vector unchanged.abstract VectorMask<Integer> compare(VectorOperators.Comparison op, int e) Tests this vector by comparing it with an input scalar, according to the given comparison operation.final VectorMask<Integer> compare(VectorOperators.Comparison op, int e, VectorMask<Integer> m) Tests this vector by comparing it with an input scalar, according to the given comparison operation, in lanes selected by a mask.abstract VectorMask<Integer> compare(VectorOperators.Comparison op, long e) Tests this vector by comparing it with an input scalar, according to the given comparison operation.final VectorMask<Integer> compare(VectorOperators.Comparison op, long e, VectorMask<Integer> m) Tests this vector by comparing it with an input scalar, according to the given comparison operation, in lanes selected by a mask.abstract VectorMask<Integer> Tests this vector by comparing it with another input vector, according to the given comparison operation.abstract IntVectorCompresses the lane elements of this vector selecting lanes under the control of a specific mask.final <F> Vector<F> convert(VectorOperators.Conversion<Integer, F> conv, int part) Convert this vector to a vector of the same shape and a new element type, converting lane values from the currentETYPEto a new lane type (calledFTYPEhere) according to the indicated conversion.abstract <F> Vector<F> convertShape(VectorOperators.Conversion<Integer, F> conv, VectorSpecies<F> rsp, int part) Converts this vector to a vector of the given species, shape and element type, converting lane values from the currentETYPEto a new lane type (calledFTYPEhere) according to the indicated conversion.final IntVectordiv(int e) Divides this vector by the broadcast of an input scalar.final IntVectordiv(int e, VectorMask<Integer> m) Divides this vector by the broadcast of an input scalar, selecting lane elements controlled by a mask.final IntVectorDivides this vector by a second input vector.final IntVectordiv(Vector<Integer> v, VectorMask<Integer> m) Divides this vector by a second input vector under the control of a mask.final VectorMask<Integer> eq(int e) Tests if this vector is equal to an input scalar.final VectorMask<Integer> Tests if this vector is equal to another input vector.final booleanIndicates whether this vector is identical to some other object.abstract IntVectorexpand(VectorMask<Integer> m) Expands the lane elements of this vector under the control of a specific mask.static IntVectorfromArray(VectorSpecies<Integer> species, int[] a, int offset) Loads a vector from an array of typeint[]starting at an offset.static IntVectorfromArray(VectorSpecies<Integer> species, int[] a, int offset, int[] indexMap, int mapOffset) Gathers a new vector composed of elements from an array of typeint[], using indexes obtained by adding a fixedoffsetto a series of secondary offsets from an index map.static IntVectorfromArray(VectorSpecies<Integer> species, int[] a, int offset, int[] indexMap, int mapOffset, VectorMask<Integer> m) Gathers a new vector composed of elements from an array of typeint[], under the control of a mask, and using indexes obtained by adding a fixedoffsetto a series of secondary offsets from an index map.static IntVectorfromArray(VectorSpecies<Integer> species, int[] a, int offset, VectorMask<Integer> m) Loads a vector from an array of typeint[]starting at an offset and using a mask.static IntVectorfromMemorySegment(VectorSpecies<Integer> species, MemorySegment ms, long offset, ByteOrder bo) Loads a vector from a memory segment starting at an offset into the memory segment.static IntVectorfromMemorySegment(VectorSpecies<Integer> species, MemorySegment ms, long offset, ByteOrder bo, VectorMask<Integer> m) Loads a vector from a memory segment starting at an offset into the memory segment and using a mask.protected final Objectfinal inthashCode()Returns a hash code value for the vector.final voidintoArray(int[] a, int offset) Stores this vector into an array of typeint[]starting at an offset.final voidintoArray(int[] a, int offset, int[] indexMap, int mapOffset) Scatters this vector into an array of typeint[]using indexes obtained by adding a fixedoffsetto a series of secondary offsets from an index map.final voidintoArray(int[] a, int offset, int[] indexMap, int mapOffset, VectorMask<Integer> m) Scatters this vector into an array of typeint[], under the control of a mask, and using indexes obtained by adding a fixedoffsetto a series of secondary offsets from an index map.final voidintoArray(int[] a, int offset, VectorMask<Integer> m) Stores this vector into an array of typeint[]starting at offset and using a mask.final voidintoMemorySegment(MemorySegment ms, long offset, ByteOrder bo) Stores this vector into a memory segment starting at an offset using explicit byte order.final voidintoMemorySegment(MemorySegment ms, long offset, ByteOrder bo, VectorMask<Integer> m) Stores this vector into a memory segment starting at an offset using explicit byte order and a mask.abstract intlane(int i) Gets the lane element at lane indexifinal IntVectorlanewise(VectorOperators.Binary op, int e) Combines the lane values of this vector with the value of a broadcast scalar.final IntVectorlanewise(VectorOperators.Binary op, int e, VectorMask<Integer> m) Combines the lane values of this vector with the value of a broadcast scalar, with selection of lane elements controlled by a mask.final IntVectorlanewise(VectorOperators.Binary op, long e) Combines the lane values of this vector with the value of a broadcast scalar.final IntVectorlanewise(VectorOperators.Binary op, long e, VectorMask<Integer> m) Combines the corresponding lane values of this vector with those of a second input vector, with selection of lane elements controlled by a mask.abstract IntVectorlanewise(VectorOperators.Binary op, Vector<Integer> v) Combines the corresponding lane values of this vector with those of a second input vector.abstract IntVectorlanewise(VectorOperators.Binary op, Vector<Integer> v, VectorMask<Integer> m) Combines the corresponding lane values of this vector with those of a second input vector, with selection of lane elements controlled by a mask.final IntVectorlanewise(VectorOperators.Ternary op, int e1, int e2) Combines the lane values of this vector with the values of two broadcast scalars.final IntVectorlanewise(VectorOperators.Ternary op, int e1, int e2, VectorMask<Integer> m) Combines the lane values of this vector with the values of two broadcast scalars, with selection of lane elements controlled by a mask.final IntVectorlanewise(VectorOperators.Ternary op, int e1, Vector<Integer> v2) Combines the lane values of this vector with the values of another vector and a broadcast scalar.final IntVectorlanewise(VectorOperators.Ternary op, int e1, Vector<Integer> v2, VectorMask<Integer> m) Combines the lane values of this vector with the values of another vector and a broadcast scalar, with selection of lane elements controlled by a mask.final IntVectorlanewise(VectorOperators.Ternary op, Vector<Integer> v1, int e2) Combines the lane values of this vector with the values of another vector and a broadcast scalar.final IntVectorlanewise(VectorOperators.Ternary op, Vector<Integer> v1, int e2, VectorMask<Integer> m) Combines the lane values of this vector with the values of another vector and a broadcast scalar, with selection of lane elements controlled by a mask.abstract IntVectorCombines the corresponding lane values of this vector with the lanes of a second and a third input vector.abstract IntVectorlanewise(VectorOperators.Ternary op, Vector<Integer> v1, Vector<Integer> v2, VectorMask<Integer> m) Combines the corresponding lane values of this vector with the lanes of a second and a third input vector, with selection of lane elements controlled by a mask.abstract IntVectorOperates on the lane values of this vector.abstract IntVectorOperates on the lane values of this vector, with selection of lane elements controlled by a mask.final VectorMask<Integer> lt(int e) Tests if this vector is less than an input scalar.final VectorMask<Integer> Tests if this vector is less than another input vector.final VectorMask<Integer> maskAll(boolean bit) 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.final IntVectormax(int e) Computes the larger of this vector and the broadcast of an input scalar.final IntVectorComputes the larger of this vector and a second input vector.final IntVectormin(int e) Computes the smaller of this vector and the broadcast of an input scalar.final IntVectorComputes the smaller of this vector and a second input vector.final IntVectormul(int e) Multiplies this vector by the broadcast of an input scalar.final IntVectormul(int e, VectorMask<Integer> m) Multiplies this vector by the broadcast of an input scalar, selecting lane elements controlled by a mask.final IntVectorMultiplies this vector by a second input vector.final IntVectormul(Vector<Integer> v, VectorMask<Integer> m) Multiplies this vector by a second input vector under the control of a mask.final IntVectorneg()Negates this vector.final IntVectornot()Computes the bitwise logical complement (~) of this vector.final IntVectoror(int e) Computes the bitwise logical disjunction (|) of this vector and a scalar.final IntVectorComputes the bitwise logical disjunction (|) of this vector and a second input vector.abstract IntVectorrearrange(VectorShuffle<Integer> shuffle) Rearranges the lane elements of this vector, selecting lanes under the control of a specific shuffle.abstract IntVectorrearrange(VectorShuffle<Integer> s, Vector<Integer> v) Rearranges the lane elements of two vectors, selecting lanes under the control of a specific shuffle, using both normal and exceptional indexes in the shuffle to steer data.abstract IntVectorrearrange(VectorShuffle<Integer> s, VectorMask<Integer> m) Rearranges the lane elements of this vector, selecting lanes under the control of a specific shuffle and a mask.abstract intReturns a value accumulated from all the lanes of this vector.abstract intReturns a value accumulated from selected lanes of this vector, controlled by a mask.final ByteVectorViews this vector as a vector of the same shape and contents but a lane type ofbyte, where the bytes are extracted from the lanes according to little-endian order.Reinterprets this vector as a vector of the same shape and contents but a lane type ofdouble, where the lanes are assembled from successive bytes according to little-endian order.Reinterprets this vector as a vector of the same shape and contents but a lane type offloat, where the lanes are assembled from successive bytes according to little-endian order.Reinterprets this vector as a vector of the same shape and contents but a lane type ofint, where the lanes are assembled from successive bytes according to little-endian order.Reinterprets this vector as a vector of the same shape and contents but a lane type oflong, where the lanes are assembled from successive bytes according to little-endian order.Reinterprets this vector as a vector of the same shape and contents but a lane type ofshort, where the lanes are assembled from successive bytes according to little-endian order.abstract IntVectorselectFrom(Vector<Integer> v) Using index values stored in the lanes of this vector, assemble values stored in second vectorv.abstract IntVectorselectFrom(Vector<Integer> v1, Vector<Integer> v2) Using values stored in the lanes of this vector, assemble values stored in the second vectorv1and third vectorv2.abstract IntVectorselectFrom(Vector<Integer> s, VectorMask<Integer> m) Using index values stored in the lanes of this vector, assemble values stored in second vector, under the control of a mask.abstract IntVectorslice(int origin) Slices a segment of adjacent lanes, starting at a givenoriginlane in the current vector.abstract IntVectorSlices a segment of adjacent lanes, starting at a givenoriginlane in the current vector, and continuing (as needed) into an immediately following vector.final IntVectorslice(int origin, Vector<Integer> w, VectorMask<Integer> m) Slices a segment of adjacent lanes under the control of a mask, starting at a givenoriginlane in the current vector, and continuing (as needed) into an immediately following vector.final VectorSpecies<Integer> species()Returns the species of this vector.final IntVectorsub(int e) Subtracts an input scalar from this vector.final IntVectorsub(int e, VectorMask<Integer> m) Subtracts an input scalar from this vector under the control of a mask.final IntVectorSubtracts a second input vector from this vector.final IntVectorsub(Vector<Integer> v, VectorMask<Integer> m) Subtracts a second input vector from this vector under the control of a mask.abstract VectorMask<Integer> Tests the lanes of this vector according to the given operation.abstract VectorMask<Integer> test(VectorOperators.Test op, VectorMask<Integer> m) Test selected lanes of this vector, according to the given operation.final int[]toArray()Returns an array of typeint[]containing all the lane values.final double[]Returns adouble[]array containing all the lane values, converted to the typedouble.final int[]Returns anint[]array containing all the lane values, converted to the typeint.final long[]Returns along[]array containing all the lane values, converted to the typelong.final StringtoString()Returns a string representation of this vector, of the form"[0,1,2...]", reporting the lane values of this vector, in lane order.abstract IntVectorunslice(int origin) Reverses a slice(), inserting the current vector as a slice within a "background" input of zero lane values.abstract IntVectorReverses a slice(), inserting the current vector as a slice within another "background" input vector, which is regarded as one or the other input to a hypothetical subsequentslice()operation.abstract IntVectorunslice(int origin, Vector<Integer> w, int part, VectorMask<Integer> m) Reverses a slice(), inserting (under the control of a mask) the current vector as a slice within another "background" input vector, which is regarded as one or the other input to a hypothetical subsequentslice()operation.final FloatVectorViews this vector as a vector of the same shape, length, and contents, but a lane type that is a floating-point type.final IntVectorViews this vector as a vector of the same shape, length, and contents, but a lane type that is not a floating-point type.abstract IntVectorwithLane(int i, int e) Replaces the lane element of this vector at lane indexiwith valuee.static IntVectorzero(VectorSpecies<Integer> species) Returns a vector of the given species where all lane elements are set to zero, the default primitive value.Methods declared in class jdk.incubator.vector.VectorbitSize, byteSize, compare, elementSize, elementType, length, reduceLanesToLong, reduceLanesToLong, reinterpretShape, shape, toShuffle
- 
Field Details- 
SPECIES_64Species representingIntVectors ofVectorShape.S_64_BIT.
- 
SPECIES_128Species representingIntVectors ofVectorShape.S_128_BIT.
- 
SPECIES_256Species representingIntVectors ofVectorShape.S_256_BIT.
- 
SPECIES_512Species representingIntVectors ofVectorShape.S_512_BIT.
- 
SPECIES_MAXSpecies representingIntVectors ofVectorShape.S_Max_BIT.
- 
SPECIES_PREFERREDPreferred species forIntVectors. A preferred species is a species of maximal bit-size for the platform.
 
- 
- 
Method Details- 
zeroReturns a vector of the given species where all lane elements are set to zero, the default primitive value.- Parameters:
- species- species of the desired zero vector
- Returns:
- a zero vector
 
- 
broadcastReturns a vector of the same species as this one where all lane elements are set to the primitive valuee. The contents of the current vector are discarded; only the species is relevant to this operation.This method returns the value of this expression: IntVector.broadcast(this.species(), e).- API Note:
- Unlike the similar method named broadcast()in the supertypeVector, this method does not need to validate its argument, and cannot throwIllegalArgumentException. This method is therefore preferable to the supertype method.
- Parameters:
- e- the value to broadcast
- Returns:
- a vector where all lane elements are set to
         the primitive value e
- See Also:
 
- 
broadcastReturns a vector of the given species where all lane elements are set to the primitive valuee.- Parameters:
- species- species of the desired vector
- e- the value to broadcast
- Returns:
- a vector where all lane elements are set to
         the primitive value e
- See Also:
 
- 
broadcastReturns a vector of the same species as this one where all lane elements are set to the primitive valuee. The contents of the current vector are discarded; only the species is relevant to this operation.This method returns the value of this expression: EVector.broadcast(this.species(), (ETYPE)e), whereEVectoris the vector class specific to this vector's element typeETYPE.The longvalueemust be accurately representable by theETYPEof this vector's species, so thate==(long)(ETYPE)e. If this rule is violated the problem is not detected statically, but anIllegalArgumentExceptionis thrown at run-time. Thus, this method somewhat weakens the static type checking of immediate constants and other scalars, but it makes up for this by improving the expressiveness of the generic API. Note that anevalue in the range[-128..127]is always acceptable, since everyETYPEwill accept everybytevalue.- Specified by:
- broadcastin class- Vector<Integer>
- API Note:
- When working with vector subtypes like IntVector, the more strongly typed method is typically selected. It can be explicitly selected using a cast:v.broadcast((int)e). The two expressions will produce numerically identical results.
- Parameters:
- e- the value to broadcast
- Returns:
- a vector where all lane elements are set to
         the primitive value e
- See Also:
 
- 
broadcastReturns a vector of the given species where all lane elements are set to the primitive valuee. Thelongvalue must be accurately representable by theETYPEof the vector species, so thate==(long)(ETYPE)e.- Parameters:
- species- species of the desired vector
- e- the value to broadcast
- Returns:
- a vector where all lane elements are set to
         the primitive value e
- Throws:
- IllegalArgumentException- if the given- longvalue cannot be represented by the vector's- ETYPE
- See Also:
 
- 
lanewiseOperates on the lane values of this vector. This is a lane-wise unary operation which applies the selected operation to each lane.
- 
lanewiseOperates on the lane values of this vector, with selection of lane elements controlled by a mask. This is a lane-wise unary operation which applies the selected operation to each lane.
- 
lanewiseCombines the corresponding lane values of this vector with those of a second input vector. This is a lane-wise binary operation which applies the selected operation to each lane.
- 
lanewisepublic abstract IntVector lanewise(VectorOperators.Binary op, Vector<Integer> v, VectorMask<Integer> m) Combines the corresponding lane values of this vector with those of a second input vector, with selection of lane elements controlled by a mask. This is a lane-wise binary operation which applies the selected operation to each lane.
- 
lanewiseCombines the lane values of this vector with the value of a broadcast scalar. This is a lane-wise binary operation which applies the selected operation to each lane. The return value will be equal to this expression:this.lanewise(op, this.broadcast(e)).- Parameters:
- op- the operation used to process lane values
- e- the input scalar
- Returns:
- the result of applying the operation lane-wise to the two input vectors
- Throws:
- UnsupportedOperationException- if this vector does not support the requested operation
- See Also:
 
- 
lanewiseCombines the lane values of this vector with the value of a broadcast scalar, with selection of lane elements controlled by a mask. This is a masked lane-wise binary operation which applies the selected operation to each lane. The return value will be equal to this expression:this.lanewise(op, this.broadcast(e), m).- Parameters:
- op- the operation used to process lane values
- e- the input scalar
- m- the mask controlling lane selection
- Returns:
- the result of applying the operation lane-wise to the input vector and the scalar
- Throws:
- UnsupportedOperationException- if this vector does not support the requested operation
- See Also:
 
- 
lanewiseCombines the lane values of this vector with the value of a broadcast scalar. This is a lane-wise binary operation which applies the selected operation to each lane. The return value will be equal to this expression:this.lanewise(op, this.broadcast(e)).- Specified by:
- lanewisein class- Vector<Integer>
- API Note:
- When working with vector subtypes like IntVector, the more strongly typed method is typically selected. It can be explicitly selected using a cast:v.lanewise(op,(int)e). The two expressions will produce numerically identical results.
- Parameters:
- op- the operation used to combine lane values
- e- the input scalar
- Returns:
- the result of applying the operation lane-wise to the input vector and the scalar
- See Also:
 
- 
lanewiseCombines the corresponding lane values of this vector with those of a second input vector, with selection of lane elements controlled by a mask. This is a lane-wise binary operation which applies the selected operation to each lane. The second operand is a broadcast integral value. The return value will be equal to this expression:this.lanewise(op, this.broadcast(e), m).- Specified by:
- lanewisein class- Vector<Integer>
- API Note:
- When working with vector subtypes like IntVector, the more strongly typed method is typically selected. It can be explicitly selected using a cast:v.lanewise(op,(int)e,m). The two expressions will produce numerically identical results.
- Parameters:
- op- the operation used to combine lane values
- e- the input scalar
- m- the mask controlling lane selection
- Returns:
- the result of applying the operation lane-wise to the input vector and the scalar
- See Also:
 
- 
lanewise
- 
lanewisepublic abstract IntVector lanewise(VectorOperators.Ternary op, Vector<Integer> v1, Vector<Integer> v2, VectorMask<Integer> m) Combines the corresponding lane values of this vector with the lanes of a second and a third input vector, with selection of lane elements controlled by a mask. This is a lane-wise ternary operation which applies the selected operation to each lane.
- 
lanewiseCombines the lane values of this vector with the values of two broadcast scalars. This is a lane-wise ternary operation which applies the selected operation to each lane. The return value will be equal to this expression:this.lanewise(op, this.broadcast(e1), this.broadcast(e2)).- Parameters:
- op- the operation used to combine lane values
- e1- the first input scalar
- e2- the second input scalar
- Returns:
- the result of applying the operation lane-wise to the input vector and the scalars
- Throws:
- UnsupportedOperationException- if this vector does not support the requested operation
- See Also:
 
- 
lanewiseCombines the lane values of this vector with the values of two broadcast scalars, with selection of lane elements controlled by a mask. This is a masked lane-wise ternary operation which applies the selected operation to each lane. The return value will be equal to this expression:this.lanewise(op, this.broadcast(e1), this.broadcast(e2), m).- Parameters:
- op- the operation used to combine lane values
- e1- the first input scalar
- e2- the second input scalar
- m- the mask controlling lane selection
- Returns:
- the result of applying the operation lane-wise to the input vector and the scalars
- Throws:
- UnsupportedOperationException- if this vector does not support the requested operation
- See Also:
 
- 
lanewiseCombines the lane values of this vector with the values of another vector and a broadcast scalar. This is a lane-wise ternary operation which applies the selected operation to each lane. The return value will be equal to this expression:this.lanewise(op, v1, this.broadcast(e2)).- Parameters:
- op- the operation used to combine lane values
- v1- the other input vector
- e2- the input scalar
- Returns:
- the result of applying the operation lane-wise to the input vectors and the scalar
- Throws:
- UnsupportedOperationException- if this vector does not support the requested operation
- See Also:
 
- 
lanewisepublic final IntVector lanewise(VectorOperators.Ternary op, Vector<Integer> v1, int e2, VectorMask<Integer> m) Combines the lane values of this vector with the values of another vector and a broadcast scalar, with selection of lane elements controlled by a mask. This is a masked lane-wise ternary operation which applies the selected operation to each lane. The return value will be equal to this expression:this.lanewise(op, v1, this.broadcast(e2), m).- Parameters:
- op- the operation used to combine lane values
- v1- the other input vector
- e2- the input scalar
- m- the mask controlling lane selection
- Returns:
- the result of applying the operation lane-wise to the input vectors and the scalar
- Throws:
- UnsupportedOperationException- if this vector does not support the requested operation
- See Also:
 
- 
lanewiseCombines the lane values of this vector with the values of another vector and a broadcast scalar. This is a lane-wise ternary operation which applies the selected operation to each lane. The return value will be equal to this expression:this.lanewise(op, this.broadcast(e1), v2).- Parameters:
- op- the operation used to combine lane values
- e1- the input scalar
- v2- the other input vector
- Returns:
- the result of applying the operation lane-wise to the input vectors and the scalar
- Throws:
- UnsupportedOperationException- if this vector does not support the requested operation
- See Also:
 
- 
lanewisepublic final IntVector lanewise(VectorOperators.Ternary op, int e1, Vector<Integer> v2, VectorMask<Integer> m) Combines the lane values of this vector with the values of another vector and a broadcast scalar, with selection of lane elements controlled by a mask. This is a masked lane-wise ternary operation which applies the selected operation to each lane. The return value will be equal to this expression:this.lanewise(op, this.broadcast(e1), v2, m).- Parameters:
- op- the operation used to combine lane values
- e1- the input scalar
- v2- the other input vector
- m- the mask controlling lane selection
- Returns:
- the result of applying the operation lane-wise to the input vectors and the scalar
- Throws:
- UnsupportedOperationException- if this vector does not support the requested operation
- See Also:
 
- 
addAdds this vector to a second input vector. This is a lane-wise binary operation which applies the primitive addition operation (+) to each pair of corresponding lane values. This method is also equivalent to the expressionlanewise(ADD, v).As a full-service named operation, this method comes in masked and unmasked overloadings, and (in subclasses) also comes in scalar-broadcast overloadings (both masked and unmasked). 
- 
addAdds this vector to the broadcast of an input scalar. This is a lane-wise binary operation which applies the primitive addition operation (+) to each lane. This method is also equivalent to the expressionlanewise(ADD, e).- Parameters:
- e- the input scalar
- Returns:
- the result of adding each lane of this vector to the scalar
- See Also:
 
- 
addAdds this vector to a second input vector, selecting lanes under the control of a mask. This is a masked lane-wise binary operation which applies the primitive addition operation (+) to each pair of corresponding lane values. For any lane unset in the mask, the primitive operation is suppressed and this vector retains the original value stored in that lane. This method is also equivalent to the expressionlanewise(ADD, v, m).As a full-service named operation, this method comes in masked and unmasked overloadings, and (in subclasses) also comes in scalar-broadcast overloadings (both masked and unmasked). 
- 
addAdds this vector to the broadcast of an input scalar, selecting lane elements controlled by a mask. This is a masked lane-wise binary operation which applies the primitive addition operation (+) to each lane. This method is also equivalent to the expressionlanewise(ADD, s, m).- Parameters:
- e- the input scalar
- m- the mask controlling lane selection
- Returns:
- the result of adding each lane of this vector to the scalar
- See Also:
 
- 
subSubtracts a second input vector from this vector. This is a lane-wise binary operation which applies the primitive subtraction operation (-) to each pair of corresponding lane values. This method is also equivalent to the expressionlanewise(SUB, v).As a full-service named operation, this method comes in masked and unmasked overloadings, and (in subclasses) also comes in scalar-broadcast overloadings (both masked and unmasked). 
- 
subSubtracts an input scalar from this vector. This is a masked lane-wise binary operation which applies the primitive subtraction operation (-) to each lane. This method is also equivalent to the expressionlanewise(SUB, e).- Parameters:
- e- the input scalar
- Returns:
- the result of subtracting the scalar from each lane of this vector
- See Also:
 
- 
subSubtracts a second input vector from this vector under the control of a mask. This is a masked lane-wise binary operation which applies the primitive subtraction operation (-) to each pair of corresponding lane values. For any lane unset in the mask, the primitive operation is suppressed and this vector retains the original value stored in that lane. This method is also equivalent to the expressionlanewise(SUB, v, m).As a full-service named operation, this method comes in masked and unmasked overloadings, and (in subclasses) also comes in scalar-broadcast overloadings (both masked and unmasked). 
- 
subSubtracts an input scalar from this vector under the control of a mask. This is a masked lane-wise binary operation which applies the primitive subtraction operation (-) to each lane. This method is also equivalent to the expressionlanewise(SUB, s, m).- Parameters:
- e- the input scalar
- m- the mask controlling lane selection
- Returns:
- the result of subtracting the scalar from each lane of this vector
- See Also:
 
- 
mulMultiplies this vector by a second input vector. This is a lane-wise binary operation which applies the primitive multiplication operation (*) to each pair of corresponding lane values. This method is also equivalent to the expressionlanewise(MUL, v).As a full-service named operation, this method comes in masked and unmasked overloadings, and (in subclasses) also comes in scalar-broadcast overloadings (both masked and unmasked). 
- 
mulMultiplies this vector by the broadcast of an input scalar. This is a lane-wise binary operation which applies the primitive multiplication operation (*) to each lane. This method is also equivalent to the expressionlanewise(MUL, e).- Parameters:
- e- the input scalar
- Returns:
- the result of multiplying this vector by the given scalar
- See Also:
 
- 
mulMultiplies this vector by a second input vector under the control of a mask. This is a lane-wise binary operation which applies the primitive multiplication operation (*) to each pair of corresponding lane values. For any lane unset in the mask, the primitive operation is suppressed and this vector retains the original value stored in that lane. This method is also equivalent to the expressionlanewise(MUL, v, m).As a full-service named operation, this method comes in masked and unmasked overloadings, and (in subclasses) also comes in scalar-broadcast overloadings (both masked and unmasked). 
- 
mulMultiplies this vector by the broadcast of an input scalar, selecting lane elements controlled by a mask. This is a masked lane-wise binary operation which applies the primitive multiplication operation (*) to each lane. This method is also equivalent to the expressionlanewise(MUL, s, m).- Parameters:
- e- the input scalar
- m- the mask controlling lane selection
- Returns:
- the result of muling each lane of this vector to the scalar
- See Also:
 
- 
divDivides this vector by a second input vector. This is a lane-wise binary operation which applies the primitive division operation (/) to each pair of corresponding lane values. This method is also equivalent to the expressionlanewise(DIV, v).As a full-service named operation, this method comes in masked and unmasked overloadings, and (in subclasses) also comes in scalar-broadcast overloadings (both masked and unmasked). 
- 
divDivides this vector by the broadcast of an input scalar. This is a lane-wise binary operation which applies the primitive division operation (/) to each lane. This method is also equivalent to the expressionlanewise(DIV, e).- API Note:
- If there is a zero divisor, ArithmeticExceptionwill be thrown.
- Parameters:
- e- the input scalar
- Returns:
- the result of dividing each lane of this vector by the scalar
- See Also:
 
- 
divDivides this vector by a second input vector under the control of a mask. This is a lane-wise binary operation which applies the primitive division operation (/) to each pair of corresponding lane values. For any lane unset in the mask, the primitive operation is suppressed and this vector retains the original value stored in that lane. This method is also equivalent to the expressionlanewise(DIV, v, m).As a full-service named operation, this method comes in masked and unmasked overloadings, and (in subclasses) also comes in scalar-broadcast overloadings (both masked and unmasked). 
- 
divDivides this vector by the broadcast of an input scalar, selecting lane elements controlled by a mask. This is a masked lane-wise binary operation which applies the primitive division operation (/) to each lane. This method is also equivalent to the expressionlanewise(DIV, s, m).- API Note:
- If there is a zero divisor, ArithmeticExceptionwill be thrown.
- Parameters:
- e- the input scalar
- m- the mask controlling lane selection
- Returns:
- the result of dividing each lane of this vector by the scalar
- See Also:
 
- 
min
- 
minComputes the smaller of this vector and the broadcast of an input scalar. This is a lane-wise binary operation which applies the operationMath.min()to each pair of corresponding lane values. This method is also equivalent to the expressionlanewise(MIN, e).- Parameters:
- e- the input scalar
- Returns:
- the result of multiplying this vector by the given scalar
- See Also:
 
- 
maxComputes the larger of this vector and a second input vector. This is a lane-wise binary operation which applies the operationMath.max()to each pair of corresponding lane values. This method is also equivalent to the expressionlanewise(MAX, v).This is not a full-service named operation like add(). A masked version of this operation is not directly available but may be obtained via the masked version oflanewise. Subclasses define an additional scalar-broadcast overloading of this method.
- 
maxComputes the larger of this vector and the broadcast of an input scalar. This is a lane-wise binary operation which applies the operationMath.max()to each pair of corresponding lane values. This method is also equivalent to the expressionlanewise(MAX, e).- Parameters:
- e- the input scalar
- Returns:
- the result of multiplying this vector by the given scalar
- See Also:
 
- 
andComputes the bitwise logical conjunction (&) of this vector and a second input vector. This is a lane-wise binary operation which applies the the primitive bitwise "and" operation (&) to each pair of corresponding lane values. This method is also equivalent to the expressionlanewise(AND, v).This is not a full-service named operation like add. A masked version of this operation is not directly available but may be obtained via the masked version oflanewise.- Parameters:
- v- a second input vector
- Returns:
- the bitwise &of this vector and the second input vector
- See Also:
 
- 
andComputes the bitwise logical conjunction (&) of this vector and a scalar. This is a lane-wise binary operation which applies the the primitive bitwise "and" operation (&) to each pair of corresponding lane values. This method is also equivalent to the expressionlanewise(AND, e).- Parameters:
- e- an input scalar
- Returns:
- the bitwise &of this vector and scalar
- See Also:
 
- 
orComputes the bitwise logical disjunction (|) of this vector and a second input vector. This is a lane-wise binary operation which applies the the primitive bitwise "or" operation (|) to each pair of corresponding lane values. This method is also equivalent to the expressionlanewise(AND, v).This is not a full-service named operation like add. A masked version of this operation is not directly available but may be obtained via the masked version oflanewise.- Parameters:
- v- a second input vector
- Returns:
- the bitwise |of this vector and the second input vector
- See Also:
 
- 
orComputes the bitwise logical disjunction (|) of this vector and a scalar. This is a lane-wise binary operation which applies the the primitive bitwise "or" operation (|) to each pair of corresponding lane values. This method is also equivalent to the expressionlanewise(OR, e).- Parameters:
- e- an input scalar
- Returns:
- the bitwise |of this vector and scalar
- See Also:
 
- 
neg
- 
abs
- 
notComputes the bitwise logical complement (~) of this vector. This is a lane-wise binary operation which applies the the primitive bitwise "not" operation (~) to each lane value. This method is also equivalent to the expressionlanewise(NOT).This is not a full-service named operation like add. A masked version of this operation is not directly available but may be obtained via the masked version oflanewise.- Returns:
- the bitwise complement ~of this vector
- See Also:
 
- 
eqTests if this vector is equal to another input vector. This is a lane-wise binary test operation which applies the primitive equals operation (==) to each pair of corresponding lane values. The result is the same ascompare(VectorOperators.EQ, v).
- 
eqTests if this vector is equal to an input scalar. This is a lane-wise binary test operation which applies the primitive equals operation (==) to each lane. The result is the same ascompare(VectorOperators.Comparison.EQ, e).- Parameters:
- e- the input scalar
- Returns:
- the result mask of testing if this vector
         is equal to e
- See Also:
 
- 
ltTests if this vector is less than another input vector. This is a lane-wise binary test operation which applies the primitive less-than operation (<) to each lane. The result is the same ascompare(VectorOperators.LT, v).
- 
ltTests if this vector is less than an input scalar. This is a lane-wise binary test operation which applies the primitive less than operation (<) to each lane. The result is the same ascompare(VectorOperators.LT, e).- Parameters:
- e- the input scalar
- Returns:
- the mask result of testing if this vector is less than the input scalar
- See Also:
 
- 
testTests the lanes of this vector according to the given operation. This is a lane-wise unary test operation which applies the given test operation to each lane value.
- 
testTest selected lanes of this vector, according to the given operation. This is a masked lane-wise unary test operation which applies the given test operation to each lane value. The returned result is equal to the expressiontest(op).and(m).
- 
compareTests this vector by comparing it with another input vector, according to the given comparison operation. This is a lane-wise binary test operation which applies the given comparison operation to each pair of corresponding lane values.
- 
compareTests this vector by comparing it with an input scalar, according to the given comparison operation. This is a lane-wise binary test operation which applies the comparison operation to each lane.The result is the same as compare(op, broadcast(species(), e)). That is, the scalar may be regarded as broadcast to a vector of the same species, and then compared against the original vector, using the selected comparison operation.- Parameters:
- op- the operation used to compare lane values
- e- the input scalar
- Returns:
- the mask result of testing lane-wise if this vector compares to the input, according to the selected comparison operator
- See Also:
 
- 
comparepublic final VectorMask<Integer> compare(VectorOperators.Comparison op, int e, VectorMask<Integer> m) Tests this vector by comparing it with an input scalar, according to the given comparison operation, in lanes selected by a mask. This is a masked lane-wise binary test operation which applies to each pair of corresponding lane values. The returned result is equal to the expressioncompare(op,s).and(m).- Parameters:
- op- the operation used to compare lane values
- e- the input scalar
- m- the mask controlling lane selection
- Returns:
- the mask result of testing lane-wise if this vector compares to the input, according to the selected comparison operator, and only in the lanes selected by the mask
- See Also:
 
- 
compareTests this vector by comparing it with an input scalar, according to the given comparison operation. This is a lane-wise binary test operation which applies the given comparison operation to each lane value, paired with the broadcast value.The result is the same as this.compare(op, this.broadcast(e)). That is, the scalar may be regarded as broadcast to a vector of the same species, and then compared against the original vector, using the selected comparison operation.
- 
comparepublic final VectorMask<Integer> compare(VectorOperators.Comparison op, long e, VectorMask<Integer> m) Tests this vector by comparing it with an input scalar, according to the given comparison operation, in lanes selected by a mask. This is a masked lane-wise binary test operation which applies the given comparison operation to each lane value, paired with the broadcast value. The returned result is equal to the expressioncompare(op,e).and(m).- Specified by:
- comparein class- Vector<Integer>
- Parameters:
- op- the operation used to compare lane values
- e- the input scalar
- m- the mask controlling lane selection
- Returns:
- the mask result of testing lane-wise if this vector compares to the input, according to the selected comparison operator, and only in the lanes selected by the mask
- See Also:
 
- 
blendReplaces selected lanes of this vector with corresponding lanes from a second input vector under the control of a mask. This is a masked lane-wise binary operation which selects each lane value from one or the other input.- For any lane set in the mask, the new lane value is taken from the second input vector, and replaces whatever value was in the that lane of this vector.
- For any lane unset in the mask, the replacement is suppressed and this vector retains the original value stored in that lane.
 Vector<E> a = ...; VectorSpecies<E> species = a.species(); Vector<E> b = ...; b.check(species); VectorMask<E> m = ...; ETYPE[] ar = a.toArray(); for (int i = 0; i < ar.length; i++) { if (m.laneIsSet(i)) { ar[i] = b.lane(i); } } return EVector.fromArray(s, ar, 0);
- 
addIndexAdds the lanes of this vector to their corresponding lane numbers, scaled by a given constant. This is a lane-wise unary operation which, for each laneN, computes the scaled index valueN*scaleand adds it to the value already in laneNof the current vector.The scale must not be so large, and the element size must not be so small, that that there would be an overflow when computing any of the N*scaleorVLENGTH*scale, when the result is represented using the vector lane typeETYPE.The following pseudocode illustrates this behavior: Vector<E> a = ...; VectorSpecies<E> species = a.species(); ETYPE[] ar = a.toArray(); for (int i = 0; i < ar.length; i++) { long d = (long)i * scale; if (d != (ETYPE) d) throw ...; ar[i] += (ETYPE) d; } long d = (long)ar.length * scale; if (d != (ETYPE) d) throw ...; return EVector.fromArray(s, ar, 0);
- 
blendReplaces selected lanes of this vector with a scalar value under the control of a mask. This is a masked lane-wise binary operation which selects each lane value from one or the other input. The returned result is equal to the expressionblend(broadcast(e),m).- Parameters:
- e- the input scalar, containing the replacement lane value
- m- the mask controlling lane selection of the scalar
- Returns:
- the result of blending the lane elements of this vector with the scalar value
 
- 
blendReplaces selected lanes of this vector with a scalar value under the control of a mask. This is a masked lane-wise binary operation which selects each lane value from one or the other input. The returned result is equal to the expressionblend(broadcast(e),m).
- 
sliceSlices a segment of adjacent lanes, starting at a givenoriginlane in the current vector, and continuing (as needed) into an immediately following vector. The block ofVLENGTHlanes is extracted into its own vector and returned.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 2*VLENGTH, from which a slice is extracted. The lane numberedNin the output vector is copied from laneorigin+Nof the input vector, if that lane exists, else from laneorigin+N-VLENGTHof the second vector (which is guaranteed to exist).The originvalue must be in the inclusive range0..VLENGTH. As limiting cases,v.slice(0,w)andv.slice(VLENGTH,w)returnvandw, respectively.- Parameters:
- origin- the first input lane to transfer into the slice
- v1- a second vector logically concatenated with the first, before the slice is taken (if omitted it defaults to zero)
- Returns:
- a contiguous slice of VLENGTHlanes, taken from this vector starting at the indicated origin, and continuing (as needed) into the second vector
- See Also:
 
- 
sliceSlices a segment of adjacent lanes under the control of a mask, starting at a givenoriginlane in the current vector, and continuing (as needed) into an immediately following vector. The block ofVLENGTHlanes is extracted into its own vector and returned. The resulting vector will be zero in all lanes unset in the given mask. Lanes set in the mask will contain data copied from selected lanes ofthisorv1.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 2*VLENGTH, from which a slice is extracted. The returned result is equal to the expressionbroadcast(0).blend(slice(origin,v1),m).- Specified by:
- slicein class- Vector<Integer>
- Parameters:
- origin- the first input lane to transfer into the slice
- w- a second vector logically concatenated with the first, before the slice is taken (if omitted it defaults to zero)
- m- the mask controlling lane selection into the resulting vector
- Returns:
- a contiguous slice of VLENGTHlanes, taken from this vector starting at the indicated origin, and continuing (as needed) into the second vector
- See Also:
 
- 
sliceSlices a segment of adjacent lanes, starting at a givenoriginlane in the current vector. A block ofVLENGTHlanes, possibly padded with zero lanes, is extracted into its own vector and returned. This is a convenience method which slices from a single vector against an extended background of zero lanes. It is equivalent toslice(origin,broadcast(0)). It may also be viewed simply as a cross-lane shift from later to earlier lanes, with zeroes filling in the vacated lanes at the end of the vector. In this view, the shift count isorigin.- Parameters:
- origin- the first input lane to transfer into the slice
- Returns:
- the last VLENGTH-origininput lanes, placed starting in the first lane of the output, padded at the end with zeroes
- See Also:
 
- 
unsliceReverses a slice(), inserting the current vector as a slice within another "background" input vector, which is regarded as one or the other input to a hypothetical subsequentslice()operation.This is a cross-lane operation that permutes the lane elements of the current vector toward the back and inserts them into a logical pair of background vectors. Only one of the pair will be returned, however. The background is formed by duplicating the second input vector. (However, the output will never contain two duplicates from the same input lane.) The lane numbered Nin the input vector is copied into laneorigin+Nof the first background vector, if that lane exists, else into laneorigin+N-VLENGTHof the second background vector (which is guaranteed to exist). The first or second background vector, updated with the inserted slice, is returned. Thepartnumber of zero or one selects the first or second updated background vector.The originvalue must be in the inclusive range0..VLENGTH. As limiting cases,v.unslice(0,w,0)andv.unslice(VLENGTH,w,1)both returnv, whilev.unslice(0,w,1)andv.unslice(VLENGTH,w,0)both returnw.- Specified by:
- unslicein class- Vector<Integer>
- Parameters:
- origin- the first output lane to receive the slice
- w- the background vector that (as two copies) will receive the inserted slice
- part- the part number of the result (either zero or one)
- Returns:
- either the first or second part of a pair of
         background vectors w, updated by inserting this vector at the indicated origin
- See Also:
 
- 
unsliceReverses a slice(), inserting (under the control of a mask) the current vector as a slice within another "background" input vector, which is regarded as one or the other input to a hypothetical subsequentslice()operation.This is a cross-lane operation that permutes the lane elements of the current vector forward and inserts its lanes (when selected by the mask) into a logical pair of background vectors. As with the unmasked version of this method, only one of the pair will be returned, as selected by the partnumber. For each laneNselected by the mask, the lane value is copied into laneorigin+Nof the first background vector, if that lane exists, else into laneorigin+N-VLENGTHof the second background vector (which is guaranteed to exist). Background lanes retain their original values if the corresponding input lanesNare unset in the mask. The first or second background vector, updated with set lanes of the inserted slice, is returned. Thepartnumber of zero or one selects the first or second updated background vector.- Specified by:
- unslicein class- Vector<Integer>
- Parameters:
- origin- the first output lane to receive the slice
- w- the background vector that (as two copies) will receive the inserted slice, if they are set in- m
- part- the part number of the result (either zero or one)
- m- the mask controlling lane selection from the current vector
- Returns:
- either the first or second part of a pair of
         background vectors w, updated by inserting selected lanes of this vector at the indicated origin
- See Also:
 
- 
unsliceReverses a slice(), inserting the current vector as a slice within a "background" input of zero lane values. Compared to otherunslice()methods, this method only returns the first of the pair of background vectors. This is a convenience method which returns the result ofunslice(origin,broadcast(0), 0). It may also be viewed simply as a cross-lane shift from earlier to later lanes, with zeroes filling in the vacated lanes at the beginning of the vector. In this view, the shift count isorigin.
- 
rearrangeRearranges the lane elements of this vector, selecting lanes under the control of a specific shuffle. This is a cross-lane operation that rearranges the lane elements of this vector. For each laneNof the shuffle, and for each lane source indexI=s.wrapIndex(s.laneSource(N))in the shuffle, the output laneNobtains the value from the input vector at laneI.
- 
rearrangeRearranges the lane elements of this vector, selecting lanes under the control of a specific shuffle and a mask. This is a cross-lane operation that rearranges the lane elements of this vector. For each laneNof the shuffle, and for each lane source indexI=s.wrapIndex(s.laneSource(N))in the shuffle, the output laneNobtains the value from the input vector at laneIif the mask is set. Otherwise the output laneNis set to zero.This method returns the value of this pseudocode: Vector<E> r = this.rearrange(s); return broadcast(0).blend(r, m);
- 
rearrangeRearranges the lane elements of two vectors, selecting lanes under the control of a specific shuffle, using both normal and exceptional indexes in the shuffle to steer data. This is a cross-lane operation that rearranges the lane elements of the two input vectors (the current vector and a second vectorv). For each laneNof the shuffle, and for each lane source indexI=s.laneSource(N)in the shuffle, the output laneNobtains the value from the first vector at laneIifI>=0. Otherwise, the exceptional indexIis wrapped by addingVLENGTHto it and used to index the second vector, at indexI+VLENGTH.This method returns the value of this pseudocode: Vector<E> r1 = this.rearrange(s.wrapIndexes()); // or else: r1 = this.rearrange(s, s.laneIsValid()); Vector<E> r2 = v.rearrange(s.wrapIndexes()); return r2.blend(r1,s.laneIsValid());
- 
compressCompresses the lane elements of this vector selecting lanes under the control of a specific mask. This is a cross-lane operation that compresses the lane elements of this vector as selected by the specified mask. For each laneNof the mask, if the mask at laneNis set, the element at laneNof input vector is selected and stored into the output vector contiguously starting from the lane0. All the upper remaining lanes, if any, of the output vector are set to zero.
- 
expandExpands the lane elements of this vector under the control of a specific mask. This is a cross-lane operation that expands the contiguous lane elements of this vector into lanes of an output vector as selected by the specified mask. For each laneNof the mask, if the mask at laneNis set, the next contiguous element of input vector starting from lane0is selected and stored into the output vector at laneN. All the remaining lanes, if any, of the output vector are set to zero.
- 
selectFromUsing index values stored in the lanes of this vector, assemble values stored in second vectorv. The second vector thus serves as a table, whose elements are selected by indexes in the current vector. This is a cross-lane operation that rearranges the lane elements of the argument vector, under the control of this vector. For each laneNof this vector, and for each lane valueI=wrapIndex(this.lane(N))in this vector, the output laneNobtains the value from the argument vector at laneI. In this way, the result contains only values stored in the argument vectorv, but presented in an order which depends on the index values inthis. The result is the same as the expressionv.rearrange(this.toShuffle()).- Specified by:
- selectFromin class- Vector<Integer>
- Parameters:
- v- the vector supplying the result values
- Returns:
- the rearrangement of the lane elements of v
- See Also:
 
- 
selectFromUsing index values stored in the lanes of this vector, assemble values stored in second vector, under the control of a mask. Using index values stored in the lanes of this vector, assemble values stored in second vectorv. The second vector thus serves as a table, whose elements are selected by indexes in the current vector. Lanes that are unset in the mask receive a zero rather than a value from the table. This is a cross-lane operation that rearranges the lane elements of the argument vector, under the control of this vector and the mask. The result is the same as the expressionv.rearrange(this.toShuffle(), m).- Specified by:
- selectFromin class- Vector<Integer>
- Parameters:
- s- the vector supplying the result values
- m- the mask controlling selection from- v
- Returns:
- the rearrangement of the lane elements of v
- See Also:
 
- 
selectFromUsing values stored in the lanes of this vector, assemble values stored in the second vectorv1and third vectorv2. The second and third vectors thus serve as a table, whose elements are selected by indexes in this vector. This is a cross-lane operation that rearranges the lane elements of the argument vectors, under the control of this vector. For each laneNof this vector, and for each lane valueI=wrapIndex(this.lane(N)in this vector, the output laneNobtains the value from the second vector at laneIifI < VLENGTH. Otherwise, the output laneNobtains the value from the third vector at laneI - VLENGTH. Here,VLENGTHis the result ofthis.length(), and for integral valueswrapIndexcomputes the result ofMath.floorMod(E, 2 * VLENGTH), whereEis the index to be wrapped. As long asVLENGTHis a power of two, then the result is also equal toE & (2 * VLENGTH - 1). For floating point valueswrapIndexcomputesMath.floorMod(convert(E), 2 * VLENGTH), whereconvertconverts the floating point value to an integral value with the same number of representational bits - as in converting a double value to a long value ((long)doubleVal), or a float value to an int value ((int)floatVal). In this way, the result contains only values stored in the argument vectorsv1andv2, but presented in an order which depends on the index values inthis. The result for integral values is the same as the expressionwhenv1.rearrange( this.lanewise(VectorOperators.AND, 2 * VLENGTH - 1).toShuffle(), v2)VLENGTHis a power of two. The lane-wiseANDoperation results in a vector whose elements are in the range[0, 2 * VLENGTH - 1]). The shuffle conversion results in a partially wrapped shuffle whose indexes are in the range[-VLENGTH, VLENGTH - 1]), where exceptional indexes are used to select elements in the third vector.- Specified by:
- selectFromin class- Vector<Integer>
- Parameters:
- v1- the first input vector
- v2- the second input vector
- Returns:
- the rearrangement of lane elements of v1andv2
- See Also:
 
- 
bitwiseBlendBlends together the bits of two vectors under the control of a third, which supplies mask bits. This is a lane-wise ternary operation which performs a bitwise blending operation(a&~c)|(b&c)to each lane. This method is also equivalent to the expressionlanewise(BITWISE_BLEND, bits, mask).- Parameters:
- bits- input bits to blend into the current vector
- mask- a bitwise mask to enable blending of the input bits
- Returns:
- the bitwise blend of the given bits into the current vector, under control of the bitwise mask
- See Also:
 
- 
bitwiseBlendBlends together the bits of a vector and a scalar under the control of another scalar, which supplies mask bits. This is a lane-wise ternary operation which performs a bitwise blending operation(a&~c)|(b&c)to each lane. This method is also equivalent to the expressionlanewise(BITWISE_BLEND, bits, mask).- Parameters:
- bits- input bits to blend into the current vector
- mask- a bitwise mask to enable blending of the input bits
- Returns:
- the bitwise blend of the given bits into the current vector, under control of the bitwise mask
- See Also:
 
- 
bitwiseBlendBlends together the bits of a vector and a scalar under the control of another vector, which supplies mask bits. This is a lane-wise ternary operation which performs a bitwise blending operation(a&~c)|(b&c)to each lane. This method is also equivalent to the expressionlanewise(BITWISE_BLEND, bits, mask).- Parameters:
- bits- input bits to blend into the current vector
- mask- a bitwise mask to enable blending of the input bits
- Returns:
- the bitwise blend of the given bits into the current vector, under control of the bitwise mask
- See Also:
 
- 
bitwiseBlendBlends together the bits of two vectors under the control of a scalar, which supplies mask bits. This is a lane-wise ternary operation which performs a bitwise blending operation(a&~c)|(b&c)to each lane. This method is also equivalent to the expressionlanewise(BITWISE_BLEND, bits, mask).- Parameters:
- bits- input bits to blend into the current vector
- mask- a bitwise mask to enable blending of the input bits
- Returns:
- the bitwise blend of the given bits into the current vector, under control of the bitwise mask
- See Also:
 
- 
reduceLanesReturns a value accumulated from all the lanes of this vector. This is an associative cross-lane reduction operation which applies the specified operation to all the lane elements.A few reduction operations do not support arbitrary reordering of their operands, yet are included here because of their usefulness. - 
 In the case of FIRST_NONZERO, the reduction returns the value from the lowest-numbered non-zero lane.
- All other reduction operations are fully commutative and associative. The implementation can choose any order of processing, yet it will always produce the same result.
 - Parameters:
- op- the operation used to combine lane values
- Returns:
- the accumulated result
- Throws:
- UnsupportedOperationException- if this vector does not support the requested operation
- See Also:
 
- 
 In the case of 
- 
reduceLanesReturns a value accumulated from selected lanes of this vector, controlled by a mask. This is an associative cross-lane reduction operation which applies the specified operation to the selected lane elements.If no elements are selected, an operation-specific identity value is returned. - 
 If the operation is
  ADD,XOR,OR, orFIRST_NONZERO, then the identity value is zero, the defaultintvalue.
- 
 If the operation is MUL, then the identity value is one.
- 
 If the operation is AND, then the identity value is minus one (all bits set).
- 
 If the operation is MAX, then the identity value isInteger.MIN_VALUE.
- 
 If the operation is MIN, then the identity value isInteger.MAX_VALUE.
 A few reduction operations do not support arbitrary reordering of their operands, yet are included here because of their usefulness. - 
 In the case of FIRST_NONZERO, the reduction returns the value from the lowest-numbered non-zero lane.
- All other reduction operations are fully commutative and associative. The implementation can choose any order of processing, yet it will always produce the same result.
 - Parameters:
- op- the operation used to combine lane values
- m- the mask controlling lane selection
- Returns:
- the reduced result accumulated from the selected lane values
- Throws:
- UnsupportedOperationException- if this vector does not support the requested operation
- See Also:
 
- 
 If the operation is
  
- 
lanepublic abstract int lane(int i) Gets the lane element at lane indexi- Parameters:
- i- the lane index
- Returns:
- the lane element at lane index i
- Throws:
- IllegalArgumentException- if the index is out of range (- < 0 || >= length())
 
- 
withLaneReplaces the lane element of this vector at lane indexiwith valuee. This is a cross-lane operation and behaves as if it returns the result of blending this vector with an input vector that is the result of broadcastingeand a mask that has only one lane set at lane indexi.- Parameters:
- i- the lane index of the lane element to be replaced
- e- the value to be placed
- Returns:
- the result of replacing the lane element of this vector at lane
 index iwith valuee.
- Throws:
- IllegalArgumentException- if the index is out of range (- < 0 || >= length())
 
- 
toArraypublic final int[] toArray()Returns an array of typeint[]containing all the lane values. The array length is the same as the vector length. The array elements are stored in lane order.This method behaves as if it stores this vector into an allocated array (using intoArray) and returns the array as follows:int[] a = new int[this.length()]; this.intoArray(a, 0); return a;
- 
toIntArraypublic final int[] toIntArray()Returns anint[]array containing all the lane values, converted to the typeint. The array length is the same as the vector length. The array elements are converted as if by casting and stored in lane order. This operation may fail if the vector element type isfloatordouble, when lanes contain fractional or out-of-range values. If any vector lane value is not representable as anint, an exception is thrown. This is an alias fortoArray()When this method is used on used on vectors of typeIntVector, there will be no loss of range or precision.- Specified by:
- toIntArrayin class- Vector<Integer>
- Returns:
- an int[]array containing the lane values of this vector
- See Also:
 
- 
toLongArraypublic final long[] toLongArray()Returns along[]array containing all the lane values, converted to the typelong. The array length is the same as the vector length. The array elements are converted as if by casting and stored in lane order. This operation may fail if the vector element type isfloatordouble, when lanes contain fractional or out-of-range values. If any vector lane value is not representable as along, an exception is thrown.- Specified by:
- toLongArrayin class- Vector<Integer>
- Implementation Note:
- When this method is used on used on vectors
 of type IntVector, there will be no loss of precision or range, and so noUnsupportedOperationExceptionwill be thrown.
- Returns:
- a long[]array containing the lane values of this vector
- See Also:
 
- 
toDoubleArraypublic final double[] toDoubleArray()Returns adouble[]array containing all the lane values, converted to the typedouble. The array length is the same as the vector length. The array elements are converted as if by casting and stored in lane order. This operation can lose precision if the vector element type islong.- Specified by:
- toDoubleArrayin class- Vector<Integer>
- Implementation Note:
- When this method is used on used on vectors
 of type IntVector, there will be no loss of precision.
- Returns:
- a double[]array containing the lane values of this vector, possibly rounded to representabledoublevalues
- See Also:
 
- 
fromArrayLoads a vector from an array of typeint[]starting at an offset. For each vector lane, whereNis the vector lane index, the array element at indexoffset + Nis placed into the resulting vector at lane indexN.- Parameters:
- species- species of desired vector
- a- the array
- offset- the offset into the array
- Returns:
- the vector loaded from an array
- Throws:
- IndexOutOfBoundsException- if- offset+N < 0or- offset+N >= a.lengthfor any lane- Nin the vector
 
- 
fromArraypublic static IntVector fromArray(VectorSpecies<Integer> species, int[] a, int offset, VectorMask<Integer> m) Loads a vector from an array of typeint[]starting at an offset and using a mask. Lanes where the mask is unset are filled with the default value ofint(zero). For each vector lane, whereNis the vector lane index, if the mask lane at indexNis set then the array element at indexoffset + Nis placed into the resulting vector at lane indexN, otherwise the default element value is placed into the resulting vector at lane indexN.- Parameters:
- species- species of desired vector
- a- the array
- offset- the offset into the array
- m- the mask controlling lane selection
- Returns:
- the vector loaded from an array
- Throws:
- IndexOutOfBoundsException- if- offset+N < 0or- offset+N >= a.lengthfor any lane- Nin the vector where the mask is set
 
- 
fromArraypublic static IntVector fromArray(VectorSpecies<Integer> species, int[] a, int offset, int[] indexMap, int mapOffset) Gathers a new vector composed of elements from an array of typeint[], using indexes obtained by adding a fixedoffsetto a series of secondary offsets from an index map. The index map is a contiguous sequence ofVLENGTHelements in a second array ofints, starting at a givenmapOffset.For each vector lane, where Nis the vector lane index, the lane is loaded from the array elementa[f(N)], wheref(N)is the index mapping expressionoffset + indexMap[mapOffset + N]].- Parameters:
- species- species of desired vector
- a- the array
- offset- the offset into the array, may be negative if relative indexes in the index map compensate to produce a value within the array bounds
- indexMap- the index map
- mapOffset- the offset into the index map
- Returns:
- the vector loaded from the indexed elements of the array
- Throws:
- IndexOutOfBoundsException- if- mapOffset+N < 0or if- mapOffset+N >= indexMap.length, or if- f(N)=offset+indexMap[mapOffset+N]is an invalid index into- a, for any lane- Nin the vector
- See Also:
 
- 
fromArraypublic static IntVector fromArray(VectorSpecies<Integer> species, int[] a, int offset, int[] indexMap, int mapOffset, VectorMask<Integer> m) Gathers a new vector composed of elements from an array of typeint[], under the control of a mask, and using indexes obtained by adding a fixedoffsetto a series of secondary offsets from an index map. The index map is a contiguous sequence ofVLENGTHelements in a second array ofints, starting at a givenmapOffset.For each vector lane, where Nis the vector lane index, if the lane is set in the mask, the lane is loaded from the array elementa[f(N)], wheref(N)is the index mapping expressionoffset + indexMap[mapOffset + N]]. Unset lanes in the resulting vector are set to zero.- Parameters:
- species- species of desired vector
- a- the array
- offset- the offset into the array, may be negative if relative indexes in the index map compensate to produce a value within the array bounds
- indexMap- the index map
- mapOffset- the offset into the index map
- m- the mask controlling lane selection
- Returns:
- the vector loaded from the indexed elements of the array
- Throws:
- IndexOutOfBoundsException- if- mapOffset+N < 0or if- mapOffset+N >= indexMap.length, or if- f(N)=offset+indexMap[mapOffset+N]is an invalid index into- a, for any lane- Nin the vector where the mask is set
- See Also:
 
- 
fromMemorySegmentpublic static IntVector fromMemorySegment(VectorSpecies<Integer> species, MemorySegment ms, long offset, ByteOrder bo) Loads a vector from a memory segment starting at an offset into the memory segment. Bytes are composed into primitive lane elements according to the specified byte order. The vector is arranged into lanes according to memory ordering.This method behaves as if it returns the result of calling fromMemorySegment()as follows:var m = species.maskAll(true); return fromMemorySegment(species, ms, offset, bo, m);- Parameters:
- species- species of desired vector
- ms- the memory segment
- offset- the offset into the memory segment
- bo- the intended byte order
- Returns:
- a vector loaded from the memory segment
- Throws:
- IndexOutOfBoundsException- if- offset+N*4 < 0or- offset+N*4 >= ms.byteSize()for any lane- Nin the vector
- IllegalStateException- if the memory segment's session is not alive, or if access occurs from a thread other than the thread owning the session.
- Since:
- 19
 
- 
fromMemorySegmentpublic static IntVector fromMemorySegment(VectorSpecies<Integer> species, MemorySegment ms, long offset, ByteOrder bo, VectorMask<Integer> m) Loads a vector from a memory segment starting at an offset into the memory segment and using a mask. Lanes where the mask is unset are filled with the default value ofint(zero). Bytes are composed into primitive lane elements according to the specified byte order. The vector is arranged into lanes according to memory ordering.The following pseudocode illustrates the behavior: var slice = ms.asSlice(offset); int[] ar = new int[species.length()]; for (int n = 0; n < ar.length; n++) { if (m.laneIsSet(n)) { ar[n] = slice.getAtIndex(ValuaLayout.JAVA_INT.withByteAlignment(1), n); } } IntVector r = IntVector.fromArray(species, ar, 0);- Implementation Note:
- This operation is likely to be more efficient if the specified byte order is the same as the platform native order, since this method will not need to reorder the bytes of lane values.
- Parameters:
- species- species of desired vector
- ms- the memory segment
- offset- the offset into the memory segment
- bo- the intended byte order
- m- the mask controlling lane selection
- Returns:
- a vector loaded from the memory segment
- Throws:
- IndexOutOfBoundsException- if- offset+N*4 < 0or- offset+N*4 >= ms.byteSize()for any lane- Nin the vector where the mask is set
- IllegalStateException- if the memory segment's session is not alive, or if access occurs from a thread other than the thread owning the session.
- Since:
- 19
 
- 
intoArraypublic final void intoArray(int[] a, int offset) Stores this vector into an array of typeint[]starting at an offset.For each vector lane, where Nis the vector lane index, the lane element at indexNis stored into the array elementa[offset+N].- Parameters:
- a- the array, of type- int[]
- offset- the offset into the array
- Throws:
- IndexOutOfBoundsException- if- offset+N < 0or- offset+N >= a.lengthfor any lane- Nin the vector
 
- 
intoArrayStores this vector into an array of typeint[]starting at offset and using a mask.For each vector lane, where Nis the vector lane index, the lane element at indexNis stored into the array elementa[offset+N]. If the mask lane atNis unset then the corresponding array elementa[offset+N]is left unchanged.Array range checking is done for lanes where the mask is set. Lanes where the mask is unset are not stored and do not need to correspond to legitimate elements of a. That is, unset lanes may correspond to array indexes less than zero or beyond the end of the array.- Parameters:
- a- the array, of type- int[]
- offset- the offset into the array
- m- the mask controlling lane storage
- Throws:
- IndexOutOfBoundsException- if- offset+N < 0or- offset+N >= a.lengthfor any lane- Nin the vector where the mask is set
 
- 
intoArraypublic final void intoArray(int[] a, int offset, int[] indexMap, int mapOffset) Scatters this vector into an array of typeint[]using indexes obtained by adding a fixedoffsetto a series of secondary offsets from an index map. The index map is a contiguous sequence ofVLENGTHelements in a second array ofints, starting at a givenmapOffset.For each vector lane, where Nis the vector lane index, the lane element at indexNis stored into the array elementa[f(N)], wheref(N)is the index mapping expressionoffset + indexMap[mapOffset + N]].- Parameters:
- a- the array
- offset- an offset to combine with the index map offsets
- indexMap- the index map
- mapOffset- the offset into the index map
- Throws:
- IndexOutOfBoundsException- if- mapOffset+N < 0or if- mapOffset+N >= indexMap.length, or if- f(N)=offset+indexMap[mapOffset+N]is an invalid index into- a, for any lane- Nin the vector
- See Also:
 
- 
intoArraypublic final void intoArray(int[] a, int offset, int[] indexMap, int mapOffset, VectorMask<Integer> m) Scatters this vector into an array of typeint[], under the control of a mask, and using indexes obtained by adding a fixedoffsetto a series of secondary offsets from an index map. The index map is a contiguous sequence ofVLENGTHelements in a second array ofints, starting at a givenmapOffset.For each vector lane, where Nis the vector lane index, if the mask lane at indexNis set then the lane element at indexNis stored into the array elementa[f(N)], wheref(N)is the index mapping expressionoffset + indexMap[mapOffset + N]].- Parameters:
- a- the array
- offset- an offset to combine with the index map offsets
- indexMap- the index map
- mapOffset- the offset into the index map
- m- the mask
- Throws:
- IndexOutOfBoundsException- if- mapOffset+N < 0or if- mapOffset+N >= indexMap.length, or if- f(N)=offset+indexMap[mapOffset+N]is an invalid index into- a, for any lane- Nin the vector where the mask is set
- See Also:
 
- 
intoMemorySegmentStores this vector into a memory segment starting at an offset using explicit byte order.Bytes are extracted from primitive lane elements according to the specified byte ordering. The lanes are stored according to their memory ordering. This method behaves as if it calls intoMemorySegment()as follows:var m = maskAll(true); intoMemorySegment(ms, offset, bo, m);- Specified by:
- intoMemorySegmentin class- Vector<Integer>
- Parameters:
- ms- the memory segment
- offset- the offset into the memory segment
- bo- the intended byte order
- Since:
- 19
 
- 
intoMemorySegmentpublic final void intoMemorySegment(MemorySegment ms, long offset, ByteOrder bo, VectorMask<Integer> m) Stores this vector into a memory segment starting at an offset using explicit byte order and a mask.Bytes are extracted from primitive lane elements according to the specified byte ordering. The lanes are stored according to their memory ordering. The following pseudocode illustrates the behavior, where JAVA_Eis the layout of the primitive element type,ETYPEis the primitive element type, andEVectoris the primitive vector type for this vector:ETYPE[] a = this.toArray(); var slice = ms.asSlice(offset) for (int n = 0; n < a.length; n++) { if (m.laneIsSet(n)) { slice.setAtIndex(ValueLayout.JAVA_E.withBitAlignment(8), n); } }- Specified by:
- intoMemorySegmentin class- Vector<Integer>
- Parameters:
- ms- the memory segment
- offset- the offset into the memory segment
- bo- the intended byte order
- m- the mask controlling lane selection
- Since:
- 19
 
- 
reinterpretAsBytesViews this vector as a vector of the same shape and contents but a lane type ofbyte, where the bytes are extracted from the lanes according to little-endian order. It is a convenience method for the expressionreinterpretShape(species().withLanes(byte.class)). It may be considered an inverse to the various methods which consolidate bytes into larger lanes within the same vector, such asVector.reinterpretAsInts().- Specified by:
- reinterpretAsBytesin class- Vector<Integer>
- Returns:
- a ByteVectorwith the same shape and information content
- See Also:
 
- 
viewAsIntegralLanesViews this vector as a vector of the same shape, length, and contents, but a lane type that is not a floating-point type. This is a lane-wise reinterpretation cast on the lane values. As such, this method does not changeVSHAPEorVLENGTH, and there is no change to the bitwise contents of the vector. If the vector'sETYPEis already an integral type, the same vector is returned unchanged. This method returns the value of this expression:convert(conv,0), whereconvisVectorOperators.Conversion.ofReinterpret(E.class,F.class), andFis the non-floating-point type of the same size asE.- Specified by:
- viewAsIntegralLanesin class- Vector<Integer>
- Returns:
- the original vector, reinterpreted as non-floating point
- See Also:
 
- 
viewAsFloatingLanesViews this vector as a vector of the same shape, length, and contents, but a lane type that is a floating-point type. This is a lane-wise reinterpretation cast on the lane values. As such, there this method does not changeVSHAPEorVLENGTH, and there is no change to the bitwise contents of the vector. If the vector'sETYPEis already a float-point type, the same vector is returned unchanged. If the vector's element size does not match any floating point type size, anIllegalArgumentExceptionis thrown. This method returns the value of this expression:convert(conv,0), whereconvisVectorOperators.Conversion.ofReinterpret(E.class,F.class), andFis the floating-point type of the same size asE, if any.- Specified by:
- viewAsFloatingLanesin class- Vector<Integer>
- Returns:
- the original vector, reinterpreted as floating point
- See Also:
 
- 
toStringReturns a string representation of this vector, of the form"[0,1,2...]", reporting the lane values of this vector, in lane order. The string is produced as if by a call toArrays.toString(), as appropriate to theintarray returned bythis.toArray().
- 
equalsIndicates whether this vector is identical to some other object. Two vectors are identical only if they have the same species and same lane values, in the same order.The comparison of lane values is produced as if by a call to Arrays.equals(), as appropriate to the arrays returned bytoArray()on both vectors.
- 
hashCode
- 
speciesDescription copied from class:VectorReturns the species of this vector.
- 
checkDescription copied from class:VectorChecks that this vector has the given species, and returns this vector unchanged. The effect is similar to this pseudocode:species == species() ? this : throw new ClassCastException().
- 
checkChecks that this vector has the given element type, and returns this vector unchanged. The effect is similar to this pseudocode:elementType == species().elementType() ? this : throw new ClassCastException().
- 
maskAllReturns 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: species().maskAll(bit).
- 
reinterpretAsShortsReinterprets this vector as a vector of the same shape and contents but a lane type ofshort, where the lanes are assembled from successive bytes according to little-endian order. It is a convenience method for the expressionreinterpretShape(species().withLanes(short.class)). It may be considered an inverse toVector.reinterpretAsBytes().- Specified by:
- reinterpretAsShortsin class- Vector<E>
- Returns:
- a ShortVectorwith the same shape and information content
 
- 
reinterpretAsIntsReinterprets this vector as a vector of the same shape and contents but a lane type ofint, where the lanes are assembled from successive bytes according to little-endian order. It is a convenience method for the expressionreinterpretShape(species().withLanes(int.class)). It may be considered an inverse toVector.reinterpretAsBytes().- Specified by:
- reinterpretAsIntsin class- Vector<E>
- Returns:
- a IntVectorwith the same shape and information content
 
- 
reinterpretAsLongsReinterprets this vector as a vector of the same shape and contents but a lane type oflong, where the lanes are assembled from successive bytes according to little-endian order. It is a convenience method for the expressionreinterpretShape(species().withLanes(long.class)). It may be considered an inverse toVector.reinterpretAsBytes().- Specified by:
- reinterpretAsLongsin class- Vector<E>
- Returns:
- a LongVectorwith the same shape and information content
 
- 
reinterpretAsFloatsReinterprets this vector as a vector of the same shape and contents but a lane type offloat, where the lanes are assembled from successive bytes according to little-endian order. It is a convenience method for the expressionreinterpretShape(species().withLanes(float.class)). It may be considered an inverse toVector.reinterpretAsBytes().- Specified by:
- reinterpretAsFloatsin class- Vector<E>
- Returns:
- a FloatVectorwith the same shape and information content
 
- 
reinterpretAsDoublesReinterprets this vector as a vector of the same shape and contents but a lane type ofdouble, where the lanes are assembled from successive bytes according to little-endian order. It is a convenience method for the expressionreinterpretShape(species().withLanes(double.class)). It may be considered an inverse toVector.reinterpretAsBytes().- Specified by:
- reinterpretAsDoublesin class- Vector<E>
- Returns:
- a DoubleVectorwith the same shape and information content
 
- 
convertConvert this vector to a vector of the same shape and a new element type, converting lane values from the currentETYPEto a new lane type (calledFTYPEhere) according to the indicated conversion. This is a lane-wise shape-invariant operation which copiesETYPEvalues from the input vector to correspondingFTYPEvalues in the result. Depending on the selected conversion, this operation may either expand or contract its logical result, in which case a non-zeropartnumber can further control the selection and steering of the logical result into the physical output vector.Each specific conversion is described by a conversion constant in the class VectorOperators. Each conversion operator has a specified domain type and range type. The domain type must exactly match the lane type of the input vector, while the range type determines the lane type of the output vectors.A 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, less than, or greater than the bit-size of its range type. Independently, 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 S2I(shortvalue toint) takes a scalar value and represents it in a larger format (always with some information redundancy). A contracting conversion such asD2F(doublevalue tofloat) takes a scalar value and represents it in a smaller format (always with some information loss). Some in-place conversions may also include information loss, such asL2D(longvalue todouble) orF2I(floatvalue toint). Reinterpreting in-place conversions are not lossy, unless the bitwise value is somehow not legal in the output type. Converting the bit-pattern of aNaNmay discard bits from theNaN's significand.This classification is important, because, unless otherwise documented, conversion operations never change vector shape, regardless of how they may change lane sizes. Therefore an expanding conversion cannot store all of its results in its output vector, because the output vector has fewer lanes of larger size, in order to have the same overall bit-size as its input. Likewise, a contracting conversion must store its relatively small results into a subset of the lanes of the output vector, defaulting the unused lanes to zero. As an example, a conversion from bytetolong(M=8) will discard 87.5% of the input values in order to convert the remaining 12.5% into the roomylonglanes of the output vector. The inverse conversion will convert back all of the large results, but will waste 87.5% of the lanes in the output vector. In-place conversions (M=1) deliver all of their results in one output vector, without wasting lanes.To manage the details of these expansions and contractions, a non-zero partparameter selects partial results from expansions, or steers the results of contractions into corresponding locations, as follows:-  expanding by M:partmust be in the range[0..M-1], and selects the block ofVLENGTH/Minput lanes starting at the origin lane atpart*VLENGTH/M.The VLENGTH/Moutput lanes represent a partial slice of the whole logical result of the conversion, filling the entire physical output vector.
-  contracting by M:partmust be in the range[-M+1..0], and steers allVLENGTHinput lanes into the output located at the origin lane-part*VLENGTH. There is a total ofVLENGTH*Moutput lanes, and those not holding converted input values are filled with zeroes.A group of such output vectors, with logical result parts steered to disjoint blocks, can be reassembled using the bitwise or or (for floating point) the FIRST_NONZEROoperator.
-  in-place (M=1):partmust be zero. Both vectors have the sameVLENGTH. The result is always positioned at the origin lane of zero.
 This method is a restricted version of the more general but less frequently used shape-changing method convertShape(). The result of this method is the same as the expressionthis.convertShape(conv, rsp, this.broadcast(part)), where the output species isrsp=this.species().withLanes(FTYPE.class).- Specified by:
- convertin class- Vector<E>
- Type Parameters:
- F- the boxed element type of the species
- Parameters:
- conv- the desired scalar conversion to apply lane-wise
- part- the part number of the result, or zero if neither expanding nor contracting
- Returns:
- a vector converted by shape and element type from this vector
- See Also:
 
-  expanding by 
- 
castShapeConvenience 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:convertShape(conv,rsp,part), whereconvisVectorOperators.Conversion.ofCast(E.class,F.class).If the old and new species have different shape, this is a shape-changing operation, and may have special implementation costs. - Specified by:
- castShapein class- Vector<E>
- Type Parameters:
- F- the boxed element type of the output species
- Parameters:
- toSpecies- the desired output species
- part- the part number of the result, or zero if neither expanding nor contracting
- Returns:
- a vector converted by element type from this vector
- See Also:
 
- 
convertShapepublic abstract <F> Vector<F> convertShape(VectorOperators.Conversion<Integer, F> conv, VectorSpecies<F> rsp, int part) Converts this vector to a vector of the given species, shape and element type, converting lane values from the currentETYPEto a new lane type (calledFTYPEhere) according to the indicated conversion. This is a lane-wise operation which copiesETYPEvalues from the input vector to correspondingFTYPEvalues in the result.If the old and new species have the same shape, the behavior is exactly the same as the simpler, shape-invariant method convert(). In such cases, the simpler methodconvert()should be used, to make code easier to reason about. Otherwise, this is a shape-changing operation, and may have special implementation costs.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. In this case a non-zero partparameter selects partial results from an expanded logical result, or steers the results of a contracted logical result into a physical output vector of the required output species.The following pseudocode illustrates the behavior of this method for in-place, expanding, and contracting conversions. (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. FTYPE scalar_conversion_op(ETYPE s); EVector a = ...; VectorSpecies<F> rsp = ...; int part = ...; VectorSpecies<E> dsp = a.species(); int domlen = dsp.length(); int ranlen = rsp.length(); FTYPE[] logical = new FTYPE[domlen]; for (int i = 0; i < domlen; i++) { logical[i] = scalar_conversion_op(a.lane(i)); } FTYPE[] physical; if (domlen == ranlen) { // in-place assert part == 0; //else AIOOBE physical = logical; } else if (domlen > ranlen) { // expanding int M = domlen / ranlen; assert 0 <= part && part < M; //else AIOOBE int origin = part * ranlen; physical = Arrays.copyOfRange(logical, origin, origin + ranlen); } else { // (domlen < ranlen) // contracting int M = ranlen / domlen; assert 0 >= part && part > -M; //else AIOOBE int origin = -part * domlen; System.arraycopy(logical, 0, physical, origin, domlen); } return FVector.fromArray(ran, physical, 0);- Specified by:
- convertShapein class- Vector<E>
- Type Parameters:
- F- the boxed element type of the output species
- Parameters:
- conv- the desired scalar conversion to apply lane-wise
- rsp- the desired output species
- part- the part number of the result, or zero if neither expanding nor contracting
- Returns:
- a vector converted by element type from this vector
- See Also:
 
- 
getPayload
 
-