SIMD.select
SIMD.select
SIMD.js已经从TC39中取消了积极的开发,并从第三阶段中删除了。它不再被网页浏览器所追求。暴露在 web 上的SIMD 操作在 WebAssembly 中正处于积极的发展之中, 其操作基于 SIMD. js 操作。
静态SIMD.%type%.select()
方法创建一个新的整数SIMD数据类型,其中通道值是选择器掩码的选择匹配。
语法
SIMD.Float32x4.select(mask, trueValue, falseValue)
SIMD.Float64x2.select(mask, trueValue, falseValue)
SIMD.Int8x16.select(mask, trueValue, falseValue)
SIMD.Int16x8.select(mask, trueValue, falseValue)
SIMD.Int32x4.select(mask, trueValue, falseValue)
SIMD.Uint8x16.select(mask, trueValue, falseValue)
SIMD.Uint16x8.select(mask, trueValue, falseValue)
SIMD.Uint32x4.select(mask, trueValue, falseValue)
参数
int32x4
,int16x8
或者int8x16
用作选择器掩码。trueValue
如果选择遮罩车道true
,从这里选择相应的车道值。falseValue
如果选择遮罩车道false
,从这里选择相应的车道值。
返回值
新的SIMD数据类型。
描述
该SIMD.%type%.select()
方法从选择掩码中选择通道。掩蔽(或“分支”)通道非常有用,因为您无法在SIMD数据类型的一小部分数据上操作。但是,使用掩码和select
函数,您可以分支和合并向量以组合您需要的结果向量。
例子
自定义选择掩码
此示例使用该SIMD.Bool32x4
类型来创建自定义选择掩码。使用此掩码,您可以从第一个Float32x4
数据类型中选择第一个和最后一个通道。因此,select
函数从矢量中选择第一条和最后一条a
通道,从矢量b
(或sum
第二条中的矢量)中选择第二条和第三条通道select
。
var a = SIMD.Float32x4(1, 2, 3, 4
var b = SIMD.Float32x4(5, 6, 7, 8
var mask = SIMD.Bool32x4(true, false, false, true
SIMD.Float32x4.select(mask, a, b
// Float32x4[1, 6, 7, 4]
var sum = SIMD.Float32x4.add(a, b
SIMD.Float32x4.select(mask, a, sum
// Float32x4[1, 8, 10, 4]
操作返回一个选择掩码
所有SIMD比较操作都会返回一个选择掩码,您必须从中进行选择才能获得比较结果:
var a = SIMD.Float32x4(0, 12, 3, 4
var b = SIMD.Float32x4(0, 6, 7, 50
var mask = SIMD.Float32x4.lessThan(a, b
// Bool32x4[false, false, true, true]
var result = SIMD.Float32x4.select(mask, a, b
// Float32x4[0, 6, 3, 4]
规范
Specification | Status | Comment |
---|---|---|
SIMDThe definition of 'SIMDConstructor.select' in that specification. | Draft | Initial definition. |
浏览器兼容性
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 |