summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xscripts/gen-s-parser.py6
-rw-r--r--src/binaryen-c.cpp2
-rw-r--r--src/binaryen-c.h3
-rw-r--r--src/gen-s-parser.inc43
-rw-r--r--src/ir/cost.h6
-rw-r--r--src/ir/features.h2
-rw-r--r--src/js/binaryen.js-post.js8
-rw-r--r--src/literal.h2
-rw-r--r--src/passes/Print.cpp18
-rw-r--r--src/tools/fuzzing.h4
-rw-r--r--src/wasm-binary.h7
-rw-r--r--src/wasm-interpreter.h12
-rw-r--r--src/wasm.h6
-rw-r--r--src/wasm/literal.cpp6
-rw-r--r--src/wasm/wasm-binary.cpp24
-rw-r--r--src/wasm/wasm-stack.cpp24
-rw-r--r--src/wasm/wasm-validator.cpp6
-rw-r--r--src/wasm/wasm.cpp6
-rw-r--r--test/binaryen.js/kitchen-sink.js2
-rw-r--r--test/binaryen.js/kitchen-sink.js.txt20
-rw-r--r--test/example/c-api-kitchen-sink.c2
-rw-r--r--test/example/c-api-kitchen-sink.txt10
-rw-r--r--test/simd.wast30
-rw-r--r--test/simd.wast.from-wast32
-rw-r--r--test/simd.wast.fromBinary32
-rw-r--r--test/simd.wast.fromBinary.noDebugInfo192
-rw-r--r--test/spec/simd.wast9
27 files changed, 270 insertions, 244 deletions
diff --git a/scripts/gen-s-parser.py b/scripts/gen-s-parser.py
index 545d48f9c..f780156ed 100755
--- a/scripts/gen-s-parser.py
+++ b/scripts/gen-s-parser.py
@@ -430,8 +430,6 @@ instructions = [
("i32x4.extmul_low_i16x8_u", "makeBinary(s, BinaryOp::ExtMulLowUVecI32x4)"),
("i32x4.extmul_high_i16x8_u", "makeBinary(s, BinaryOp::ExtMulHighUVecI32x4)"),
("i64x2.neg", "makeUnary(s, UnaryOp::NegVecI64x2)"),
- ("i64x2.any_true", "makeUnary(s, UnaryOp::AnyTrueVecI64x2)"),
- ("i64x2.all_true", "makeUnary(s, UnaryOp::AllTrueVecI64x2)"),
("i64x2.bitmask", "makeUnary(s, UnaryOp::BitmaskVecI64x2)"),
("i64x2.shl", "makeSIMDShift(s, SIMDShiftOp::ShlVecI64x2)"),
("i64x2.shr_s", "makeSIMDShift(s, SIMDShiftOp::ShrSVecI64x2)"),
@@ -514,6 +512,10 @@ instructions = [
("i64x2.widen_low_i32x4_u", "makeUnary(s, UnaryOp::WidenLowUVecI32x4ToVecI64x2)"),
("i64x2.widen_high_i32x4_u", "makeUnary(s, UnaryOp::WidenHighUVecI32x4ToVecI64x2)"),
("v8x16.swizzle", "makeBinary(s, BinaryOp::SwizzleVec8x16)"),
+ ("i16x8.extadd_pairwise_i8x16_s", "makeUnary(s, UnaryOp::ExtAddPairwiseSVecI8x16ToI16x8)"),
+ ("i16x8.extadd_pairwise_i8x16_u", "makeUnary(s, UnaryOp::ExtAddPairwiseUVecI8x16ToI16x8)"),
+ ("i32x4.extadd_pairwise_i16x8_s", "makeUnary(s, UnaryOp::ExtAddPairwiseSVecI16x8ToI32x4)"),
+ ("i32x4.extadd_pairwise_i16x8_u", "makeUnary(s, UnaryOp::ExtAddPairwiseUVecI16x8ToI32x4)"),
# reference types instructions
# TODO Add table instructions
("ref.null", "makeRefNull(s)"),
diff --git a/src/binaryen-c.cpp b/src/binaryen-c.cpp
index b6e14d694..59ca3aebc 100644
--- a/src/binaryen-c.cpp
+++ b/src/binaryen-c.cpp
@@ -580,8 +580,6 @@ BinaryenOp BinaryenDotSVecI16x8ToVecI32x4(void) {
return DotSVecI16x8ToVecI32x4;
}
BinaryenOp BinaryenNegVecI64x2(void) { return NegVecI64x2; }
-BinaryenOp BinaryenAnyTrueVecI64x2(void) { return AnyTrueVecI64x2; }
-BinaryenOp BinaryenAllTrueVecI64x2(void) { return AllTrueVecI64x2; }
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 33ada13b1..a32d9ff1c 100644
--- a/src/binaryen-c.h
+++ b/src/binaryen-c.h
@@ -486,8 +486,6 @@ BINARYEN_API BinaryenOp BinaryenMaxSVecI32x4(void);
BINARYEN_API BinaryenOp BinaryenMaxUVecI32x4(void);
BINARYEN_API BinaryenOp BinaryenDotSVecI16x8ToVecI32x4(void);
BINARYEN_API BinaryenOp BinaryenNegVecI64x2(void);
-BINARYEN_API BinaryenOp BinaryenAnyTrueVecI64x2(void);
-BINARYEN_API BinaryenOp BinaryenAllTrueVecI64x2(void);
BINARYEN_API BinaryenOp BinaryenShlVecI64x2(void);
BINARYEN_API BinaryenOp BinaryenShrSVecI64x2(void);
BINARYEN_API BinaryenOp BinaryenShrUVecI64x2(void);
@@ -528,6 +526,7 @@ 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 BinaryenTruncSatSVecF32x4ToVecI32x4(void);
BINARYEN_API BinaryenOp BinaryenTruncSatUVecF32x4ToVecI32x4(void);
BINARYEN_API BinaryenOp BinaryenTruncSatSVecF64x2ToVecI64x2(void);
diff --git a/src/gen-s-parser.inc b/src/gen-s-parser.inc
index d4e1afe38..c564f3974 100644
--- a/src/gen-s-parser.inc
+++ b/src/gen-s-parser.inc
@@ -4,8 +4,8 @@
#ifdef INSTRUCTION_PARSER
#undef INSTRUCTION_PARSER
-char op[28] = {'\0'};
-strncpy(op, s[0]->c_str(), 27);
+char op[30] = {'\0'};
+strncpy(op, s[0]->c_str(), 29);
switch (op[0]) {
case 'a': {
switch (op[1]) {
@@ -800,6 +800,17 @@ switch (op[0]) {
goto parse_error;
case 'x': {
switch (op[9]) {
+ case 'a': {
+ switch (op[28]) {
+ case 's':
+ if (strcmp(op, "i16x8.extadd_pairwise_i8x16_s") == 0) { return makeUnary(s, UnaryOp::ExtAddPairwiseSVecI8x16ToI16x8); }
+ goto parse_error;
+ case 'u':
+ if (strcmp(op, "i16x8.extadd_pairwise_i8x16_u") == 0) { return makeUnary(s, UnaryOp::ExtAddPairwiseUVecI8x16ToI16x8); }
+ goto parse_error;
+ default: goto parse_error;
+ }
+ }
case 'm': {
switch (op[13]) {
case 'h': {
@@ -1554,6 +1565,17 @@ switch (op[0]) {
goto parse_error;
case 'x': {
switch (op[9]) {
+ case 'a': {
+ switch (op[28]) {
+ case 's':
+ if (strcmp(op, "i32x4.extadd_pairwise_i16x8_s") == 0) { return makeUnary(s, UnaryOp::ExtAddPairwiseSVecI16x8ToI32x4); }
+ goto parse_error;
+ case 'u':
+ if (strcmp(op, "i32x4.extadd_pairwise_i16x8_u") == 0) { return makeUnary(s, UnaryOp::ExtAddPairwiseUVecI16x8ToI32x4); }
+ goto parse_error;
+ default: goto parse_error;
+ }
+ }
case 'm': {
switch (op[13]) {
case 'h': {
@@ -2298,20 +2320,9 @@ switch (op[0]) {
}
case 'x': {
switch (op[6]) {
- case 'a': {
- switch (op[7]) {
- case 'd':
- if (strcmp(op, "i64x2.add") == 0) { return makeBinary(s, BinaryOp::AddVecI64x2); }
- goto parse_error;
- case 'l':
- if (strcmp(op, "i64x2.all_true") == 0) { return makeUnary(s, UnaryOp::AllTrueVecI64x2); }
- goto parse_error;
- case 'n':
- if (strcmp(op, "i64x2.any_true") == 0) { return makeUnary(s, UnaryOp::AnyTrueVecI64x2); }
- goto parse_error;
- default: goto parse_error;
- }
- }
+ case 'a':
+ if (strcmp(op, "i64x2.add") == 0) { return makeBinary(s, BinaryOp::AddVecI64x2); }
+ goto parse_error;
case 'b':
if (strcmp(op, "i64x2.bitmask") == 0) { return makeUnary(s, UnaryOp::BitmaskVecI64x2); }
goto parse_error;
diff --git a/src/ir/cost.h b/src/ir/cost.h
index c218cbaab..ef0a2bde1 100644
--- a/src/ir/cost.h
+++ b/src/ir/cost.h
@@ -189,8 +189,6 @@ struct CostAnalyzer : public OverriddenVisitor<CostAnalyzer, Index> {
case AllTrueVecI32x4:
case BitmaskVecI32x4:
case NegVecI64x2:
- case AnyTrueVecI64x2:
- case AllTrueVecI64x2:
case BitmaskVecI64x2:
case AbsVecF32x4:
case NegVecF32x4:
@@ -206,6 +204,10 @@ struct CostAnalyzer : public OverriddenVisitor<CostAnalyzer, Index> {
case FloorVecF64x2:
case TruncVecF64x2:
case NearestVecF64x2:
+ case ExtAddPairwiseSVecI8x16ToI16x8:
+ case ExtAddPairwiseUVecI8x16ToI16x8:
+ case ExtAddPairwiseSVecI16x8ToI32x4:
+ case ExtAddPairwiseUVecI16x8ToI32x4:
case TruncSatSVecF32x4ToVecI32x4:
case TruncSatUVecF32x4ToVecI32x4:
case TruncSatSVecF64x2ToVecI64x2:
diff --git a/src/ir/features.h b/src/ir/features.h
index 6dff96398..aa87bd5bd 100644
--- a/src/ir/features.h
+++ b/src/ir/features.h
@@ -57,8 +57,6 @@ inline FeatureSet get(UnaryOp op) {
case AnyTrueVecI32x4:
case AllTrueVecI32x4:
case NegVecI64x2:
- case AnyTrueVecI64x2:
- case AllTrueVecI64x2:
case AbsVecF32x4:
case NegVecF32x4:
case SqrtVecF32x4:
diff --git a/src/js/binaryen.js-post.js b/src/js/binaryen.js-post.js
index 128e148e2..6cdf26e32 100644
--- a/src/js/binaryen.js-post.js
+++ b/src/js/binaryen.js-post.js
@@ -416,8 +416,6 @@ function initializeConstants() {
'MaxSVecI32x4',
'MaxUVecI32x4',
'NegVecI64x2',
- 'AnyTrueVecI64x2',
- 'AllTrueVecI64x2',
'ShlVecI64x2',
'ShrSVecI64x2',
'ShrUVecI64x2',
@@ -1828,12 +1826,6 @@ function wrapModule(module, self = {}) {
'neg'(value) {
return Module['_BinaryenUnary'](module, Module['NegVecI64x2'], value);
},
- 'any_true'(value) {
- return Module['_BinaryenUnary'](module, Module['AnyTrueVecI64x2'], value);
- },
- 'all_true'(value) {
- return Module['_BinaryenUnary'](module, Module['AllTrueVecI64x2'], value);
- },
'shl'(vec, shift) {
return Module['_BinaryenSIMDShift'](module, Module['ShlVecI64x2'], vec, shift);
},
diff --git a/src/literal.h b/src/literal.h
index bf8937533..5b590e07f 100644
--- a/src/literal.h
+++ b/src/literal.h
@@ -576,8 +576,6 @@ public:
Literal extMulLowUI32x4(const Literal& other) const;
Literal extMulHighUI32x4(const Literal& other) const;
Literal negI64x2() const;
- Literal anyTrueI64x2() const;
- Literal allTrueI64x2() const;
Literal shlI64x2(const Literal& other) const;
Literal shrSI64x2(const Literal& other) const;
Literal shrUI64x2(const Literal& other) const;
diff --git a/src/passes/Print.cpp b/src/passes/Print.cpp
index b921fb074..f9d469faf 100644
--- a/src/passes/Print.cpp
+++ b/src/passes/Print.cpp
@@ -957,12 +957,6 @@ struct PrintExpressionContents
case NegVecI64x2:
o << "i64x2.neg";
break;
- case AnyTrueVecI64x2:
- o << "i64x2.any_true";
- break;
- case AllTrueVecI64x2:
- o << "i64x2.all_true";
- break;
case BitmaskVecI64x2:
o << "i64x2.bitmask";
break;
@@ -1008,6 +1002,18 @@ struct PrintExpressionContents
case NearestVecF64x2:
o << "f64x2.nearest";
break;
+ case ExtAddPairwiseSVecI8x16ToI16x8:
+ o << "i16x8.extadd_pairwise_i8x16_s";
+ break;
+ case ExtAddPairwiseUVecI8x16ToI16x8:
+ o << "i16x8.extadd_pairwise_i8x16_u";
+ break;
+ case ExtAddPairwiseSVecI16x8ToI32x4:
+ o << "i32x4.extadd_pairwise_i16x8_s";
+ break;
+ case ExtAddPairwiseUVecI16x8ToI32x4:
+ o << "i32x4.extadd_pairwise_i16x8_u";
+ break;
case TruncSatSVecF32x4ToVecI32x4:
o << "i32x4.trunc_sat_f32x4_s";
break;
diff --git a/src/tools/fuzzing.h b/src/tools/fuzzing.h
index 7d9131767..09e83031d 100644
--- a/src/tools/fuzzing.h
+++ b/src/tools/fuzzing.h
@@ -2168,9 +2168,7 @@ private:
AnyTrueVecI16x8,
AllTrueVecI16x8,
AnyTrueVecI32x4,
- AllTrueVecI32x4,
- AnyTrueVecI64x2,
- AllTrueVecI64x2),
+ AllTrueVecI32x4),
make(Type::v128)});
}
case Type::funcref:
diff --git a/src/wasm-binary.h b/src/wasm-binary.h
index 382bfbd4f..b2c922dc2 100644
--- a/src/wasm-binary.h
+++ b/src/wasm-binary.h
@@ -897,8 +897,6 @@ enum ASTNodes {
I64x2WidenLowUI32x4 = 0xc9,
I64x2WidenHighUI32x4 = 0xca,
I64x2Neg = 0xc1,
- I64x2AnyTrue = 0xc2,
- I64x2AllTrue = 0xc3,
I64x2Shl = 0xcb,
I64x2ShrS = 0xcc,
I64x2ShrU = 0xcd,
@@ -939,6 +937,11 @@ enum ASTNodes {
F64x2PMin = 0xf6,
F64x2PMax = 0xf7,
+ I16x8ExtAddPairWiseSI8x16 = 0xc2,
+ I16x8ExtAddPairWiseUI8x16 = 0xc3,
+ I32x4ExtAddPairWiseSI16x8 = 0xa5,
+ I32x4ExtAddPairWiseUI16x8 = 0xa6,
+
I32x4TruncSatSF32x4 = 0xf8,
I32x4TruncSatUF32x4 = 0xf9,
F32x4ConvertSI32x4 = 0xfa,
diff --git a/src/wasm-interpreter.h b/src/wasm-interpreter.h
index 019a56db1..3d963269d 100644
--- a/src/wasm-interpreter.h
+++ b/src/wasm-interpreter.h
@@ -488,10 +488,6 @@ public:
return value.bitmaskI32x4();
case NegVecI64x2:
return value.negI64x2();
- case AnyTrueVecI64x2:
- return value.anyTrueI64x2();
- case AllTrueVecI64x2:
- return value.allTrueI64x2();
case BitmaskVecI64x2:
WASM_UNREACHABLE("unimp");
case AbsVecF32x4:
@@ -522,6 +518,14 @@ public:
return value.truncF64x2();
case NearestVecF64x2:
return value.nearestF64x2();
+ case ExtAddPairwiseSVecI8x16ToI16x8:
+ WASM_UNREACHABLE("unimp");
+ case ExtAddPairwiseUVecI8x16ToI16x8:
+ WASM_UNREACHABLE("unimp");
+ case ExtAddPairwiseSVecI16x8ToI32x4:
+ WASM_UNREACHABLE("unimp");
+ case ExtAddPairwiseUVecI16x8ToI32x4:
+ WASM_UNREACHABLE("unimp");
case TruncSatSVecF32x4ToVecI32x4:
return value.truncSatToSI32x4();
case TruncSatUVecF32x4ToVecI32x4:
diff --git a/src/wasm.h b/src/wasm.h
index 1d5642625..12aacd2ed 100644
--- a/src/wasm.h
+++ b/src/wasm.h
@@ -174,8 +174,6 @@ enum UnaryOp {
AllTrueVecI32x4,
BitmaskVecI32x4,
NegVecI64x2,
- AnyTrueVecI64x2,
- AllTrueVecI64x2,
BitmaskVecI64x2,
AbsVecF32x4,
NegVecF32x4,
@@ -191,6 +189,10 @@ enum UnaryOp {
FloorVecF64x2,
TruncVecF64x2,
NearestVecF64x2,
+ ExtAddPairwiseSVecI8x16ToI16x8,
+ ExtAddPairwiseUVecI8x16ToI16x8,
+ ExtAddPairwiseSVecI16x8ToI32x4,
+ ExtAddPairwiseUVecI16x8ToI32x4,
// SIMD conversions
TruncSatSVecF32x4ToVecI32x4,
diff --git a/src/wasm/literal.cpp b/src/wasm/literal.cpp
index f526cebf3..49d3cbf63 100644
--- a/src/wasm/literal.cpp
+++ b/src/wasm/literal.cpp
@@ -1868,12 +1868,6 @@ Literal Literal::allTrueI32x4() const {
Literal Literal::bitmaskI32x4() const {
return bitmask<4, &Literal::getLanesI32x4>(*this);
}
-Literal Literal::anyTrueI64x2() const {
- return any_true<2, &Literal::getLanesI64x2>(*this);
-}
-Literal Literal::allTrueI64x2() const {
- return all_true<2, &Literal::getLanesI64x2>(*this);
-}
template<int Lanes,
LaneArray<Lanes> (Literal::*IntoLanes)() const,
diff --git a/src/wasm/wasm-binary.cpp b/src/wasm/wasm-binary.cpp
index 70aaa6a61..e616493af 100644
--- a/src/wasm/wasm-binary.cpp
+++ b/src/wasm/wasm-binary.cpp
@@ -4836,14 +4836,6 @@ bool WasmBinaryBuilder::maybeVisitSIMDUnary(Expression*& out, uint32_t code) {
curr = allocator.alloc<Unary>();
curr->op = NegVecI64x2;
break;
- case BinaryConsts::I64x2AnyTrue:
- curr = allocator.alloc<Unary>();
- curr->op = AnyTrueVecI64x2;
- break;
- case BinaryConsts::I64x2AllTrue:
- curr = allocator.alloc<Unary>();
- curr->op = AllTrueVecI64x2;
- break;
case BinaryConsts::I64x2Bitmask:
curr = allocator.alloc<Unary>();
curr->op = BitmaskVecI64x2;
@@ -4904,6 +4896,22 @@ bool WasmBinaryBuilder::maybeVisitSIMDUnary(Expression*& out, uint32_t code) {
curr = allocator.alloc<Unary>();
curr->op = NearestVecF64x2;
break;
+ case BinaryConsts::I16x8ExtAddPairWiseSI8x16:
+ curr = allocator.alloc<Unary>();
+ curr->op = ExtAddPairwiseSVecI8x16ToI16x8;
+ break;
+ case BinaryConsts::I16x8ExtAddPairWiseUI8x16:
+ curr = allocator.alloc<Unary>();
+ curr->op = ExtAddPairwiseUVecI8x16ToI16x8;
+ break;
+ case BinaryConsts::I32x4ExtAddPairWiseSI16x8:
+ curr = allocator.alloc<Unary>();
+ curr->op = ExtAddPairwiseSVecI16x8ToI32x4;
+ break;
+ case BinaryConsts::I32x4ExtAddPairWiseUI16x8:
+ curr = allocator.alloc<Unary>();
+ curr->op = ExtAddPairwiseUVecI16x8ToI32x4;
+ break;
case BinaryConsts::I32x4TruncSatSF32x4:
curr = allocator.alloc<Unary>();
curr->op = TruncSatSVecF32x4ToVecI32x4;
diff --git a/src/wasm/wasm-stack.cpp b/src/wasm/wasm-stack.cpp
index 6af7279bb..776928b88 100644
--- a/src/wasm/wasm-stack.cpp
+++ b/src/wasm/wasm-stack.cpp
@@ -1028,14 +1028,6 @@ void BinaryInstWriter::visitUnary(Unary* curr) {
case NegVecI64x2:
o << int8_t(BinaryConsts::SIMDPrefix) << U32LEB(BinaryConsts::I64x2Neg);
break;
- case AnyTrueVecI64x2:
- o << int8_t(BinaryConsts::SIMDPrefix)
- << U32LEB(BinaryConsts::I64x2AnyTrue);
- break;
- case AllTrueVecI64x2:
- o << int8_t(BinaryConsts::SIMDPrefix)
- << U32LEB(BinaryConsts::I64x2AllTrue);
- break;
case BitmaskVecI64x2:
o << int8_t(BinaryConsts::SIMDPrefix)
<< U32LEB(BinaryConsts::I64x2Bitmask);
@@ -1084,6 +1076,22 @@ void BinaryInstWriter::visitUnary(Unary* curr) {
o << int8_t(BinaryConsts::SIMDPrefix)
<< U32LEB(BinaryConsts::F64x2Nearest);
break;
+ case ExtAddPairwiseSVecI8x16ToI16x8:
+ o << int8_t(BinaryConsts::SIMDPrefix)
+ << U32LEB(BinaryConsts::I16x8ExtAddPairWiseSI8x16);
+ break;
+ case ExtAddPairwiseUVecI8x16ToI16x8:
+ o << int8_t(BinaryConsts::SIMDPrefix)
+ << U32LEB(BinaryConsts::I16x8ExtAddPairWiseUI8x16);
+ break;
+ case ExtAddPairwiseSVecI16x8ToI32x4:
+ o << int8_t(BinaryConsts::SIMDPrefix)
+ << U32LEB(BinaryConsts::I32x4ExtAddPairWiseSI16x8);
+ break;
+ case ExtAddPairwiseUVecI16x8ToI32x4:
+ o << int8_t(BinaryConsts::SIMDPrefix)
+ << U32LEB(BinaryConsts::I32x4ExtAddPairWiseUI16x8);
+ break;
case TruncSatSVecF32x4ToVecI32x4:
o << int8_t(BinaryConsts::SIMDPrefix)
<< U32LEB(BinaryConsts::I32x4TruncSatSF32x4);
diff --git a/src/wasm/wasm-validator.cpp b/src/wasm/wasm-validator.cpp
index 745ce8c06..a45be1fd3 100644
--- a/src/wasm/wasm-validator.cpp
+++ b/src/wasm/wasm-validator.cpp
@@ -1866,6 +1866,10 @@ void FunctionValidator::visitUnary(Unary* curr) {
case FloorVecF64x2:
case TruncVecF64x2:
case NearestVecF64x2:
+ case ExtAddPairwiseSVecI8x16ToI16x8:
+ case ExtAddPairwiseUVecI8x16ToI16x8:
+ case ExtAddPairwiseSVecI16x8ToI32x4:
+ case ExtAddPairwiseUVecI16x8ToI32x4:
case TruncSatSVecF32x4ToVecI32x4:
case TruncSatUVecF32x4ToVecI32x4:
case TruncSatSVecF64x2ToVecI64x2:
@@ -1893,11 +1897,9 @@ void FunctionValidator::visitUnary(Unary* curr) {
case AnyTrueVecI8x16:
case AnyTrueVecI16x8:
case AnyTrueVecI32x4:
- case AnyTrueVecI64x2:
case AllTrueVecI8x16:
case AllTrueVecI16x8:
case AllTrueVecI32x4:
- case AllTrueVecI64x2:
case BitmaskVecI8x16:
case BitmaskVecI16x8:
case BitmaskVecI32x4:
diff --git a/src/wasm/wasm.cpp b/src/wasm/wasm.cpp
index 436eedb2b..264f2bf83 100644
--- a/src/wasm/wasm.cpp
+++ b/src/wasm/wasm.cpp
@@ -783,6 +783,10 @@ void Unary::finalize() {
case FloorVecF64x2:
case TruncVecF64x2:
case NearestVecF64x2:
+ case ExtAddPairwiseSVecI8x16ToI16x8:
+ case ExtAddPairwiseUVecI8x16ToI16x8:
+ case ExtAddPairwiseSVecI16x8ToI32x4:
+ case ExtAddPairwiseUVecI16x8ToI32x4:
case TruncSatSVecF32x4ToVecI32x4:
case TruncSatUVecF32x4ToVecI32x4:
case TruncSatSVecF64x2ToVecI64x2:
@@ -808,11 +812,9 @@ void Unary::finalize() {
case AnyTrueVecI8x16:
case AnyTrueVecI16x8:
case AnyTrueVecI32x4:
- case AnyTrueVecI64x2:
case AllTrueVecI8x16:
case AllTrueVecI16x8:
case AllTrueVecI32x4:
- case AllTrueVecI64x2:
case BitmaskVecI8x16:
case BitmaskVecI16x8:
case BitmaskVecI32x4:
diff --git a/test/binaryen.js/kitchen-sink.js b/test/binaryen.js/kitchen-sink.js
index 82a0dfd76..146335130 100644
--- a/test/binaryen.js/kitchen-sink.js
+++ b/test/binaryen.js/kitchen-sink.js
@@ -281,8 +281,6 @@ function test_core() {
module.i32x4.all_true(module.v128.const(v128_bytes)),
module.i32x4.bitmask(module.v128.const(v128_bytes)),
module.i64x2.neg(module.v128.const(v128_bytes)),
- module.i64x2.any_true(module.v128.const(v128_bytes)),
- module.i64x2.all_true(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)),
diff --git a/test/binaryen.js/kitchen-sink.js.txt b/test/binaryen.js/kitchen-sink.js.txt
index b50956b0e..0127fbf4e 100644
--- a/test/binaryen.js/kitchen-sink.js.txt
+++ b/test/binaryen.js/kitchen-sink.js.txt
@@ -483,16 +483,6 @@ getExpressionInfo(tuple[3])={"id":14,"type":5,"value":3.7}
)
)
(drop
- (i64x2.any_true
- (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d)
- )
- )
- (drop
- (i64x2.all_true
- (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d)
- )
- )
- (drop
(f32x4.abs
(v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d)
)
@@ -2365,16 +2355,6 @@ getExpressionInfo(tuple[3])={"id":14,"type":5,"value":3.7}
)
)
(drop
- (i64x2.any_true
- (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d)
- )
- )
- (drop
- (i64x2.all_true
- (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d)
- )
- )
- (drop
(f32x4.abs
(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 25f8b1937..79cbabca3 100644
--- a/test/example/c-api-kitchen-sink.c
+++ b/test/example/c-api-kitchen-sink.c
@@ -435,8 +435,6 @@ void test_core() {
makeUnary(module, BinaryenAllTrueVecI32x4(), v128),
makeUnary(module, BinaryenBitmaskVecI32x4(), v128),
makeUnary(module, BinaryenNegVecI64x2(), v128),
- makeUnary(module, BinaryenAnyTrueVecI64x2(), v128),
- makeUnary(module, BinaryenAllTrueVecI64x2(), v128),
makeUnary(module, BinaryenAbsVecF32x4(), v128),
makeUnary(module, BinaryenNegVecF32x4(), v128),
makeUnary(module, BinaryenSqrtVecF32x4(), v128),
diff --git a/test/example/c-api-kitchen-sink.txt b/test/example/c-api-kitchen-sink.txt
index dbbb30eb6..083fa1ce5 100644
--- a/test/example/c-api-kitchen-sink.txt
+++ b/test/example/c-api-kitchen-sink.txt
@@ -389,16 +389,6 @@ BinaryenFeatureAll: 8191
)
)
(drop
- (i64x2.any_true
- (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d)
- )
- )
- (drop
- (i64x2.all_true
- (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d)
- )
- )
- (drop
(f32x4.abs
(v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d)
)
diff --git a/test/simd.wast b/test/simd.wast
index 7296a075e..2af6c42aa 100644
--- a/test/simd.wast
+++ b/test/simd.wast
@@ -927,16 +927,6 @@
(local.get $0)
)
)
- (func $i64x2.any_true (param $0 v128) (result i32)
- (i64x2.any_true
- (local.get $0)
- )
- )
- (func $i64x2.all_true (param $0 v128) (result i32)
- (i64x2.all_true
- (local.get $0)
- )
- )
(func $i64x2.bitmask (param $0 v128) (result i32)
(i64x2.bitmask
(local.get $0)
@@ -1196,6 +1186,26 @@
(local.get $2)
)
)
+ (func $i16x8.extadd_pairwise_i8x16_s (param $0 v128) (result v128)
+ (i16x8.extadd_pairwise_i8x16_s
+ (local.get $0)
+ )
+ )
+ (func $i16x8.extadd_pairwise_i8x16_u (param $0 v128) (result v128)
+ (i16x8.extadd_pairwise_i8x16_u
+ (local.get $0)
+ )
+ )
+ (func $i32x4.extadd_pairwise_i16x8_s (param $0 v128) (result v128)
+ (i32x4.extadd_pairwise_i16x8_s
+ (local.get $0)
+ )
+ )
+ (func $i32x4.extadd_pairwise_i16x8_u (param $0 v128) (result v128)
+ (i32x4.extadd_pairwise_i16x8_u
+ (local.get $0)
+ )
+ )
(func $i32x4.trunc_sat_f32x4_s (param $0 v128) (result v128)
(i32x4.trunc_sat_f32x4_s
(local.get $0)
diff --git a/test/simd.wast.from-wast b/test/simd.wast.from-wast
index ab30772d3..08be92638 100644
--- a/test/simd.wast.from-wast
+++ b/test/simd.wast.from-wast
@@ -1,8 +1,8 @@
(module
(type $v128_v128_=>_v128 (func (param v128 v128) (result v128)))
(type $v128_=>_v128 (func (param v128) (result v128)))
- (type $v128_=>_i32 (func (param v128) (result i32)))
(type $i32_=>_v128 (func (param i32) (result v128)))
+ (type $v128_=>_i32 (func (param v128) (result i32)))
(type $v128_i32_=>_v128 (func (param v128 i32) (result v128)))
(type $v128_v128_v128_=>_v128 (func (param v128 v128 v128) (result v128)))
(type $i32_v128_=>_none (func (param i32 v128)))
@@ -944,16 +944,6 @@
(local.get $0)
)
)
- (func $i64x2.any_true (param $0 v128) (result i32)
- (i64x2.any_true
- (local.get $0)
- )
- )
- (func $i64x2.all_true (param $0 v128) (result i32)
- (i64x2.all_true
- (local.get $0)
- )
- )
(func $i64x2.bitmask (param $0 v128) (result i32)
(i64x2.bitmask
(local.get $0)
@@ -1213,6 +1203,26 @@
(local.get $2)
)
)
+ (func $i16x8.extadd_pairwise_i8x16_s (param $0 v128) (result v128)
+ (i16x8.extadd_pairwise_i8x16_s
+ (local.get $0)
+ )
+ )
+ (func $i16x8.extadd_pairwise_i8x16_u (param $0 v128) (result v128)
+ (i16x8.extadd_pairwise_i8x16_u
+ (local.get $0)
+ )
+ )
+ (func $i32x4.extadd_pairwise_i16x8_s (param $0 v128) (result v128)
+ (i32x4.extadd_pairwise_i16x8_s
+ (local.get $0)
+ )
+ )
+ (func $i32x4.extadd_pairwise_i16x8_u (param $0 v128) (result v128)
+ (i32x4.extadd_pairwise_i16x8_u
+ (local.get $0)
+ )
+ )
(func $i32x4.trunc_sat_f32x4_s (param $0 v128) (result v128)
(i32x4.trunc_sat_f32x4_s
(local.get $0)
diff --git a/test/simd.wast.fromBinary b/test/simd.wast.fromBinary
index 935de0c09..e66cf405b 100644
--- a/test/simd.wast.fromBinary
+++ b/test/simd.wast.fromBinary
@@ -1,8 +1,8 @@
(module
(type $v128_v128_=>_v128 (func (param v128 v128) (result v128)))
(type $v128_=>_v128 (func (param v128) (result v128)))
- (type $v128_=>_i32 (func (param v128) (result i32)))
(type $i32_=>_v128 (func (param i32) (result v128)))
+ (type $v128_=>_i32 (func (param v128) (result i32)))
(type $v128_i32_=>_v128 (func (param v128 i32) (result v128)))
(type $v128_v128_v128_=>_v128 (func (param v128 v128 v128) (result v128)))
(type $i32_v128_=>_none (func (param i32 v128)))
@@ -944,16 +944,6 @@
(local.get $0)
)
)
- (func $i64x2.any_true (param $0 v128) (result i32)
- (i64x2.any_true
- (local.get $0)
- )
- )
- (func $i64x2.all_true (param $0 v128) (result i32)
- (i64x2.all_true
- (local.get $0)
- )
- )
(func $i64x2.bitmask (param $0 v128) (result i32)
(i64x2.bitmask
(local.get $0)
@@ -1213,6 +1203,26 @@
(local.get $2)
)
)
+ (func $i16x8.extadd_pairwise_i8x16_s (param $0 v128) (result v128)
+ (i16x8.extadd_pairwise_i8x16_s
+ (local.get $0)
+ )
+ )
+ (func $i16x8.extadd_pairwise_i8x16_u (param $0 v128) (result v128)
+ (i16x8.extadd_pairwise_i8x16_u
+ (local.get $0)
+ )
+ )
+ (func $i32x4.extadd_pairwise_i16x8_s (param $0 v128) (result v128)
+ (i32x4.extadd_pairwise_i16x8_s
+ (local.get $0)
+ )
+ )
+ (func $i32x4.extadd_pairwise_i16x8_u (param $0 v128) (result v128)
+ (i32x4.extadd_pairwise_i16x8_u
+ (local.get $0)
+ )
+ )
(func $i32x4.trunc_sat_f32x4_s (param $0 v128) (result v128)
(i32x4.trunc_sat_f32x4_s
(local.get $0)
diff --git a/test/simd.wast.fromBinary.noDebugInfo b/test/simd.wast.fromBinary.noDebugInfo
index 42543f448..011093e9e 100644
--- a/test/simd.wast.fromBinary.noDebugInfo
+++ b/test/simd.wast.fromBinary.noDebugInfo
@@ -1,8 +1,8 @@
(module
(type $v128_v128_=>_v128 (func (param v128 v128) (result v128)))
(type $v128_=>_v128 (func (param v128) (result v128)))
- (type $v128_=>_i32 (func (param v128) (result i32)))
(type $i32_=>_v128 (func (param i32) (result v128)))
+ (type $v128_=>_i32 (func (param v128) (result i32)))
(type $v128_i32_=>_v128 (func (param v128 i32) (result v128)))
(type $v128_v128_v128_=>_v128 (func (param v128 v128 v128) (result v128)))
(type $i32_v128_=>_none (func (param i32 v128)))
@@ -945,459 +945,469 @@
)
)
(func $162 (param $0 v128) (result i32)
- (i64x2.any_true
- (local.get $0)
- )
- )
- (func $163 (param $0 v128) (result i32)
- (i64x2.all_true
- (local.get $0)
- )
- )
- (func $164 (param $0 v128) (result i32)
(i64x2.bitmask
(local.get $0)
)
)
- (func $165 (param $0 v128) (param $1 i32) (result v128)
+ (func $163 (param $0 v128) (param $1 i32) (result v128)
(i64x2.shl
(local.get $0)
(local.get $1)
)
)
- (func $166 (param $0 v128) (param $1 i32) (result v128)
+ (func $164 (param $0 v128) (param $1 i32) (result v128)
(i64x2.shr_s
(local.get $0)
(local.get $1)
)
)
- (func $167 (param $0 v128) (param $1 i32) (result v128)
+ (func $165 (param $0 v128) (param $1 i32) (result v128)
(i64x2.shr_u
(local.get $0)
(local.get $1)
)
)
- (func $168 (param $0 v128) (param $1 v128) (result v128)
+ (func $166 (param $0 v128) (param $1 v128) (result v128)
(i64x2.add
(local.get $0)
(local.get $1)
)
)
- (func $169 (param $0 v128) (param $1 v128) (result v128)
+ (func $167 (param $0 v128) (param $1 v128) (result v128)
(i64x2.sub
(local.get $0)
(local.get $1)
)
)
- (func $170 (param $0 v128) (param $1 v128) (result v128)
+ (func $168 (param $0 v128) (param $1 v128) (result v128)
(i64x2.mul
(local.get $0)
(local.get $1)
)
)
- (func $171 (param $0 v128) (param $1 v128) (result v128)
+ (func $169 (param $0 v128) (param $1 v128) (result v128)
(i64x2.extmul_low_i32x4_s
(local.get $0)
(local.get $1)
)
)
- (func $172 (param $0 v128) (param $1 v128) (result v128)
+ (func $170 (param $0 v128) (param $1 v128) (result v128)
(i64x2.extmul_high_i32x4_s
(local.get $0)
(local.get $1)
)
)
- (func $173 (param $0 v128) (param $1 v128) (result v128)
+ (func $171 (param $0 v128) (param $1 v128) (result v128)
(i64x2.extmul_low_i32x4_u
(local.get $0)
(local.get $1)
)
)
- (func $174 (param $0 v128) (param $1 v128) (result v128)
+ (func $172 (param $0 v128) (param $1 v128) (result v128)
(i64x2.extmul_high_i32x4_u
(local.get $0)
(local.get $1)
)
)
- (func $175 (param $0 v128) (param $1 v128) (result v128)
+ (func $173 (param $0 v128) (param $1 v128) (result v128)
(f32x4.add
(local.get $0)
(local.get $1)
)
)
- (func $176 (param $0 v128) (param $1 v128) (result v128)
+ (func $174 (param $0 v128) (param $1 v128) (result v128)
(f32x4.sub
(local.get $0)
(local.get $1)
)
)
- (func $177 (param $0 v128) (param $1 v128) (result v128)
+ (func $175 (param $0 v128) (param $1 v128) (result v128)
(f32x4.mul
(local.get $0)
(local.get $1)
)
)
- (func $178 (param $0 v128) (param $1 v128) (result v128)
+ (func $176 (param $0 v128) (param $1 v128) (result v128)
(f32x4.div
(local.get $0)
(local.get $1)
)
)
- (func $179 (param $0 v128) (param $1 v128) (result v128)
+ (func $177 (param $0 v128) (param $1 v128) (result v128)
(f32x4.min
(local.get $0)
(local.get $1)
)
)
- (func $180 (param $0 v128) (param $1 v128) (result v128)
+ (func $178 (param $0 v128) (param $1 v128) (result v128)
(f32x4.max
(local.get $0)
(local.get $1)
)
)
- (func $181 (param $0 v128) (param $1 v128) (result v128)
+ (func $179 (param $0 v128) (param $1 v128) (result v128)
(f32x4.pmin
(local.get $0)
(local.get $1)
)
)
- (func $182 (param $0 v128) (param $1 v128) (result v128)
+ (func $180 (param $0 v128) (param $1 v128) (result v128)
(f32x4.pmax
(local.get $0)
(local.get $1)
)
)
- (func $183 (param $0 v128) (result v128)
+ (func $181 (param $0 v128) (result v128)
(f32x4.ceil
(local.get $0)
)
)
- (func $184 (param $0 v128) (result v128)
+ (func $182 (param $0 v128) (result v128)
(f32x4.floor
(local.get $0)
)
)
- (func $185 (param $0 v128) (result v128)
+ (func $183 (param $0 v128) (result v128)
(f32x4.trunc
(local.get $0)
)
)
- (func $186 (param $0 v128) (result v128)
+ (func $184 (param $0 v128) (result v128)
(f32x4.nearest
(local.get $0)
)
)
- (func $187 (param $0 v128) (result v128)
+ (func $185 (param $0 v128) (result v128)
(f32x4.abs
(local.get $0)
)
)
- (func $188 (param $0 v128) (result v128)
+ (func $186 (param $0 v128) (result v128)
(f32x4.neg
(local.get $0)
)
)
- (func $189 (param $0 v128) (result v128)
+ (func $187 (param $0 v128) (result v128)
(f32x4.sqrt
(local.get $0)
)
)
- (func $190 (param $0 v128) (param $1 v128) (param $2 v128) (result v128)
+ (func $188 (param $0 v128) (param $1 v128) (param $2 v128) (result v128)
(f32x4.qfma
(local.get $0)
(local.get $1)
(local.get $2)
)
)
- (func $191 (param $0 v128) (param $1 v128) (param $2 v128) (result v128)
+ (func $189 (param $0 v128) (param $1 v128) (param $2 v128) (result v128)
(f32x4.qfms
(local.get $0)
(local.get $1)
(local.get $2)
)
)
- (func $192 (param $0 v128) (param $1 v128) (result v128)
+ (func $190 (param $0 v128) (param $1 v128) (result v128)
(f64x2.add
(local.get $0)
(local.get $1)
)
)
- (func $193 (param $0 v128) (param $1 v128) (result v128)
+ (func $191 (param $0 v128) (param $1 v128) (result v128)
(f64x2.sub
(local.get $0)
(local.get $1)
)
)
- (func $194 (param $0 v128) (param $1 v128) (result v128)
+ (func $192 (param $0 v128) (param $1 v128) (result v128)
(f64x2.mul
(local.get $0)
(local.get $1)
)
)
- (func $195 (param $0 v128) (param $1 v128) (result v128)
+ (func $193 (param $0 v128) (param $1 v128) (result v128)
(f64x2.div
(local.get $0)
(local.get $1)
)
)
- (func $196 (param $0 v128) (param $1 v128) (result v128)
+ (func $194 (param $0 v128) (param $1 v128) (result v128)
(f64x2.min
(local.get $0)
(local.get $1)
)
)
- (func $197 (param $0 v128) (param $1 v128) (result v128)
+ (func $195 (param $0 v128) (param $1 v128) (result v128)
(f64x2.max
(local.get $0)
(local.get $1)
)
)
- (func $198 (param $0 v128) (param $1 v128) (result v128)
+ (func $196 (param $0 v128) (param $1 v128) (result v128)
(f64x2.pmin
(local.get $0)
(local.get $1)
)
)
- (func $199 (param $0 v128) (param $1 v128) (result v128)
+ (func $197 (param $0 v128) (param $1 v128) (result v128)
(f64x2.pmax
(local.get $0)
(local.get $1)
)
)
- (func $200 (param $0 v128) (result v128)
+ (func $198 (param $0 v128) (result v128)
(f64x2.ceil
(local.get $0)
)
)
- (func $201 (param $0 v128) (result v128)
+ (func $199 (param $0 v128) (result v128)
(f64x2.floor
(local.get $0)
)
)
- (func $202 (param $0 v128) (result v128)
+ (func $200 (param $0 v128) (result v128)
(f64x2.trunc
(local.get $0)
)
)
- (func $203 (param $0 v128) (result v128)
+ (func $201 (param $0 v128) (result v128)
(f64x2.nearest
(local.get $0)
)
)
- (func $204 (param $0 v128) (result v128)
+ (func $202 (param $0 v128) (result v128)
(f64x2.abs
(local.get $0)
)
)
- (func $205 (param $0 v128) (result v128)
+ (func $203 (param $0 v128) (result v128)
(f64x2.neg
(local.get $0)
)
)
- (func $206 (param $0 v128) (result v128)
+ (func $204 (param $0 v128) (result v128)
(f64x2.sqrt
(local.get $0)
)
)
- (func $207 (param $0 v128) (param $1 v128) (param $2 v128) (result v128)
+ (func $205 (param $0 v128) (param $1 v128) (param $2 v128) (result v128)
(f64x2.qfma
(local.get $0)
(local.get $1)
(local.get $2)
)
)
- (func $208 (param $0 v128) (param $1 v128) (param $2 v128) (result v128)
+ (func $206 (param $0 v128) (param $1 v128) (param $2 v128) (result v128)
(f64x2.qfms
(local.get $0)
(local.get $1)
(local.get $2)
)
)
+ (func $207 (param $0 v128) (result v128)
+ (i16x8.extadd_pairwise_i8x16_s
+ (local.get $0)
+ )
+ )
+ (func $208 (param $0 v128) (result v128)
+ (i16x8.extadd_pairwise_i8x16_u
+ (local.get $0)
+ )
+ )
(func $209 (param $0 v128) (result v128)
- (i32x4.trunc_sat_f32x4_s
+ (i32x4.extadd_pairwise_i16x8_s
(local.get $0)
)
)
(func $210 (param $0 v128) (result v128)
- (i32x4.trunc_sat_f32x4_u
+ (i32x4.extadd_pairwise_i16x8_u
(local.get $0)
)
)
(func $211 (param $0 v128) (result v128)
- (i64x2.trunc_sat_f64x2_s
+ (i32x4.trunc_sat_f32x4_s
(local.get $0)
)
)
(func $212 (param $0 v128) (result v128)
- (i64x2.trunc_sat_f64x2_u
+ (i32x4.trunc_sat_f32x4_u
(local.get $0)
)
)
(func $213 (param $0 v128) (result v128)
- (f32x4.convert_i32x4_s
+ (i64x2.trunc_sat_f64x2_s
(local.get $0)
)
)
(func $214 (param $0 v128) (result v128)
- (f32x4.convert_i32x4_u
+ (i64x2.trunc_sat_f64x2_u
(local.get $0)
)
)
(func $215 (param $0 v128) (result v128)
- (f64x2.convert_i64x2_s
+ (f32x4.convert_i32x4_s
(local.get $0)
)
)
(func $216 (param $0 v128) (result v128)
+ (f32x4.convert_i32x4_u
+ (local.get $0)
+ )
+ )
+ (func $217 (param $0 v128) (result v128)
+ (f64x2.convert_i64x2_s
+ (local.get $0)
+ )
+ )
+ (func $218 (param $0 v128) (result v128)
(f64x2.convert_i64x2_u
(local.get $0)
)
)
- (func $217 (param $0 i32) (result v128)
+ (func $219 (param $0 i32) (result v128)
(v8x16.load_splat
(local.get $0)
)
)
- (func $218 (param $0 i32) (result v128)
+ (func $220 (param $0 i32) (result v128)
(v16x8.load_splat
(local.get $0)
)
)
- (func $219 (param $0 i32) (result v128)
+ (func $221 (param $0 i32) (result v128)
(v32x4.load_splat
(local.get $0)
)
)
- (func $220 (param $0 i32) (result v128)
+ (func $222 (param $0 i32) (result v128)
(v64x2.load_splat
(local.get $0)
)
)
- (func $221 (param $0 v128) (param $1 v128) (result v128)
+ (func $223 (param $0 v128) (param $1 v128) (result v128)
(i8x16.narrow_i16x8_s
(local.get $0)
(local.get $1)
)
)
- (func $222 (param $0 v128) (param $1 v128) (result v128)
+ (func $224 (param $0 v128) (param $1 v128) (result v128)
(i8x16.narrow_i16x8_u
(local.get $0)
(local.get $1)
)
)
- (func $223 (param $0 v128) (param $1 v128) (result v128)
+ (func $225 (param $0 v128) (param $1 v128) (result v128)
(i16x8.narrow_i32x4_s
(local.get $0)
(local.get $1)
)
)
- (func $224 (param $0 v128) (param $1 v128) (result v128)
+ (func $226 (param $0 v128) (param $1 v128) (result v128)
(i16x8.narrow_i32x4_u
(local.get $0)
(local.get $1)
)
)
- (func $225 (param $0 v128) (result v128)
+ (func $227 (param $0 v128) (result v128)
(i16x8.widen_low_i8x16_s
(local.get $0)
)
)
- (func $226 (param $0 v128) (result v128)
+ (func $228 (param $0 v128) (result v128)
(i16x8.widen_high_i8x16_s
(local.get $0)
)
)
- (func $227 (param $0 v128) (result v128)
+ (func $229 (param $0 v128) (result v128)
(i16x8.widen_low_i8x16_u
(local.get $0)
)
)
- (func $228 (param $0 v128) (result v128)
+ (func $230 (param $0 v128) (result v128)
(i16x8.widen_high_i8x16_u
(local.get $0)
)
)
- (func $229 (param $0 v128) (result v128)
+ (func $231 (param $0 v128) (result v128)
(i32x4.widen_low_i16x8_s
(local.get $0)
)
)
- (func $230 (param $0 v128) (result v128)
+ (func $232 (param $0 v128) (result v128)
(i32x4.widen_high_i16x8_s
(local.get $0)
)
)
- (func $231 (param $0 v128) (result v128)
+ (func $233 (param $0 v128) (result v128)
(i32x4.widen_low_i16x8_u
(local.get $0)
)
)
- (func $232 (param $0 v128) (result v128)
+ (func $234 (param $0 v128) (result v128)
(i32x4.widen_high_i16x8_u
(local.get $0)
)
)
- (func $233 (param $0 v128) (result v128)
+ (func $235 (param $0 v128) (result v128)
(i64x2.widen_low_i32x4_s
(local.get $0)
)
)
- (func $234 (param $0 v128) (result v128)
+ (func $236 (param $0 v128) (result v128)
(i64x2.widen_high_i32x4_s
(local.get $0)
)
)
- (func $235 (param $0 v128) (result v128)
+ (func $237 (param $0 v128) (result v128)
(i64x2.widen_low_i32x4_u
(local.get $0)
)
)
- (func $236 (param $0 v128) (result v128)
+ (func $238 (param $0 v128) (result v128)
(i64x2.widen_high_i32x4_u
(local.get $0)
)
)
- (func $237 (param $0 i32) (result v128)
+ (func $239 (param $0 i32) (result v128)
(i16x8.load8x8_u
(local.get $0)
)
)
- (func $238 (param $0 i32) (result v128)
+ (func $240 (param $0 i32) (result v128)
(i16x8.load8x8_s
(local.get $0)
)
)
- (func $239 (param $0 i32) (result v128)
+ (func $241 (param $0 i32) (result v128)
(i32x4.load16x4_s
(local.get $0)
)
)
- (func $240 (param $0 i32) (result v128)
+ (func $242 (param $0 i32) (result v128)
(i32x4.load16x4_u
(local.get $0)
)
)
- (func $241 (param $0 i32) (result v128)
+ (func $243 (param $0 i32) (result v128)
(i64x2.load32x2_s
(local.get $0)
)
)
- (func $242 (param $0 i32) (result v128)
+ (func $244 (param $0 i32) (result v128)
(i64x2.load32x2_u
(local.get $0)
)
)
- (func $243 (param $0 i32) (result v128)
+ (func $245 (param $0 i32) (result v128)
(v128.load32_zero
(local.get $0)
)
)
- (func $244 (param $0 i32) (result v128)
+ (func $246 (param $0 i32) (result v128)
(v128.load64_zero
(local.get $0)
)
)
- (func $245 (param $0 v128) (param $1 v128) (result v128)
+ (func $247 (param $0 v128) (param $1 v128) (result v128)
(v8x16.swizzle
(local.get $0)
(local.get $1)
diff --git a/test/spec/simd.wast b/test/spec/simd.wast
index 51bea4deb..968a3e553 100644
--- a/test/spec/simd.wast
+++ b/test/spec/simd.wast
@@ -185,8 +185,6 @@
(func (export "i32x4.max_u") (param $0 v128) (param $1 v128) (result v128) (i32x4.max_u (local.get $0) (local.get $1)))
(func (export "i32x4.dot_i16x8_s") (param $0 v128) (param $1 v128) (result v128) (i32x4.dot_i16x8_s (local.get $0) (local.get $1)))
(func (export "i64x2.neg") (param $0 v128) (result v128) (i64x2.neg (local.get $0)))
- (func (export "i64x2.any_true") (param $0 v128) (result i32) (i64x2.any_true (local.get $0)))
- (func (export "i64x2.all_true") (param $0 v128) (result i32) (i64x2.all_true (local.get $0)))
(func (export "i64x2.bitmask") (param $0 v128) (result i32) (i64x2.bitmask (local.get $0)))
(func (export "i64x2.shl") (param $0 v128) (param $1 i32) (result v128) (i64x2.shl (local.get $0) (local.get $1)))
(func (export "i64x2.shr_s") (param $0 v128) (param $1 i32) (result v128) (i64x2.shr_s (local.get $0) (local.get $1)))
@@ -228,6 +226,7 @@
(func (export "f64x2.floor") (param $0 v128) (result v128) (f64x2.floor (local.get $0)))
(func (export "f64x2.trunc") (param $0 v128) (result v128) (f64x2.trunc (local.get $0)))
(func (export "f64x2.nearest") (param $0 v128) (result v128) (f64x2.nearest (local.get $0)))
+ ;; TODO: Extending pairwise adds once they have interpreter support
(func (export "i32x4.trunc_sat_f32x4_s") (param $0 v128) (result v128) (i32x4.trunc_sat_f32x4_s (local.get $0)))
(func (export "i32x4.trunc_sat_f32x4_u") (param $0 v128) (result v128) (i32x4.trunc_sat_f32x4_u (local.get $0)))
(func (export "i64x2.trunc_sat_f64x2_s") (param $0 v128) (result v128) (i64x2.trunc_sat_f64x2_s (local.get $0)))
@@ -867,12 +866,6 @@
;; i64x2 arithmetic
(assert_return (invoke "i64x2.neg" (v128.const i64x2 0x8000000000000000 42)) (v128.const i64x2 0x8000000000000000 -42))
-(assert_return (invoke "i64x2.any_true" (v128.const i64x2 0 0)) (i32.const 0))
-(assert_return (invoke "i64x2.any_true" (v128.const i64x2 1 0)) (i32.const 1))
-(assert_return (invoke "i64x2.any_true" (v128.const i64x2 1 1)) (i32.const 1))
-(assert_return (invoke "i64x2.all_true" (v128.const i64x2 0 0)) (i32.const 0))
-(assert_return (invoke "i64x2.all_true" (v128.const i64x2 1 0)) (i32.const 0))
-(assert_return (invoke "i64x2.all_true" (v128.const i64x2 1 1)) (i32.const 1))
;; TODO: test i64x2.bitmask
(assert_return (invoke "i64x2.shl" (v128.const i64x2 1 0x8000000000000000) (i32.const 1)) (v128.const i64x2 2 0))
(assert_return (invoke "i64x2.shl" (v128.const i64x2 1 0x8000000000000000) (i32.const 64)) (v128.const i64x2 1 0x8000000000000000))