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))-1intVal、byteVal等 — 转换的操作数,带有指定类型
浮点向量操作
- 适用于浮点向量的通道操作遵循等效Java操作或方法的准确性和单调性规范,除非另有规定。如果向量元素类型为
float,而Java操作或方法仅接受和返回double值,则每个通道上的标量操作将被调整以转换操作数和结果,具体地将float操作数扩展为double操作数,并将double结果缩小为float。 - 适用于浮点向量的某些关联操作在浮点通道值上并非真正关联。具体来说,当与跨通道缩减操作一起使用时,例如与
ADD和MUL一起使用,如FloatVector.reduceLanes(Associative)。这种操作的结果既取决于输入值(向量和掩码)也取决于应用于组合通道值的标量操作的顺序。在这种情况下,故意不定义顺序。这允许JVM在运行时为底层平台生成最佳机器代码。如果平台支持向量指令来添加或乘以向量中的所有值,或者存在其他有效的机器代码序列,则JVM可以选择生成此机器代码。否则,将应用默认实现,从头到尾顺序添加向量元素。因此,对于相同的输入值,此类操作的结果可能会有所不同。
请注意,特定操作令牌可能适用于多种不同的通道类型。因此,这些令牌的行为类似于重载的操作符或方法,而不是特定于类型的方法句柄或lambda。与方法句柄或lambda不同,这些操作符没有操作语义;它们仅用于从向量对象请求通道操作,并且不能(单独)对单个通道值执行操作。
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic interfacestatic interfacestatic interfacestatic interfacestatic interface所有操作令牌的根类型,提供常见属性的查询,如参数数量、参数和返回类型、符号名称和操作符名称。static interfacestatic interfacestatic interface -
Field Summary
FieldsModifier 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
ConvertfloatValto(byte)floatVal. -
F2D
ConvertfloatValto(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。
-