SIMD.Int16x8
SIMD.js已经从TC39中取消了积极的开发,并从第三阶段中删除了。它不再被网页浏览器所追求。暴露在 web 上的SIMD 操作在 WebAssembly 中正处于积极的发展之中, 其操作基于 SIMD. js 操作。
SIMD.Int16x8数据类型是一个128位的向量分成8个通道存储的16位带符号整数的值。

图1:128位SIMD寄存器中的SIMD.Int16x8
语法
SIMD.Int16x8(s0, s1, s2, s3, s4, s5, s6, s7);参数
s[0-7]可选
一个指定通道值的整数。默认为0。
构造函数
除了简单的构造函数之外,SIMD API还提供以下构造函数:
SIMD.Int16x8.splat()创建一个Int16x8,将所有通道设置为给定值。
您也可以将另一个SIMD数据类型转换为Int16x8。
注意: SIMD类型与new不起作用,因为SIMD值不是“盒装”对象(可参考 String(s) 与 new String(s) 创建 String对象 的比较)。
var v = new SIMD.Int16x8(1, 2, 3, 4, 5, 6, 7, 8);
// TypeError: SIMD.Int16x8 is not a constructor
var w = new SIMD.Int16x8.splat(3);
// TypeError: SIMD.Int16x8.splat is not a constructor与之替代的是:
var v = SIMD.Int16x8(1, 2, 3, 4, 5, 6, 7, 8);
var w = SIMD.Int16x8.splat(3);运算
要在 SIMD 类型中实际执行某些操作, 需要使用SIMD数据类型
检查SIMD类型
SIMD.Int16x8.check()如果参数是有效的Int16x8数据类型,则返回新的Int16x8。TypeError否则抛出。
访问和变换通道
SIMD.Int16x8.extractLane()返回给定通道的值。SIMD.Int16x8.replaceLane()返回给定通道值替换的新Int16x8。
从类型数组中加载和存储
算术运算
SIMD.Int16x8.add()返回一个添加了通道值的新的Int16x8(a + b)。
SIMD.Int16x8.addSaturate()返回一个新的Int16x8,添加通道值(a + b),并在溢出时使饱和行为。
SIMD.Int16x8.mul()返回一个新的Int16x8,通道值乘以(a * b)。
SIMD.Int16x8.neg()返回带有否定通道值的新Int16x8。
SIMD.Int16x8.sub()返回一个新的Int16x8,减去通道值(a - b)。
SIMD.Int16x8.subSaturate()返回一个新的Int16x8,减去通道值(a - b)和饱和行为溢出。
混合和调整
SIMD.Int16x8.shuffle()返回一个新的带混合通道值的Int16x8。
SIMD.Int16x8.swizzle()返回一个新的Int16x8,通道值调整。
选项
SIMD.Int16x8.select()返回一个新的Int16x8,其中通道值是通道的混合,具体取决于选择器掩码。
比较
SIMD.Int16x8.equal()返回取决于的选择掩码a == b。
SIMD.Int16x8.notEqual()返回取决于的选择掩码a != b。
SIMD.Int16x8.lessThan()返回取决于的选择掩码a < b。
SIMD.Int16x8.lessThanOrEqual()返回取决于的选择掩码a <= b。
SIMD.Int16x8.greaterThan()返回取决于的选择掩码a > b。
SIMD.Int16x8.greaterThanOrEqual()返回取决于的选择掩码a >= b。
按位逻辑操作
SIMD.Int16x8.and()返回一个新的Int16x8,其逻辑和为通道值(a & b)。
SIMD.Int16x8.or()返回一个新的Int16x8,带有通道值(a | b)的逻辑或。
SIMD.Int16x8.xor()返回一个新的Int16x8,其逻辑与车道值(a ^ b)的异或()。
SIMD.Int16x8.not()返回带有车道值的逻辑NOT(~a)的新Int16x8 。
按位移动操作
SIMD.Int16x8.shiftLeftByScalar()返回一个新的Int16x8,其中通道值左移一个给定的位数(a << bits)。SIMD.Int16x8.shiftRightByScalar()返回一个新的Int16x8,车道值右移。
数据转换
SIMD.Int16x8.fromFloat32x4Bits()使用Float32x4的按位副本创建新的Int16x8数据类型。SIMD.Int16x8.fromFloat64x2Bits()使用Float64x2的按位副本创建新的Int16x8数据类型。SIMD.Int16x8.fromInt32x4Bits()使用Int32x4的按位副本创建新的Int16x8数据类型。SIMD.Int16x8.fromInt8x16Bits()使用Int8x16的按位副本创建新的Int16x8数据类型。SIMD.Int16x8.fromUint32x4Bits()使用Uint32x4的按位副本创建新的Int16x8数据类型。SIMD.Int16x8.fromUint16x8Bits()使用Uint16x8的按位副本创建新的Int16x8数据类型。SIMD.Int16x8.fromUint8x16Bits()使用Uint8x16的按位副本创建新的Int16x8数据类型。
SIMD原型
下面的方法和属性被安装在SIMD.Int16x8.prototype。
SIMD.Int16x8.prototype.constructor指定创建SIMD对象原型的函数。
SIMD.Int16x8.prototype.toLocaleString()返回表示SIMD类型及其元素的本地化字符串。重写该Object.prototype.toLocaleString()方法。
SIMD.Int16x8.prototype.toString()返回表示SIMD类型及其元素的字符串。重写该Object.prototype.toString()方法。
SIMD.Int16x8.prototype.valueOf()返回SIMD对象的原始值。
SIMD.Int16x8.prototype.toSource()返回表示对象源代码的字符串。重写该Object.prototype.toSource()方法。
例子
构建一个Int16x8
SIMD.Int16x8(1, 2, 3, 4, 5, 6, 7, 8); // Int16x8[1, 2, 3, 4, 5, 6, 7, 8]
SIMD.Int16x8(1, 2); // Int16x8[1, 2, 0, 0, 0, 0, 0, 0]
SIMD.Int16x8(); // Int16x8[0, 0, 0, 0, 0, 0, 0, 0]规范
Specification | Status | Comment |
|---|---|---|
SIMDThe definition of 'Int16x8' 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

