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)

参数

int32x4int16x8或者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]

规范

SpecificationStatusComment
SIMDThe definition of 'SIMDConstructor.select' in that specification.DraftInitial definition.

浏览器兼容性

FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic supportNo supportNightly buildNo supportNo supportNo support

FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic supportNo supportNo supportNightly buildNo supportNo supportNo support