summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/binaryen-c.cpp13
-rw-r--r--src/binaryen-c.h15
-rw-r--r--src/js/binaryen.js-post.js52
3 files changed, 78 insertions, 2 deletions
diff --git a/src/binaryen-c.cpp b/src/binaryen-c.cpp
index 267bd9cc3..d348a4d5d 100644
--- a/src/binaryen-c.cpp
+++ b/src/binaryen-c.cpp
@@ -571,6 +571,11 @@ BinaryenOp BinaryenMinUVecI16x8(void) { return MinUVecI16x8; }
BinaryenOp BinaryenMaxSVecI16x8(void) { return MaxSVecI16x8; }
BinaryenOp BinaryenMaxUVecI16x8(void) { return MaxUVecI16x8; }
BinaryenOp BinaryenAvgrUVecI16x8(void) { return AvgrUVecI16x8; }
+BinaryenOp BinaryenQ15MulrSatSVecI16x8(void) { return Q15MulrSatSVecI16x8; }
+BinaryenOp BinaryenExtMulLowSVecI16x8(void) { return ExtMulLowSVecI16x8; }
+BinaryenOp BinaryenExtMulHighSVecI16x8(void) { return ExtMulHighSVecI16x8; }
+BinaryenOp BinaryenExtMulLowUVecI16x8(void) { return ExtMulLowUVecI16x8; }
+BinaryenOp BinaryenExtMulHighUVecI16x8(void) { return ExtMulHighUVecI16x8; }
BinaryenOp BinaryenAbsVecI32x4(void) { return AbsVecI32x4; }
BinaryenOp BinaryenNegVecI32x4(void) { return NegVecI32x4; }
BinaryenOp BinaryenAllTrueVecI32x4(void) { return AllTrueVecI32x4; }
@@ -588,6 +593,10 @@ BinaryenOp BinaryenMaxUVecI32x4(void) { return MaxUVecI32x4; }
BinaryenOp BinaryenDotSVecI16x8ToVecI32x4(void) {
return DotSVecI16x8ToVecI32x4;
}
+BinaryenOp BinaryenExtMulLowSVecI32x4(void) { return ExtMulLowSVecI32x4; }
+BinaryenOp BinaryenExtMulHighSVecI32x4(void) { return ExtMulHighSVecI32x4; }
+BinaryenOp BinaryenExtMulLowUVecI32x4(void) { return ExtMulLowUVecI32x4; }
+BinaryenOp BinaryenExtMulHighUVecI32x4(void) { return ExtMulHighUVecI32x4; }
BinaryenOp BinaryenAbsVecI64x2(void) { return AbsVecI64x2; }
BinaryenOp BinaryenNegVecI64x2(void) { return NegVecI64x2; }
BinaryenOp BinaryenAllTrueVecI64x2(void) { return AllTrueVecI64x2; }
@@ -598,6 +607,10 @@ BinaryenOp BinaryenShrUVecI64x2(void) { return ShrUVecI64x2; }
BinaryenOp BinaryenAddVecI64x2(void) { return AddVecI64x2; }
BinaryenOp BinaryenSubVecI64x2(void) { return SubVecI64x2; }
BinaryenOp BinaryenMulVecI64x2(void) { return MulVecI64x2; }
+BinaryenOp BinaryenExtMulLowSVecI64x2(void) { return ExtMulLowSVecI64x2; }
+BinaryenOp BinaryenExtMulHighSVecI64x2(void) { return ExtMulHighSVecI64x2; }
+BinaryenOp BinaryenExtMulLowUVecI64x2(void) { return ExtMulLowUVecI64x2; }
+BinaryenOp BinaryenExtMulHighUVecI64x2(void) { return ExtMulHighUVecI64x2; }
BinaryenOp BinaryenAbsVecF32x4(void) { return AbsVecF32x4; }
BinaryenOp BinaryenNegVecF32x4(void) { return NegVecF32x4; }
BinaryenOp BinaryenSqrtVecF32x4(void) { return SqrtVecF32x4; }
diff --git a/src/binaryen-c.h b/src/binaryen-c.h
index ccabe8bb5..217ed96db 100644
--- a/src/binaryen-c.h
+++ b/src/binaryen-c.h
@@ -472,8 +472,11 @@ BINARYEN_API BinaryenOp BinaryenMinUVecI16x8(void);
BINARYEN_API BinaryenOp BinaryenMaxSVecI16x8(void);
BINARYEN_API BinaryenOp BinaryenMaxUVecI16x8(void);
BINARYEN_API BinaryenOp BinaryenAvgrUVecI16x8(void);
-// TODO: Add i16x8.q15mulr_sat_s to C and JS APIs once merged to the proposal
-// TODO: Add extending multiplications to APIs once they are merged as well
+BINARYEN_API BinaryenOp BinaryenQ15MulrSatSVecI16x8(void);
+BINARYEN_API BinaryenOp BinaryenExtMulLowSVecI16x8(void);
+BINARYEN_API BinaryenOp BinaryenExtMulHighSVecI16x8(void);
+BINARYEN_API BinaryenOp BinaryenExtMulLowUVecI16x8(void);
+BINARYEN_API BinaryenOp BinaryenExtMulHighUVecI16x8(void);
BINARYEN_API BinaryenOp BinaryenAbsVecI32x4(void);
BINARYEN_API BinaryenOp BinaryenNegVecI32x4(void);
BINARYEN_API BinaryenOp BinaryenAllTrueVecI32x4(void);
@@ -489,6 +492,10 @@ BINARYEN_API BinaryenOp BinaryenMinUVecI32x4(void);
BINARYEN_API BinaryenOp BinaryenMaxSVecI32x4(void);
BINARYEN_API BinaryenOp BinaryenMaxUVecI32x4(void);
BINARYEN_API BinaryenOp BinaryenDotSVecI16x8ToVecI32x4(void);
+BINARYEN_API BinaryenOp BinaryenExtMulLowSVecI32x4(void);
+BINARYEN_API BinaryenOp BinaryenExtMulHighSVecI32x4(void);
+BINARYEN_API BinaryenOp BinaryenExtMulLowUVecI32x4(void);
+BINARYEN_API BinaryenOp BinaryenExtMulHighUVecI32x4(void);
BINARYEN_API BinaryenOp BinaryenAbsVecI64x2(void);
BINARYEN_API BinaryenOp BinaryenNegVecI64x2(void);
BINARYEN_API BinaryenOp BinaryenAllTrueVecI64x2(void);
@@ -499,6 +506,10 @@ BINARYEN_API BinaryenOp BinaryenShrUVecI64x2(void);
BINARYEN_API BinaryenOp BinaryenAddVecI64x2(void);
BINARYEN_API BinaryenOp BinaryenSubVecI64x2(void);
BINARYEN_API BinaryenOp BinaryenMulVecI64x2(void);
+BINARYEN_API BinaryenOp BinaryenExtMulLowSVecI64x2(void);
+BINARYEN_API BinaryenOp BinaryenExtMulHighSVecI64x2(void);
+BINARYEN_API BinaryenOp BinaryenExtMulLowUVecI64x2(void);
+BINARYEN_API BinaryenOp BinaryenExtMulHighUVecI64x2(void);
BINARYEN_API BinaryenOp BinaryenAbsVecF32x4(void);
BINARYEN_API BinaryenOp BinaryenNegVecF32x4(void);
BINARYEN_API BinaryenOp BinaryenSqrtVecF32x4(void);
diff --git a/src/js/binaryen.js-post.js b/src/js/binaryen.js-post.js
index 7d13395a1..907068059 100644
--- a/src/js/binaryen.js-post.js
+++ b/src/js/binaryen.js-post.js
@@ -404,7 +404,16 @@ function initializeConstants() {
'MaxSVecI16x8',
'MaxUVecI16x8',
'AvgrUVecI16x8',
+ 'Q15MulrSatSVecI16x8',
+ 'ExtMulLowSVecI16x8',
+ 'ExtMulHighSVecI16x8',
+ 'ExtMulLowUVecI16x8',
+ 'ExtMulHighUVecI16x8',
'DotSVecI16x8ToVecI32x4',
+ 'ExtMulLowSVecI32x4',
+ 'ExtMulHighSVecI32x4',
+ 'ExtMulLowUVecI32x4',
+ 'ExtMulHighUVecI32x4',
'AbsVecI32x4',
'NegVecI32x4',
'AllTrueVecI32x4',
@@ -429,6 +438,10 @@ function initializeConstants() {
'AddVecI64x2',
'SubVecI64x2',
'MulVecI64x2',
+ 'ExtMulLowSVecI64x2',
+ 'ExtMulHighSVecI64x2',
+ 'ExtMulLowUVecI64x2',
+ 'ExtMulHighUVecI64x2',
'AbsVecF32x4',
'NegVecF32x4',
'SqrtVecF32x4',
@@ -1727,6 +1740,21 @@ function wrapModule(module, self = {}) {
'avgr_u'(left, right) {
return Module['_BinaryenBinary'](module, Module['AvgrUVecI16x8'], left, right);
},
+ 'q15mulr_sat_s'(left, right) {
+ return Module['_BinaryenBinary'](module, Module['Q15MulrSatSVecI16x8'], left, right);
+ },
+ 'extmul_low_i8x16_s'(left, right) {
+ return Module['_BinaryenBinary'](module, Module['ExtMulLowSVecI16x8'], left, right);
+ },
+ 'extmul_high_i8x16_s'(left, right) {
+ return Module['_BinaryenBinary'](module, Module['ExtMulHighSVecI16x8'], left, right);
+ },
+ 'extmul_low_i8x16_u'(left, right) {
+ return Module['_BinaryenBinary'](module, Module['ExtMulLowUVecI16x8'], left, right);
+ },
+ 'extmul_high_i8x16_u'(left, right) {
+ return Module['_BinaryenBinary'](module, Module['ExtMulHighUVecI16x8'], left, right);
+ },
'extadd_pairwise_i8x16_s'(value) {
return Module['_BinaryenUnary'](module, Module['ExtAddPairwiseSVecI8x16ToI16x8'], value);
},
@@ -1838,6 +1866,18 @@ function wrapModule(module, self = {}) {
'dot_i16x8_s'(left, right) {
return Module['_BinaryenBinary'](module, Module['DotSVecI16x8ToVecI32x4'], left, right);
},
+ 'extmul_low_i16x8_s'(left, right) {
+ return Module['_BinaryenBinary'](module, Module['ExtMulLowSVecI32x4'], left, right);
+ },
+ 'extmul_high_i16x8_s'(left, right) {
+ return Module['_BinaryenBinary'](module, Module['ExtMulHighSVecI32x4'], left, right);
+ },
+ 'extmul_low_i16x8_u'(left, right) {
+ return Module['_BinaryenBinary'](module, Module['ExtMulLowUVecI32x4'], left, right);
+ },
+ 'extmul_high_i16x8_u'(left, right) {
+ return Module['_BinaryenBinary'](module, Module['ExtMulHighUVecI32x4'], left, right);
+ },
'extadd_pairwise_i16x8_s'(value) {
return Module['_BinaryenUnary'](module, Module['ExtAddPairwiseSVecI16x8ToI32x4'], value);
},
@@ -1928,6 +1968,18 @@ function wrapModule(module, self = {}) {
'mul'(left, right) {
return Module['_BinaryenBinary'](module, Module['MulVecI64x2'], left, right);
},
+ 'extmul_low_i32x4_s'(left, right) {
+ return Module['_BinaryenBinary'](module, Module['ExtMulLowSVecI64x2'], left, right);
+ },
+ 'extmul_high_i32x4_s'(left, right) {
+ return Module['_BinaryenBinary'](module, Module['ExtMulHighSVecI64x2'], left, right);
+ },
+ 'extmul_low_i32x4_u'(left, right) {
+ return Module['_BinaryenBinary'](module, Module['ExtMulLowUVecI64x2'], left, right);
+ },
+ 'extmul_high_i32x4_u'(left, right) {
+ return Module['_BinaryenBinary'](module, Module['ExtMulHighUVecI64x2'], left, right);
+ },
'extend_low_i32x4_s'(value) {
return Module['_BinaryenUnary'](module, Module['ExtendLowSVecI32x4ToVecI64x2'], value);
},