首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

SIMD.Float32x4

SIMD.js已经从TC39中取消了积极的开发,并从第三阶段中删除了。它不再被网页浏览器所追求。暴露在 web 上的SIMD 操作在 WebAssembly 中正处于积极的发展之中, 其操作基于 SIMD. js 操作。

SIMD.Float32x4数据类型是一个128位向量,分为4条通存储单精度浮点值。

图1:128位SIMD寄存器中的SIMD.Float32x4。

语法

代码语言:javascript
复制
SIMD.Float32x4(x, y, z, w);

参数

输入值以双精度浮点形式指定,并在存储之前转换为单精度浮点值。

xOptionalA double指定第一条通道的值。默认为NaNyOptionalA double指定第二个通道的值。默认为NaNzOptionalA double指定第三个通道的值。默认为NaNwOptionalA double指定第四条通道的值。默认为NaN

构造函数

除了简单的构造函数外,SIMD API还提供以下构造函数。请注意,您也可以将另一个SIMD数据类型转换为Float32x4。

SIMD.Float32x4.splat()创建一个Float32x4,将所有通道设置为给定值。

注意: SIMD类型与new不起作用,因为SIMD值不是“盒装”对象(可参考 String(s) 与 new String(s) 创建 String对象 的比较)。

代码语言:javascript
复制
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

与之替代的是:

代码语言:javascript
复制
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.load3()

返回一个新的Float32x4,其中的通道值是从一个类型数组中加载的。

SIMD.Float32x4.store()

SIMD.Float32x4.store1()

SIMD.Float32x4.store2()

SIMD.Float32x4.store3()

将Float32x4存储到一个类型数组中

算术运算

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()方法。

例子

代码语言:javascript
复制
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

扫码关注腾讯云开发者

领取腾讯云代金券

http://www.vxiaotou.com