summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Wirtz <dcode@dcode.io>2021-04-07 23:04:20 +0200
committerGitHub <noreply@github.com>2021-04-07 23:04:20 +0200
commit2f2d5a80197b837aea928a0a604a13cc1c74219b (patch)
tree7f2edb11c605b80f7b093f984b0fe9d7d78e2c7d
parentb3484a7a44de4d46b0fec598074ca3f8b33a293c (diff)
downloadbinaryen-2f2d5a80197b837aea928a0a604a13cc1c74219b.tar.gz
binaryen-2f2d5a80197b837aea928a0a604a13cc1c74219b.tar.bz2
binaryen-2f2d5a80197b837aea928a0a604a13cc1c74219b.zip
Add various SIMD instructions to C/JS API (#3777)
Adds C/JS APIs for the SIMD instructions * PopcntVecI8x16 * AbsVecI64x2 * AllTrueVecI64x2 * BitmaskVecI64x2 * EqVecI64x2 * NeVecI64x2 * LtSVecI64x2 * GtSVecI64x2 * LeSVecI64x2 * GeSVecI64x2
-rw-r--r--src/binaryen-c.cpp10
-rw-r--r--src/binaryen-c.h11
-rw-r--r--src/js/binaryen.js-post.js40
-rw-r--r--test/binaryen.js/kitchen-sink.js10
-rw-r--r--test/binaryen.js/kitchen-sink.js.txt112
-rw-r--r--test/example/c-api-kitchen-sink.c10
-rw-r--r--test/example/c-api-kitchen-sink.txt56
7 files changed, 248 insertions, 1 deletions
diff --git a/src/binaryen-c.cpp b/src/binaryen-c.cpp
index b45f20857..00a907ab4 100644
--- a/src/binaryen-c.cpp
+++ b/src/binaryen-c.cpp
@@ -508,6 +508,12 @@ BinaryenOp BinaryenLeSVecI32x4(void) { return LeSVecI32x4; }
BinaryenOp BinaryenLeUVecI32x4(void) { return LeUVecI32x4; }
BinaryenOp BinaryenGeSVecI32x4(void) { return GeSVecI32x4; }
BinaryenOp BinaryenGeUVecI32x4(void) { return GeUVecI32x4; }
+BinaryenOp BinaryenEqVecI64x2(void) { return EqVecI64x2; }
+BinaryenOp BinaryenNeVecI64x2(void) { return NeVecI64x2; }
+BinaryenOp BinaryenLtSVecI64x2(void) { return LtSVecI64x2; }
+BinaryenOp BinaryenGtSVecI64x2(void) { return GtSVecI64x2; }
+BinaryenOp BinaryenLeSVecI64x2(void) { return LeSVecI64x2; }
+BinaryenOp BinaryenGeSVecI64x2(void) { return GeSVecI64x2; }
BinaryenOp BinaryenEqVecF32x4(void) { return EqVecF32x4; }
BinaryenOp BinaryenNeVecF32x4(void) { return NeVecF32x4; }
BinaryenOp BinaryenLtVecF32x4(void) { return LtVecF32x4; }
@@ -531,6 +537,7 @@ BinaryenOp BinaryenAbsVecI8x16(void) { return AbsVecI8x16; }
BinaryenOp BinaryenNegVecI8x16(void) { return NegVecI8x16; }
BinaryenOp BinaryenAllTrueVecI8x16(void) { return AllTrueVecI8x16; }
BinaryenOp BinaryenBitmaskVecI8x16(void) { return BitmaskVecI8x16; }
+BinaryenOp BinaryenPopcntVecI8x16(void) { return PopcntVecI8x16; }
BinaryenOp BinaryenShlVecI8x16(void) { return ShlVecI8x16; }
BinaryenOp BinaryenShrSVecI8x16(void) { return ShrSVecI8x16; }
BinaryenOp BinaryenShrUVecI8x16(void) { return ShrUVecI8x16; }
@@ -581,7 +588,10 @@ BinaryenOp BinaryenMaxUVecI32x4(void) { return MaxUVecI32x4; }
BinaryenOp BinaryenDotSVecI16x8ToVecI32x4(void) {
return DotSVecI16x8ToVecI32x4;
}
+BinaryenOp BinaryenAbsVecI64x2(void) { return AbsVecI64x2; }
BinaryenOp BinaryenNegVecI64x2(void) { return NegVecI64x2; }
+BinaryenOp BinaryenAllTrueVecI64x2(void) { return AllTrueVecI64x2; }
+BinaryenOp BinaryenBitmaskVecI64x2(void) { return BitmaskVecI64x2; }
BinaryenOp BinaryenShlVecI64x2(void) { return ShlVecI64x2; }
BinaryenOp BinaryenShrSVecI64x2(void) { return ShrSVecI64x2; }
BinaryenOp BinaryenShrUVecI64x2(void) { return ShrUVecI64x2; }
diff --git a/src/binaryen-c.h b/src/binaryen-c.h
index 686fb5262..33d2438e1 100644
--- a/src/binaryen-c.h
+++ b/src/binaryen-c.h
@@ -409,6 +409,12 @@ BINARYEN_API BinaryenOp BinaryenLeSVecI32x4(void);
BINARYEN_API BinaryenOp BinaryenLeUVecI32x4(void);
BINARYEN_API BinaryenOp BinaryenGeSVecI32x4(void);
BINARYEN_API BinaryenOp BinaryenGeUVecI32x4(void);
+BINARYEN_API BinaryenOp BinaryenEqVecI64x2(void);
+BINARYEN_API BinaryenOp BinaryenNeVecI64x2(void);
+BINARYEN_API BinaryenOp BinaryenLtSVecI64x2(void);
+BINARYEN_API BinaryenOp BinaryenGtSVecI64x2(void);
+BINARYEN_API BinaryenOp BinaryenLeSVecI64x2(void);
+BINARYEN_API BinaryenOp BinaryenGeSVecI64x2(void);
BINARYEN_API BinaryenOp BinaryenEqVecF32x4(void);
BINARYEN_API BinaryenOp BinaryenNeVecF32x4(void);
BINARYEN_API BinaryenOp BinaryenLtVecF32x4(void);
@@ -428,7 +434,7 @@ BINARYEN_API BinaryenOp BinaryenXorVec128(void);
BINARYEN_API BinaryenOp BinaryenAndNotVec128(void);
BINARYEN_API BinaryenOp BinaryenBitselectVec128(void);
BINARYEN_API BinaryenOp BinaryenAnyTrueVec128(void);
-// TODO: Add i8x16.popcnt to C and JS APIs once merged to the proposal
+BINARYEN_API BinaryenOp BinaryenPopcntVecI8x16(void);
BINARYEN_API BinaryenOp BinaryenAbsVecI8x16(void);
BINARYEN_API BinaryenOp BinaryenNegVecI8x16(void);
BINARYEN_API BinaryenOp BinaryenAllTrueVecI8x16(void);
@@ -483,7 +489,10 @@ BINARYEN_API BinaryenOp BinaryenMinUVecI32x4(void);
BINARYEN_API BinaryenOp BinaryenMaxSVecI32x4(void);
BINARYEN_API BinaryenOp BinaryenMaxUVecI32x4(void);
BINARYEN_API BinaryenOp BinaryenDotSVecI16x8ToVecI32x4(void);
+BINARYEN_API BinaryenOp BinaryenAbsVecI64x2(void);
BINARYEN_API BinaryenOp BinaryenNegVecI64x2(void);
+BINARYEN_API BinaryenOp BinaryenAllTrueVecI64x2(void);
+BINARYEN_API BinaryenOp BinaryenBitmaskVecI64x2(void);
BINARYEN_API BinaryenOp BinaryenShlVecI64x2(void);
BINARYEN_API BinaryenOp BinaryenShrSVecI64x2(void);
BINARYEN_API BinaryenOp BinaryenShrUVecI64x2(void);
diff --git a/src/js/binaryen.js-post.js b/src/js/binaryen.js-post.js
index 4c8a8c91e..f5ab04642 100644
--- a/src/js/binaryen.js-post.js
+++ b/src/js/binaryen.js-post.js
@@ -341,6 +341,12 @@ function initializeConstants() {
'LeUVecI32x4',
'GeSVecI32x4',
'GeUVecI32x4',
+ 'EqVecI64x2',
+ 'NeVecI64x2',
+ 'LtSVecI64x2',
+ 'GtSVecI64x2',
+ 'LeSVecI64x2',
+ 'GeSVecI64x2',
'EqVecF32x4',
'NeVecF32x4',
'LtVecF32x4',
@@ -360,6 +366,7 @@ function initializeConstants() {
'AndNotVec128',
'BitselectVec128',
'AnyTrueVec128',
+ 'PopcntVecI8x16',
'AbsVecI8x16',
'NegVecI8x16',
'AllTrueVecI8x16',
@@ -412,7 +419,10 @@ function initializeConstants() {
'MinUVecI32x4',
'MaxSVecI32x4',
'MaxUVecI32x4',
+ 'AbsVecI64x2',
'NegVecI64x2',
+ 'AllTrueVecI64x2',
+ 'BitmaskVecI64x2',
'ShlVecI64x2',
'ShrSVecI64x2',
'ShrUVecI64x2',
@@ -1550,6 +1560,9 @@ function wrapModule(module, self = {}) {
'bitmask'(value) {
return Module['_BinaryenUnary'](module, Module['BitmaskVecI8x16'], value);
},
+ 'popcnt'(value) {
+ return Module['_BinaryenUnary'](module, Module['PopcntVecI8x16'], value);
+ },
'shl'(vec, shift) {
return Module['_BinaryenSIMDShift'](module, Module['ShlVecI8x16'], vec, shift);
},
@@ -1835,9 +1848,36 @@ function wrapModule(module, self = {}) {
'replace_lane'(vec, index, value) {
return Module['_BinaryenSIMDReplace'](module, Module['ReplaceLaneVecI64x2'], vec, index, value);
},
+ 'eq'(left, right) {
+ return Module['_BinaryenBinary'](module, Module['EqVecI64x2'], left, right);
+ },
+ 'ne'(left, right) {
+ return Module['_BinaryenBinary'](module, Module['NeVecI64x2'], left, right);
+ },
+ 'lt_s'(left, right) {
+ return Module['_BinaryenBinary'](module, Module['LtSVecI64x2'], left, right);
+ },
+ 'gt_s'(left, right) {
+ return Module['_BinaryenBinary'](module, Module['GtSVecI64x2'], left, right);
+ },
+ 'le_s'(left, right) {
+ return Module['_BinaryenBinary'](module, Module['LeSVecI64x2'], left, right);
+ },
+ 'ge_s'(left, right) {
+ return Module['_BinaryenBinary'](module, Module['GeSVecI64x2'], left, right);
+ },
+ 'abs'(value) {
+ return Module['_BinaryenUnary'](module, Module['AbsVecI64x2'], value);
+ },
'neg'(value) {
return Module['_BinaryenUnary'](module, Module['NegVecI64x2'], value);
},
+ 'all_true'(value) {
+ return Module['_BinaryenUnary'](module, Module['AllTrueVecI64x2'], value);
+ },
+ 'bitmask'(value) {
+ return Module['_BinaryenUnary'](module, Module['BitmaskVecI64x2'], value);
+ },
'shl'(vec, shift) {
return Module['_BinaryenSIMDShift'](module, Module['ShlVecI64x2'], vec, shift);
},
diff --git a/test/binaryen.js/kitchen-sink.js b/test/binaryen.js/kitchen-sink.js
index cb2cd32ff..5e70b0072 100644
--- a/test/binaryen.js/kitchen-sink.js
+++ b/test/binaryen.js/kitchen-sink.js
@@ -266,6 +266,7 @@ function test_core() {
module.f64x2.splat(module.f64.const(42.0)),
module.v128.not(module.v128.const(v128_bytes)),
module.v128.any_true(module.v128.const(v128_bytes)),
+ module.i8x16.popcnt(module.v128.const(v128_bytes)),
module.i8x16.abs(module.v128.const(v128_bytes)),
module.i8x16.neg(module.v128.const(v128_bytes)),
module.i8x16.all_true(module.v128.const(v128_bytes)),
@@ -278,7 +279,10 @@ function test_core() {
module.i32x4.neg(module.v128.const(v128_bytes)),
module.i32x4.all_true(module.v128.const(v128_bytes)),
module.i32x4.bitmask(module.v128.const(v128_bytes)),
+ module.i64x2.abs(module.v128.const(v128_bytes)),
module.i64x2.neg(module.v128.const(v128_bytes)),
+ module.i64x2.all_true(module.v128.const(v128_bytes)),
+ module.i64x2.bitmask(module.v128.const(v128_bytes)),
module.f32x4.abs(module.v128.const(v128_bytes)),
module.f32x4.neg(module.v128.const(v128_bytes)),
module.f32x4.sqrt(module.v128.const(v128_bytes)),
@@ -360,6 +364,12 @@ function test_core() {
module.i32x4.le_u(module.v128.const(v128_bytes), module.v128.const(v128_bytes)),
module.i32x4.ge_s(module.v128.const(v128_bytes), module.v128.const(v128_bytes)),
module.i32x4.ge_u(module.v128.const(v128_bytes), module.v128.const(v128_bytes)),
+ module.i64x2.eq(module.v128.const(v128_bytes), module.v128.const(v128_bytes)),
+ module.i64x2.ne(module.v128.const(v128_bytes), module.v128.const(v128_bytes)),
+ module.i64x2.lt_s(module.v128.const(v128_bytes), module.v128.const(v128_bytes)),
+ module.i64x2.gt_s(module.v128.const(v128_bytes), module.v128.const(v128_bytes)),
+ module.i64x2.le_s(module.v128.const(v128_bytes), module.v128.const(v128_bytes)),
+ module.i64x2.ge_s(module.v128.const(v128_bytes), module.v128.const(v128_bytes)),
module.f32x4.eq(module.v128.const(v128_bytes), module.v128.const(v128_bytes)),
module.f32x4.ne(module.v128.const(v128_bytes), module.v128.const(v128_bytes)),
module.f32x4.lt(module.v128.const(v128_bytes), module.v128.const(v128_bytes)),
diff --git a/test/binaryen.js/kitchen-sink.js.txt b/test/binaryen.js/kitchen-sink.js.txt
index 9d97b6523..8d7ccdbca 100644
--- a/test/binaryen.js/kitchen-sink.js.txt
+++ b/test/binaryen.js/kitchen-sink.js.txt
@@ -407,6 +407,11 @@ getExpressionInfo(tuple[3])={"id":14,"type":5,"value":3.7}
)
)
(drop
+ (i8x16.popcnt
+ (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d)
+ )
+ )
+ (drop
(i8x16.abs
(v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d)
)
@@ -467,11 +472,26 @@ getExpressionInfo(tuple[3])={"id":14,"type":5,"value":3.7}
)
)
(drop
+ (i64x2.abs
+ (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d)
+ )
+ )
+ (drop
(i64x2.neg
(v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d)
)
)
(drop
+ (i64x2.all_true
+ (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d)
+ )
+ )
+ (drop
+ (i64x2.bitmask
+ (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d)
+ )
+ )
+ (drop
(f32x4.abs
(v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d)
)
@@ -934,6 +954,42 @@ getExpressionInfo(tuple[3])={"id":14,"type":5,"value":3.7}
)
)
(drop
+ (i64x2.eq
+ (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d)
+ (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d)
+ )
+ )
+ (drop
+ (i64x2.ne
+ (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d)
+ (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d)
+ )
+ )
+ (drop
+ (i64x2.lt_s
+ (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d)
+ (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d)
+ )
+ )
+ (drop
+ (i64x2.gt_s
+ (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d)
+ (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d)
+ )
+ )
+ (drop
+ (i64x2.le_s
+ (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d)
+ (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d)
+ )
+ )
+ (drop
+ (i64x2.ge_s
+ (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d)
+ (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d)
+ )
+ )
+ (drop
(f32x4.eq
(v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d)
(v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d)
@@ -2205,6 +2261,11 @@ getExpressionInfo(tuple[3])={"id":14,"type":5,"value":3.7}
)
)
(drop
+ (i8x16.popcnt
+ (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d)
+ )
+ )
+ (drop
(i8x16.abs
(v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d)
)
@@ -2265,11 +2326,26 @@ getExpressionInfo(tuple[3])={"id":14,"type":5,"value":3.7}
)
)
(drop
+ (i64x2.abs
+ (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d)
+ )
+ )
+ (drop
(i64x2.neg
(v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d)
)
)
(drop
+ (i64x2.all_true
+ (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d)
+ )
+ )
+ (drop
+ (i64x2.bitmask
+ (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d)
+ )
+ )
+ (drop
(f32x4.abs
(v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d)
)
@@ -2732,6 +2808,42 @@ getExpressionInfo(tuple[3])={"id":14,"type":5,"value":3.7}
)
)
(drop
+ (i64x2.eq
+ (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d)
+ (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d)
+ )
+ )
+ (drop
+ (i64x2.ne
+ (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d)
+ (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d)
+ )
+ )
+ (drop
+ (i64x2.lt_s
+ (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d)
+ (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d)
+ )
+ )
+ (drop
+ (i64x2.gt_s
+ (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d)
+ (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d)
+ )
+ )
+ (drop
+ (i64x2.le_s
+ (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d)
+ (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d)
+ )
+ )
+ (drop
+ (i64x2.ge_s
+ (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d)
+ (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d)
+ )
+ )
+ (drop
(f32x4.eq
(v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d)
(v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d)
diff --git a/test/example/c-api-kitchen-sink.c b/test/example/c-api-kitchen-sink.c
index e4e8c37b0..abc5e1489 100644
--- a/test/example/c-api-kitchen-sink.c
+++ b/test/example/c-api-kitchen-sink.c
@@ -404,6 +404,7 @@ void test_core() {
makeUnary(module, BinaryenSplatVecF64x2(), f64),
makeUnary(module, BinaryenNotVec128(), v128),
makeUnary(module, BinaryenAnyTrueVec128(), v128),
+ makeUnary(module, BinaryenPopcntVecI8x16(), v128),
makeUnary(module, BinaryenAbsVecI8x16(), v128),
makeUnary(module, BinaryenNegVecI8x16(), v128),
makeUnary(module, BinaryenAllTrueVecI8x16(), v128),
@@ -416,7 +417,10 @@ void test_core() {
makeUnary(module, BinaryenNegVecI32x4(), v128),
makeUnary(module, BinaryenAllTrueVecI32x4(), v128),
makeUnary(module, BinaryenBitmaskVecI32x4(), v128),
+ makeUnary(module, BinaryenAbsVecI64x2(), v128),
makeUnary(module, BinaryenNegVecI64x2(), v128),
+ makeUnary(module, BinaryenAllTrueVecI64x2(), v128),
+ makeUnary(module, BinaryenBitmaskVecI64x2(), v128),
makeUnary(module, BinaryenAbsVecF32x4(), v128),
makeUnary(module, BinaryenNegVecF32x4(), v128),
makeUnary(module, BinaryenSqrtVecF32x4(), v128),
@@ -498,6 +502,12 @@ void test_core() {
makeBinary(module, BinaryenLeUVecI32x4(), v128),
makeBinary(module, BinaryenGeSVecI32x4(), v128),
makeBinary(module, BinaryenGeUVecI32x4(), v128),
+ makeBinary(module, BinaryenEqVecI64x2(), v128),
+ makeBinary(module, BinaryenNeVecI64x2(), v128),
+ makeBinary(module, BinaryenLtSVecI64x2(), v128),
+ makeBinary(module, BinaryenGtSVecI64x2(), v128),
+ makeBinary(module, BinaryenLeSVecI64x2(), v128),
+ makeBinary(module, BinaryenGeSVecI64x2(), v128),
makeBinary(module, BinaryenEqVecF32x4(), v128),
makeBinary(module, BinaryenNeVecF32x4(), v128),
makeBinary(module, BinaryenLtVecF32x4(), v128),
diff --git a/test/example/c-api-kitchen-sink.txt b/test/example/c-api-kitchen-sink.txt
index e67850376..8bf0c770a 100644
--- a/test/example/c-api-kitchen-sink.txt
+++ b/test/example/c-api-kitchen-sink.txt
@@ -317,6 +317,11 @@ BinaryenFeatureAll: 8191
)
)
(drop
+ (i8x16.popcnt
+ (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d)
+ )
+ )
+ (drop
(i8x16.abs
(v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d)
)
@@ -377,11 +382,26 @@ BinaryenFeatureAll: 8191
)
)
(drop
+ (i64x2.abs
+ (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d)
+ )
+ )
+ (drop
(i64x2.neg
(v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d)
)
)
(drop
+ (i64x2.all_true
+ (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d)
+ )
+ )
+ (drop
+ (i64x2.bitmask
+ (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d)
+ )
+ )
+ (drop
(f32x4.abs
(v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d)
)
@@ -844,6 +864,42 @@ BinaryenFeatureAll: 8191
)
)
(drop
+ (i64x2.eq
+ (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d)
+ (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d)
+ )
+ )
+ (drop
+ (i64x2.ne
+ (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d)
+ (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d)
+ )
+ )
+ (drop
+ (i64x2.lt_s
+ (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d)
+ (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d)
+ )
+ )
+ (drop
+ (i64x2.gt_s
+ (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d)
+ (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d)
+ )
+ )
+ (drop
+ (i64x2.le_s
+ (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d)
+ (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d)
+ )
+ )
+ (drop
+ (i64x2.ge_s
+ (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d)
+ (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d)
+ )
+ )
+ (drop
(f32x4.eq
(v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d)
(v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d)