SIMD.js已经从TC39的发展中主动脱离出来了,并在第三阶段移除。web浏览器不再追求它的实现。SIMD操作暴露在web上,在WebAssembly中处于积极的开发状态,操作基于SIMD.js操作。

SIMD.Bool32x4数据类型是一个128位的矢量数值,分为4个存储布尔值的通道。

语法

SIMD.Bool32x4(x, y, z, w);

参数

x 可选
一个布尔值,指定了第一个通道的值,默认值为 false.
y 可选
一个布尔值,指定了第二个通道的值,默认值为 false.
z 可选
一个布尔值,指定了第三个通道的值,默认值为 false.
w 可选
一个布尔值,指定了第四个通道的值,默认值为 false.

构造函数

除了简单的函数之外,SIMD API还提供了以下构造函数:

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

Note: SIMD 类型使用 new 声明不会生效,因为 SIMD 值不是 "盒内" 对象 (好比 String(s) 和 new String(s), 后者创建了一个字符串对象)。

var v = new SIMD.Bool32x4(true, false, true, false); 
// TypeError: SIMD.Bool32x4 is not a constructor
var w = new SIMD.Bool32x4.splat(true); 
// TypeError: SIMD.Bool32x4.splat is not a constructor

相反,你只需这样写:

var v = SIMD.Bool32x4(true, false, true, false);
var w = SIMD.Bool32x4.splat(true);

操作

要用 SIMD 类型做一些事情,在 SIMD data 数据类型之上的 SIMD 操作是必须的。

检查 SIMD 类型

SIMD.Bool32x4.check()
如果参数是有效的 Bool32x4 数据类型,则返回一个新的 Bool32x4。否则抛出一个 TypeError

访问和修改通道

SIMD.Bool32x4.extractLane()
返回给定通道的值。
SIMD.Bool32x4.replaceLane()
返回一个新的 Bool32x4 值并替换给定通道的值。

布尔运算

SIMD.Bool32x4.allTrue()
检查是否所有的通道都为 true 值.
SIMD.Bool32x4.anyTrue()
检查是否存在通道为 true 值。

位逻辑运算

SIMD.Bool32x4.and()
返回一个新的 Bool32x4对象,值为通道值逻辑与的结果 (a & b).
SIMD.Bool32x4.or()
返回一个新的 Bool32x4对象,值为通道值逻辑或的结果 (a | b).
SIMD.Bool32x4.xor()
返回一个新的 Bool32x4对象,值为通道值逻辑异或的结果 (a ^ b).
SIMD.Bool32x4.not()
返回一个新的 Bool32x4对象,值为通道值逻辑非的结果 (~a).

SIMD 原型

下面的方法和属性都位于 SIMD.Bool32x4.prototype.

SIMD.Bool32x4.prototype.constructor
指定创建一个 SIMD 对象原型的函数。
SIMD.Bool32x4.prototype.toLocaleString()
返回一个表示SIMD类型及其元素的本地化字符串。覆盖Object.prototype.toLocaleString() 方法。
SIMD.Bool32x4.prototype.toString()
返回一个表示SIMD类型及其元素的字符串。覆盖 Object.prototype.toString() 方法。
SIMD.Bool32x4.prototype.valueOf()
返回 SIMD 对象的原始值。
SIMD.Bool32x4.prototype.toSource()
返回一个表示对象源代码的字符串。覆盖Object.prototype.toSource() 方法。

示例

构建一个 Bool32x4 对象

SIMD.Bool32x4(true, false, true, false); // Bool32x4[true, false, true, false]
SIMD.Bool32x4(true, false);              // Bool32x4[true, false, false, false]
SIMD.Bool32x4();                         // Bool32x4[false, false, false, false]

规范

规范 状态 说明
SIMD
Bool32x4
Obsolete 首次定义。

浏览器兼容性

实验性的 SIMD.js 已经从浏览器中移除。但它仍然可以在 Firefox Nightly 中使用, 但是会被移除,取而代之的是 WebAssembly中的 SIMD 实现。参考 bug 1416723.

相关链接

文档标签和贡献者

标签: 
此页面的贡献者: codeofjackie, houbb
最后编辑者: codeofjackie,