JavaScript参考手册
SIMD
SIMD.Int32x4
SIMD.js已经从TC39中取消了积极的开发,并从第三阶段中删除了。它不再被网页浏览器所追求。暴露在 web 上的SIMD 操作在 WebAssembly 中正处于积极的发展之中, 其操作基于 SIMD. js 操作。
SIMD.Int32x4
数据类型是一个128位的向量分成4个车道存储32位带符号整数值。
图1:128位SIMD寄存器中的SIMD.Int32x4。
语法
SIMD.Int32x4(x, y, z, w);
参数
x
可选 一个指定第一个车道值的整数。默认为0.
y
可选 一个指定第二个通道值的整数。默认为0.
z
可选 一个指定第三个通道值的整数。默认为0.
w
可选 一个指定第四个车道值的整数。默认为0。
构造函数
除了简单的构造函数之外,SIMD API还提供以下构造函数:
SIMD.Int32x4.splat()
创建一个Int32x4,将所有通道设置为给定值。
您也可以从另一个SIMD数据类型转换为Int32x4。
注意: SIMD类型与new不起作用,因为SIMD值不是“盒装”对象(可参考 String(s) 与 new String(s) 创建 String对象 的比较)。
var v = new SIMD.Int32x4(1, 2, 3, 4);
// TypeError: SIMD.Int32x4 is not a constructor
var w = new SIMD.Int32x4.splat(3);
// TypeError: SIMD.Int32x4.splat is not a constructor
与之替代的是:
var v = SIMD.Int32x4(1, 2, 3, 4);
var w = SIMD.Int32x4.splat(3);
运算
要在 SIMD 类型中实际执行某些操作, 需要使用SIMD数据类型。
检查SIMD类型
SIMD.Int32x4.check()
如果参数是有效的Int32x4数据类型,则返回新的Int32x4。TypeError
否则抛出。
访问和变换通道
SIMD.Int32x4.extractLane()
返回给定通道的值。SIMD.Int32x4.replaceLane()
返回已替换给定通道值的新Int32x4。
从类型数组中加载和存储
SIMD.Int32x4.load()
SIMD.Int32x4.load1()
SIMD.Int32x4.load2()
SIMD.Int32x4.load3()
返回一个新的Int32x4,其中的通道值是从一个类型数组中加载的。
SIMD.Int32x4.store()
SIMD.Int32x4.store1()
SIMD.Int32x4.store2()
SIMD.Int32x4.store3()
将一个Int32x4存储到一个类型数组中。
算术运算
SIMD.Int32x4.add()
返回添加了通道值的新Int32x4(a + b
)。
SIMD.Int32x4.mul()
返回一个新的Int32x4,车道值乘以(a * b
)。
SIMD.Int32x4.neg()
返回带有否定通道值的新Int32x4。
SIMD.Int32x4.sub()
返回带有减去的通道值的新Int32x4(a - b
)。
混合和调整
SIMD.Int32x4.shuffle()
返回一个新的Int32x4,混合通道值。SIMD.Int32x4.swizzle()
返回通道值调整后的新Int32x4。
选项
SIMD.Int32x4.select()
返回一个新的Int32x4,其中通道值是通道的混合,具体取决于选择器掩码。
比较
SIMD.Int32x4.equal()
返回取决于的选择掩码a == b
。
SIMD.Int32x4.notEqual()
返回取决于的选择掩码a != b
。
SIMD.Int32x4.lessThan()
返回取决于的选择掩码a < b
。
SIMD.Int32x4.lessThanOrEqual()
返回取决于的选择掩码a <= b
。
SIMD.Int32x4.greaterThan()
返回取决于的选择掩码a > b
。
SIMD.Int32x4.greaterThanOrEqual()
返回取决于的选择掩码a >= b
。
按位逻辑操作
SIMD.Int32x4.and()
返回一个新的Int32x4,其逻辑与车道值(a & b
)相同。
SIMD.Int32x4.or()
返回一个新的Int32x4,其逻辑或为通道值(a | b
)。
SIMD.Int32x4.xor()
返回一个带有通道值(a ^ b
)的逻辑异或的新Int32x4 。
SIMD.Int32x4.not()
返回带有车道值(~a
)的逻辑NOT的新的Int32x4 。
按位移动操作
SIMD.Int32x4.shiftLeftByScalar()
返回一个新的Int32x4,通道值向左移动一个给定的位数(a << bits
)。
SIMD.Int32x4.shiftRightByScalar()
返回一个新的Int32x4,车道值右移。
数据转换
SIMD.Int32x4.fromFloat32x4()
使用float32x4的浮点数转换创建新的Int32x4数据类型。SIMD.Int32x4.fromFloat32x4Bits()
使用float32x4的按位副本创建新的Int32x4数据类型。SIMD.Int32x4.fromFloat64x2Bits()
使用float64x2的按位副本创建新的Int32x4数据类型。SIMD.Int32x4.fromInt16x8Bits()
使用Int16x8中的按位副本创建新的Int32x4数据类型。SIMD.Int32x4.fromInt8x16Bits()
使用Int8x16的按位副本创建新的Int32x4数据类型。
SIMD 原型
下面的方法和属性被安装在SIMD.Int32x4.prototype
。
SIMD.Int32x4.prototype.constructor
指定创建SIMD对象原型的函数。
SIMD.Int32x4.prototype.toLocaleString()
返回表示SIMD类型及其元素的本地化字符串。重写该Object.prototype.toLocaleString()
方法。
SIMD.Int32x4.prototype.toString()
返回表示SIMD类型及其元素的字符串。重写该Object.prototype.toString()
方法。
SIMD.Int32x4.prototype.valueOf()
返回SIMD对象的原始值。
SIMD.Int32x4.prototype.toSource()
返回表示对象源代码的字符串。重写该Object.prototype.toSource()
方法。
例子
构建一个Int32x4
SIMD.Int32x4(1, 2, 3, 4); // Int32x4[1, 2, 3, 4]
SIMD.Int32x4(1, 2); // Int32x4[1, 2, 0, 0]
SIMD.Int32x4(); // Int32x4[0, 0, 0, 0]
规范
Specification |
Status |
Comment |
---|---|---|
SIMDThe definition of 'Int32x4' 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 |
SIMD相关
JavaScript 是一种高级编程语言,通过解释执行,是一门动态类型,面向对象(基于原型)的解释型语言。它已经由ECMA(欧洲电脑制造商协会)通过 ECMAScript 实现语言的标准化。它被世界上的绝大多数网站所使用,也被世界主流浏览器( Chrome、IE、FireFox、Safari、Opera )支持。JavaScript 是一门基于原型、函数先行的语言,是一门多范式的语言,它支持面向对象编程,命令式编程,以及函数式编程。它提供语法来操控文本、数组、日期以及正则表达式等,不支持 I/O,比如网络