From 9be8addc0a9e598229614dd3926be98b3984ec92 Mon Sep 17 00:00:00 2001 From: dcodeIO Date: Tue, 10 Sep 2019 16:26:48 +0200 Subject: [PATCH 1/2] Fix bitselect operation in C/JS APIs --- .gitignore | 3 +++ build-js.sh | 3 +-- src/binaryen-c.cpp | 1 + src/binaryen-c.h | 1 + src/js/binaryen.js-post.js | 1 + 5 files changed, 7 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 6397ab10812..e8671620b08 100644 --- a/.gitignore +++ b/.gitignore @@ -28,6 +28,9 @@ CMakeFiles /*.VC.opendb /Win32/ +# files commonly related to building out-of-tree +/build/ + # macOS .DS_Store diff --git a/build-js.sh b/build-js.sh index 14dfff08f5e..48b6970ecbe 100755 --- a/build-js.sh +++ b/build-js.sh @@ -524,8 +524,6 @@ export_function "_BinaryenNegVecF32x4" export_function "_BinaryenSqrtVecF32x4" export_function "_BinaryenQFMAVecF32x4" export_function "_BinaryenQFMSVecF32x4" -export_function "_BinaryenQFMAVecF32x4" -export_function "_BinaryenQFMSVecF32x4" export_function "_BinaryenAddVecF32x4" export_function "_BinaryenSubVecF32x4" export_function "_BinaryenMulVecF32x4" @@ -551,6 +549,7 @@ export_function "_BinaryenConvertSVecI32x4ToVecF32x4" export_function "_BinaryenConvertUVecI32x4ToVecF32x4" export_function "_BinaryenConvertSVecI64x2ToVecF64x2" export_function "_BinaryenConvertUVecI64x2ToVecF64x2" +export_function "_BinaryenBitselect" # Expression creation export_function "_BinaryenBlock" diff --git a/src/binaryen-c.cpp b/src/binaryen-c.cpp index b991f39fa0d..becdd2632ce 100644 --- a/src/binaryen-c.cpp +++ b/src/binaryen-c.cpp @@ -880,6 +880,7 @@ BinaryenOp BinaryenConvertSVecI64x2ToVecF64x2(void) { BinaryenOp BinaryenConvertUVecI64x2ToVecF64x2(void) { return ConvertUVecI64x2ToVecF64x2; } +BinaryenOp BinaryenBitselect(void) { return Bitselect; } BinaryenExpressionRef BinaryenBlock(BinaryenModuleRef module, const char* name, diff --git a/src/binaryen-c.h b/src/binaryen-c.h index 396ee2e8dc5..5b1b099e6d7 100644 --- a/src/binaryen-c.h +++ b/src/binaryen-c.h @@ -513,6 +513,7 @@ BinaryenOp BinaryenConvertSVecI32x4ToVecF32x4(void); BinaryenOp BinaryenConvertUVecI32x4ToVecF32x4(void); BinaryenOp BinaryenConvertSVecI64x2ToVecF64x2(void); BinaryenOp BinaryenConvertUVecI64x2ToVecF64x2(void); +BinaryenOp BinaryenBitselect(void); typedef void* BinaryenExpressionRef; diff --git a/src/js/binaryen.js-post.js b/src/js/binaryen.js-post.js index bb5e4b21e7d..480cae20184 100644 --- a/src/js/binaryen.js-post.js +++ b/src/js/binaryen.js-post.js @@ -393,6 +393,7 @@ Module['ConvertSVecI32x4ToVecF32x4'] = Module['_BinaryenConvertSVecI32x4ToVecF32 Module['ConvertUVecI32x4ToVecF32x4'] = Module['_BinaryenConvertUVecI32x4ToVecF32x4'](); Module['ConvertSVecI64x2ToVecF64x2'] = Module['_BinaryenConvertSVecI64x2ToVecF64x2'](); Module['ConvertUVecI64x2ToVecF64x2'] = Module['_BinaryenConvertUVecI64x2ToVecF64x2'](); +Module['Bitselect'] = Module['_BinaryenBitselect'](); // The size of a single literal in memory as used in Const creation, // which is a little different: we don't want users to need to make From 0ec15c92a79d0c66cb7a6d9a54d1c841866cf629 Mon Sep 17 00:00:00 2001 From: dcode Date: Wed, 11 Sep 2019 09:30:27 +0200 Subject: [PATCH 2/2] Pick up existing BitselectVec128 --- build-js.sh | 2 +- src/binaryen-c.cpp | 1 - src/binaryen-c.h | 2 +- src/js/binaryen.js-post.js | 4 ++-- 4 files changed, 4 insertions(+), 5 deletions(-) diff --git a/build-js.sh b/build-js.sh index 48b6970ecbe..18fd04208e8 100755 --- a/build-js.sh +++ b/build-js.sh @@ -476,6 +476,7 @@ export_function "_BinaryenNotVec128" export_function "_BinaryenAndVec128" export_function "_BinaryenOrVec128" export_function "_BinaryenXorVec128" +export_function "_BinaryenBitselectVec128" export_function "_BinaryenNegVecI8x16" export_function "_BinaryenAnyTrueVecI8x16" export_function "_BinaryenAllTrueVecI8x16" @@ -549,7 +550,6 @@ export_function "_BinaryenConvertSVecI32x4ToVecF32x4" export_function "_BinaryenConvertUVecI32x4ToVecF32x4" export_function "_BinaryenConvertSVecI64x2ToVecF64x2" export_function "_BinaryenConvertUVecI64x2ToVecF64x2" -export_function "_BinaryenBitselect" # Expression creation export_function "_BinaryenBlock" diff --git a/src/binaryen-c.cpp b/src/binaryen-c.cpp index becdd2632ce..b991f39fa0d 100644 --- a/src/binaryen-c.cpp +++ b/src/binaryen-c.cpp @@ -880,7 +880,6 @@ BinaryenOp BinaryenConvertSVecI64x2ToVecF64x2(void) { BinaryenOp BinaryenConvertUVecI64x2ToVecF64x2(void) { return ConvertUVecI64x2ToVecF64x2; } -BinaryenOp BinaryenBitselect(void) { return Bitselect; } BinaryenExpressionRef BinaryenBlock(BinaryenModuleRef module, const char* name, diff --git a/src/binaryen-c.h b/src/binaryen-c.h index 5b1b099e6d7..d306885b00a 100644 --- a/src/binaryen-c.h +++ b/src/binaryen-c.h @@ -440,6 +440,7 @@ BinaryenOp BinaryenNotVec128(void); BinaryenOp BinaryenAndVec128(void); BinaryenOp BinaryenOrVec128(void); BinaryenOp BinaryenXorVec128(void); +BinaryenOp BinaryenBitselectVec128(void); BinaryenOp BinaryenNegVecI8x16(void); BinaryenOp BinaryenAnyTrueVecI8x16(void); BinaryenOp BinaryenAllTrueVecI8x16(void); @@ -513,7 +514,6 @@ BinaryenOp BinaryenConvertSVecI32x4ToVecF32x4(void); BinaryenOp BinaryenConvertUVecI32x4ToVecF32x4(void); BinaryenOp BinaryenConvertSVecI64x2ToVecF64x2(void); BinaryenOp BinaryenConvertUVecI64x2ToVecF64x2(void); -BinaryenOp BinaryenBitselect(void); typedef void* BinaryenExpressionRef; diff --git a/src/js/binaryen.js-post.js b/src/js/binaryen.js-post.js index 480cae20184..328b0a27dab 100644 --- a/src/js/binaryen.js-post.js +++ b/src/js/binaryen.js-post.js @@ -320,6 +320,7 @@ Module['NotVec128'] = Module['_BinaryenNotVec128'](); Module['AndVec128'] = Module['_BinaryenAndVec128'](); Module['OrVec128'] = Module['_BinaryenOrVec128'](); Module['XorVec128'] = Module['_BinaryenXorVec128'](); +Module['BitselectVec128'] = Module['_BinaryenBitselectVec128'](); Module['NegVecI8x16'] = Module['_BinaryenNegVecI8x16'](); Module['AnyTrueVecI8x16'] = Module['_BinaryenAnyTrueVecI8x16'](); Module['AllTrueVecI8x16'] = Module['_BinaryenAllTrueVecI8x16'](); @@ -393,7 +394,6 @@ Module['ConvertSVecI32x4ToVecF32x4'] = Module['_BinaryenConvertSVecI32x4ToVecF32 Module['ConvertUVecI32x4ToVecF32x4'] = Module['_BinaryenConvertUVecI32x4ToVecF32x4'](); Module['ConvertSVecI64x2ToVecF64x2'] = Module['_BinaryenConvertSVecI64x2ToVecF64x2'](); Module['ConvertUVecI64x2ToVecF64x2'] = Module['_BinaryenConvertUVecI64x2ToVecF64x2'](); -Module['Bitselect'] = Module['_BinaryenBitselect'](); // The size of a single literal in memory as used in Const creation, // which is a little different: we don't want users to need to make @@ -1328,7 +1328,7 @@ function wrapModule(module, self) { return Module['_BinaryenUnary'](module, Module['XorVec128'], value); }, 'bitselect': function(left, right, cond) { - return Module['_BinaryenSIMDTernary'](module, Module['Bitselect'], left, right, cond); + return Module['_BinaryenSIMDTernary'](module, Module['BitselectVec128'], left, right, cond); }, 'pop': function() { return Module['_BinaryenPop'](module, Module['v128']);