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