SIMD.Float32x4
SIMD.js已经从TC39中取消了积极的开发,并从第三阶段中删除了。它不再被网页浏览器所追求。暴露在 web 上的SIMD 操作在 WebAssembly 中正处于积极的发展之中, 其操作基于 SIMD. js 操作。
SIMD.Float32x4
数据类型是一个128位向量,分为4条通存储单精度浮点值。

图1:128位SIMD寄存器中的SIMD.Float32x4。
语法
SIMD.Float32x4(x, y, z, w);
参数
输入值以双精度浮点形式指定,并在存储之前转换为单精度浮点值。
x
OptionalA double指定第一条通道的值。默认为NaN
。y
OptionalA double指定第二个通道的值。默认为NaN
。z
OptionalA double指定第三个通道的值。默认为NaN
。w
OptionalA double指定第四条通道的值。默认为NaN
。
构造函数
除了简单的构造函数外,SIMD API还提供以下构造函数。请注意,您也可以将另一个SIMD数据类型转换为Float32x4。
SIMD.Float32x4.splat()
创建一个Float32x4,将所有通道设置为给定值。
注意: SIMD类型与new不起作用,因为SIMD值不是“盒装”对象(可参考 String(s) 与 new String(s) 创建 String对象 的比较)。
var v = new SIMD.Float32x4(0, 1, 2, 3);
// TypeError: SIMD.Float32x4 is not a constructor
var w = new SIMD.Float32x4.splat(3);
// TypeError: SIMD.Float32x4.splat is not a constructor
与之替代的是:
var v = SIMD.Float32x4(0, 1, 2, 3);
var w = SIMD.Float32x4.splat(3);
运算
要在 SIMD 类型中实际执行某些操作, 需要使用SIMD数据类型。
检查SIMD类型
SIMD.Float32x4.check()
如果参数是有效的Float32x4数据类型,则返回新的Float32x4。TypeError
否则抛出。
访问和变换通道
SIMD.Float32x4.extractLane()
返回给定通道的值。SIMD.Float32x4.replaceLane()
返回已替换给定通道值的新Float32x4。
从类型数组中加载和存储
SIMD.Float32x4.load()
SIMD.Float32x4.load1()
SIMD.Float32x4.load2()
算术运算
SIMD.Float32x4.abs()
返回具有绝对通道值的新Float32x4。
SIMD.Float32x4.add()
返回一个新添加了泳道值的Float32x4(a + b
)。
SIMD.Float32x4.div()
返回一个新的Float32x4,车道值分为(a / b
)。
SIMD.Float32x4.mul()
返回一个新的Float32x4,车道值乘以(a * b
)。
SIMD.Float32x4.neg()
返回带有否定通道值的新Float32x4。
SIMD.Float32x4.reciprocalApproximation()
返回一个新的Float32x4,其倒数通道值近似。
SIMD.Float32x4.reciprocalSqrtApproximation()
返回一个具有近似倒数平方根通道值的新Float32x4。
SIMD.Float32x4.sub()
返回一个新的Float32x4,减去通道值(a - b
)。
SIMD.Float32x4.sqrt()
返回具有通道值的平方根的新Float32x4。
混合与调整
SIMD.Float32x4.shuffle()
Returns a new Float32x4 with the lane values shuffled.SIMD.Float32x4.swizzle()
Returns a new Float32x4 with the lane values swizzled.
最小值和最大值
SIMD.Float32x4.max()
返回带有最大通道值的新Float32x4。
SIMD.Float32x4.maxNum()
返回带有最大通道值的新Float32x4,优先选择数字NaN
。
SIMD.Float32x4.min()
返回具有最小通道值的新Float32x4。
SIMD.Float32x4.minNum()
返回带有最小通道值的新Float32x4,优先选择数字NaN
。
选项
SIMD.Float32x4.select()
返回一个新的Float32x4,其中通道值是通道的混合,取决于选择器掩码。
比较
SIMD.Float32x4.equal()
返回取决于的选择掩码a == b
。
SIMD.Float32x4.notEqual()
返回取决于的选择掩码a != b
。
SIMD.Float32x4.lessThan()
返回取决于的选择掩码a < b
。
SIMD.Float32x4.lessThanOrEqual()
返回取决于的选择掩码a <= b
。
SIMD.Float32x4.greaterThan()
返回取决于的选择掩码a > b
。
SIMD.Float32x4.greaterThanOrEqual()
返回取决于的选择掩码a >= b
。
数据转换
SIMD.Float32x4.fromFloat64x2Bits()
使用Float64x2的按位副本创建新的Float32x4数据类型。SIMD.Float32x4.fromInt32x4()
通过Int32x4的Float转换创建一个新的Float32x4数据类型。SIMD.Float32x4.fromInt32x4Bits()
使用Int32x4的按位副本创建新的Float32x4数据类型。SIMD.Float32x4.fromInt16x8Bits()
使用Int16x8的按位副本创建新的Float32x4数据类型。SIMD.Float32x4.fromInt8x16Bits()
使用Int8x16的按位副本创建新的Float32x4数据类型。SIMD.Float32x4.fromUint32x4()
通过Uint32x4的Float转换创建新的Float32x4数据类型。SIMD.Float32x4.fromUint32x4Bits()
使用Uint32x4的按位副本创建新的Float32x4数据类型。SIMD.Float32x4.fromUint16x8Bits()
使用Uint16x8的按位副本创建新的Float32x4数据类型。SIMD.Float32x4.fromUint8x16Bits()
使用Uint8x16的逐位副本创建新的Float32x4数据类型。
SIMD原型
下面的方法和属性被安装在SIMD.Float32x4.prototype
。
SIMD.Float32x4.prototype.constructor
指定创建SIMD对象原型的函数。
SIMD.Float32x4.prototype.toLocaleString()
返回表示SIMD类型及其元素的本地化字符串。重写该Object.prototype.toLocaleString()
方法。
SIMD.Float32x4.prototype.toString()
返回表示SIMD类型及其元素的字符串。重写该Object.prototype.toString()
方法。
SIMD.Float32x4.prototype.valueOf()
返回SIMD对象的原始值。
SIMD.Float32x4.prototype.toSource()
返回表示对象源代码的字符串。重写该Object.prototype.toSource()
方法。
例子
SIMD.Float32x4(1, 2, 3, 4); // Float32x4[1, 2, 3, 4]
SIMD.Float32x4(1, 2); // Float32x4[1, 2, NaN, NaN]
SIMD.Float32x4(); // Float32x4[NaN, NaN, NaN, NaN]
规范
Specification | Status | Comment |
---|---|---|
SIMDThe definition of 'Float32x4' in that specification. | Draft | Initial definition. |
浏览器兼容性
Feature | Chrome | Edge | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|---|
Basic support | No support | Nightly build | Nightly build | No support | No support | No support |
Feature | Android | Chrome for Android | Edge | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|---|
Basic support | No support | No support | Nightly build | Nightly build | No support | No support | No support |
本文档系腾讯云开发者社区成员共同维护,如有问题请联系 cloudcommunity@tencent.com