- java.lang.Object
-
- jdk.incubator.vector.VectorOperators
-
public abstract class VectorOperators extends Object
This class consists solely of static constants that describe lane-wise vector operations, plus nested interfaces which classify them. The static constants serve as tokens denoting specifically requested lane operations in vector expressions, such as the tokenADDinw = v0.lanewise(ADD, v1).The documentation for each individual operator token is very brief, giving a symbolic Java expression for the operation that the token requests. Those symbolic expressions use the following conventional elements:
a,b,c— names of lane values- Java operators like
+,?:, etc. — expression operators - Java method names like
max,sin, etc. — methods in standard classes likeMath,Double, etc. Unqualified method names should be read as if in the context of a static import, and with resolution of overloading. bits(x)— a function call which produces the underlying bits of the valuex. Ifxis a floating point value, this is eitherdoubleToLongBits(x)orfloatToIntBits(x). Otherwise, the value is justx.ESIZE— the size in bytes of the operand typeintVal,byteVal, etc. — the operand of a conversion, with the indicated type
Operations on floating point vectors
- Lane-wise vector operations that apply to floating point vectors
follow the accuracy and monotonicity specifications of the equivalent
Java operation or method mentioned in its documentation.
If the vector element type is
floatand the Java operation or method only accepts and returnsdoublevalues, then the scalar operation on each lane is adapted to cast operands and the result, specifically wideningfloatoperands todoubleoperands and narrowing thedoubleresult to afloat. - Certain associative operations that apply to floating point
vectors are not truly associative on the floating point lane values.
Specifically,
ADDandMULused with cross-lane reduction operations, such asFloatVector.reduceLanes(Associative). The result of such an operation is a function both of the input values (vector and mask) as well as the order of the scalar operations applied to combine lane values. In such cases the order is intentionally not defined. This allows the JVM to generate optimal machine code for the underlying platform at runtime. If the platform supports a vector instruction to add or multiply all values in the vector, or if there is some other efficient machine code sequence, then the JVM has the option of generating this machine code. Otherwise, the default implementation is applied, which adds vector elements sequentially from beginning to end. For this reason, the result of such an operation may vary for the same input values.
Note that a particular operator token may apply to several different lane types. Thus, these tokens behave like overloaded operators or methods, not like type-specific method handles or lambdas. Also unlike method handles or lambdas, these operators do not possess operational semantics; they have no
applyorinvokemethod. They are used only to request lane operations from vector objects, and cannot (by themselves) perform operations on individual lane values.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static interfaceVectorOperators.AssociativeType for all reassociating lane-wise binary operators, usable in expressions likee = v0.reduceLanes(ADD).static interfaceVectorOperators.Binarystatic interfaceVectorOperators.Comparisonstatic interfaceVectorOperators.Conversion<E,F>static interfaceVectorOperators.OperatorRoot type for all operator tokens, providing queries for common properties such as arity, argument and return types, symbolic name, and operator name.static interfaceVectorOperators.Ternarystatic interfaceVectorOperators.Teststatic interfaceVectorOperators.Unary
-
Field Summary
Fields Modifier and Type Field Description static VectorOperators.UnaryABSProduceabs(a).static VectorOperators.UnaryACOSProduceacos(a).static VectorOperators.AssociativeADDProducea+b.static VectorOperators.AssociativeANDProducea&b.static VectorOperators.BinaryAND_NOTProducea&~b.static VectorOperators.BinaryASHRProducea>>(n&(ESIZE*8-1)).static VectorOperators.UnaryASINProduceasin(a).static VectorOperators.UnaryATANProduceatan(a).static VectorOperators.BinaryATAN2Produceatan2(a,b).static VectorOperators.Conversion<Byte,Double>B2DConvertbyteValto(double)byteVal.static VectorOperators.Conversion<Byte,Float>B2FConvertbyteValto(float)byteVal.static VectorOperators.Conversion<Byte,Integer>B2IConvertbyteValto(int)byteVal.static VectorOperators.Conversion<Byte,Long>B2LConvertbyteValto(long)byteVal.static VectorOperators.Conversion<Byte,Short>B2SConvertbyteValto(short)byteVal.static VectorOperators.TernaryBITWISE_BLENDProducea^((a^b)&c).static VectorOperators.UnaryCBRTProducecbrt(a).static VectorOperators.UnaryCOSProducecos(a).static VectorOperators.UnaryCOSHProducecosh(a).static VectorOperators.Conversion<Double,Byte>D2BConvertdoubleValto(byte)doubleVal.static VectorOperators.Conversion<Double,Float>D2FConvertdoubleValto(float)doubleVal.static VectorOperators.Conversion<Double,Integer>D2IConvertdoubleValto(int)doubleVal.static VectorOperators.Conversion<Double,Long>D2LConvertdoubleValto(long)doubleVal.static VectorOperators.Conversion<Double,Short>D2SConvertdoubleValto(short)doubleVal.static VectorOperators.BinaryDIVProducea/b.static VectorOperators.ComparisonEQComparea==b.static VectorOperators.UnaryEXPProduceexp(a).static VectorOperators.UnaryEXPM1Produceexpm1(a).static VectorOperators.Conversion<Float,Byte>F2BConvertfloatValto(byte)floatVal.static VectorOperators.Conversion<Float,Double>F2DConvertfloatValto(double)floatVal.static VectorOperators.Conversion<Float,Integer>F2IConvertfloatValto(int)floatVal.static VectorOperators.Conversion<Float,Long>F2LConvertfloatValto(long)floatVal.static VectorOperators.Conversion<Float,Short>F2SConvertfloatValto(short)floatVal.static VectorOperators.AssociativeFIRST_NONZEROProducebits(a)!=0?a:b.static VectorOperators.TernaryFMAProducefma(a,b,c).static VectorOperators.ComparisonGEComparea>=b.static VectorOperators.ComparisonGTComparea>b.static VectorOperators.BinaryHYPOTProducehypot(a,b).static VectorOperators.Conversion<Integer,Byte>I2BConvertintValto(byte)intVal.static VectorOperators.Conversion<Integer,Double>I2DConvertintValto(double)intVal.static VectorOperators.Conversion<Integer,Float>I2FConvertintValto(float)intVal.static VectorOperators.Conversion<Integer,Long>I2LConvertintValto(long)intVal.static VectorOperators.Conversion<Integer,Short>I2SConvertintValto(short)intVal.static VectorOperators.TestIS_DEFAULTTestbits(a)==0.static VectorOperators.TestIS_FINITETestisFinite(a).static VectorOperators.TestIS_INFINITETestisInfinite(a).static VectorOperators.TestIS_NANTestisNaN(a).static VectorOperators.TestIS_NEGATIVETestbits(a)<0.static VectorOperators.Conversion<Long,Byte>L2BConvertlongValto(byte)longVal.static VectorOperators.Conversion<Long,Double>L2DConvertlongValto(double)longVal.static VectorOperators.Conversion<Long,Float>L2FConvertlongValto(float)longVal.static VectorOperators.Conversion<Long,Integer>L2IConvertlongValto(int)longVal.static VectorOperators.Conversion<Long,Short>L2SConvertlongValto(short)longVal.static VectorOperators.ComparisonLEComparea<=b.static VectorOperators.UnaryLOGProducelog(a).static VectorOperators.UnaryLOG10Producelog10(a).static VectorOperators.UnaryLOG1PProducelog1p(a).static VectorOperators.BinaryLSHLProducea<<(n&(ESIZE*8-1)).static VectorOperators.BinaryLSHRProducea>>>(n&(ESIZE*8-1)).static VectorOperators.ComparisonLTComparea<b.static VectorOperators.AssociativeMAXProducemax(a,b).static VectorOperators.AssociativeMINProducemin(a,b).static VectorOperators.AssociativeMULProducea*b.static VectorOperators.ComparisonNEComparea!=b.static VectorOperators.UnaryNEGProduce-a.static VectorOperators.UnaryNOTProduce~a.static VectorOperators.AssociativeORProducea|b.static VectorOperators.BinaryPOWProducepow(a,b).static VectorOperators.Conversion<Double,Long>REINTERPRET_D2LReinterpret bits ofdoubleValaslong.static VectorOperators.Conversion<Float,Integer>REINTERPRET_F2IReinterpret bits offloatValasint.static VectorOperators.Conversion<Integer,Float>REINTERPRET_I2FReinterpret bits ofintValasfloat.static VectorOperators.Conversion<Long,Double>REINTERPRET_L2DReinterpret bits oflongValasdouble.static VectorOperators.BinaryROLProducerotateLeft(a,n).static VectorOperators.BinaryRORProducerotateRight(a,n).static VectorOperators.Conversion<Short,Byte>S2BConvertshortValto(byte)shortVal.static VectorOperators.Conversion<Short,Double>S2DConvertshortValto(double)shortVal.static VectorOperators.Conversion<Short,Float>S2FConvertshortValto(float)shortVal.static VectorOperators.Conversion<Short,Integer>S2IConvertshortValto(int)shortVal.static VectorOperators.Conversion<Short,Long>S2LConvertshortValto(long)shortVal.static VectorOperators.UnarySINProducesin(a).static VectorOperators.UnarySINHProducesinh(a).static VectorOperators.UnarySQRTProducesqrt(a).static VectorOperators.BinarySUBProducea-b.static VectorOperators.UnaryTANProducetan(a).static VectorOperators.UnaryTANHProducetanh(a).static VectorOperators.AssociativeXORProducea^b.static VectorOperators.Conversion<Byte,Integer>ZERO_EXTEND_B2IZero-extendbyteValtoint.static VectorOperators.Conversion<Byte,Long>ZERO_EXTEND_B2LZero-extendbyteValtolong.static VectorOperators.Conversion<Byte,Short>ZERO_EXTEND_B2SZero-extendbyteValtoshort.static VectorOperators.Conversion<Integer,Long>ZERO_EXTEND_I2LZero-extendintValtolong.static VectorOperators.Conversion<Short,Integer>ZERO_EXTEND_S2IZero-extendshortValtoint.static VectorOperators.Conversion<Short,Long>ZERO_EXTEND_S2LZero-extendshortValtolong.static VectorOperators.UnaryZOMOProducea==0?0:-1(zero or minus one).
-
-
-
Field Detail
-
NOT
public static final VectorOperators.Unary NOT
Produce~a. Integral only.
-
ZOMO
public static final VectorOperators.Unary ZOMO
Producea==0?0:-1(zero or minus one). Integral only.
-
ABS
public static final VectorOperators.Unary ABS
Produceabs(a).
-
NEG
public static final VectorOperators.Unary NEG
Produce-a.
-
SIN
public static final VectorOperators.Unary SIN
Producesin(a). Floating only. See section "Operations on floating point vectors" above
-
COS
public static final VectorOperators.Unary COS
Producecos(a). Floating only. See section "Operations on floating point vectors" above
-
TAN
public static final VectorOperators.Unary TAN
Producetan(a). Floating only. See section "Operations on floating point vectors" above
-
ASIN
public static final VectorOperators.Unary ASIN
Produceasin(a). Floating only. See section "Operations on floating point vectors" above
-
ACOS
public static final VectorOperators.Unary ACOS
Produceacos(a). Floating only. See section "Operations on floating point vectors" above
-
ATAN
public static final VectorOperators.Unary ATAN
Produceatan(a). Floating only. See section "Operations on floating point vectors" above
-
EXP
public static final VectorOperators.Unary EXP
Produceexp(a). Floating only. See section "Operations on floating point vectors" above
-
LOG
public static final VectorOperators.Unary LOG
Producelog(a). Floating only. See section "Operations on floating point vectors" above
-
LOG10
public static final VectorOperators.Unary LOG10
Producelog10(a). Floating only. See section "Operations on floating point vectors" above
-
SQRT
public static final VectorOperators.Unary SQRT
Producesqrt(a). Floating only. See section "Operations on floating point vectors" above
-
CBRT
public static final VectorOperators.Unary CBRT
Producecbrt(a). Floating only. See section "Operations on floating point vectors" above
-
SINH
public static final VectorOperators.Unary SINH
Producesinh(a). Floating only. See section "Operations on floating point vectors" above
-
COSH
public static final VectorOperators.Unary COSH
Producecosh(a). Floating only. See section "Operations on floating point vectors" above
-
TANH
public static final VectorOperators.Unary TANH
Producetanh(a). Floating only. See section "Operations on floating point vectors" above
-
EXPM1
public static final VectorOperators.Unary EXPM1
Produceexpm1(a). Floating only. See section "Operations on floating point vectors" above
-
LOG1P
public static final VectorOperators.Unary LOG1P
Producelog1p(a). Floating only. See section "Operations on floating point vectors" above
-
ADD
public static final VectorOperators.Associative ADD
Producea+b.
-
SUB
public static final VectorOperators.Binary SUB
Producea-b.
-
MUL
public static final VectorOperators.Associative MUL
Producea*b.
-
DIV
public static final VectorOperators.Binary DIV
Producea/b. Floating only.
-
MIN
public static final VectorOperators.Associative MIN
Producemin(a,b).
-
MAX
public static final VectorOperators.Associative MAX
Producemax(a,b).
-
FIRST_NONZERO
public static final VectorOperators.Associative FIRST_NONZERO
Producebits(a)!=0?a:b.
-
AND
public static final VectorOperators.Associative AND
Producea&b. Integral only.
-
AND_NOT
public static final VectorOperators.Binary AND_NOT
Producea&~b. Integral only.
-
OR
public static final VectorOperators.Associative OR
Producea|b. Integral only.
-
XOR
public static final VectorOperators.Associative XOR
Producea^b. Integral only.
-
LSHL
public static final VectorOperators.Binary LSHL
Producea<<(n&(ESIZE*8-1)). Integral only.
-
ASHR
public static final VectorOperators.Binary ASHR
Producea>>(n&(ESIZE*8-1)). Integral only.
-
LSHR
public static final VectorOperators.Binary LSHR
Producea>>>(n&(ESIZE*8-1)). Integral only.
-
ROL
public static final VectorOperators.Binary ROL
ProducerotateLeft(a,n). Integral only.
-
ROR
public static final VectorOperators.Binary ROR
ProducerotateRight(a,n). Integral only.
-
ATAN2
public static final VectorOperators.Binary ATAN2
Produceatan2(a,b). See Floating only. See section "Operations on floating point vectors" above
-
POW
public static final VectorOperators.Binary POW
Producepow(a,b). Floating only. See section "Operations on floating point vectors" above
-
HYPOT
public static final VectorOperators.Binary HYPOT
Producehypot(a,b). Floating only. See section "Operations on floating point vectors" above
-
BITWISE_BLEND
public static final VectorOperators.Ternary BITWISE_BLEND
Producea^((a^b)&c). (Bitwise(c(i)?b(i):a(i)).) Integral only.
-
FMA
public static final VectorOperators.Ternary FMA
Producefma(a,b,c). Floating only.
-
IS_DEFAULT
public static final VectorOperators.Test IS_DEFAULT
Testbits(a)==0. (Not true of-0.0.)
-
IS_NEGATIVE
public static final VectorOperators.Test IS_NEGATIVE
Testbits(a)<0. (True of-0.0.)
-
IS_FINITE
public static final VectorOperators.Test IS_FINITE
TestisFinite(a). Floating only.
-
IS_NAN
public static final VectorOperators.Test IS_NAN
TestisNaN(a). Floating only.
-
IS_INFINITE
public static final VectorOperators.Test IS_INFINITE
TestisInfinite(a). Floating only.
-
EQ
public static final VectorOperators.Comparison EQ
Comparea==b.
-
NE
public static final VectorOperators.Comparison NE
Comparea!=b.
-
LT
public static final VectorOperators.Comparison LT
Comparea<b.
-
LE
public static final VectorOperators.Comparison LE
Comparea<=b.
-
GT
public static final VectorOperators.Comparison GT
Comparea>b.
-
GE
public static final VectorOperators.Comparison GE
Comparea>=b.
-
B2D
public static final VectorOperators.Conversion<Byte,Double> B2D
ConvertbyteValto(double)byteVal.
-
B2F
public static final VectorOperators.Conversion<Byte,Float> B2F
ConvertbyteValto(float)byteVal.
-
B2I
public static final VectorOperators.Conversion<Byte,Integer> B2I
ConvertbyteValto(int)byteVal.
-
B2L
public static final VectorOperators.Conversion<Byte,Long> B2L
ConvertbyteValto(long)byteVal.
-
B2S
public static final VectorOperators.Conversion<Byte,Short> B2S
ConvertbyteValto(short)byteVal.
-
D2B
public static final VectorOperators.Conversion<Double,Byte> D2B
ConvertdoubleValto(byte)doubleVal.
-
D2F
public static final VectorOperators.Conversion<Double,Float> D2F
ConvertdoubleValto(float)doubleVal.
-
D2I
public static final VectorOperators.Conversion<Double,Integer> D2I
ConvertdoubleValto(int)doubleVal.
-
D2L
public static final VectorOperators.Conversion<Double,Long> D2L
ConvertdoubleValto(long)doubleVal.
-
D2S
public static final VectorOperators.Conversion<Double,Short> D2S
ConvertdoubleValto(short)doubleVal.
-
F2B
public static final VectorOperators.Conversion<Float,Byte> F2B
ConvertfloatValto(byte)floatVal.
-
F2D
public static final VectorOperators.Conversion<Float,Double> F2D
ConvertfloatValto(double)floatVal.
-
F2I
public static final VectorOperators.Conversion<Float,Integer> F2I
ConvertfloatValto(int)floatVal.
-
F2L
public static final VectorOperators.Conversion<Float,Long> F2L
ConvertfloatValto(long)floatVal.
-
F2S
public static final VectorOperators.Conversion<Float,Short> F2S
ConvertfloatValto(short)floatVal.
-
I2B
public static final VectorOperators.Conversion<Integer,Byte> I2B
ConvertintValto(byte)intVal.
-
I2D
public static final VectorOperators.Conversion<Integer,Double> I2D
ConvertintValto(double)intVal.
-
I2F
public static final VectorOperators.Conversion<Integer,Float> I2F
ConvertintValto(float)intVal.
-
I2L
public static final VectorOperators.Conversion<Integer,Long> I2L
ConvertintValto(long)intVal.
-
I2S
public static final VectorOperators.Conversion<Integer,Short> I2S
ConvertintValto(short)intVal.
-
L2B
public static final VectorOperators.Conversion<Long,Byte> L2B
ConvertlongValto(byte)longVal.
-
L2D
public static final VectorOperators.Conversion<Long,Double> L2D
ConvertlongValto(double)longVal.
-
L2F
public static final VectorOperators.Conversion<Long,Float> L2F
ConvertlongValto(float)longVal.
-
L2I
public static final VectorOperators.Conversion<Long,Integer> L2I
ConvertlongValto(int)longVal.
-
L2S
public static final VectorOperators.Conversion<Long,Short> L2S
ConvertlongValto(short)longVal.
-
S2B
public static final VectorOperators.Conversion<Short,Byte> S2B
ConvertshortValto(byte)shortVal.
-
S2D
public static final VectorOperators.Conversion<Short,Double> S2D
ConvertshortValto(double)shortVal.
-
S2F
public static final VectorOperators.Conversion<Short,Float> S2F
ConvertshortValto(float)shortVal.
-
S2I
public static final VectorOperators.Conversion<Short,Integer> S2I
ConvertshortValto(int)shortVal.
-
S2L
public static final VectorOperators.Conversion<Short,Long> S2L
ConvertshortValto(long)shortVal.
-
REINTERPRET_D2L
public static final VectorOperators.Conversion<Double,Long> REINTERPRET_D2L
-
REINTERPRET_F2I
public static final VectorOperators.Conversion<Float,Integer> REINTERPRET_F2I
-
REINTERPRET_I2F
public static final VectorOperators.Conversion<Integer,Float> REINTERPRET_I2F
-
REINTERPRET_L2D
public static final VectorOperators.Conversion<Long,Double> REINTERPRET_L2D
-
ZERO_EXTEND_B2I
public static final VectorOperators.Conversion<Byte,Integer> ZERO_EXTEND_B2I
Zero-extendbyteValtoint.
-
ZERO_EXTEND_B2L
public static final VectorOperators.Conversion<Byte,Long> ZERO_EXTEND_B2L
Zero-extendbyteValtolong.
-
ZERO_EXTEND_B2S
public static final VectorOperators.Conversion<Byte,Short> ZERO_EXTEND_B2S
Zero-extendbyteValtoshort.
-
ZERO_EXTEND_I2L
public static final VectorOperators.Conversion<Integer,Long> ZERO_EXTEND_I2L
Zero-extendintValtolong.
-
ZERO_EXTEND_S2I
public static final VectorOperators.Conversion<Short,Integer> ZERO_EXTEND_S2I
Zero-extendshortValtoint.
-
ZERO_EXTEND_S2L
public static final VectorOperators.Conversion<Short,Long> ZERO_EXTEND_S2L
Zero-extendshortValtolong.
-
-