非常教程

JavaScript参考手册

SIMD

SIMD.Float64x2

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

注意:Float64x2类型目前不是SIMD规范草案的一部分。

SIMD.Float64x2数据类型是一个128位的向量分成2条车道存储双精度浮点值。

SIMD.Float64x2

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

语法

SIMD.Float64x2(x, y);

参数

x 可选

指定第一条通道的值的 double。默认为 NaN。

y 可选

指定第二条通道的值的 double。默认为 NaN。

构造函数

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

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

请注意,您也可以将另一个SIMD数据类型转换为Float64x2。

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

var v = new SIMD.Float64x2(1, 2); 
// TypeError: SIMD.Float64x2 is not a constructor
var w = new SIMD.Float64x2.splat(3); 
// TypeError: SIMD.Float64x2.splat is not a constructor

与之替代的是:

var v = SIMD.Float64x2(1, 2); 
var w = SIMD.Float64x2.splat(3); 

运算

要在 SIMD 类型中实际执行某些操作, 需要使用SIMD数据类型。

检查SIMD类型

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

访问和变换通道

SIMD.Float64x2.extractLane()返回给定通道的值。SIMD.Float64x2.replaceLane()返回已替换给定通道值的新Float64x2。

从类型数组中加载和存储

SIMD.Float64x2.load()SIMD.Float64x2.load1()返回一个新的Float64x2,其中从一个类型数组中加载通道值。SIMD.Float64x2.store()

SIMD.Float64x2.store1()将Float64x2存储到类型数组中。

算术运算

SIMD.Float64x2.abs()返回具有绝对通道值的新Float64x2。

SIMD.Float64x2.add()返回一个新添加了泳道值的Float64x2(a + b)。

SIMD.Float64x2.div()返回一个新的Float64x2,车道值分为(a / b)。

SIMD.Float64x2.mul()返回车道值乘以(a * b)的新的loat64x2 。

SIMD.Float64x2.neg()返回带有否定通道值的新Float64x2。

SIMD.Float64x2.reciprocalApproximation()返回一个新的Float64x2,其倒数通道值近似。

SIMD.Float64x2.reciprocalSqrtApproximation()返回一个具有近似倒数平方根通道值的新Float64x2。

SIMD.Float64x2.sub()返回一个新的Float64x2,减去通道值(a - b)。SIMD.Float64x2.sqrt()返回具有通道值的平方根的新Float64x2。

混合和调整

SIMD.Float64x2.shuffle()返回混合通道值的新Float64x2。

SIMD.Float64x2.swizzle()返回通道值调整后的新Float64x2。

最小值和最大值

SIMD.Float64x2.max()返回具有最大泳道值的新Float64x2。

SIMD.Float64x2.maxNum()返回具有最大泳道值的新Float64x2,优先选择数字NaN

SIMD.Float64x2.min()返回具有最小泳道值的新Float64x2。

SIMD.Float64x2.minNum()返回具有最小泳道值的新Float64x2,优先选择数字NaN

选项

SIMD.Float64x2.select()返回一个新的loat64x2,根据选择器掩码,通道值是通道的混合。

比较

SIMD.Float64x2.equal()返回取决于的选择掩码a == b

SIMD.Float64x2.notEqual()返回取决于的选择掩码a != b

SIMD.Float64x2.lessThan()返回取决于的选择掩码a < b

SIMD.Float64x2.lessThanOrEqual()返回取决于的选择掩码a <= b

SIMD.Float64x2.greaterThan()返回取决于的选择掩码a > b

SIMD.Float64x2.greaterThanOrEqual()返回取决于的选择掩码a >= b

数据转换

SIMD.Float64x2.fromFloat32x4Bits()使用Float32x4的按位副本创建新的Float64x2数据类型。SIMD.Float64x2.fromInt32x4Bits()使用Int32x4的按位副本创建新的Float64x2数据类型。SIMD.Float64x2.fromInt16x8Bits()使用Int16x8的按位副本创建新的Float64x2数据类型。SIMD.Float64x2.fromInt8x16Bits()使用Int8x16的按位副本创建新的Float64x2数据类型。SIMD.Float64x2.fromUint32x4Bits()使用Uint32x4的按位副本创建新的Float64x2数据类型。SIMD.Float64x2.fromUint16x8Bits()使用Uint16x8的按位副本创建新的Float64x2数据类型。SIMD.Float64x2.fromUint8x16Bits()使用Uint8x16的按位副本创建新的Float64x2数据类型。

SIMD 原型

下面的方法和属性被安装在SIMD.Float64x2.prototype

SIMD.Float64x2.prototype.constructor指定创建SIMD对象原型的函数。

SIMD.Float64x2.prototype.toLocaleString()返回表示SIMD类型及其元素的本地化字符串。重写该Object.prototype.toLocaleString()方法。

SIMD.Float64x2.prototype.toString()返回表示SIMD类型及其元素的字符串。重写该Object.prototype.toString()方法。

SIMD.Float64x2.prototype.valueOf()返回SIMD对象的原始值。

SIMD.Float64x2.prototype.toSource()返回表示对象源代码的字符串。重写该Object.prototype.toSource()方法。

例子

构建一个Float64x2

SIMD.Float64x2(1, 2); // Float64x2[1, 2]
SIMD.Float64x2(1);    // Float64x2[1, NaN]
SIMD.Float64x2();     // Float64x2[NaN, NaN]

规范

Float64x2类型目前不是SIMD规范草案的一部分。

浏览器兼容性

Feature

Chrome

Firefox (Gecko)

Internet Explorer

Opera

Safari

Basic support

No support

Nightly build

No support

No support

No support

Feature

Android

Chrome for Android

Firefox Mobile (Gecko)

IE Mobile

Opera Mobile

Safari Mobile

Basic support

No support

No support

Nightly build

No support

No support

No support

JavaScript

JavaScript 是一种高级编程语言,通过解释执行,是一门动态类型,面向对象(基于原型)的解释型语言。它已经由ECMA(欧洲电脑制造商协会)通过 ECMAScript 实现语言的标准化。它被世界上的绝大多数网站所使用,也被世界主流浏览器( Chrome、IE、FireFox、Safari、Opera )支持。JavaScript 是一门基于原型、函数先行的语言,是一门多范式的语言,它支持面向对象编程,命令式编程,以及函数式编程。它提供语法来操控文本、数组、日期以及正则表达式等,不支持 I/O,比如网络