diff options
author | Daniel Wirtz <dcode@dcode.io> | 2021-04-08 07:52:49 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-04-08 07:52:49 +0200 |
commit | 756a718a16e96b37ae9a0ef6cb7e56210bef3b13 (patch) | |
tree | 3f075ff5dfee64ecd26067049f0c6acb7cdf448b /src | |
parent | cf38b658ff20c2b53066dc2a51266c033c6d7178 (diff) | |
download | binaryen-756a718a16e96b37ae9a0ef6cb7e56210bef3b13.tar.gz binaryen-756a718a16e96b37ae9a0ef6cb7e56210bef3b13.tar.bz2 binaryen-756a718a16e96b37ae9a0ef6cb7e56210bef3b13.zip |
Add iNxM.extadd_pairwise_* SIMD instructions to C/JS API (#3780)
Adds C/JS APIs for the SIMD instructions
* ExtAddPairwiseSVecI8x16ToI16x8
* ExtAddPairwiseUVecI8x16ToI16x8
* ExtAddPairwiseSVecI16x8ToI32x4
* ExtAddPairwiseUVecI16x8ToI32x4
Diffstat (limited to 'src')
-rw-r--r-- | src/binaryen-c.cpp | 12 | ||||
-rw-r--r-- | src/binaryen-c.h | 5 | ||||
-rw-r--r-- | src/js/binaryen.js-post.js | 16 |
3 files changed, 32 insertions, 1 deletions
diff --git a/src/binaryen-c.cpp b/src/binaryen-c.cpp index dfcd425e3..86eb5324d 100644 --- a/src/binaryen-c.cpp +++ b/src/binaryen-c.cpp @@ -628,6 +628,18 @@ BinaryenOp BinaryenCeilVecF64x2(void) { return CeilVecF64x2; } BinaryenOp BinaryenFloorVecF64x2(void) { return FloorVecF64x2; } BinaryenOp BinaryenTruncVecF64x2(void) { return TruncVecF64x2; } BinaryenOp BinaryenNearestVecF64x2(void) { return NearestVecF64x2; } +BinaryenOp BinaryenExtAddPairwiseSVecI8x16ToI16x8(void) { + return ExtAddPairwiseSVecI8x16ToI16x8; +} +BinaryenOp BinaryenExtAddPairwiseUVecI8x16ToI16x8(void) { + return ExtAddPairwiseUVecI8x16ToI16x8; +} +BinaryenOp BinaryenExtAddPairwiseSVecI16x8ToI32x4(void) { + return ExtAddPairwiseSVecI16x8ToI32x4; +} +BinaryenOp BinaryenExtAddPairwiseUVecI16x8ToI32x4(void) { + return ExtAddPairwiseUVecI16x8ToI32x4; +} BinaryenOp BinaryenTruncSatSVecF32x4ToVecI32x4(void) { return TruncSatSVecF32x4ToVecI32x4; } diff --git a/src/binaryen-c.h b/src/binaryen-c.h index 84661b750..038ed43c2 100644 --- a/src/binaryen-c.h +++ b/src/binaryen-c.h @@ -529,7 +529,10 @@ BINARYEN_API BinaryenOp BinaryenCeilVecF64x2(void); BINARYEN_API BinaryenOp BinaryenFloorVecF64x2(void); BINARYEN_API BinaryenOp BinaryenTruncVecF64x2(void); BINARYEN_API BinaryenOp BinaryenNearestVecF64x2(void); -// TODO: Add extending pairwise adds to C and JS APIs once merged +BINARYEN_API BinaryenOp BinaryenExtAddPairwiseSVecI8x16ToI16x8(void); +BINARYEN_API BinaryenOp BinaryenExtAddPairwiseUVecI8x16ToI16x8(void); +BINARYEN_API BinaryenOp BinaryenExtAddPairwiseSVecI16x8ToI32x4(void); +BINARYEN_API BinaryenOp BinaryenExtAddPairwiseUVecI16x8ToI32x4(void); BINARYEN_API BinaryenOp BinaryenTruncSatSVecF32x4ToVecI32x4(void); BINARYEN_API BinaryenOp BinaryenTruncSatUVecF32x4ToVecI32x4(void); BINARYEN_API BinaryenOp BinaryenConvertSVecI32x4ToVecF32x4(void); diff --git a/src/js/binaryen.js-post.js b/src/js/binaryen.js-post.js index 80affeefc..15e342eb8 100644 --- a/src/js/binaryen.js-post.js +++ b/src/js/binaryen.js-post.js @@ -459,6 +459,10 @@ function initializeConstants() { 'FloorVecF64x2', 'TruncVecF64x2', 'NearestVecF64x2', + 'ExtAddPairwiseSVecI8x16ToI16x8', + 'ExtAddPairwiseUVecI8x16ToI16x8', + 'ExtAddPairwiseSVecI16x8ToI32x4', + 'ExtAddPairwiseUVecI16x8ToI32x4', 'TruncSatSVecF32x4ToVecI32x4', 'TruncSatUVecF32x4ToVecI32x4', 'ConvertSVecI32x4ToVecF32x4', @@ -1717,6 +1721,12 @@ function wrapModule(module, self = {}) { 'avgr_u'(left, right) { return Module['_BinaryenBinary'](module, Module['AvgrUVecI16x8'], left, right); }, + 'extadd_pairwise_i8x16_s'(value) { + return Module['_BinaryenUnary'](module, Module['ExtAddPairwiseSVecI8x16ToI16x8'], value); + }, + 'extadd_pairwise_i8x16_u'(value) { + return Module['_BinaryenUnary'](module, Module['ExtAddPairwiseUVecI8x16ToI16x8'], value); + }, 'narrow_i32x4_s'(left, right) { return Module['_BinaryenBinary'](module, Module['NarrowSVecI32x4ToVecI16x8'], left, right); }, @@ -1822,6 +1832,12 @@ function wrapModule(module, self = {}) { 'dot_i16x8_s'(left, right) { return Module['_BinaryenBinary'](module, Module['DotSVecI16x8ToVecI32x4'], left, right); }, + 'extadd_pairwise_i16x8_s'(value) { + return Module['_BinaryenUnary'](module, Module['ExtAddPairwiseSVecI16x8ToI32x4'], value); + }, + 'extadd_pairwise_i16x8_u'(value) { + return Module['_BinaryenUnary'](module, Module['ExtAddPairwiseUVecI16x8ToI32x4'], value); + }, 'trunc_sat_f32x4_s'(value) { return Module['_BinaryenUnary'](module, Module['TruncSatSVecF32x4ToVecI32x4'], value); }, |