Class VectorOperators
public abstract class VectorOperators extends Object
ADD
in w = 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
. Ifx
is a floating point value, this is eitherdoubleToLongBits(x)
orfloatToIntBits(x)
. Otherwise, the value is justx
. -
ESIZE
— the size in bytes of the operand type -
intVal
,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 unless specified otherwise. If the vector element type is
float
and the Java operation or method only accepts and returnsdouble
values, then the scalar operation on each lane is adapted to cast operands and the result, specifically wideningfloat
operands todouble
operands and narrowing thedouble
result to afloat
. - Certain associative operations that apply to floating point vectors are not truly associative on the floating point lane values. Specifically,
ADD
andMUL
used 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 apply
or invoke
method. They are used only to request lane operations from vector objects, and cannot (by themselves) perform operations on individual lane values.
Nested Class Summary
Modifier and Type | Class | Description |
---|---|---|
static interface |
VectorOperators.Associative |
Type for all reassociating lane-wise binary operators, usable in expressions like e = v0. reduceLanes (ADD) . |
static interface |
VectorOperators.Binary |
|
static interface |
VectorOperators.Comparison |
|
static interface |
VectorOperators.Conversion<E, |
|
static interface |
VectorOperators.Operator |
Root type for all operator tokens, providing queries for common properties such as arity, argument and return types, symbolic name, and operator name. |
static interface |
VectorOperators.Ternary |
|
static interface |
VectorOperators.Test |
|
static interface |
VectorOperators.Unary |
Field Summary
Modifier and Type | Field | Description |
---|---|---|
static final VectorOperators.Unary |
ABS |
Produce abs(a) . |
static final VectorOperators.Unary |
ACOS |
Produce acos(a) . |
static final VectorOperators.Associative |
ADD |
Produce a+b . |
static final VectorOperators.Associative |
AND |
Produce a&b . |
static final VectorOperators.Binary |
AND_NOT |
Produce a&~b . |
static final VectorOperators.Binary |
ASHR |
Produce a>>(n&(ESIZE*8-1)) . |
static final VectorOperators.Unary |
ASIN |
Produce asin(a) . |
static final VectorOperators.Unary |
ATAN |
Produce atan(a) . |
static final VectorOperators.Binary |
ATAN2 |
Produce atan2(a,b) . |
static final VectorOperators.Conversion<Byte, |
B2D |
Convert byteVal to (double)byteVal . |
static final VectorOperators.Conversion<Byte, |
B2F |
Convert byteVal to (float)byteVal . |
static final VectorOperators.Conversion<Byte, |
B2I |
Convert byteVal to (int)byteVal . |
static final VectorOperators.Conversion<Byte, |
B2L |
Convert byteVal to (long)byteVal . |
static final VectorOperators.Conversion<Byte, |
B2S |
Convert byteVal to (short)byteVal . |
static final VectorOperators.Ternary |
BITWISE_BLEND |
Produce a^((a^b)&c) . |
static final VectorOperators.Unary |
CBRT |
Produce cbrt(a) . |
static final VectorOperators.Unary |
COS |
Produce cos(a) . |
static final VectorOperators.Unary |
COSH |
Produce cosh(a) . |
static final VectorOperators.Conversion<Double, |
D2B |
Convert doubleVal to (byte)doubleVal . |
static final VectorOperators.Conversion<Double, |
D2F |
Convert doubleVal to (float)doubleVal . |
static final VectorOperators.Conversion<Double, |
D2I |
Convert doubleVal to (int)doubleVal . |
static final VectorOperators.Conversion<Double, |
D2L |
Convert doubleVal to (long)doubleVal . |
static final VectorOperators.Conversion<Double, |
D2S |
Convert doubleVal to (short)doubleVal . |
static final VectorOperators.Binary |
DIV |
Produce a/b . |
static final VectorOperators.Comparison |
EQ |
Compare a==b . |
static final VectorOperators.Unary |
EXP |
Produce exp(a) . |
static final VectorOperators.Unary |
EXPM1 |
Produce expm1(a) . |
static final VectorOperators.Conversion<Float, |
F2B |
Convert floatVal to (byte)floatVal . |
static final VectorOperators.Conversion<Float, |
F2D |
Convert floatVal to (double)floatVal . |
static final VectorOperators.Conversion<Float, |
F2I |
Convert floatVal to (int)floatVal . |
static final VectorOperators.Conversion<Float, |
F2L |
Convert floatVal to (long)floatVal . |
static final VectorOperators.Conversion<Float, |
F2S |
Convert floatVal to (short)floatVal . |
static final VectorOperators.Associative |
FIRST_NONZERO |
Produce bits(a)!=0?a:b . |
static final VectorOperators.Ternary |
FMA |
Produce fma(a,b,c) . |
static final VectorOperators.Comparison |
GE |
Compare a>=b . |
static final VectorOperators.Comparison |
GT |
Compare a>b . |
static final VectorOperators.Binary |
HYPOT |
Produce hypot(a,b) . |
static final VectorOperators.Conversion<Integer, |
I2B |
Convert intVal to (byte)intVal . |
static final VectorOperators.Conversion<Integer, |
I2D |
Convert intVal to (double)intVal . |
static final VectorOperators.Conversion<Integer, |
I2F |
Convert intVal to (float)intVal . |
static final VectorOperators.Conversion<Integer, |
I2L |
Convert intVal to (long)intVal . |
static final VectorOperators.Conversion<Integer, |
I2S |
Convert intVal to (short)intVal . |
static final VectorOperators.Test |
IS_DEFAULT |
Test bits(a)==0 . |
static final VectorOperators.Test |
IS_FINITE |
Test isFinite(a) . |
static final VectorOperators.Test |
IS_INFINITE |
Test isInfinite(a) . |
static final VectorOperators.Test |
IS_NAN |
Test isNaN(a) . |
static final VectorOperators.Test |
IS_NEGATIVE |
Test bits(a)<0 . |
static final VectorOperators.Conversion<Long, |
L2B |
Convert longVal to (byte)longVal . |
static final VectorOperators.Conversion<Long, |
L2D |
Convert longVal to (double)longVal . |
static final VectorOperators.Conversion<Long, |
L2F |
Convert longVal to (float)longVal . |
static final VectorOperators.Conversion<Long, |
L2I |
Convert longVal to (int)longVal . |
static final VectorOperators.Conversion<Long, |
L2S |
Convert longVal to (short)longVal . |
static final VectorOperators.Comparison |
LE |
Compare a<=b . |
static final VectorOperators.Unary |
LOG |
Produce log(a) . |
static final VectorOperators.Unary |
LOG10 |
Produce log10(a) . |
static final VectorOperators.Unary |
LOG1P |
Produce log1p(a) . |
static final VectorOperators.Binary |
LSHL |
Produce a<<(n&(ESIZE*8-1)) . |
static final VectorOperators.Binary |
LSHR |
Produce a>>>(n&(ESIZE*8-1)) . |
static final VectorOperators.Comparison |
LT |
Compare a<b . |
static final VectorOperators.Associative |
MAX |
Produce max(a,b) . |
static final VectorOperators.Associative |
MIN |
Produce min(a,b) . |
static final VectorOperators.Associative |
MUL |
Produce a*b . |
static final VectorOperators.Comparison |
NE |
Compare a!=b . |
static final VectorOperators.Unary |
NEG |
Produce -a . |
static final VectorOperators.Unary |
NOT |
Produce ~a . |
static final VectorOperators.Associative |
OR |
Produce a|b . |
static final VectorOperators.Binary |
POW |
Produce pow(a,b) . |
static final VectorOperators.Conversion<Double, |
REINTERPRET_D2L |
Reinterpret bits of doubleVal as long . |
static final VectorOperators.Conversion<Float, |
REINTERPRET_F2I |
Reinterpret bits of floatVal as int . |
static final VectorOperators.Conversion<Integer, |
REINTERPRET_I2F |
Reinterpret bits of intVal as float . |
static final VectorOperators.Conversion<Long, |
REINTERPRET_L2D |
Reinterpret bits of longVal as double . |
static final VectorOperators.Binary |
ROL |
Produce rotateLeft(a,n) . |
static final VectorOperators.Binary |
ROR |
Produce rotateRight(a,n) . |
static final VectorOperators.Conversion<Short, |
S2B |
Convert shortVal to (byte)shortVal . |
static final VectorOperators.Conversion<Short, |
S2D |
Convert shortVal to (double)shortVal . |
static final VectorOperators.Conversion<Short, |
S2F |
Convert shortVal to (float)shortVal . |
static final VectorOperators.Conversion<Short, |
S2I |
Convert shortVal to (int)shortVal . |
static final VectorOperators.Conversion<Short, |
S2L |
Convert shortVal to (long)shortVal . |
static final VectorOperators.Unary |
SIN |
Produce sin(a) . |
static final VectorOperators.Unary |
SINH |
Produce sinh(a) . |
static final VectorOperators.Unary |
SQRT |
Produce sqrt(a) . |
static final VectorOperators.Binary |
SUB |
Produce a-b . |
static final VectorOperators.Unary |
TAN |
Produce tan(a) . |
static final VectorOperators.Unary |
TANH |
Produce tanh(a) . |
static final VectorOperators.Comparison |
UNSIGNED_GE |
Unsigned compare a>=b . |
static final VectorOperators.Comparison |
UNSIGNED_GT |
Unsigned compare a>b . |
static final VectorOperators.Comparison |
UNSIGNED_LE |
Unsigned compare a<=b . |
static final VectorOperators.Comparison |
UNSIGNED_LT |
Unsigned compare a<b . |
static final VectorOperators.Associative |
XOR |
Produce a^b . |
static final VectorOperators.Conversion<Byte, |
ZERO_EXTEND_B2I |
Zero-extend byteVal to int . |
static final VectorOperators.Conversion<Byte, |
ZERO_EXTEND_B2L |
Zero-extend byteVal to long . |
static final VectorOperators.Conversion<Byte, |
ZERO_EXTEND_B2S |
Zero-extend byteVal to short . |
static final VectorOperators.Conversion<Integer, |
ZERO_EXTEND_I2L |
Zero-extend intVal to long . |
static final VectorOperators.Conversion<Short, |
ZERO_EXTEND_S2I |
Zero-extend shortVal to int . |
static final VectorOperators.Conversion<Short, |
ZERO_EXTEND_S2L |
Zero-extend shortVal to long . |
static final VectorOperators.Unary |
ZOMO |
Produce a==0?0:-1 (zero or minus one). |
Method Summary
Field Details
NOT
public static final VectorOperators.Unary NOT
~a
. Integral only.ZOMO
public static final VectorOperators.Unary ZOMO
a==0?0:-1
(zero or minus one). Integral only.ABS
public static final VectorOperators.Unary ABS
abs(a)
.NEG
public static final VectorOperators.Unary NEG
-a
.SIN
public static final VectorOperators.Unary SIN
sin(a)
. Floating only. Not guaranteed to be semi-monotonic. See section "Operations on floating point vectors" aboveCOS
public static final VectorOperators.Unary COS
cos(a)
. Floating only. Not guaranteed to be semi-monotonic. See section "Operations on floating point vectors" aboveTAN
public static final VectorOperators.Unary TAN
tan(a)
. Floating only. Not guaranteed to be semi-monotonic. See section "Operations on floating point vectors" aboveASIN
public static final VectorOperators.Unary ASIN
asin(a)
. Floating only. Not guaranteed to be semi-monotonic. See section "Operations on floating point vectors" aboveACOS
public static final VectorOperators.Unary ACOS
acos(a)
. Floating only. Not guaranteed to be semi-monotonic. See section "Operations on floating point vectors" aboveATAN
public static final VectorOperators.Unary ATAN
atan(a)
. Floating only. Not guaranteed to be semi-monotonic. See section "Operations on floating point vectors" aboveEXP
public static final VectorOperators.Unary EXP
exp(a)
. Floating only. Not guaranteed to be semi-monotonic. See section "Operations on floating point vectors" aboveLOG
public static final VectorOperators.Unary LOG
log(a)
. Floating only. Not guaranteed to be semi-monotonic. See section "Operations on floating point vectors" aboveLOG10
public static final VectorOperators.Unary LOG10
log10(a)
. Floating only. Not guaranteed to be semi-monotonic. See section "Operations on floating point vectors" aboveSQRT
public static final VectorOperators.Unary SQRT
sqrt(a)
. Floating only. See section "Operations on floating point vectors" aboveCBRT
public static final VectorOperators.Unary CBRT
cbrt(a)
. Floating only. Not guaranteed to be semi-monotonic. See section "Operations on floating point vectors" aboveSINH
public static final VectorOperators.Unary SINH
sinh(a)
. Floating only. Not guaranteed to be semi-monotonic. See section "Operations on floating point vectors" aboveCOSH
public static final VectorOperators.Unary COSH
cosh(a)
. Floating only. Not guaranteed to be semi-monotonic. See section "Operations on floating point vectors" aboveTANH
public static final VectorOperators.Unary TANH
tanh(a)
. Floating only. Not guaranteed to be semi-monotonic. See section "Operations on floating point vectors" aboveEXPM1
public static final VectorOperators.Unary EXPM1
expm1(a)
. Floating only. Not guaranteed to be semi-monotonic. See section "Operations on floating point vectors" aboveLOG1P
public static final VectorOperators.Unary LOG1P
log1p(a)
. Floating only. Not guaranteed to be semi-monotonic. See section "Operations on floating point vectors" aboveADD
public static final VectorOperators.Associative ADD
a+b
.SUB
public static final VectorOperators.Binary SUB
a-b
.MUL
public static final VectorOperators.Associative MUL
a*b
.DIV
public static final VectorOperators.Binary DIV
a/b
. Floating only.MIN
public static final VectorOperators.Associative MIN
min(a,b)
.MAX
public static final VectorOperators.Associative MAX
max(a,b)
.FIRST_NONZERO
public static final VectorOperators.Associative FIRST_NONZERO
bits(a)!=0?a:b
.AND
public static final VectorOperators.Associative AND
a&b
. Integral only.AND_NOT
public static final VectorOperators.Binary AND_NOT
a&~b
. Integral only.OR
public static final VectorOperators.Associative OR
a|b
. Integral only.XOR
public static final VectorOperators.Associative XOR
a^b
. Integral only.LSHL
public static final VectorOperators.Binary LSHL
a<<(n&(ESIZE*8-1))
. Integral only.ASHR
public static final VectorOperators.Binary ASHR
a>>(n&(ESIZE*8-1))
. Integral only.LSHR
public static final VectorOperators.Binary LSHR
a>>>(n&(ESIZE*8-1))
. Integral only.ROL
public static final VectorOperators.Binary ROL
rotateLeft(a,n)
. Integral only.ROR
public static final VectorOperators.Binary ROR
rotateRight(a,n)
. Integral only.ATAN2
public static final VectorOperators.Binary ATAN2
atan2(a,b)
. See Floating only. Not guaranteed to be semi-monotonic. See section "Operations on floating point vectors" abovePOW
public static final VectorOperators.Binary POW
pow(a,b)
. Floating only. Not guaranteed to be semi-monotonic. See section "Operations on floating point vectors" aboveHYPOT
public static final VectorOperators.Binary HYPOT
hypot(a,b)
. Floating only. Not guaranteed to be semi-monotonic. See section "Operations on floating point vectors" aboveBITWISE_BLEND
public static final VectorOperators.Ternary BITWISE_BLEND
a^((a^b)&c)
. (Bitwise (c(i)?b(i):a(i))
.) Integral only.FMA
public static final VectorOperators.Ternary FMA
fma(a,b,c)
. Floating only.IS_DEFAULT
public static final VectorOperators.Test IS_DEFAULT
bits(a)==0
. (Not true of -0.0
.)IS_NEGATIVE
public static final VectorOperators.Test IS_NEGATIVE
bits(a)<0
. (True of -0.0
.)IS_FINITE
public static final VectorOperators.Test IS_FINITE
isFinite(a)
. Floating only.IS_NAN
public static final VectorOperators.Test IS_NAN
isNaN(a)
. Floating only.IS_INFINITE
public static final VectorOperators.Test IS_INFINITE
isInfinite(a)
. Floating only.EQ
public static final VectorOperators.Comparison EQ
a==b
.NE
public static final VectorOperators.Comparison NE
a!=b
.LT
public static final VectorOperators.Comparison LT
a<b
.LE
public static final VectorOperators.Comparison LE
a<=b
.GT
public static final VectorOperators.Comparison GT
a>b
.GE
public static final VectorOperators.Comparison GE
a>=b
.UNSIGNED_LT
public static final VectorOperators.Comparison UNSIGNED_LT
a<b
. Integral only.UNSIGNED_LE
public static final VectorOperators.Comparison UNSIGNED_LE
a<=b
. Integral only.UNSIGNED_GT
public static final VectorOperators.Comparison UNSIGNED_GT
a>b
. Integral only.UNSIGNED_GE
public static final VectorOperators.Comparison UNSIGNED_GE
a>=b
. Integral only.B2D
public static final VectorOperators.Conversion<Byte,Double> B2D
byteVal
to (double)byteVal
.B2F
public static final VectorOperators.Conversion<Byte,Float> B2F
byteVal
to (float)byteVal
.B2I
public static final VectorOperators.Conversion<Byte,Integer> B2I
byteVal
to (int)byteVal
.B2L
public static final VectorOperators.Conversion<Byte,Long> B2L
byteVal
to (long)byteVal
.B2S
public static final VectorOperators.Conversion<Byte,Short> B2S
byteVal
to (short)byteVal
.D2B
public static final VectorOperators.Conversion<Double,Byte> D2B
doubleVal
to (byte)doubleVal
.D2F
public static final VectorOperators.Conversion<Double,Float> D2F
doubleVal
to (float)doubleVal
.D2I
public static final VectorOperators.Conversion<Double,Integer> D2I
doubleVal
to (int)doubleVal
.D2L
public static final VectorOperators.Conversion<Double,Long> D2L
doubleVal
to (long)doubleVal
.D2S
public static final VectorOperators.Conversion<Double,Short> D2S
doubleVal
to (short)doubleVal
.F2B
public static final VectorOperators.Conversion<Float,Byte> F2B
floatVal
to (byte)floatVal
.F2D
public static final VectorOperators.Conversion<Float,Double> F2D
floatVal
to (double)floatVal
.F2I
public static final VectorOperators.Conversion<Float,Integer> F2I
floatVal
to (int)floatVal
.F2L
public static final VectorOperators.Conversion<Float,Long> F2L
floatVal
to (long)floatVal
.F2S
public static final VectorOperators.Conversion<Float,Short> F2S
floatVal
to (short)floatVal
.I2B
public static final VectorOperators.Conversion<Integer,Byte> I2B
intVal
to (byte)intVal
.I2D
public static final VectorOperators.Conversion<Integer,Double> I2D
intVal
to (double)intVal
.I2F
public static final VectorOperators.Conversion<Integer,Float> I2F
intVal
to (float)intVal
.I2L
public static final VectorOperators.Conversion<Integer,Long> I2L
intVal
to (long)intVal
.I2S
public static final VectorOperators.Conversion<Integer,Short> I2S
intVal
to (short)intVal
.L2B
public static final VectorOperators.Conversion<Long,Byte> L2B
longVal
to (byte)longVal
.L2D
public static final VectorOperators.Conversion<Long,Double> L2D
longVal
to (double)longVal
.L2F
public static final VectorOperators.Conversion<Long,Float> L2F
longVal
to (float)longVal
.L2I
public static final VectorOperators.Conversion<Long,Integer> L2I
longVal
to (int)longVal
.L2S
public static final VectorOperators.Conversion<Long,Short> L2S
longVal
to (short)longVal
.S2B
public static final VectorOperators.Conversion<Short,Byte> S2B
shortVal
to (byte)shortVal
.S2D
public static final VectorOperators.Conversion<Short,Double> S2D
shortVal
to (double)shortVal
.S2F
public static final VectorOperators.Conversion<Short,Float> S2F
shortVal
to (float)shortVal
.S2I
public static final VectorOperators.Conversion<Short,Integer> S2I
shortVal
to (int)shortVal
.S2L
public static final VectorOperators.Conversion<Short,Long> S2L
shortVal
to (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
byteVal
to int
.ZERO_EXTEND_B2L
public static final VectorOperators.Conversion<Byte,Long> ZERO_EXTEND_B2L
byteVal
to long
.ZERO_EXTEND_B2S
public static final VectorOperators.Conversion<Byte,Short> ZERO_EXTEND_B2S
byteVal
to short
.ZERO_EXTEND_I2L
public static final VectorOperators.Conversion<Integer,Long> ZERO_EXTEND_I2L
intVal
to long
.ZERO_EXTEND_S2I
public static final VectorOperators.Conversion<Short,Integer> ZERO_EXTEND_S2I
shortVal
to int
.ZERO_EXTEND_S2L
public static final VectorOperators.Conversion<Short,Long> ZERO_EXTEND_S2L
shortVal
to long
.
© 1993, 2021, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/17/docs/api/jdk.incubator.vector/jdk/incubator/vector/VectorOperators.html