java.lang.Object
jdk.incubator.vector.VectorOperators
该类仅包含描述按通道进行向量操作的静态常量,以及对其进行分类的嵌套接口。静态常量用作在向量表达式中表示特定请求的通道操作的令牌,例如在
w = v0.
lanewise
(ADD, v1)
中的ADD
令牌。
每个单独操作令牌的文档非常简要,给出了令牌请求的操作的符号Java表达式。这些符号表达式使用以下传统元素:
a
、b
、c
— 通道值的名称- Java操作符如
+
、?:
等 — 表达式操作符 - Java方法名称如
max
、sin
等 — 标准类(如Math
、Double
等)中的方法。未经限定的方法名称应当被视为在静态导入的上下文中,并解析重载。 bits(x)
— 一个函数调用,产生值x
的基础位。如果x
是浮点值,则为doubleToLongBits(x)
或floatToIntBits(x)
。否则,该值就是x
。ESIZE
— 操作数类型的字节大小EMASK
— 操作数类型的位掩码,其中EMASK=(1<<(ESIZE*8))-1
intVal
、byteVal
等 — 转换的操作数,带有指定类型
浮点向量操作
- 适用于浮点向量的通道操作遵循等效Java操作或方法的准确性和单调性规范,除非另有规定。如果向量元素类型为
float
,而Java操作或方法仅接受和返回double
值,则每个通道上的标量操作将被调整以转换操作数和结果,具体地将float
操作数扩展为double
操作数,并将double
结果缩小为float
。 - 适用于浮点向量的某些关联操作在浮点通道值上并非真正关联。具体来说,当与跨通道缩减操作一起使用时,例如与
ADD
和MUL
一起使用,如FloatVector.reduceLanes(Associative)
。这种操作的结果既取决于输入值(向量和掩码)也取决于应用于组合通道值的标量操作的顺序。在这种情况下,故意不定义顺序。这允许JVM在运行时为底层平台生成最佳机器代码。如果平台支持向量指令来添加或乘以向量中的所有值,或者存在其他有效的机器代码序列,则JVM可以选择生成此机器代码。否则,将应用默认实现,从头到尾顺序添加向量元素。因此,对于相同的输入值,此类操作的结果可能会有所不同。
请注意,特定操作令牌可能适用于多种不同的通道类型。因此,这些令牌的行为类似于重载的操作符或方法,而不是特定于类型的方法句柄或lambda。与方法句柄或lambda不同,这些操作符没有操作语义;它们仅用于从向量对象请求通道操作,并且不能(单独)对单个通道值执行操作。
-
Nested Class Summary
Modifier and TypeClassDescriptionstatic interface
static interface
static interface
static interface
static interface
所有操作令牌的根类型,提供常见属性的查询,如参数数量、参数和返回类型、符号名称和操作符名称。static interface
static interface
static interface
-
Field Summary
Modifier and TypeFieldDescriptionstatic final VectorOperators.Unary
生成abs(a)
。static final VectorOperators.Unary
生成acos(a)
。static final VectorOperators.Associative
生成a+b
。static final VectorOperators.Associative
生成a&b
。static final VectorOperators.Binary
生成a&~b
。static final VectorOperators.Binary
生成a>>(n&(ESIZE*8-1))
。static final VectorOperators.Unary
生成asin(a)
。static final VectorOperators.Unary
生成atan(a)
。static final VectorOperators.Binary
生成atan2(a,b)
。static final VectorOperators.Conversion
<Byte, Double> 将byteVal
转换为(double)byteVal
。static final VectorOperators.Conversion
<Byte, Float> 将byteVal
转换为(float)byteVal
。static final VectorOperators.Conversion
<Byte, Integer> 将byteVal
转换为(int)byteVal
。static final VectorOperators.Conversion
<Byte, Long> 将byteVal
转换为(long)byteVal
。static final VectorOperators.Conversion
<Byte, Short> 将byteVal
转换为(short)byteVal
。static final VectorOperators.Unary
生成bitCount(a)
。static final VectorOperators.Ternary
生成a^((a^b)&c)
。static final VectorOperators.Unary
生成cbrt(a)
。static final VectorOperators.Binary
生成compress(a,n)
。static final VectorOperators.Unary
生成cos(a)
。static final VectorOperators.Unary
生成cosh(a)
。static final VectorOperators.Conversion
<Double, Byte> 将doubleVal
转换为(byte)doubleVal
。static final VectorOperators.Conversion
<Double, Float> 将doubleVal
转换为(float)doubleVal
。static final VectorOperators.Conversion
<Double, Integer> 将doubleVal
转换为(int)doubleVal
。static final VectorOperators.Conversion
<Double, Long> 将doubleVal
转换为(long)doubleVal
。static final VectorOperators.Conversion
<Double, Short> 将doubleVal
转换为(short)doubleVal
。static final VectorOperators.Binary
生成a/b
。static final VectorOperators.Comparison
比较a==b
。static final VectorOperators.Unary
生成exp(a)
。static final VectorOperators.Binary
生成expand(a,n)
。static final VectorOperators.Unary
生成expm1(a)
。static final VectorOperators.Conversion
<Float, Byte> 将floatVal
转换为(byte)floatVal
。static final VectorOperators.Conversion
<Float, Double> 将floatVal
转换为(double)floatVal
。static final VectorOperators.Conversion
<Float, Integer> 将floatVal
转换为(int)floatVal
。static final VectorOperators.Conversion
<Float, Long> 将floatVal
转换为(long)floatVal
。static final VectorOperators.Conversion
<Float, Short> 将floatVal
转换为(short)floatVal
。static final VectorOperators.Associative
生成bits(a)!=0?a:b
。static final VectorOperators.Ternary
生成fma(a,b,c)
。static final VectorOperators.Comparison
比较a>=b
。static final VectorOperators.Comparison
比较a>b
。static final VectorOperators.Binary
生成hypot(a,b)
。static final VectorOperators.Conversion
<Integer, Byte> 将intVal
转换为(byte)intVal
。static final VectorOperators.Conversion
<Integer, Double> 将intVal
转换为(double)intVal
。static final VectorOperators.Conversion
<Integer, Float> 将intVal
转换为(float)intVal
。static final VectorOperators.Conversion
<Integer, Long> 将intVal
转换为(long)intVal
。static final VectorOperators.Conversion
<Integer, Short> 将intVal
转换为(short)intVal
。static final VectorOperators.Test
测试bits(a)==0
。static final VectorOperators.Test
测试isFinite(a)
。static final VectorOperators.Test
测试isInfinite(a)
。static final VectorOperators.Test
测试isNaN(a)
。static final VectorOperators.Test
测试bits(a)<0
。static final VectorOperators.Conversion
<Long, Byte> 将longVal
转换为(byte)longVal
。static final VectorOperators.Conversion
<Long, Double> 将longVal
转换为(double)longVal
。static final VectorOperators.Conversion
<Long, Float> 将longVal
转换为(float)longVal
。static final VectorOperators.Conversion
<Long, Integer> 将longVal
转换为(int)longVal
。static final VectorOperators.Conversion
<Long, Short> 将longVal
转换为(short)longVal
。static final VectorOperators.Comparison
比较a<=b
。static final VectorOperators.Unary
生成numberOfLeadingZeros(a)
。static final VectorOperators.Unary
生成log(a)
。static final VectorOperators.Unary
生成log10(a)
。static final VectorOperators.Unary
生成log1p(a)
。static final VectorOperators.Binary
生成a<<(n&(ESIZE*8-1))
。static final VectorOperators.Binary
生成(a&EMASK)>>>(n&(ESIZE*8-1))
。static final VectorOperators.Comparison
比较a<b
。static final VectorOperators.Associative
生成max(a,b)
。static final VectorOperators.Associative
生成min(a,b)
。static final VectorOperators.Associative
生成a*b
。static final VectorOperators.Comparison
比较a!=b
。static final VectorOperators.Unary
生成-a
。static final VectorOperators.Unary
生成~a
。static final VectorOperators.Associative
生成a|b
。static final VectorOperators.Binary
生成pow(a,b)
。static final VectorOperators.Conversion
<Double, Long> 将doubleVal
的位重新解释为long
。static final VectorOperators.Conversion
<Float, Integer> 将floatVal
的位重新解释为int
。static final VectorOperators.Conversion
<Integer, Float> 将intVal
的位重新解释为float
。static final VectorOperators.Conversion
<Long, Double> 将longVal
的位重新解释为double
。static final VectorOperators.Unary
生成reverse(a)
static final VectorOperators.Unary
生成reverseBytes(a)
static final VectorOperators.Binary
生成rotateLeft(a,n)
。static final VectorOperators.Binary
生成rotateRight(a,n)
。static final VectorOperators.Conversion
<Short, Byte> 将shortVal
转换为(byte)shortVal
。static final VectorOperators.Conversion
<Short, Double> 将shortVal
转换为(double)shortVal
。static final VectorOperators.Conversion
<Short, Float> 将shortVal
转换为(float)shortVal
。static final VectorOperators.Conversion
<Short, Integer> 将shortVal
转换为(int)shortVal
。static final VectorOperators.Conversion
<Short, Long> 将shortVal
转换为(long)shortVal
。static final VectorOperators.Unary
生成sin(a)
。static final VectorOperators.Unary
生成sinh(a)
。static final VectorOperators.Unary
生成sqrt(a)
。static final VectorOperators.Binary
生成a-b
。static final VectorOperators.Unary
生成tan(a)
。static final VectorOperators.Unary
生成tanh(a)
。static final VectorOperators.Unary
生成numberOfTrailingZeros(a)
static final VectorOperators.Comparison
无符号比较a>=b
。static final VectorOperators.Comparison
无符号比较a>b
。static final VectorOperators.Comparison
无符号比较a<=b
。static final VectorOperators.Comparison
无符号比较a
。static final VectorOperators.Associative
生成a^b
。static final VectorOperators.Conversion
<Byte, Integer> 将byteVal
零扩展为int
。static final VectorOperators.Conversion
<Byte, Long> 将byteVal
零扩展为long
。static final VectorOperators.Conversion
<Byte, Short> 将byteVal
零扩展为short
。static final VectorOperators.Conversion
<Integer, Long> 将intVal
零扩展为long
。static final VectorOperators.Conversion
<Short, Integer> 将shortVal
零扩展为int
。static final VectorOperators.Conversion
<Short, Long> 将shortVal
零扩展为long
。static final VectorOperators.Unary
生成a==0?0:-1
(零或负一)。 -
Method Summary
-
Field Details
-
NOT
生成~a
。仅限整数。 -
ZOMO
生成a==0?0:-1
(零或负一)。仅限整数。 -
ABS
生成abs(a)
。 -
NEG
生成-a
。 -
BIT_COUNT
生成bitCount(a)
- 自:
- 19
-
TRAILING_ZEROS_COUNT
生成numberOfTrailingZeros(a)
- 自:
- 19
-
LEADING_ZEROS_COUNT
生成numberOfLeadingZeros(a)
- 自:
- 19
-
REVERSE
生成reverse(a)
- 自:
- 19
-
REVERSE_BYTES
生成reverseBytes(a)
- 自:
- 19
-
SIN
生成sin(a)
。仅限浮点数。不能保证是半单调的。请参见上面的“浮点向量操作”部分 -
COS
生成cos(a)
。仅限浮点数。不能保证是半单调的。请参见上面的“浮点向量操作”部分 -
TAN
生成tan(a)
。仅限浮点数。不能保证是半单调的。请参见上面的“浮点向量操作”部分 -
ASIN
生成asin(a)
。仅限浮点数。不能保证是半单调的。请参见上面的“浮点向量操作”部分 -
ACOS
生成acos(a)
。仅限浮点数。不能保证是半单调的。请参见上面的“浮点向量操作”部分 -
ATAN
生成atan(a)
。仅限浮点数。不能保证是半单调的。请参见上面的“浮点向量操作”部分 -
EXP
生成exp(a)
。仅限浮点数。不能保证是半单调的。请参见上面的“浮点向量操作”部分 -
LOG
生成log(a)
。仅限浮点数。不能保证是半单调的。请参见上面的“浮点向量操作”部分 -
LOG10
生成log10(a)
。仅限浮点数。不能保证是半单调的。请参见上面的“浮点向量操作”部分 -
SQRT
生成sqrt(a)
。仅限浮点数。请参见上面的“浮点向量操作”部分 -
CBRT
生成cbrt(a)
。仅限浮点数。不能保证是半单调的。请参见上面的“浮点向量操作”部分 -
SINH
生成sinh(a)
。仅限浮点数。不能保证是半单调的。请参见上面的“浮点向量操作”部分 -
COSH
生成cosh(a)
。仅限浮点数。不能保证是半单调的。请参见上面的“浮点向量操作”部分 -
TANH
生成tanh(a)
。仅限浮点数。不能保证是半单调的。请参见上面的“浮点向量操作”部分 -
EXPM1
生成expm1(a)
。仅限浮点数。不能保证是半单调的。请参见上面的“浮点向量操作”部分 -
LOG1P
生成log1p(a)
。仅限浮点数。不能保证是半单调的。请参见上面的“浮点向量操作”部分 -
ADD
生成a+b
。 -
SUB
生成a-b
。 -
MUL
生成a*b
。 -
DIV
生成a/b
。仅限浮点数。 -
MIN
生成min(a,b)
。 -
MAX
生成max(a,b)
。 -
FIRST_NONZERO
生成bits(a)!=0?a:b
。 -
AND
生成a&b
。仅限整数。 -
AND_NOT
生成a&~b
。仅限整数。 -
OR
生成a|b
。仅限整数。 -
XOR
生成a^b
。仅限整数。 -
LSHL
生成a<<(n&(ESIZE*8-1))
。仅限整数。 -
ASHR
生成a>>(n&(ESIZE*8-1))
。仅限整数。 -
LSHR
生成(a&EMASK)>>>(n&(ESIZE*8-1))
。仅限整数。 -
ROL
生成rotateLeft(a,n)
。仅限整数。 -
ROR
生成rotateRight(a,n)
。仅限整数。 -
COMPRESS_BITS
生成compress(a,n)
。仅限整数,int
和long
。- 自:
- 19
-
EXPAND_BITS
生成expand(a,n)
。仅限整数,int
和long
。- 自:
- 19
-
ATAN2
生成atan2(a,b)
。仅限浮点数。不能保证是半单调的。请参见上面的“浮点向量操作”部分 -
POW
生成pow(a,b)
。仅限浮点数。不能保证是半单调的。请参见上面的“浮点向量操作”部分 -
HYPOT
生成hypot(a,b)
。仅限浮点数。不能保证是半单调的。请参见上面的“浮点向量操作”部分 -
BITWISE_BLEND
生成a^((a^b)&c)
。(按位(c(i)?b(i):a(i))
。)仅限整数。 -
FMA
生成fma(a,b,c)
。仅限浮点数。 -
IS_DEFAULT
测试bits(a)==0
。(对于-0.0
不成立。) -
IS_NEGATIVE
测试bits(a)<0
。(对于-0.0
成立。) -
IS_FINITE
测试isFinite(a)
。仅限浮点数。 -
IS_NAN
测试isNaN(a)
。仅限浮点数。 -
IS_INFINITE
测试isInfinite(a)
。仅限浮点数。 -
EQ
比较a==b
。 -
NE
比较a!=b
。 -
LT
比较a
。 -
LE
比较a<=b
。 -
GT
比较a>b
。 -
GE
比较a>=b
。 -
UNSIGNED_LT
无符号比较a
。仅限整数。- 参见:
-
UNSIGNED_LE
无符号比较a<=b
。仅限整数。- 参见:
-
UNSIGNED_GT
无符号比较a>b
。仅限整数。- 参见:
-
UNSIGNED_GE
无符号比较a>=b
。仅限整数。- 参见:
-
B2D
将byteVal
转换为(double)byteVal
。 -
B2F
将byteVal
转换为(float)byteVal
。 -
B2I
将byteVal
转换为(int)byteVal
。 -
B2L
将byteVal
转换为(long)byteVal
。 -
B2S
将byteVal
转换为(short)byteVal
。 -
D2B
将doubleVal
转换为(byte)doubleVal
。 -
D2F
将doubleVal
转换为(float)doubleVal
。 -
D2I
将doubleVal
转换为(int)doubleVal
。 -
D2L
将doubleVal
转换为(long)doubleVal
。 -
D2S
将< -
F2B
ConvertfloatVal
to(byte)floatVal
. -
F2D
ConvertfloatVal
to(double)floatVal
. -
F2I
将floatVal
转换为(int)floatVal
。 -
F2L
将floatVal
转换为(long)floatVal
。 -
F2S
将floatVal
转换为(short)floatVal
。 -
I2B
将intVal
转换为(byte)intVal
。 -
I2D
将intVal
转换为(double)intVal
。 -
I2F
将intVal
转换为(float)intVal
。 -
I2L
将intVal
转换为(long)intVal
。 -
I2S
将intVal
转换为(short)intVal
。 -
L2B
将longVal
转换为(byte)longVal
。 -
L2D
将longVal
转换为(double)longVal
。 -
L2F
将longVal
转换为(float)longVal
。 -
L2I
将longVal
转换为(int)longVal
。 -
L2S
将longVal
转换为(short)longVal
。 -
S2B
将shortVal
转换为(byte)shortVal
。 -
S2D
将shortVal
转换为(double)shortVal
。 -
S2F
将shortVal
转换为(float)shortVal
。 -
S2I
将shortVal
转换为(int)shortVal
。 -
S2L
将shortVal
转换为(long)shortVal
。 -
REINTERPRET_D2L
-
REINTERPRET_F2I
-
REINTERPRET_I2F
-
REINTERPRET_L2D
-
ZERO_EXTEND_B2I
将byteVal
的零扩展为int
。 -
ZERO_EXTEND_B2L
将byteVal
的零扩展为long
。 -
ZERO_EXTEND_B2S
将byteVal
的零扩展为short
。 -
ZERO_EXTEND_I2L
将intVal
的零扩展为long
。 -
ZERO_EXTEND_S2I
将shortVal
的零扩展为int
。 -
ZERO_EXTEND_S2L
将shortVal
的零扩展为long
。
-