diff options
70 files changed, 8957 insertions, 7567 deletions
diff --git a/.travis.yml b/.travis.yml index 72feebec7..d7622b3f2 100644 --- a/.travis.yml +++ b/.travis.yml @@ -9,8 +9,32 @@ stages: # to save time and resources. if: type != pull_request AND (branch = master OR tag IS present) +DEPLOY_TO_GITHUB: &DEPLOY_TO_GITHUB + before_deploy: + - PKGNAME="binaryen-$TRAVIS_TAG-$ARCH" + - mv bin binaryen-$TRAVIS_TAG + - tar -czf $PKGNAME.tar.gz binaryen-$TRAVIS_TAG + - sha256sum $PKGNAME.tar.gz > $PKGNAME.tar.gz.sha256 + deploy: + provider: releases + api_key: + secure: "cu6CD5BaycXdCylvcs+Fho5+OVTkh9mZwH8RTnNpXo9hAQzLJDFgcNBHeXHEHtcp4IWf/YZSMu48UKnpU9sP5iF0AS4rtuEBJk5gOKkgB8GWnuIOePFkfANAZMN+EncuUwhAdN56iOAESXqnlHYgmJjyRVCHOxiezuWTOYui4lxoIAdxvOMJc3E9yfzUq4Epm2GDszSDN7ObmRIJpVgDXD9Sze1Xv4IkbIwc0biCmduGGLp3ow2KM+RZ4tOF0c8P0ki49vOFHr6n2Vmqg0QCiVNd4JJBRBCGn6Tzip2jsTQewnUUvpYCZafLeRV//v//voNA6ZUz91yXR23GIhkfdlyuqnz3/7l335Sa749M1lpYfSRWvwg9mJEqP66mxqTrWzj1xSItr9T+p0WhSmRN/4UEJPuItYPSma6kfv+H7qhLa3ZYKECH8hHW79grYmUWtiX0vQVIgnctJGgboPNLfG/1mNtmCI241wK0S3zvL2okdZH8/PqxfllYHMBTUp9lUrop8eoLKPgHZPm6+V20dgTUgOuGTZzTWwQ7Uk/Pg8JMUgkre5y0eo6pP3z0vDW1NNFNhouJ5oGkAeK/HAznr8Q0zWWF1vGFhoyC8ok/IJ7yKxK9scJVPBDe4oox6tr1zlsxzNEYE0/mY3JjuWV0z8RgjrIAbRe8IpGTkYz5VOM=" + file: binaryen-$TRAVIS_TAG-*.tar.gz* + file_glob: true + skip_cleanup: true + on: + tags: true + jobs: include: + # OSX Binary + - env: JOB=dist-osx MACOSX_DEPLOYMENT_TARGET=10.7 ARCH=x86_64-apple-darwin + os: osx + stage: build + script: + - cmake . && make + <<: *DEPLOY_TO_GITHUB + # Build with clang and run tests on the host system (Ubuntu). - &test-ubuntu stage: test @@ -109,7 +133,7 @@ jobs: - &build-alpine <<: *test-alpine stage: build - env: ARCH=x86_64 + env: ARCH=x86_64-linux # Don't run before_script inherited from *test-alpine. before_script: skip script: @@ -124,20 +148,7 @@ jobs: - if [ -n "$(find bin/ -type f -perm -u=x -exec file {} + | grep -Fvw 'statically linked')" ]; then file bin/*; false; fi - before_deploy: - - PKGNAME="binaryen-$TRAVIS_TAG-$ARCH-linux" - - mv bin binaryen-$TRAVIS_TAG - - tar -czf $PKGNAME.tar.gz binaryen-$TRAVIS_TAG - - sha256sum $PKGNAME.tar.gz > $PKGNAME.tar.gz.sha256 - deploy: - provider: releases - api_key: - secure: "cu6CD5BaycXdCylvcs+Fho5+OVTkh9mZwH8RTnNpXo9hAQzLJDFgcNBHeXHEHtcp4IWf/YZSMu48UKnpU9sP5iF0AS4rtuEBJk5gOKkgB8GWnuIOePFkfANAZMN+EncuUwhAdN56iOAESXqnlHYgmJjyRVCHOxiezuWTOYui4lxoIAdxvOMJc3E9yfzUq4Epm2GDszSDN7ObmRIJpVgDXD9Sze1Xv4IkbIwc0biCmduGGLp3ow2KM+RZ4tOF0c8P0ki49vOFHr6n2Vmqg0QCiVNd4JJBRBCGn6Tzip2jsTQewnUUvpYCZafLeRV//v//voNA6ZUz91yXR23GIhkfdlyuqnz3/7l335Sa749M1lpYfSRWvwg9mJEqP66mxqTrWzj1xSItr9T+p0WhSmRN/4UEJPuItYPSma6kfv+H7qhLa3ZYKECH8hHW79grYmUWtiX0vQVIgnctJGgboPNLfG/1mNtmCI241wK0S3zvL2okdZH8/PqxfllYHMBTUp9lUrop8eoLKPgHZPm6+V20dgTUgOuGTZzTWwQ7Uk/Pg8JMUgkre5y0eo6pP3z0vDW1NNFNhouJ5oGkAeK/HAznr8Q0zWWF1vGFhoyC8ok/IJ7yKxK9scJVPBDe4oox6tr1zlsxzNEYE0/mY3JjuWV0z8RgjrIAbRe8IpGTkYz5VOM=" - file: binaryen-$TRAVIS_TAG-*.tar.gz* - file_glob: true - skip_cleanup: true - on: - tags: true + <<: *DEPLOY_TO_GITHUB # Build binaries for other architectures using QEMU user-mode emulation. # Note: We don't run tests for these architectures, because some fail under @@ -145,13 +156,13 @@ jobs: # Note: We had to remove ppc64le, because it takes more than 50 minutes # (Travis limit) to build. :( - <<: *build-alpine - env: ARCH=x86 + env: ARCH=x86-linux - <<: *build-alpine - env: ARCH=aarch64 + env: ARCH=aarch64-linux - <<: *build-alpine - env: ARCH=armhf + env: ARCH=armhf-linux notifications: email: false diff --git a/CHANGELOG.md b/CHANGELOG.md index 36abe6199..67fa19c82 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,9 @@ full changeset diff at the end of each section. Current Trunk ------------- +- Remove jsCall generation from wasm-emscripten-finalize. This is not needed + as of https://github.com/emscripten-core/emscripten/pull/8255. + ### BREAKING CHANGES (old to new) v.55 @@ -368,7 +368,7 @@ under **Windows 10 x64** with with **CMake** and **Visual Studio 2015**. Help would be appreciated on Windows and OS X as most of the core devs are on Linux. [compiling to WebAssembly]: https://github.com/WebAssembly/binaryen/wiki/Compiling-to-WebAssembly-with-Binaryen -[win32]: https://github.com/brakmic/brakmic/blob/master/webassembly/COMPILING_WIN32.ms +[win32]: https://github.com/brakmic/bazaar/blob/master/webassembly/COMPILING_WIN32.md [C API]: https://github.com/WebAssembly/binaryen/wiki/Compiling-to-WebAssembly-with-Binaryen#c-api-1 [control flow graph]: https://github.com/WebAssembly/binaryen/wiki/Compiling-to-WebAssembly-with-Binaryen#cfg-api [JS_API]: https://github.com/WebAssembly/binaryen/wiki/binaryen.js-API diff --git a/auto_update_tests.py b/auto_update_tests.py index f4b13c737..7157e58be 100755 --- a/auto_update_tests.py +++ b/auto_update_tests.py @@ -79,7 +79,6 @@ def update_lld_tests(): mem_file = wast_path + '.mem' extension_arg_map = { '.out': [], - '.jscall.out': ['--emscripten-reserved-function-pointers=3'], '.mem.out': ['--separate-data-segments', mem_file + '.mem'], } for ext, ext_args in extension_arg_map.items(): diff --git a/build-js.sh b/build-js.sh index 06141dea2..896d1736d 100755 --- a/build-js.sh +++ b/build-js.sh @@ -635,6 +635,7 @@ export_function "_BinaryenConstGetValueI64Low" export_function "_BinaryenConstGetValueI64High" export_function "_BinaryenConstGetValueF32" export_function "_BinaryenConstGetValueF64" +export_function "_BinaryenConstGetValueV128" # 'Unary' expression operations export_function "_BinaryenUnaryGetOp" @@ -18,6 +18,7 @@ import os import shutil import subprocess import sys +import unittest from scripts.test.support import run_command, split_wast, node_test_glue, node_has_webassembly from scripts.test.shared import ( @@ -25,10 +26,14 @@ from scripts.test.shared import ( WASM_AS, WASM_CTOR_EVAL, WASM_OPT, WASM_SHELL, WASM_MERGE, WASM_METADCE, WASM_DIS, WASM_REDUCE, binary_format_check, delete_from_orbit, fail, fail_with_error, fail_if_not_identical, fail_if_not_contained, has_vanilla_emcc, - has_vanilla_llvm, minify_check, num_failures, options, tests, - requested, warnings, has_shell_timeout, fail_if_not_identical_to_file + has_vanilla_llvm, minify_check, options, tests, requested, warnings, + has_shell_timeout, fail_if_not_identical_to_file ) +# For shared.num_failures. Cannot import directly because modifications made in +# shared.py would not affect the version imported here. +import scripts.test.shared as shared + import scripts.test.asm2wasm as asm2wasm import scripts.test.lld as lld import scripts.test.wasm2js as wasm2js @@ -592,6 +597,17 @@ def run_gcc_tests(): fail_if_not_identical_to_file(actual, expected) +def run_unittest(): + print '\n[ checking unit tests...]\n' + + # equivalent to `python -m unittest discover -s ./test -v` + suite = unittest.defaultTestLoader.discover(os.path.dirname(options.binaryen_test)) + result = unittest.TextTestRunner(verbosity=2, failfast=options.abort_on_first_failure).run(suite) + shared.num_failures += len(result.errors) + len(result.failures) + if options.abort_on_first_failure and shared.num_failures: + raise Exception("unittest failed") + + # Run all the tests def main(): run_help_tests() @@ -618,17 +634,20 @@ def main(): if options.run_gcc_tests: run_gcc_tests() + run_unittest() + # Check/display the results - if num_failures == 0: + if shared.num_failures == 0: print '\n[ success! ]' if warnings: print '\n' + '\n'.join(warnings) - if num_failures > 0: - print '\n[ ' + str(num_failures) + ' failures! ]' + if shared.num_failures > 0: + print '\n[ ' + str(shared.num_failures) + ' failures! ]' + return 1 - return num_failures + return 0 if __name__ == '__main__': diff --git a/scripts/test/lld.py b/scripts/test/lld.py index 03c96d6c3..94736f03f 100755 --- a/scripts/test/lld.py +++ b/scripts/test/lld.py @@ -29,7 +29,6 @@ def test_wasm_emscripten_finalize(): mem_file = wast_path + '.mem' extension_arg_map = { '.out': [], - '.jscall.out': ['--emscripten-reserved-function-pointers=3'], '.mem.out': ['--separate-data-segments', mem_file], } for ext, ext_args in extension_arg_map.items(): diff --git a/scripts/test/shared.py b/scripts/test/shared.py index f8da23851..7c456db8f 100644 --- a/scripts/test/shared.py +++ b/scripts/test/shared.py @@ -281,6 +281,60 @@ def delete_from_orbit(filename): pass +# This is a workaround for https://bugs.python.org/issue9400 +class Py2CalledProcessError(subprocess.CalledProcessError): + def __init__(self, returncode, cmd, output=None, stderr=None): + super(Exception, self).__init__(returncode, cmd, output, stderr) + self.returncode = returncode + self.cmd = cmd + self.output = output + self.stderr = stderr + + +# https://docs.python.org/3/library/subprocess.html#subprocess.CompletedProcess +class Py2CompletedProcess: + def __init__(self, args, returncode, stdout, stderr): + self.args = args + self.returncode = returncode + self.stdout = stdout + self.stderr = stderr + + def __repr__(self): + _repr = ['args=%s, returncode=%s' % (self.args, self.returncode)] + if self.stdout is not None: + _repr += 'stdout=' + repr(self.stdout) + if self.stderr is not None: + _repr += 'stderr=' + repr(self.stderr) + return 'CompletedProcess(%s)' % ', '.join(_repr) + + def check_returncode(self): + if self.returncode != 0: + raise Py2CalledProcessError(returncode=self.returncode, cmd=self.args, + output=self.stdout, stderr=self.stderr) + + +def run_process(cmd, check=True, input=None, universal_newlines=True, + capture_output=False, *args, **kw): + kw.setdefault('universal_newlines', True) + + if hasattr(subprocess, "run"): + ret = subprocess.run(cmd, check=check, input=input, *args, **kw) + return ret + + # Python 2 compatibility: Introduce Python 3 subprocess.run-like behavior + if input is not None: + kw['stdin'] = subprocess.PIPE + if capture_output: + kw['stdout'] = subprocess.PIPE + kw['stderr'] = subprocess.PIPE + proc = subprocess.Popen(cmd, *args, **kw) + stdout, stderr = proc.communicate(input) + result = Py2CompletedProcess(cmd, proc.returncode, stdout, stderr) + if check: + result.check_returncode() + return result + + def fail_with_error(msg): global num_failures try: diff --git a/src/binaryen-c.cpp b/src/binaryen-c.cpp index c554b0a23..71cd92da4 100644 --- a/src/binaryen-c.cpp +++ b/src/binaryen-c.cpp @@ -1616,6 +1616,15 @@ double BinaryenConstGetValueF64(BinaryenExpressionRef expr) { assert(expression->is<Const>()); return static_cast<Const*>(expression)->value.getf64(); } +void BinaryenConstGetValueV128(BinaryenExpressionRef expr, uint8_t* out) { + if (tracing) { + std::cout << " BinaryenConstGetValueV128(expressions[" << expressions[expr] << "], " << out << ");\n"; + } + + auto* expression = (Expression*)expr; + assert(expression->is<Const>()); + memcpy(out, static_cast<Const*>(expression)->value.getv128().data(), 16); +} // Unary BinaryenOp BinaryenUnaryGetOp(BinaryenExpressionRef expr) { if (tracing) { @@ -1945,7 +1954,7 @@ BinaryenExpressionRef BinaryenSIMDShuffleGetRight(BinaryenExpressionRef expr) { } void BinaryenSIMDShuffleGetMask(BinaryenExpressionRef expr, uint8_t *mask) { if (tracing) { - std::cout << " BinaryenSIMDShuffleGetMask(expressions[" << expressions[expr] << "]);\n"; + std::cout << " BinaryenSIMDShuffleGetMask(expressions[" << expressions[expr] << "], " << mask << ");\n"; } auto* expression = (Expression*)expr; @@ -3067,6 +3076,12 @@ size_t BinaryenSizeofLiteral(void) { return sizeof(Literal); } +// Returns the size of an allocate and write result object. +EMSCRIPTEN_KEEPALIVE +size_t BinaryenSizeofAllocateAndWriteResult(void) { + return sizeof(BinaryenModuleAllocateAndWriteResult); +} + #endif } // extern "C" diff --git a/src/binaryen-c.h b/src/binaryen-c.h index 5355ceeeb..787bfb242 100644 --- a/src/binaryen-c.h +++ b/src/binaryen-c.h @@ -618,6 +618,7 @@ int32_t BinaryenConstGetValueI64Low(BinaryenExpressionRef expr); int32_t BinaryenConstGetValueI64High(BinaryenExpressionRef expr); float BinaryenConstGetValueF32(BinaryenExpressionRef expr); double BinaryenConstGetValueF64(BinaryenExpressionRef expr); +void BinaryenConstGetValueV128(BinaryenExpressionRef expr, uint8_t* out); BinaryenOp BinaryenUnaryGetOp(BinaryenExpressionRef expr); BinaryenExpressionRef BinaryenUnaryGetValue(BinaryenExpressionRef expr); diff --git a/src/ir/block-utils.h b/src/ir/block-utils.h index e3ad370db..968332212 100644 --- a/src/ir/block-utils.h +++ b/src/ir/block-utils.h @@ -59,7 +59,7 @@ namespace BlockUtils { inline Expression* simplifyToContentsWithPossibleTypeChange(Block* block, T* parent) { return simplifyToContents(block, parent, true); } -}; +} } // namespace wasm diff --git a/src/ir/features.h b/src/ir/features.h index ed7fb6ff5..505e239a5 100644 --- a/src/ir/features.h +++ b/src/ir/features.h @@ -76,6 +76,14 @@ inline FeatureSet get(UnaryOp op) { ret.setSIMD(); break; } + case ExtendS8Int32: + case ExtendS16Int32: + case ExtendS8Int64: + case ExtendS16Int64: + case ExtendS32Int64: { + ret.setSignExt(); + break; + } default: {} } return ret; diff --git a/src/ir/global-utils.h b/src/ir/global-utils.h index 02bbbf2d2..fa4cdc44a 100644 --- a/src/ir/global-utils.h +++ b/src/ir/global-utils.h @@ -48,7 +48,7 @@ namespace GlobalUtils { }); return ret; } -}; +} } // namespace wasm diff --git a/src/js/binaryen.js-post.js b/src/js/binaryen.js-post.js index 1eef5757e..aee41255c 100644 --- a/src/js/binaryen.js-post.js +++ b/src/js/binaryen.js-post.js @@ -365,6 +365,13 @@ Module['ConvertUVecI32x4ToVecF32x4'] = Module['_BinaryenConvertUVecI32x4ToVecF32 Module['ConvertSVecI64x2ToVecF64x2'] = Module['_BinaryenConvertSVecI64x2ToVecF64x2'](); Module['ConvertUVecI64x2ToVecF64x2'] = Module['_BinaryenConvertUVecI64x2ToVecF64x2'](); +// 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 +// their own Literals, as the C API handles them by value, which means +// we would leak them. Instead, Const creation is fused together with +// an intermediate stack allocation of this size to pass the value. +var sizeOfLiteral = _BinaryenSizeofLiteral(); + // 'Module' interface Module['Module'] = function(module) { assert(!module); // guard against incorrect old API usage @@ -482,13 +489,6 @@ function wrapModule(module, self) { } } - // The Const creation API is a little different: we don't want users to - // need to make their own Literals, as the C API handles them by value, - // which means we would leak them. Instead, this is the only API that - // accepts Literals, so fuse it with Literal creation - var temp = _malloc(Module['_BinaryenSizeofLiteral']()); // a single literal in memory. the LLVM C ABI - // makes us pass pointers to this. - self['i32'] = { 'load': function(offset, align, ptr) { return Module['_BinaryenLoad'](module, 4, true, offset, align, Module['i32'], ptr); @@ -515,8 +515,11 @@ function wrapModule(module, self) { return Module['_BinaryenStore'](module, 2, offset, align, ptr, value, Module['i32']); }, 'const': function(x) { - Module['_BinaryenLiteralInt32'](temp, x); - return Module['_BinaryenConst'](module, temp); + return preserveStack(function() { + var tempLiteral = stackAlloc(sizeOfLiteral); + Module['_BinaryenLiteralInt32'](tempLiteral, x); + return Module['_BinaryenConst'](module, tempLiteral); + }); }, 'clz': function(value) { return Module['_BinaryenUnary'](module, Module['ClzInt32'], value); @@ -778,8 +781,11 @@ function wrapModule(module, self) { return Module['_BinaryenStore'](module, 4, offset, align, ptr, value, Module['i64']); }, 'const': function(x, y) { - Module['_BinaryenLiteralInt64'](temp, x, y); - return Module['_BinaryenConst'](module, temp); + return preserveStack(function() { + var tempLiteral = stackAlloc(sizeOfLiteral); + Module['_BinaryenLiteralInt64'](tempLiteral, x, y); + return Module['_BinaryenConst'](module, tempLiteral); + }); }, 'clz': function(value) { return Module['_BinaryenUnary'](module, Module['ClzInt64'], value); @@ -1049,12 +1055,18 @@ function wrapModule(module, self) { return Module['_BinaryenStore'](module, 4, offset, align, ptr, value, Module['f32']); }, 'const': function(x) { - Module['_BinaryenLiteralFloat32'](temp, x); - return Module['_BinaryenConst'](module, temp); + return preserveStack(function() { + var tempLiteral = stackAlloc(sizeOfLiteral); + Module['_BinaryenLiteralFloat32'](tempLiteral, x); + return Module['_BinaryenConst'](module, tempLiteral); + }); }, 'const_bits': function(x) { - Module['_BinaryenLiteralFloat32Bits'](temp, x); - return Module['_BinaryenConst'](module, temp); + return preserveStack(function() { + var tempLiteral = stackAlloc(sizeOfLiteral); + Module['_BinaryenLiteralFloat32Bits'](tempLiteral, x); + return Module['_BinaryenConst'](module, tempLiteral); + }); }, 'neg': function(value) { return Module['_BinaryenUnary'](module, Module['NegFloat32'], value); @@ -1148,12 +1160,18 @@ function wrapModule(module, self) { return Module['_BinaryenStore'](module, 8, offset, align, ptr, value, Module['f64']); }, 'const': function(x) { - Module['_BinaryenLiteralFloat64'](temp, x); - return Module['_BinaryenConst'](module, temp); + return preserveStack(function() { + var tempLiteral = stackAlloc(sizeOfLiteral); + Module['_BinaryenLiteralFloat64'](tempLiteral, x); + return Module['_BinaryenConst'](module, tempLiteral); + }); }, 'const_bits': function(x, y) { - Module['_BinaryenLiteralFloat64Bits'](temp, x, y); - return Module['_BinaryenConst'](module, temp); + return preserveStack(function() { + var tempLiteral = stackAlloc(sizeOfLiteral); + Module['_BinaryenLiteralFloat64Bits'](tempLiteral, x, y); + return Module['_BinaryenConst'](module, tempLiteral); + }); }, 'neg': function(value) { return Module['_BinaryenUnary'](module, Module['NegFloat64'], value); @@ -1248,8 +1266,9 @@ function wrapModule(module, self) { }, 'const': function(i8s) { return preserveStack(function() { - Module['_BinaryenLiteralVec128'](temp, i8sToStack(i8s)); - return Module['_BinaryenConst'](module, temp); + var tempLiteral = stackAlloc(sizeOfLiteral); + Module['_BinaryenLiteralVec128'](tempLiteral, i8sToStack(i8s)); + return Module['_BinaryenConst'](module, tempLiteral); }); }, 'not': function(value) { @@ -1729,7 +1748,7 @@ function wrapModule(module, self) { }); }; self['removeFunctionType'] = function(name) { - return preserveStack(function () { + return preserveStack(function() { return Module['_BinaryenRemoveFunctionType'](module, strToStack(name)); }); }; @@ -1754,7 +1773,7 @@ function wrapModule(module, self) { }); } self['removeGlobal'] = function(name) { - return preserveStack(function () { + return preserveStack(function() { return Module['_BinaryenRemoveGlobal'](module, strToStack(name)); }); } @@ -1900,10 +1919,11 @@ function wrapModule(module, self) { }; self['emitBinary'] = function(sourceMapUrl) { return preserveStack(function() { - Module['_BinaryenModuleAllocateAndWrite'](temp, module, strToStack(sourceMapUrl)); - var binaryPtr = HEAPU32[ temp >>> 2 ]; - var binaryBytes = HEAPU32[(temp >>> 2) + 1]; - var sourceMapPtr = HEAPU32[(temp >>> 2) + 2]; + var tempBuffer = stackAlloc(_BinaryenSizeofAllocateAndWriteResult()); + Module['_BinaryenModuleAllocateAndWrite'](tempBuffer, module, strToStack(sourceMapUrl)); + var binaryPtr = HEAPU32[ tempBuffer >>> 2 ]; + var binaryBytes = HEAPU32[(tempBuffer >>> 2) + 1]; + var sourceMapPtr = HEAPU32[(tempBuffer >>> 2) + 2]; try { var buffer = new Uint8Array(binaryBytes); buffer.set(HEAPU8.subarray(binaryPtr, binaryPtr + binaryBytes)); @@ -2090,7 +2110,18 @@ Module['getExpressionInfo'] = function(expr) { case Module['i32']: value = Module['_BinaryenConstGetValueI32'](expr); break; case Module['i64']: value = { 'low': Module['_BinaryenConstGetValueI64Low'](expr), 'high': Module['_BinaryenConstGetValueI64High'](expr) }; break; case Module['f32']: value = Module['_BinaryenConstGetValueF32'](expr); break; - case Module['f64']: value = Module['_BinaryenConstGetValueF64'](expr); break; + case Module['f64']: value = Module['_BinaryenConstGetValueF64'](expr); break; + case Module['v128']: { + preserveStack(function() { + var tempBuffer = stackAlloc(16); + Module['_BinaryenConstGetValueV128'](expr, tempBuffer); + value = new Array(16); + for (var i = 0 ; i < 16; i++) { + value[i] = HEAPU8[tempBuffer + i]; + } + }); + break; + } default: throw Error('unexpected type: ' + type); } return { @@ -2203,11 +2234,11 @@ Module['getExpressionInfo'] = function(expr) { }; case Module['SIMDShuffleId']: return preserveStack(function() { - var ret = stackAlloc(16); - Module['_BinaryenSIMDShuffleGetMask'](expr, ret); - var mask = []; + var tempBuffer = stackAlloc(16); + Module['_BinaryenSIMDShuffleGetMask'](expr, tempBuffer); + var mask = new Array(16); for (var i = 0 ; i < 16; i++) { - mask[i] = HEAP8[ret + i]; + mask[i] = HEAPU8[tempBuffer + i]; } return { 'id': id, diff --git a/src/parsing.h b/src/parsing.h index 6eecb38f2..97fc88432 100644 --- a/src/parsing.h +++ b/src/parsing.h @@ -40,7 +40,7 @@ struct ParseException { ParseException(std::string text) : text(text), line(-1), col(-1) {} ParseException(std::string text, size_t line, size_t col) : text(text), line(line), col(col) {} - void dump(std::ostream& o) { + void dump(std::ostream& o) const { Colors::magenta(o); o << "["; Colors::red(o); @@ -63,7 +63,7 @@ struct MapParseException { MapParseException() : text("unknown parse error") {} MapParseException(std::string text) : text(text) {} - void dump(std::ostream& o) { + void dump(std::ostream& o) const { Colors::magenta(o); o << "["; Colors::red(o); diff --git a/src/passes/CoalesceLocals.cpp b/src/passes/CoalesceLocals.cpp index 2835744d3..621383ca4 100644 --- a/src/passes/CoalesceLocals.cpp +++ b/src/passes/CoalesceLocals.cpp @@ -275,7 +275,7 @@ std::vector<Index> adjustOrderByPriorities(std::vector<Index>& baseline, std::ve return priorities[x] > priorities[y] || (priorities[x] == priorities[y] && reversed[x] < reversed[y]); }); return ret; -}; +} void CoalesceLocals::pickIndices(std::vector<Index>& indices) { if (numLocals == 0) return; diff --git a/src/passes/Metrics.cpp b/src/passes/Metrics.cpp index b794ea32d..8717a86b7 100644 --- a/src/passes/Metrics.cpp +++ b/src/passes/Metrics.cpp @@ -66,6 +66,7 @@ struct Metrics : public WalkerPass<PostWalker<Metrics, UnifiedExpressionVisitor< counts["[imports]"] = imports.getNumImports(); // add functions counts["[funcs]"] = imports.getNumDefinedFunctions(); + counts["[exports]"] = module->exports.size(); // add memory and table if (module->memory.exists) { Index size = 0; @@ -172,7 +173,7 @@ struct Metrics : public WalkerPass<PostWalker<Metrics, UnifiedExpressionVisitor< o << title << "\n"; for (auto* key : keys) { auto value = counts[key]; - if (value == 0) continue; + if (value == 0 && key[0] != '[') continue; o << " " << left << setw(15) << key << ": " << setw(8) << value; if (lastCounts.count(key)) { diff --git a/src/passes/Strip.cpp b/src/passes/Strip.cpp index 8ab712cb1..40e5a9e9d 100644 --- a/src/passes/Strip.cpp +++ b/src/passes/Strip.cpp @@ -47,11 +47,15 @@ struct Strip : public Pass { ), sections.end() ); - // Clean up internal data structures. - module->clearDebugInfo(); - for (auto& func : module->functions) { - func->clearNames(); - func->clearDebugInfo(); + // If we're cleaning up debug info, clear on the function and module too. + UserSection temp; + temp.name = BinaryConsts::UserSections::Name; + if (decider(temp)) { + module->clearDebugInfo(); + for (auto& func : module->functions) { + func->clearNames(); + func->clearDebugInfo(); + } } } }; @@ -71,4 +75,9 @@ Pass *createStripProducersPass() { }); } +Pass *createStripTargetFeaturesPass() { + return new Strip([&](const UserSection& curr) { + return curr.name == BinaryConsts::UserSections::TargetFeatures; + }); +} } // namespace wasm diff --git a/src/passes/pass.cpp b/src/passes/pass.cpp index 3712bf19e..5d8b8d2c8 100644 --- a/src/passes/pass.cpp +++ b/src/passes/pass.cpp @@ -138,6 +138,7 @@ void PassRegistry::registerPasses() { registerPass("strip", "deprecated; same as strip-debug", createStripDebugPass); registerPass("strip-debug", "strip debug info (including the names section)", createStripDebugPass); registerPass("strip-producers", "strip the wasm producers section", createStripProducersPass); + registerPass("strip-target-features", "strip the wasm target features section", createStripTargetFeaturesPass); registerPass("trap-mode-clamp", "replace trapping operations with clamping semantics", createTrapModeClamp); registerPass("trap-mode-js", "replace trapping operations with js semantics", createTrapModeJS); registerPass("untee", "removes local.tees, replacing them with sets and gets", createUnteePass); diff --git a/src/passes/passes.h b/src/passes/passes.h index ab11721fb..ac7126bd4 100644 --- a/src/passes/passes.h +++ b/src/passes/passes.h @@ -88,6 +88,7 @@ Pass* createSimplifyLocalsNoStructurePass(); Pass* createSimplifyLocalsNoTeeNoStructurePass(); Pass* createStripDebugPass(); Pass* createStripProducersPass(); +Pass* createStripTargetFeaturesPass(); Pass* createSouperifyPass(); Pass* createSouperifySingleUsePass(); Pass* createSpillPointersPass(); diff --git a/src/support/colors.h b/src/support/colors.h index fb5267ce1..6761639d9 100644 --- a/src/support/colors.h +++ b/src/support/colors.h @@ -52,6 +52,6 @@ inline void green(std::ostream& stream) {} inline void blue(std::ostream& stream) {} inline void bold(std::ostream& stream) {} #endif -}; +} #endif // wasm_support_color_h diff --git a/src/support/file.cpp b/src/support/file.cpp index 19401b21d..2fe636cfd 100644 --- a/src/support/file.cpp +++ b/src/support/file.cpp @@ -21,6 +21,17 @@ #include <cstdint> #include <limits> +std::vector<char> wasm::read_stdin(Flags::DebugOption debug) { + if (debug == Flags::Debug) std::cerr << "Loading stdin..." << std::endl; + std::vector<char> input; + char c; + while (std::cin.get(c) && !std::cin.eof()) { + input.push_back(c); + } + return input; +} + + template<typename T> T wasm::read_file(const std::string& filename, Flags::BinaryOption binary, Flags::DebugOption debug) { if (debug == Flags::Debug) std::cerr << "Loading '" << filename << "'..." << std::endl; @@ -84,4 +95,3 @@ size_t wasm::file_size(std::string filename) { std::ifstream infile(filename, std::ifstream::ate | std::ifstream::binary); return infile.tellg(); } - diff --git a/src/support/file.h b/src/support/file.h index e94d23fad..cb9c82ca9 100644 --- a/src/support/file.h +++ b/src/support/file.h @@ -39,6 +39,8 @@ namespace Flags { }; } +std::vector<char> read_stdin(Flags::DebugOption); + template<typename T> T read_file(const std::string& filename, Flags::BinaryOption binary, Flags::DebugOption debug); // Declare the valid explicit specializations. diff --git a/src/tools/spec-wrapper.h b/src/tools/spec-wrapper.h index a42230fc1..77db8a0f4 100644 --- a/src/tools/spec-wrapper.h +++ b/src/tools/spec-wrapper.h @@ -34,7 +34,7 @@ static std::string generateSpecWrapper(Module& wasm) { case i64: ret += "(i64.const 0)"; break; case f32: ret += "(f32.const 0)"; break; case f64: ret += "(f64.const 0)"; break; - case v128: ret += "(v128.const i32 0 0 0 0)"; break; + case v128: ret += "(v128.const i32x4 0 0 0 0)"; break; case none: case unreachable: WASM_UNREACHABLE(); } diff --git a/src/tools/tool-options.h b/src/tools/tool-options.h index 5620883ec..671085a4e 100644 --- a/src/tools/tool-options.h +++ b/src/tools/tool-options.h @@ -39,6 +39,16 @@ struct ToolOptions : public Options { [this](Options *o, const std::string& arguments) { passOptions.features = FeatureSet::All; }) + .add("--enable-sign-ext", "", "Enable sign extension operations", + Options::Arguments::Zero, + [this](Options *o, const std::string& arguments) { + passOptions.features.setSignExt(); + }) + .add("--disable-sign-ext", "", "Disable sign extension operations", + Options::Arguments::Zero, + [this](Options *o, const std::string& arguments) { + passOptions.features.setSignExt(false); + }) .add("--enable-threads", "", "Enable atomic operations", Options::Arguments::Zero, [this](Options *o, const std::string& arguments) { diff --git a/src/tools/wasm-emscripten-finalize.cpp b/src/tools/wasm-emscripten-finalize.cpp index 42fc1e4db..2aa5de46f 100644 --- a/src/tools/wasm-emscripten-finalize.cpp +++ b/src/tools/wasm-emscripten-finalize.cpp @@ -47,7 +47,6 @@ int main(int argc, const char *argv[]) { bool emitBinary = true; bool debugInfo = false; bool legalizeJavaScriptFFI = true; - unsigned numReservedFunctionPointers = 0; uint64_t globalBase = INVALID_BASE; uint64_t initialStackPointer = INVALID_BASE; Options options("wasm-emscripten-finalize", @@ -70,14 +69,6 @@ int main(int argc, const char *argv[]) { [&emitBinary](Options*, const std::string& ) { emitBinary = false; }) - .add("--emscripten-reserved-function-pointers", "", - "Number of reserved function pointers for emscripten addFunction " - "support", - Options::Arguments::One, - [&numReservedFunctionPointers](Options *, - const std::string &argument) { - numReservedFunctionPointers = std::stoi(argument); - }) .add("--global-base", "", "The address at which static globals were placed", Options::Arguments::One, [&globalBase](Options*, const std::string&argument ) { @@ -203,7 +194,6 @@ int main(int argc, const char *argv[]) { } generator.generateDynCallThunks(); - generator.generateJSCallThunks(numReservedFunctionPointers); // Legalize the wasm. { @@ -214,11 +204,12 @@ int main(int argc, const char *argv[]) { legalizeJavaScriptFFI ? ABI::LegalizationLevel::Full : ABI::LegalizationLevel::Minimal )); + passRunner.add("strip-target-features"); passRunner.run(); } // Substantial changes to the wasm are done, enough to create the metadata. - std::string metadata = generator.generateEmscriptenMetadata(dataSize, initializerFunctions, numReservedFunctionPointers); + std::string metadata = generator.generateEmscriptenMetadata(dataSize, initializerFunctions); // Finally, separate out data segments if relevant (they may have been needed // for metadata). diff --git a/src/wasm-binary.h b/src/wasm-binary.h index a875db791..32166af00 100644 --- a/src/wasm-binary.h +++ b/src/wasm-binary.h @@ -345,6 +345,7 @@ extern const char* SourceMapUrl; extern const char* Dylink; extern const char* Linking; extern const char* Producers; +extern const char* TargetFeatures; enum Subsection { NameFunction = 1, diff --git a/src/wasm-emscripten.h b/src/wasm-emscripten.h index 275c809fd..acb2994ad 100644 --- a/src/wasm-emscripten.h +++ b/src/wasm-emscripten.h @@ -46,14 +46,8 @@ public: // and restore functions. void replaceStackPointerGlobal(); - // Create thunks to support emscripten's addFunction functionality. Creates (# - // of reserved function pointers) thunks for each indirectly called function - // signature. - void generateJSCallThunks(unsigned numReservedFunctionPointers); - std::string generateEmscriptenMetadata( - Address staticBump, std::vector<Name> const& initializerFunctions, - unsigned numReservedFunctionPointers); + Address staticBump, std::vector<Name> const& initializerFunctions); void fixInvokeFunctionNames(); diff --git a/src/wasm-features.h b/src/wasm-features.h new file mode 100644 index 000000000..4dd806e28 --- /dev/null +++ b/src/wasm-features.h @@ -0,0 +1,70 @@ +/* + * Copyright 2019 WebAssembly Community Group participants + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef wasm_features_h +#define wasm_features_h + +#include <stdint.h> + +struct FeatureSet { + enum Feature : uint32_t { + MVP = 0, + Atomics = 1 << 0, + MutableGlobals = 1 << 1, + TruncSat = 1 << 2, + SIMD = 1 << 3, + BulkMemory = 1 << 4, + SignExt = 1 << 5, + All = Atomics | MutableGlobals | TruncSat | SIMD | BulkMemory | SignExt + }; + + FeatureSet() : features(MVP) {} + FeatureSet(uint32_t features) : features(features) {} + + bool isMVP() const { return features == MVP; } + bool has(Feature f) { return (features & f) == f; } + bool hasAtomics() const { return features & Atomics; } + bool hasMutableGlobals() const { return features & MutableGlobals; } + bool hasTruncSat() const { return features & TruncSat; } + bool hasSIMD() const { return features & SIMD; } + bool hasBulkMemory() const { return features & BulkMemory; } + bool hasSignExt() const { return features & SignExt; } + bool hasAll() const { return features & All; } + + void makeMVP() { features = MVP; } + void set(Feature f, bool v = true) { features = v ? (features | f) : (features & ~f); } + void setAtomics(bool v = true) { set(Atomics, v); } + void setMutableGlobals(bool v = true) { set(MutableGlobals, v); } + void setTruncSat(bool v = true) { set(TruncSat, v); } + void setSIMD(bool v = true) { set(SIMD, v); } + void setBulkMemory(bool v = true) { set(BulkMemory, v); } + void setSignExt(bool v = true) { set(SignExt, v); } + void setAll(bool v = true) { features = v ? All : MVP; } + + bool operator<=(const FeatureSet& other) { + return !(features & ~other.features); + } + + FeatureSet& operator|=(const FeatureSet& other) { + features |= other.features; + return *this; + } + +private: + uint32_t features; +}; + +#endif // wasm_features_h diff --git a/src/wasm-io.h b/src/wasm-io.h index 2dfdbae6c..6d8dcc6e5 100644 --- a/src/wasm-io.h +++ b/src/wasm-io.h @@ -42,11 +42,15 @@ public: // read binary void readBinary(std::string filename, Module& wasm, std::string sourceMapFilename=""); - // read text or binary, checking the contents for what it is + // read text or binary, checking the contents for what it is. If `filename` is + // empty, read from stdin. void read(std::string filename, Module& wasm, std::string sourceMapFilename=""); // check whether a file is a wasm binary bool isBinaryFile(std::string filename); + +private: + void readStdin(Module& wasm, std::string sourceMapFilename); }; class ModuleWriter : public ModuleIO { diff --git a/src/wasm-s-parser.h b/src/wasm-s-parser.h index f0ed79409..07de235a2 100644 --- a/src/wasm-s-parser.h +++ b/src/wasm-s-parser.h @@ -152,6 +152,7 @@ private: return stringToType(str.str, allowError, prefix); } Type stringToType(const char* str, bool allowError=false, bool prefix=false); + Type stringToLaneType(const char* str); bool isType(cashew::IString str) { return stringToType(str, true) != none; } diff --git a/src/wasm-type.h b/src/wasm-type.h index 0b99fa53a..60253f6ab 100644 --- a/src/wasm-type.h +++ b/src/wasm-type.h @@ -17,6 +17,8 @@ #ifndef wasm_wasm_type_h #define wasm_wasm_type_h +#include "wasm-features.h" + namespace wasm { enum Type { @@ -33,6 +35,7 @@ enum Type { const char* printType(Type type); unsigned getTypeSize(Type type); +FeatureSet getFeatures(Type type); Type getType(unsigned size, bool float_); Type getReachableType(Type a, Type b); bool isConcreteType(Type type); diff --git a/src/wasm.h b/src/wasm.h index a16dab478..ab9d7c816 100644 --- a/src/wasm.h +++ b/src/wasm.h @@ -35,49 +35,10 @@ #include "mixed_arena.h" #include "support/name.h" #include "wasm-type.h" +#include "wasm-features.h" namespace wasm { -struct FeatureSet { - enum Feature : uint32_t { - MVP = 0, - Atomics = 1 << 0, - MutableGlobals = 1 << 1, - TruncSat = 1 << 2, - SIMD = 1 << 3, - BulkMemory = 1 << 4, - All = Atomics | MutableGlobals | TruncSat | SIMD | BulkMemory - }; - - FeatureSet() : features(MVP) {} - FeatureSet(uint32_t features) : features(features) {} - - bool isMVP() const { return features == MVP; } - bool has(Feature f) { return (features & f) == f; } - bool hasAtomics() const { return features & Atomics; } - bool hasMutableGlobals() const { return features & MutableGlobals; } - bool hasTruncSat() const { return features & TruncSat; } - bool hasSIMD() const { return features & SIMD; } - bool hasBulkMemory() const { return features & BulkMemory; } - bool hasAll() const { return features & All; } - - void makeMVP() { features = MVP; } - void set(Feature f, bool v = true) { features = v ? (features | f) : (features & ~f); } - void setAtomics(bool v = true) { set(Atomics, v); } - void setMutableGlobals(bool v = true) { set(MutableGlobals, v); } - void setTruncSat(bool v = true) { set(TruncSat, v); } - void setSIMD(bool v = true) { set(SIMD, v); } - void setBulkMemory(bool v = true) { set(BulkMemory, v); } - void setAll(bool v = true) { features = v ? All : MVP; } - - bool operator<=(const FeatureSet& other) { - return !(features & ~other.features); - } - -private: - uint32_t features; -}; - // An index in a wasm module typedef uint32_t Index; @@ -114,7 +75,6 @@ enum UnaryOp { PromoteFloat32, // f32 to f64 DemoteFloat64, // f64 to f32 ReinterpretInt32, ReinterpretInt64, // reinterpret bits to float - // The following sign-extention operators go along with wasm atomics support. // Extend signed subword-sized integer. This differs from e.g. ExtendSInt32 // because the input integer is in an i64 value insetad of an i32 value. ExtendS8Int32, ExtendS16Int32, ExtendS8Int64, ExtendS16Int64, ExtendS32Int64, @@ -268,7 +228,7 @@ public: void finalize() {} template<class T> - bool is() { + bool is() const { return int(_id) == int(T::SpecificId); } @@ -277,11 +237,22 @@ public: return int(_id) == int(T::SpecificId) ? (T*)this : nullptr; } + template <class T> + const T* dynCast() const { + return int(_id) == int(T::SpecificId) ? (const T*)this : nullptr; + } + template<class T> T* cast() { assert(int(_id) == int(T::SpecificId)); return (T*)this; } + + template<class T> + const T* cast() const { + assert(int(_id) == int(T::SpecificId)); + return (const T*)this; + } }; const char* getExpressionName(Expression* curr); @@ -956,7 +927,7 @@ private: std::map<Name, Global*> globalsMap; public: - Module() = default;; + Module() = default; FunctionType* getFunctionType(Name name); Export* getExport(Name name); diff --git a/src/wasm/literal.cpp b/src/wasm/literal.cpp index bc45f5834..b374566d1 100644 --- a/src/wasm/literal.cpp +++ b/src/wasm/literal.cpp @@ -243,7 +243,7 @@ std::ostream& operator<<(std::ostream& o, Literal literal) { case Type::i64: o << literal.i64; break; case Type::f32: literal.printFloat(o, literal.getf32()); break; case Type::f64: literal.printDouble(o, literal.getf64()); break; - case Type::v128: o << "i32 "; literal.printVec128(o, literal.getv128()); break; + case Type::v128: o << "i32x4 "; literal.printVec128(o, literal.getv128()); break; case Type::unreachable: WASM_UNREACHABLE(); } restoreNormalColor(o); diff --git a/src/wasm/wasm-emscripten.cpp b/src/wasm/wasm-emscripten.cpp index 390266d44..ea24b945d 100644 --- a/src/wasm/wasm-emscripten.cpp +++ b/src/wasm/wasm-emscripten.cpp @@ -47,10 +47,15 @@ void addExportedFunction(Module& wasm, Function* function) { } Global* EmscriptenGlueGenerator::getStackPointerGlobal() { - // Assumption: first global is __stack_pointer - // TODO(sbc): Once mutable globals are a thing we shouldn't need this - // at all since we can simply export __stack_pointer. - return wasm.globals[0].get(); + // Assumption: The first non-imported global is global is __stack_pointer + // TODO(sbc): Find a better way to discover the stack pointer. Perhaps the + // linker could export it by name? + for (auto& g : wasm.globals) { + if (!g->imported()) { + return g.get(); + } + } + Fatal() << "stack pointer global not found"; } Expression* EmscriptenGlueGenerator::generateLoadStackPointer() { @@ -157,6 +162,9 @@ Function* EmscriptenGlueGenerator::generateMemoryGrowthFunction() { void EmscriptenGlueGenerator::generateStackInitialization(Address addr) { auto* stackPointer = getStackPointerGlobal(); + assert(!stackPointer->imported()); + if (!stackPointer->init || !stackPointer->init->is<Const>()) + Fatal() << "stack pointer global is not assignable"; stackPointer->init->cast<Const>()->value = Literal(int32_t(addr)); } @@ -270,109 +278,6 @@ void EmscriptenGlueGenerator::replaceStackPointerGlobal() { wasm.removeGlobal(stackPointer->name); } -struct JSCallWalker : public PostWalker<JSCallWalker> { - Module &wasm; - JSCallWalker(Module &_wasm) : wasm(_wasm) { - if (wasm.table.segments.size() == 0) { - auto emptySegment = - wasm.allocator.alloc<Const>()->set(Literal(uint32_t(0))); - wasm.table.segments.emplace_back(emptySegment); - } - const auto& tableSegmentData = wasm.table.segments[0].data; - - jsCallStartIndex = - wasm.table.segments[0].offset->cast<Const>()->value.getInteger(); - // Check if jsCalls have already been created - for (Index i = 0; i < tableSegmentData.size(); ++i) { - if (tableSegmentData[i].startsWith("jsCall_")) { - jsCallStartIndex += i; - return; - } - } - jsCallStartIndex += tableSegmentData.size(); - } - - // Gather all function signatures used in call_indirect, because any of them - // can be used to call function pointers created by emscripten's addFunction. - void visitCallIndirect(CallIndirect *curr) { - // dynCall thunks are generated in binaryen and call_indirect instructions - // within them cannot be used to call function pointers returned by - // emscripten's addFunction. - if (!getFunction()->name.startsWith("dynCall_")) { - indirectlyCallableSigs.insert( - getSig(wasm.getFunctionType(curr->fullType))); - } - } - - bool createJSCallThunks; - Index jsCallStartIndex; - // Function type signatures used in call_indirect instructions - std::set<std::string> indirectlyCallableSigs; -}; - -JSCallWalker getJSCallWalker(Module& wasm) { - JSCallWalker walker(wasm); - walker.walkModule(&wasm); - return walker; -} - -void EmscriptenGlueGenerator::generateJSCallThunks( - unsigned numReservedFunctionPointers) { - if (numReservedFunctionPointers == 0) - return; - - JSCallWalker walker = getJSCallWalker(wasm); - auto& tableSegmentData = wasm.table.segments[0].data; - unsigned numEntriesAdded = 0; - for (std::string sig : walker.indirectlyCallableSigs) { - // Add imports for jsCall_sig (e.g. jsCall_vi). - // Imported jsCall_sig functions have their first parameter as an index to - // the function table, so we should prepend an 'i' to parameters' signature - // (e.g. If the signature of the callee is 'vi', the imported jsCall_vi - // function would have signature 'vii'.) - std::string importSig = std::string(1, sig[0]) + 'i' + sig.substr(1); - FunctionType *importType = ensureFunctionType(importSig, &wasm); - auto import = new Function; - import->name = import->base = "jsCall_" + sig; - import->module = ENV; - import->type = importType->name; - FunctionTypeUtils::fillFunction(import, importType); - wasm.addFunction(import); - FunctionType *funcType = ensureFunctionType(sig, &wasm); - - // Create jsCall_sig_index thunks (e.g. jsCall_vi_0, jsCall_vi_1, ...) - // e.g. If # of reserved function pointers (given by a command line - // argument) is 3 and there are two possible signature 'vi' and 'ii', the - // genereated thunks will be jsCall_vi_0, jsCall_vi_1, jsCall_vi_2, - // jsCall_ii_0, jsCall_ii_1, and jsCall_ii_2. - for (unsigned fp = 0; fp < numReservedFunctionPointers; ++fp) { - std::vector<NameType> params; - int p = 0; - for (const auto& ty : funcType->params) { - params.emplace_back(std::to_string(p++), ty); - } - Function* f = builder.makeFunction( - std::string("jsCall_") + sig + "_" + std::to_string(fp), - std::move(params), funcType->result, {}); - std::vector<Expression*> args; - args.push_back(builder.makeConst(Literal(fp))); - for (unsigned i = 0; i < funcType->params.size(); ++i) { - args.push_back(builder.makeGetLocal(i, funcType->params[i])); - } - Expression* call = - builder.makeCall(import->name, args, funcType->result); - f->body = call; - wasm.addFunction(f); - tableSegmentData.push_back(f->name); - numEntriesAdded++; - } - } - wasm.table.initial.addr += numEntriesAdded; - if (wasm.table.max != Table::kUnlimitedSize) { - wasm.table.max.addr += numEntriesAdded; - } -} - std::vector<Address> getSegmentOffsets(Module& wasm) { std::vector<Address> segmentOffsets; for (unsigned i = 0; i < wasm.memory.segments.size(); ++i) { @@ -780,8 +685,7 @@ void printSet(std::ostream& o, C& c) { } std::string EmscriptenGlueGenerator::generateEmscriptenMetadata( - Address staticBump, std::vector<Name> const& initializerFunctions, - unsigned numReservedFunctionPointers) { + Address staticBump, std::vector<Name> const& initializerFunctions) { bool commaFirst; auto nextElement = [&commaFirst]() { if (commaFirst) { @@ -844,18 +748,6 @@ std::string EmscriptenGlueGenerator::generateEmscriptenMetadata( meta << "\n ],\n"; } - if (numReservedFunctionPointers) { - JSCallWalker jsCallWalker = getJSCallWalker(wasm); - meta << " \"jsCallStartIndex\": " << jsCallWalker.jsCallStartIndex << ",\n"; - meta << " \"jsCallFuncType\": ["; - commaFirst = true; - for (std::string sig : jsCallWalker.indirectlyCallableSigs) { - meta << nextElement(); - meta << "\"" << sig << "\""; - } - meta << "\n ],\n"; - } - // Avoid adding duplicate imports to `declares' or `invokeFuncs`. Even // though we might import the same function multiple times (i.e. with // different sigs) we only need to list is in the metadata once. @@ -870,8 +762,7 @@ std::string EmscriptenGlueGenerator::generateEmscriptenMetadata( ModuleUtils::iterImportedFunctions(wasm, [&](Function* import) { if (emJsWalker.codeByName.count(import->base.str) == 0 && !import->base.startsWith(EMSCRIPTEN_ASM_CONST.str) && - !import->base.startsWith("invoke_") && - !import->base.startsWith("jsCall_")) { + !import->base.startsWith("invoke_")) { if (declares.insert(import->base.str).second) { meta << nextElement() << '"' << import->base.str << '"'; } diff --git a/src/wasm/wasm-io.cpp b/src/wasm/wasm-io.cpp index 95ffe6e89..057798d2e 100644 --- a/src/wasm/wasm-io.cpp +++ b/src/wasm/wasm-io.cpp @@ -30,18 +30,21 @@ namespace wasm { -void ModuleReader::readText(std::string filename, Module& wasm) { - if (debug) std::cerr << "reading text from " << filename << "\n"; - auto input(read_file<std::string>(filename, Flags::Text, debug ? Flags::Debug : Flags::Release)); +static void readTextData(std::string& input, Module& wasm) { SExpressionParser parser(const_cast<char*>(input.c_str())); Element& root = *parser.root; SExpressionWasmBuilder builder(wasm, *root[0]); + } -void ModuleReader::readBinary(std::string filename, Module& wasm, - std::string sourceMapFilename) { - if (debug) std::cerr << "reading binary from " << filename << "\n"; - auto input(read_file<std::vector<char>>(filename, Flags::Binary, debug ? Flags::Debug : Flags::Release)); +void ModuleReader::readText(std::string filename, Module& wasm) { + if (debug) std::cerr << "reading text from " << filename << "\n"; + auto input(read_file<std::string>(filename, Flags::Text, debug ? Flags::Debug : Flags::Release)); + readTextData(input, wasm); +} + +static void readBinaryData(std::vector<char>& input, Module& wasm, + std::string sourceMapFilename, bool debug) { std::unique_ptr<std::ifstream> sourceMapStream; WasmBinaryBuilder parser(wasm, input, debug); if (sourceMapFilename.size()) { @@ -55,6 +58,13 @@ void ModuleReader::readBinary(std::string filename, Module& wasm, } } +void ModuleReader::readBinary(std::string filename, Module& wasm, + std::string sourceMapFilename) { + if (debug) std::cerr << "reading binary from " << filename << "\n"; + auto input(read_file<std::vector<char>>(filename, Flags::Binary, debug ? Flags::Debug : Flags::Release)); + readBinaryData(input, wasm, sourceMapFilename, debug); +} + bool ModuleReader::isBinaryFile(std::string filename) { std::ifstream infile; std::ios_base::openmode flags = std::ifstream::in | std::ifstream::binary; @@ -67,6 +77,11 @@ bool ModuleReader::isBinaryFile(std::string filename) { void ModuleReader::read(std::string filename, Module& wasm, std::string sourceMapFilename) { + // empty filename means read from stdin + if (!filename.size()) { + readStdin(wasm, sourceMapFilename); + return; + } if (isBinaryFile(filename)) { readBinary(filename, wasm, sourceMapFilename); } else { @@ -78,6 +93,23 @@ void ModuleReader::read(std::string filename, Module& wasm, } } +// TODO: reading into a vector<char> then copying into a string is unnecessarily +// inefficient. It would be better to read just once into a stringstream. +void ModuleReader::readStdin(Module& wasm, std::string sourceMapFilename) { + std::vector<char> input = read_stdin(debug ? Flags::Debug : Flags::Release); + if (input.size() >= 4 && input[0] == '\0' && input[1] == 'a' && + input[2] == 's' && input[3] == 'm') { + readBinaryData(input, wasm, sourceMapFilename, debug); + } else { + std::ostringstream s; + s.write(input.data(), input.size()); + s << '\0'; + std::string input_str = s.str(); + readTextData(input_str, wasm); + } +} + + void ModuleWriter::writeText(Module& wasm, Output& output) { WasmPrinter::printModule(&wasm, output.getStream()); } diff --git a/src/wasm/wasm-s-parser.cpp b/src/wasm/wasm-s-parser.cpp index 7fd4679b1..1067264f7 100644 --- a/src/wasm/wasm-s-parser.cpp +++ b/src/wasm/wasm-s-parser.cpp @@ -641,6 +641,16 @@ Type SExpressionWasmBuilder::stringToType(const char* str, bool allowError, bool throw ParseException("invalid wasm type"); } +Type SExpressionWasmBuilder::stringToLaneType(const char* str) { + if (strcmp(str, "i8x16") == 0) return i32; + if (strcmp(str, "i16x8") == 0) return i32; + if (strcmp(str, "i32x4") == 0) return i32; + if (strcmp(str, "i64x2") == 0) return i64; + if (strcmp(str, "f32x4") == 0) return f32; + if (strcmp(str, "f64x2") == 0) return f64; + return none; +} + Function::DebugLocation SExpressionWasmBuilder::getDebugLocation(const SourceLocation& loc) { IString file = loc.filename; auto& debugInfoFileNames = wasm.debugInfoFileNames; @@ -864,6 +874,20 @@ Expression* SExpressionWasmBuilder::makeThenOrElse(Element& s) { return ret; } +template<int Lanes> +static Literal makeLanes(Element& s, MixedArena& allocator, Type lane_t) { + std::array<Literal, Lanes> lanes; + for (size_t i = 0; i < Lanes; ++i) { + Expression* lane = parseConst(s[i+2]->str(), lane_t, allocator); + if (lane) { + lanes[i] = lane->cast<Const>()->value; + } else { + throw ParseException("Could not parse v128 lane"); + } + } + return Literal(lanes); +} + Expression* SExpressionWasmBuilder::makeConst(Element& s, Type type) { if (type != v128) { auto ret = parseConst(s[1]->str(), type, allocator); @@ -872,57 +896,35 @@ Expression* SExpressionWasmBuilder::makeConst(Element& s, Type type) { } auto ret = allocator.alloc<Const>(); - auto getLiteral = [](Expression* expr) { - if (expr == nullptr) { - throw ParseException("Could not parse v128 lane"); - } - return expr->cast<Const>()->value; - }; - Type lane_t = stringToType(s[1]->str()); + Type lane_t = stringToLaneType(s[1]->str().str); size_t lanes = s.size() - 2; switch (lanes) { case 2: { if (lane_t != i64 && lane_t != f64) { throw ParseException("Unexpected v128 literal lane type"); } - std::array<Literal, 2> lanes; - for (size_t i = 0; i < 2; ++i) { - lanes[i] = getLiteral(parseConst(s[i+2]->str(), lane_t, allocator)); - } - ret->value = Literal(lanes); + ret->value = makeLanes<2>(s, allocator, lane_t); break; } case 4: { if (lane_t != i32 && lane_t != f32) { throw ParseException("Unexpected v128 literal lane type"); } - std::array<Literal, 4> lanes; - for (size_t i = 0; i < 4; ++i) { - lanes[i] = getLiteral(parseConst(s[i+2]->str(), lane_t, allocator)); - } - ret->value = Literal(lanes); + ret->value = makeLanes<4>(s, allocator, lane_t); break; } case 8: { if (lane_t != i32) { throw ParseException("Unexpected v128 literal lane type"); } - std::array<Literal, 8> lanes; - for (size_t i = 0; i < 8; ++i) { - lanes[i] = getLiteral(parseConst(s[i+2]->str(), lane_t, allocator)); - } - ret->value = Literal(lanes); + ret->value = makeLanes<8>(s, allocator, lane_t); break; } case 16: { if (lane_t != i32) { throw ParseException("Unexpected v128 literal lane type"); } - std::array<Literal, 16> lanes; - for (size_t i = 0; i < 16; ++i) { - lanes[i] = getLiteral(parseConst(s[i+2]->str(), lane_t, allocator)); - } - ret->value = Literal(lanes); + ret->value = makeLanes<16>(s, allocator, lane_t); break; } default: throw ParseException("Unexpected number of lanes in v128 literal"); diff --git a/src/wasm/wasm-type.cpp b/src/wasm/wasm-type.cpp index f9371ffab..fc393ed98 100644 --- a/src/wasm/wasm-type.cpp +++ b/src/wasm/wasm-type.cpp @@ -15,6 +15,7 @@ */ #include "wasm-type.h" +#include "wasm-features.h" #include <cstdlib> #include "compiler-support.h" @@ -47,6 +48,13 @@ unsigned getTypeSize(Type type) { WASM_UNREACHABLE(); } +FeatureSet getFeatures(Type type) { + if (type == v128) { + return FeatureSet::SIMD; + } + return FeatureSet(); +} + Type getType(unsigned size, bool float_) { if (size < 4) return Type::i32; if (size == 4) return float_ ? Type::f32 : Type::i32; diff --git a/src/wasm/wasm-validator.cpp b/src/wasm/wasm-validator.cpp index 84a0efbff..91e7e7398 100644 --- a/src/wasm/wasm-validator.cpp +++ b/src/wasm/wasm-validator.cpp @@ -1081,12 +1081,17 @@ void FunctionValidator::visitHost(Host* curr) { } void FunctionValidator::visitFunction(Function* curr) { + FeatureSet typeFeatures = getFeatures(curr->result); for (auto type : curr->params) { + typeFeatures |= getFeatures(type); shouldBeTrue(isConcreteType(type), curr, "params must be concretely typed"); } for (auto type : curr->vars) { + typeFeatures |= getFeatures(type); shouldBeTrue(isConcreteType(type), curr, "vars must be concretely typed"); } + shouldBeTrue(typeFeatures <= info.features, curr, + "all used types should be allowed"); // if function has no result, it is ignored // if body is unreachable, it might be e.g. a return if (curr->body->type != unreachable) { diff --git a/src/wasm/wasm.cpp b/src/wasm/wasm.cpp index c12481760..c99bb0994 100644 --- a/src/wasm/wasm.cpp +++ b/src/wasm/wasm.cpp @@ -32,6 +32,7 @@ const char* SourceMapUrl = "sourceMappingURL"; const char* Dylink = "dylink"; const char* Linking = "linking"; const char* Producers = "producers"; +const char* TargetFeatures = "target_features"; } } diff --git a/test/binaryen.js/kitchen-sink.js.txt b/test/binaryen.js/kitchen-sink.js.txt index ae9e90509..83e3eee20 100644 --- a/test/binaryen.js/kitchen-sink.js.txt +++ b/test/binaryen.js/kitchen-sink.js.txt @@ -322,137 +322,137 @@ getExpressionInfo(f64.const)={"id":14,"type":4,"value":9.5} ) (drop (v128.not - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i8x16.neg - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i8x16.any_true - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i8x16.all_true - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i16x8.neg - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i16x8.any_true - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i16x8.all_true - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i32x4.neg - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i32x4.any_true - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i32x4.all_true - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i64x2.neg - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i64x2.any_true - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i64x2.all_true - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f32x4.abs - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f32x4.neg - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f32x4.sqrt - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f64x2.abs - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f64x2.neg - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f64x2.sqrt - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i32x4.trunc_sat_f32x4_s - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i32x4.trunc_sat_f32x4_u - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i64x2.trunc_sat_f64x2_s - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i64x2.trunc_sat_f64x2_u - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f32x4.convert_i32x4_s - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f32x4.convert_i32x4_u - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f64x2.convert_i64x2_s - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f64x2.convert_i64x2_u - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop @@ -649,610 +649,610 @@ getExpressionInfo(f64.const)={"id":14,"type":4,"value":9.5} ) (drop (i8x16.eq - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i8x16.ne - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i8x16.lt_s - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i8x16.lt_u - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i8x16.gt_s - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i8x16.gt_u - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i8x16.le_s - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i8x16.le_u - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i8x16.ge_s - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i8x16.ge_u - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i16x8.eq - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i16x8.ne - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i16x8.lt_s - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i16x8.lt_u - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i16x8.gt_s - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i16x8.gt_u - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i16x8.le_s - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i16x8.le_u - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i16x8.ge_s - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i16x8.ge_u - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i32x4.eq - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i32x4.ne - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i32x4.lt_s - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i32x4.lt_u - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i32x4.gt_s - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i32x4.gt_u - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i32x4.le_s - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i32x4.le_u - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i32x4.ge_s - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i32x4.ge_u - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f32x4.eq - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f32x4.ne - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f32x4.lt - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f32x4.gt - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f32x4.le - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f32x4.ge - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f32x4.ge - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f64x2.ne - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f64x2.lt - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f64x2.gt - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f64x2.le - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f64x2.ge - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) ( - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ( - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ( - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) (drop (i8x16.add - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i8x16.add_saturate_s - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i8x16.add_saturate_u - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i8x16.sub - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i8x16.sub_saturate_s - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i8x16.sub_saturate_u - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i8x16.mul - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i16x8.add - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i16x8.add_saturate_s - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i16x8.add_saturate_u - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i16x8.sub - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i16x8.sub_saturate_s - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i16x8.sub_saturate_u - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i16x8.mul - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i32x4.add - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i32x4.sub - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i32x4.mul - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i64x2.add - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i64x2.sub - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f32x4.add - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f32x4.sub - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f32x4.mul - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f32x4.div - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f32x4.min - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f32x4.max - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f64x2.add - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f64x2.sub - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f64x2.mul - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f64x2.div - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f64x2.min - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f64x2.max - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i8x16.extract_lane_s 1 - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i8x16.extract_lane_u 1 - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i16x8.extract_lane_s 1 - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i16x8.extract_lane_u 1 - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i32x4.extract_lane 1 - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i64x2.extract_lane 1 - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f32x4.extract_lane 1 - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f64x2.extract_lane 1 - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i16x8.replace_lane 1 - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) (i32.const 42) ) ) (drop (i8x16.replace_lane 1 - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) (i32.const 42) ) ) (drop (i32x4.replace_lane 1 - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) (i32.const 42) ) ) (drop (i64x2.replace_lane 1 - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) (i64.const 184683593770) ) ) (drop (f32x4.replace_lane 1 - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) (f32.const 42) ) ) (drop (f64x2.replace_lane 1 - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) (f64.const 42) ) ) (drop (i8x16.shl - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) (i32.const 1) ) ) (drop (i8x16.shr_s - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) (i32.const 1) ) ) (drop (i8x16.shr_u - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) (i32.const 1) ) ) (drop (i16x8.shl - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) (i32.const 1) ) ) (drop (i16x8.shr_s - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) (i32.const 1) ) ) (drop (i16x8.shr_u - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) (i32.const 1) ) ) (drop (i32x4.shl - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) (i32.const 1) ) ) (drop (i32x4.shr_s - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) (i32.const 1) ) ) (drop (i32x4.shr_u - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) (i32.const 1) ) ) (drop (i64x2.shl - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) (i32.const 1) ) ) (drop (i64x2.shr_s - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) (i32.const 1) ) ) (drop (i64x2.shr_u - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) (i32.const 1) ) ) (drop (v8x16.shuffle 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (v128.bitselect - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (memory.init 0 @@ -3644,137 +3644,137 @@ getExpressionInfo(f64.const)={"id":14,"type":4,"value":9.5} ) (drop (v128.not - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i8x16.neg - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i8x16.any_true - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i8x16.all_true - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i16x8.neg - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i16x8.any_true - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i16x8.all_true - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i32x4.neg - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i32x4.any_true - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i32x4.all_true - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i64x2.neg - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i64x2.any_true - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i64x2.all_true - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f32x4.abs - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f32x4.neg - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f32x4.sqrt - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f64x2.abs - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f64x2.neg - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f64x2.sqrt - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i32x4.trunc_sat_f32x4_s - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i32x4.trunc_sat_f32x4_u - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i64x2.trunc_sat_f64x2_s - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i64x2.trunc_sat_f64x2_u - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f32x4.convert_i32x4_s - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f32x4.convert_i32x4_u - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f64x2.convert_i64x2_s - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f64x2.convert_i64x2_u - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop @@ -3971,610 +3971,610 @@ getExpressionInfo(f64.const)={"id":14,"type":4,"value":9.5} ) (drop (i8x16.eq - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i8x16.ne - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i8x16.lt_s - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i8x16.lt_u - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i8x16.gt_s - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i8x16.gt_u - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i8x16.le_s - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i8x16.le_u - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i8x16.ge_s - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i8x16.ge_u - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i16x8.eq - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i16x8.ne - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i16x8.lt_s - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i16x8.lt_u - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i16x8.gt_s - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i16x8.gt_u - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i16x8.le_s - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i16x8.le_u - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i16x8.ge_s - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i16x8.ge_u - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i32x4.eq - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i32x4.ne - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i32x4.lt_s - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i32x4.lt_u - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i32x4.gt_s - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i32x4.gt_u - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i32x4.le_s - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i32x4.le_u - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i32x4.ge_s - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i32x4.ge_u - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f32x4.eq - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f32x4.ne - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f32x4.lt - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f32x4.gt - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f32x4.le - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f32x4.ge - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f32x4.ge - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f64x2.ne - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f64x2.lt - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f64x2.gt - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f64x2.le - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f64x2.ge - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) ( - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ( - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ( - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) (drop (i8x16.add - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i8x16.add_saturate_s - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i8x16.add_saturate_u - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i8x16.sub - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i8x16.sub_saturate_s - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i8x16.sub_saturate_u - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i8x16.mul - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i16x8.add - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i16x8.add_saturate_s - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i16x8.add_saturate_u - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i16x8.sub - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i16x8.sub_saturate_s - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i16x8.sub_saturate_u - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i16x8.mul - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i32x4.add - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i32x4.sub - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i32x4.mul - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i64x2.add - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i64x2.sub - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f32x4.add - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f32x4.sub - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f32x4.mul - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f32x4.div - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f32x4.min - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f32x4.max - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f64x2.add - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f64x2.sub - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f64x2.mul - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f64x2.div - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f64x2.min - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f64x2.max - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i8x16.extract_lane_s 1 - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i8x16.extract_lane_u 1 - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i16x8.extract_lane_s 1 - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i16x8.extract_lane_u 1 - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i32x4.extract_lane 1 - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i64x2.extract_lane 1 - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f32x4.extract_lane 1 - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f64x2.extract_lane 1 - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i16x8.replace_lane 1 - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) (i32.const 42) ) ) (drop (i8x16.replace_lane 1 - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) (i32.const 42) ) ) (drop (i32x4.replace_lane 1 - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) (i32.const 42) ) ) (drop (i64x2.replace_lane 1 - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) (i64.const 184683593770) ) ) (drop (f32x4.replace_lane 1 - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) (f32.const 42) ) ) (drop (f64x2.replace_lane 1 - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) (f64.const 42) ) ) (drop (i8x16.shl - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) (i32.const 1) ) ) (drop (i8x16.shr_s - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) (i32.const 1) ) ) (drop (i8x16.shr_u - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) (i32.const 1) ) ) (drop (i16x8.shl - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) (i32.const 1) ) ) (drop (i16x8.shr_s - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) (i32.const 1) ) ) (drop (i16x8.shr_u - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) (i32.const 1) ) ) (drop (i32x4.shl - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) (i32.const 1) ) ) (drop (i32x4.shr_s - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) (i32.const 1) ) ) (drop (i32x4.shr_u - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) (i32.const 1) ) ) (drop (i64x2.shl - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) (i32.const 1) ) ) (drop (i64x2.shr_s - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) (i32.const 1) ) ) (drop (i64x2.shr_u - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) (i32.const 1) ) ) (drop (v8x16.shuffle 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (v128.bitselect - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (memory.init 0 diff --git a/test/binaryen.js/simd.js b/test/binaryen.js/simd.js new file mode 100644 index 000000000..a6055a267 --- /dev/null +++ b/test/binaryen.js/simd.js @@ -0,0 +1,5 @@ +var module = new Binaryen.Module(); + +var expr = module.v128.const([1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0]); +var info = Binaryen.getExpressionInfo(expr); +console.log("v128.const i8x16 0x" + info.value.map(b => b.toString(16)).join(" 0x")); diff --git a/test/binaryen.js/simd.js.txt b/test/binaryen.js/simd.js.txt new file mode 100644 index 000000000..d4facdde5 --- /dev/null +++ b/test/binaryen.js/simd.js.txt @@ -0,0 +1 @@ +v128.const i8x16 0x1 0x0 0x0 0x0 0x2 0x0 0x0 0x0 0x3 0x0 0x0 0x0 0x4 0x0 0x0 0x0 diff --git a/test/crash/__init__.py b/test/crash/__init__.py new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/test/crash/__init__.py diff --git a/test/crash/test_features.py b/test/crash/test_features.py new file mode 100644 index 000000000..87521d4c0 --- /dev/null +++ b/test/crash/test_features.py @@ -0,0 +1,18 @@ +import unittest +from scripts.test.shared import WASM_OPT, run_process + + +class FeatureValidationTest(unittest.TestCase): + def test_simd_type(self): + module = """ + (module + (func $foo (param $0 v128) (result v128) + (local.get $0) + ) + ) + """ + p = run_process(WASM_OPT + ['--mvp-features', '--print'], + input=module, check=False, capture_output=True) + self.assertIn("all used types should be allowed", p.stderr) + self.assertIn("Fatal: error in validating input", p.stderr) + self.assertNotEqual(p.returncode, 0) diff --git a/test/example/c-api-kitchen-sink.txt b/test/example/c-api-kitchen-sink.txt index 7faee9cd6..0f8775092 100644 --- a/test/example/c-api-kitchen-sink.txt +++ b/test/example/c-api-kitchen-sink.txt @@ -282,137 +282,137 @@ BinaryenTypeAuto: -1 ) (drop (v128.not - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i8x16.neg - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i8x16.any_true - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i8x16.all_true - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i16x8.neg - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i16x8.any_true - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i16x8.all_true - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i32x4.neg - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i32x4.any_true - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i32x4.all_true - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i64x2.neg - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i64x2.any_true - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i64x2.all_true - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f32x4.abs - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f32x4.neg - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f32x4.sqrt - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f64x2.abs - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f64x2.neg - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f64x2.sqrt - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i32x4.trunc_sat_f32x4_s - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i32x4.trunc_sat_f32x4_u - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i64x2.trunc_sat_f64x2_s - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i64x2.trunc_sat_f64x2_u - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f32x4.convert_i32x4_s - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f32x4.convert_i32x4_u - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f64x2.convert_i64x2_s - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f64x2.convert_i64x2_u - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop @@ -609,619 +609,619 @@ BinaryenTypeAuto: -1 ) (drop (i8x16.eq - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i8x16.ne - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i8x16.lt_s - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i8x16.lt_u - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i8x16.gt_s - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i8x16.gt_u - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i8x16.le_s - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i8x16.le_u - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i8x16.ge_s - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i8x16.ge_u - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i16x8.eq - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i16x8.ne - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i16x8.lt_s - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i16x8.lt_u - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i16x8.gt_s - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i16x8.gt_u - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i16x8.le_s - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i16x8.le_u - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i16x8.ge_s - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i16x8.ge_u - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i32x4.eq - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i32x4.ne - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i32x4.lt_s - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i32x4.lt_u - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i32x4.gt_s - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i32x4.gt_u - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i32x4.le_s - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i32x4.le_u - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i32x4.ge_s - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i32x4.ge_u - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f32x4.eq - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f32x4.ne - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f32x4.lt - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f32x4.gt - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f32x4.le - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f32x4.ge - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f64x2.eq - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f64x2.ne - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f64x2.lt - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f64x2.gt - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f64x2.le - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f64x2.ge - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (v128.and - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (v128.or - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (v128.xor - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i8x16.add - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i8x16.add_saturate_s - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i8x16.add_saturate_u - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i8x16.sub - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i8x16.sub_saturate_s - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i8x16.sub_saturate_u - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i8x16.mul - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i16x8.add - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i16x8.add_saturate_s - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i16x8.add_saturate_u - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i16x8.sub - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i16x8.sub_saturate_s - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i16x8.sub_saturate_u - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i16x8.mul - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i32x4.add - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i32x4.sub - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i32x4.mul - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i64x2.add - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i64x2.sub - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f32x4.add - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f32x4.sub - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f32x4.mul - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f32x4.div - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f32x4.min - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f32x4.max - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f64x2.add - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f64x2.sub - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f64x2.mul - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f64x2.div - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f64x2.min - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f64x2.max - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i8x16.extract_lane_s 0 - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i8x16.extract_lane_u 0 - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i16x8.extract_lane_s 0 - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i16x8.extract_lane_u 0 - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i32x4.extract_lane 0 - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i64x2.extract_lane 0 - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f32x4.extract_lane 0 - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f64x2.extract_lane 0 - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i8x16.replace_lane 0 - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) (i32.const 42) ) ) (drop (i16x8.replace_lane 0 - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) (i32.const 42) ) ) (drop (i32x4.replace_lane 0 - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) (i32.const 42) ) ) (drop (i64x2.replace_lane 0 - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) (i64.const 42) ) ) (drop (f32x4.replace_lane 0 - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) (f32.const 42) ) ) (drop (f64x2.replace_lane 0 - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) (f64.const 42) ) ) (drop (i8x16.shl - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) (i32.const 1) ) ) (drop (i8x16.shr_s - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) (i32.const 1) ) ) (drop (i8x16.shr_u - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) (i32.const 1) ) ) (drop (i16x8.shl - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) (i32.const 1) ) ) (drop (i16x8.shr_s - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) (i32.const 1) ) ) (drop (i16x8.shr_u - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) (i32.const 1) ) ) (drop (i32x4.shl - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) (i32.const 1) ) ) (drop (i32x4.shr_s - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) (i32.const 1) ) ) (drop (i32x4.shr_u - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) (i32.const 1) ) ) (drop (i64x2.shl - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) (i32.const 1) ) ) (drop (i64x2.shr_s - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) (i32.const 1) ) ) (drop (i64x2.shr_u - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) (i32.const 1) ) ) (drop (v8x16.shuffle 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (v128.bitselect - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (memory.init 0 @@ -3583,137 +3583,137 @@ int main() { ) (drop (v128.not - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i8x16.neg - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i8x16.any_true - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i8x16.all_true - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i16x8.neg - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i16x8.any_true - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i16x8.all_true - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i32x4.neg - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i32x4.any_true - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i32x4.all_true - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i64x2.neg - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i64x2.any_true - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i64x2.all_true - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f32x4.abs - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f32x4.neg - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f32x4.sqrt - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f64x2.abs - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f64x2.neg - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f64x2.sqrt - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i32x4.trunc_sat_f32x4_s - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i32x4.trunc_sat_f32x4_u - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i64x2.trunc_sat_f64x2_s - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i64x2.trunc_sat_f64x2_u - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f32x4.convert_i32x4_s - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f32x4.convert_i32x4_u - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f64x2.convert_i64x2_s - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f64x2.convert_i64x2_u - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop @@ -3910,619 +3910,619 @@ int main() { ) (drop (i8x16.eq - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i8x16.ne - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i8x16.lt_s - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i8x16.lt_u - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i8x16.gt_s - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i8x16.gt_u - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i8x16.le_s - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i8x16.le_u - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i8x16.ge_s - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i8x16.ge_u - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i16x8.eq - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i16x8.ne - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i16x8.lt_s - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i16x8.lt_u - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i16x8.gt_s - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i16x8.gt_u - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i16x8.le_s - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i16x8.le_u - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i16x8.ge_s - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i16x8.ge_u - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i32x4.eq - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i32x4.ne - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i32x4.lt_s - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i32x4.lt_u - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i32x4.gt_s - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i32x4.gt_u - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i32x4.le_s - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i32x4.le_u - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i32x4.ge_s - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i32x4.ge_u - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f32x4.eq - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f32x4.ne - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f32x4.lt - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f32x4.gt - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f32x4.le - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f32x4.ge - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f64x2.eq - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f64x2.ne - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f64x2.lt - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f64x2.gt - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f64x2.le - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f64x2.ge - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (v128.and - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (v128.or - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (v128.xor - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i8x16.add - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i8x16.add_saturate_s - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i8x16.add_saturate_u - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i8x16.sub - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i8x16.sub_saturate_s - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i8x16.sub_saturate_u - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i8x16.mul - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i16x8.add - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i16x8.add_saturate_s - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i16x8.add_saturate_u - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i16x8.sub - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i16x8.sub_saturate_s - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i16x8.sub_saturate_u - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i16x8.mul - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i32x4.add - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i32x4.sub - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i32x4.mul - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i64x2.add - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i64x2.sub - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f32x4.add - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f32x4.sub - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f32x4.mul - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f32x4.div - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f32x4.min - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f32x4.max - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f64x2.add - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f64x2.sub - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f64x2.mul - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f64x2.div - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f64x2.min - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f64x2.max - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i8x16.extract_lane_s 0 - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i8x16.extract_lane_u 0 - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i16x8.extract_lane_s 0 - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i16x8.extract_lane_u 0 - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i32x4.extract_lane 0 - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i64x2.extract_lane 0 - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f32x4.extract_lane 0 - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f64x2.extract_lane 0 - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i8x16.replace_lane 0 - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) (i32.const 42) ) ) (drop (i16x8.replace_lane 0 - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) (i32.const 42) ) ) (drop (i32x4.replace_lane 0 - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) (i32.const 42) ) ) (drop (i64x2.replace_lane 0 - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) (i64.const 42) ) ) (drop (f32x4.replace_lane 0 - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) (f32.const 42) ) ) (drop (f64x2.replace_lane 0 - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) (f64.const 42) ) ) (drop (i8x16.shl - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) (i32.const 1) ) ) (drop (i8x16.shr_s - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) (i32.const 1) ) ) (drop (i8x16.shr_u - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) (i32.const 1) ) ) (drop (i16x8.shl - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) (i32.const 1) ) ) (drop (i16x8.shr_s - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) (i32.const 1) ) ) (drop (i16x8.shr_u - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) (i32.const 1) ) ) (drop (i32x4.shl - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) (i32.const 1) ) ) (drop (i32x4.shr_s - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) (i32.const 1) ) ) (drop (i32x4.shr_u - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) (i32.const 1) ) ) (drop (i64x2.shl - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) (i32.const 1) ) ) (drop (i64x2.shr_s - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) (i32.const 1) ) ) (drop (i64x2.shr_u - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) (i32.const 1) ) ) (drop (v8x16.shuffle 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (v128.bitselect - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (memory.init 0 diff --git a/test/example/c-api-kitchen-sink.txt.txt b/test/example/c-api-kitchen-sink.txt.txt index 443aa4d88..b7caa1bad 100644 --- a/test/example/c-api-kitchen-sink.txt.txt +++ b/test/example/c-api-kitchen-sink.txt.txt @@ -274,137 +274,137 @@ ) (drop (v128.not - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i8x16.neg - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i8x16.any_true - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i8x16.all_true - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i16x8.neg - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i16x8.any_true - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i16x8.all_true - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i32x4.neg - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i32x4.any_true - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i32x4.all_true - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i64x2.neg - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i64x2.any_true - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i64x2.all_true - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f32x4.abs - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f32x4.neg - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f32x4.sqrt - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f64x2.abs - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f64x2.neg - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f64x2.sqrt - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i32x4.trunc_sat_f32x4_s - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i32x4.trunc_sat_f32x4_u - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i64x2.trunc_sat_f64x2_s - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i64x2.trunc_sat_f64x2_u - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f32x4.convert_i32x4_s - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f32x4.convert_i32x4_u - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f64x2.convert_i64x2_s - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f64x2.convert_i64x2_u - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop @@ -601,619 +601,619 @@ ) (drop (i8x16.eq - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i8x16.ne - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i8x16.lt_s - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i8x16.lt_u - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i8x16.gt_s - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i8x16.gt_u - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i8x16.le_s - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i8x16.le_u - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i8x16.ge_s - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i8x16.ge_u - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i16x8.eq - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i16x8.ne - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i16x8.lt_s - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i16x8.lt_u - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i16x8.gt_s - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i16x8.gt_u - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i16x8.le_s - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i16x8.le_u - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i16x8.ge_s - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i16x8.ge_u - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i32x4.eq - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i32x4.ne - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i32x4.lt_s - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i32x4.lt_u - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i32x4.gt_s - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i32x4.gt_u - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i32x4.le_s - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i32x4.le_u - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i32x4.ge_s - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i32x4.ge_u - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f32x4.eq - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f32x4.ne - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f32x4.lt - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f32x4.gt - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f32x4.le - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f32x4.ge - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f64x2.eq - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f64x2.ne - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f64x2.lt - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f64x2.gt - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f64x2.le - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f64x2.ge - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (v128.and - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (v128.or - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (v128.xor - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i8x16.add - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i8x16.add_saturate_s - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i8x16.add_saturate_u - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i8x16.sub - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i8x16.sub_saturate_s - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i8x16.sub_saturate_u - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i8x16.mul - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i16x8.add - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i16x8.add_saturate_s - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i16x8.add_saturate_u - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i16x8.sub - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i16x8.sub_saturate_s - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i16x8.sub_saturate_u - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i16x8.mul - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i32x4.add - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i32x4.sub - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i32x4.mul - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i64x2.add - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i64x2.sub - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f32x4.add - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f32x4.sub - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f32x4.mul - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f32x4.div - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f32x4.min - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f32x4.max - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f64x2.add - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f64x2.sub - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f64x2.mul - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f64x2.div - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f64x2.min - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f64x2.max - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i8x16.extract_lane_s 0 - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i8x16.extract_lane_u 0 - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i16x8.extract_lane_s 0 - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i16x8.extract_lane_u 0 - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i32x4.extract_lane 0 - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i64x2.extract_lane 0 - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f32x4.extract_lane 0 - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (f64x2.extract_lane 0 - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (i8x16.replace_lane 0 - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) (i32.const 42) ) ) (drop (i16x8.replace_lane 0 - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) (i32.const 42) ) ) (drop (i32x4.replace_lane 0 - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) (i32.const 42) ) ) (drop (i64x2.replace_lane 0 - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) (i64.const 42) ) ) (drop (f32x4.replace_lane 0 - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) (f32.const 42) ) ) (drop (f64x2.replace_lane 0 - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) (f64.const 42) ) ) (drop (i8x16.shl - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) (i32.const 1) ) ) (drop (i8x16.shr_s - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) (i32.const 1) ) ) (drop (i8x16.shr_u - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) (i32.const 1) ) ) (drop (i16x8.shl - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) (i32.const 1) ) ) (drop (i16x8.shr_s - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) (i32.const 1) ) ) (drop (i16x8.shr_u - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) (i32.const 1) ) ) (drop (i32x4.shl - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) (i32.const 1) ) ) (drop (i32x4.shr_s - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) (i32.const 1) ) ) (drop (i32x4.shr_u - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) (i32.const 1) ) ) (drop (i64x2.shl - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) (i32.const 1) ) ) (drop (i64x2.shr_s - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) (i32.const 1) ) ) (drop (i64x2.shr_u - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) (i32.const 1) ) ) (drop (v8x16.shuffle 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop (v128.bitselect - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (memory.init 0 diff --git a/test/lld/reserved_func_ptr.wast.jscall.out b/test/lld/reserved_func_ptr.wast.jscall.out deleted file mode 100644 index e176ba231..000000000 --- a/test/lld/reserved_func_ptr.wast.jscall.out +++ /dev/null @@ -1,359 +0,0 @@ -(module - (type $0 (func)) - (type $1 (func (param i32))) - (type $2 (func (param i32 i32) (result i32))) - (type $3 (func (param f32 f32 i32) (result f32))) - (type $4 (func (param f64 i32) (result f64))) - (type $5 (func (param i32 i32 i32))) - (type $6 (func (param i32) (result i32))) - (type $FUNCSIG$ii (func (param i32) (result i32))) - (type $FUNCSIG$viii (func (param i32 i32 i32))) - (type $FUNCSIG$didi (func (param i32 f64 i32) (result f64))) - (type $FUNCSIG$ddi (func (param f64 i32) (result f64))) - (type $FUNCSIG$fiffi (func (param i32 f32 f32 i32) (result f32))) - (type $FUNCSIG$fffi (func (param f32 f32 i32) (result f32))) - (type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32))) - (type $FUNCSIG$iii (func (param i32 i32) (result i32))) - (type $FUNCSIG$vi (func (param i32))) - (type $FUNCSIG$v (func)) - (type $FUNCSIG$vii (func (param i32 i32))) - (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) - (type $legaltype$jsCall_fffi (func (param i32 f64 f64 i32) (result f64))) - (import "env" "_Z4atoiPKc" (func $_Z4atoiPKc (param i32) (result i32))) - (import "env" "jsCall_ddi" (func $jsCall_ddi (param i32 f64 i32) (result f64))) - (import "env" "jsCall_iii" (func $jsCall_iii (param i32 i32 i32) (result i32))) - (import "env" "jsCall_v" (func $jsCall_v (param i32))) - (import "env" "jsCall_vi" (func $jsCall_vi (param i32 i32))) - (import "env" "jsCall_viii" (func $jsCall_viii (param i32 i32 i32 i32))) - (import "env" "jsCall_fffi" (func $legalimport$jsCall_fffi (param i32 f64 f64 i32) (result f64))) - (memory $0 2) - (table $0 21 21 funcref) - (elem (i32.const 1) $_Z18address_taken_funciii $_Z19address_taken_func2iii $jsCall_ddi_0 $jsCall_ddi_1 $jsCall_ddi_2 $jsCall_fffi_0 $jsCall_fffi_1 $jsCall_fffi_2 $jsCall_iii_0 $jsCall_iii_1 $jsCall_iii_2 $jsCall_v_0 $jsCall_v_1 $jsCall_v_2 $jsCall_vi_0 $jsCall_vi_1 $jsCall_vi_2 $jsCall_viii_0 $jsCall_viii_1 $jsCall_viii_2) - (global $global$0 (mut i32) (i32.const 16384)) - (global $global$1 i32 (i32.const 66112)) - (global $global$2 i32 (i32.const 568)) - (export "memory" (memory $0)) - (export "__post_instantiate" (func $__wasm_call_ctors)) - (export "main" (func $main)) - (export "__heap_base" (global $global$1)) - (export "__data_end" (global $global$2)) - (export "stackSave" (func $stackSave)) - (export "stackAlloc" (func $stackAlloc)) - (export "stackRestore" (func $stackRestore)) - (export "__growWasmMemory" (func $__growWasmMemory)) - (export "dynCall_viii" (func $dynCall_viii)) - (func $_Z18address_taken_funciii (; 7 ;) (type $5) (param $var$0 i32) (param $var$1 i32) (param $var$2 i32) - (nop) - ) - (func $_Z19address_taken_func2iii (; 8 ;) (type $5) (param $var$0 i32) (param $var$1 i32) (param $var$2 i32) - (nop) - ) - (func $main (; 9 ;) (type $2) (param $var$0 i32) (param $var$1 i32) (result i32) - (local $var$2 i32) - (local $var$3 i32) - (local $var$4 i32) - (local $var$5 i32) - (local.set $var$2 - (call $_Z4atoiPKc - (i32.load offset=4 - (local.get $var$1) - ) - ) - ) - (local.set $var$3 - (call $_Z4atoiPKc - (i32.load offset=8 - (local.get $var$1) - ) - ) - ) - (local.set $var$4 - (call $_Z4atoiPKc - (i32.load offset=12 - (local.get $var$1) - ) - ) - ) - (local.set $var$5 - (call $_Z4atoiPKc - (i32.load offset=16 - (local.get $var$1) - ) - ) - ) - (local.set $var$1 - (call $_Z4atoiPKc - (i32.load offset=20 - (local.get $var$1) - ) - ) - ) - (call_indirect (type $0) - (local.get $var$2) - ) - (call_indirect (type $1) - (i32.const 3) - (local.get $var$3) - ) - (drop - (call_indirect (type $2) - (i32.const 4) - (i32.const 5) - (local.get $var$4) - ) - ) - (drop - (call_indirect (type $3) - (f32.const 3.0999999046325684) - (f32.const 4.199999809265137) - (i32.const 5) - (local.get $var$5) - ) - ) - (drop - (call_indirect (type $4) - (f64.const 4.2) - (i32.const 5) - (local.get $var$1) - ) - ) - (call_indirect (type $5) - (i32.const 1) - (i32.const 2) - (i32.const 3) - (select - (i32.const 1) - (i32.const 2) - (i32.gt_s - (local.get $var$0) - (i32.const 3) - ) - ) - ) - (i32.const 0) - ) - (func $__wasm_call_ctors (; 10 ;) (type $0) - (nop) - ) - (func $stackSave (; 11 ;) (result i32) - (global.get $global$0) - ) - (func $stackAlloc (; 12 ;) (param $0 i32) (result i32) - (local $1 i32) - (global.set $global$0 - (local.tee $1 - (i32.and - (i32.sub - (global.get $global$0) - (local.get $0) - ) - (i32.const -16) - ) - ) - ) - (local.get $1) - ) - (func $stackRestore (; 13 ;) (param $0 i32) - (global.set $global$0 - (local.get $0) - ) - ) - (func $__growWasmMemory (; 14 ;) (param $newSize i32) (result i32) - (grow_memory - (local.get $newSize) - ) - ) - (func $dynCall_viii (; 15 ;) (param $fptr i32) (param $0 i32) (param $1 i32) (param $2 i32) - (call_indirect (type $FUNCSIG$viii) - (local.get $0) - (local.get $1) - (local.get $2) - (local.get $fptr) - ) - ) - (func $jsCall_ddi_0 (; 16 ;) (param $0 f64) (param $1 i32) (result f64) - (call $jsCall_ddi - (i32.const 0) - (local.get $0) - (local.get $1) - ) - ) - (func $jsCall_ddi_1 (; 17 ;) (param $0 f64) (param $1 i32) (result f64) - (call $jsCall_ddi - (i32.const 1) - (local.get $0) - (local.get $1) - ) - ) - (func $jsCall_ddi_2 (; 18 ;) (param $0 f64) (param $1 i32) (result f64) - (call $jsCall_ddi - (i32.const 2) - (local.get $0) - (local.get $1) - ) - ) - (func $jsCall_fffi_0 (; 19 ;) (param $0 f32) (param $1 f32) (param $2 i32) (result f32) - (call $legalfunc$jsCall_fffi - (i32.const 0) - (local.get $0) - (local.get $1) - (local.get $2) - ) - ) - (func $jsCall_fffi_1 (; 20 ;) (param $0 f32) (param $1 f32) (param $2 i32) (result f32) - (call $legalfunc$jsCall_fffi - (i32.const 1) - (local.get $0) - (local.get $1) - (local.get $2) - ) - ) - (func $jsCall_fffi_2 (; 21 ;) (param $0 f32) (param $1 f32) (param $2 i32) (result f32) - (call $legalfunc$jsCall_fffi - (i32.const 2) - (local.get $0) - (local.get $1) - (local.get $2) - ) - ) - (func $jsCall_iii_0 (; 22 ;) (param $0 i32) (param $1 i32) (result i32) - (call $jsCall_iii - (i32.const 0) - (local.get $0) - (local.get $1) - ) - ) - (func $jsCall_iii_1 (; 23 ;) (param $0 i32) (param $1 i32) (result i32) - (call $jsCall_iii - (i32.const 1) - (local.get $0) - (local.get $1) - ) - ) - (func $jsCall_iii_2 (; 24 ;) (param $0 i32) (param $1 i32) (result i32) - (call $jsCall_iii - (i32.const 2) - (local.get $0) - (local.get $1) - ) - ) - (func $jsCall_v_0 (; 25 ;) - (call $jsCall_v - (i32.const 0) - ) - ) - (func $jsCall_v_1 (; 26 ;) - (call $jsCall_v - (i32.const 1) - ) - ) - (func $jsCall_v_2 (; 27 ;) - (call $jsCall_v - (i32.const 2) - ) - ) - (func $jsCall_vi_0 (; 28 ;) (param $0 i32) - (call $jsCall_vi - (i32.const 0) - (local.get $0) - ) - ) - (func $jsCall_vi_1 (; 29 ;) (param $0 i32) - (call $jsCall_vi - (i32.const 1) - (local.get $0) - ) - ) - (func $jsCall_vi_2 (; 30 ;) (param $0 i32) - (call $jsCall_vi - (i32.const 2) - (local.get $0) - ) - ) - (func $jsCall_viii_0 (; 31 ;) (param $0 i32) (param $1 i32) (param $2 i32) - (call $jsCall_viii - (i32.const 0) - (local.get $0) - (local.get $1) - (local.get $2) - ) - ) - (func $jsCall_viii_1 (; 32 ;) (param $0 i32) (param $1 i32) (param $2 i32) - (call $jsCall_viii - (i32.const 1) - (local.get $0) - (local.get $1) - (local.get $2) - ) - ) - (func $jsCall_viii_2 (; 33 ;) (param $0 i32) (param $1 i32) (param $2 i32) - (call $jsCall_viii - (i32.const 2) - (local.get $0) - (local.get $1) - (local.get $2) - ) - ) - (func $legalfunc$jsCall_fffi (; 34 ;) (param $0 i32) (param $1 f32) (param $2 f32) (param $3 i32) (result f32) - (f32.demote_f64 - (call $legalimport$jsCall_fffi - (local.get $0) - (f64.promote_f32 - (local.get $1) - ) - (f64.promote_f32 - (local.get $2) - ) - (local.get $3) - ) - ) - ) -) -(; ---BEGIN METADATA -- -{ - "staticBump": 0, - "tableSize": 21, - "initializers": [ - "__post_instantiate" - ], - "jsCallStartIndex": 3, - "jsCallFuncType": [ - "ddi", - "fffi", - "iii", - "v", - "vi", - "viii" - ], - "declares": [ - "_Z4atoiPKc" - ], - "externs": [ - ], - "implementedFunctions": [ - "___post_instantiate", - "_main", - "_stackSave", - "_stackAlloc", - "_stackRestore", - "___growWasmMemory", - "_dynCall_viii" - ], - "exports": [ - "memory", - "__post_instantiate", - "main", - "__heap_base", - "__data_end", - "stackSave", - "stackAlloc", - "stackRestore", - "__growWasmMemory", - "dynCall_viii" - ], - "invokeFuncs": [ - ] -} --- END METADATA -- -;) diff --git a/test/passes/O3_low-memory-unused_metrics.txt b/test/passes/O3_low-memory-unused_metrics.txt index 0978d3715..86a686570 100644 --- a/test/passes/O3_low-memory-unused_metrics.txt +++ b/test/passes/O3_low-memory-unused_metrics.txt @@ -1,30 +1,44 @@ total + [exports] : 1 [funcs] : 1 - [imports] : 2 - [total] : 1601 - [vars] : 13 - binary : 213 - block : 77 - break : 100 + [imports] : 10 + [memory-data] : 0 + [table-data] : 0 + [total] : 1965 + [vars] : 9 + binary : 241 + block : 68 + break : 90 + call : 22 call_indirect : 1 - const : 162 - drop : 16 - if : 35 - load : 230 - local.get : 449 - local.set : 173 - loop : 6 - return : 4 - select : 10 - store : 86 - unary : 23 - unreachable : 16 + const : 176 + drop : 8 + if : 27 + load : 313 + local.get : 633 + local.set : 181 + loop : 3 + return : 3 + select : 11 + store : 160 + unary : 28 (module - (type $2 (func (param i32 i32) (result i32))) - (import "env" "memory" (memory $0 256 256)) - (import "env" "__indirect_function_table" (table $0 10 funcref)) - (export "deflate" (func $deflate)) - (func $deflate (; 0 ;) (; has Stack IR ;) (type $2) (param $0 i32) (param $1 i32) (result i32) + (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) + (type $FUNCSIG$iii (func (param i32 i32) (result i32))) + (type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32))) + (type $FUNCSIG$vi (func (param i32))) + (import "env" "memory" (memory $0 4096 4096)) + (import "env" "table" (table $0 10 funcref)) + (import "env" "crc32" (func $fimport$14 (param i32 i32 i32) (result i32))) + (import "env" "adler32" (func $fimport$15 (param i32 i32 i32) (result i32))) + (import "env" "deflate_huff" (func $fimport$20 (param i32 i32) (result i32))) + (import "env" "deflate_rle" (func $fimport$21 (param i32 i32) (result i32))) + (import "env" "_tr_stored_block" (func $fimport$29 (param i32 i32 i32 i32))) + (import "env" "_tr_align" (func $fimport$30 (param i32))) + (import "env" "memset" (func $fimport$97 (param i32 i32 i32) (result i32))) + (import "env" "memcpy" (func $fimport$98 (param i32 i32 i32) (result i32))) + (export "deflate" (func $0)) + (func $0 (; 8 ;) (; has Stack IR ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -34,867 +48,1366 @@ total (local $8 i32) (local $9 i32) (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) (local.set $3 (i32.const -2) ) - (block $folding-inner5 - (block $folding-inner4 - (block $folding-inner3 - (block $folding-inner2 - (block $folding-inner1 - (block $folding-inner0 - (block $label$1 - (br_if $label$1 - (i32.eqz - (local.get $0) - ) - ) - (br_if $label$1 - (i32.gt_u - (local.get $1) - (i32.const 5) - ) - ) - (br_if $label$1 - (i32.eqz - (local.tee $2 - (i32.load offset=28 - (local.get $0) - ) - ) - ) - ) - (block $label$2 - (block $label$3 - (br_if $label$3 - (i32.eqz - (i32.load offset=12 - (local.get $0) - ) - ) - ) - (if - (i32.eqz - (i32.load - (local.get $0) - ) - ) - (br_if $label$3 - (i32.load offset=4 - (local.get $0) - ) - ) - ) - (local.set $3 - (i32.load offset=4 - (local.get $2) - ) - ) - (br_if $label$2 - (i32.eq - (local.get $1) - (i32.const 4) - ) - ) - (br_if $label$2 - (i32.ne - (local.get $3) - (i32.const 666) - ) - ) - ) - (i32.store offset=24 - (local.get $0) - (i32.load - (i32.const 15792) - ) - ) - (return - (i32.const -2) - ) - ) - (br_if $folding-inner0 - (i32.eqz - (i32.load offset=16 - (local.get $0) - ) - ) - ) - (i32.store - (local.get $2) + (block $folding-inner1 + (block $folding-inner0 + (block $label$1 + (br_if $label$1 + (i32.eqz + (local.get $0) + ) + ) + (br_if $label$1 + (i32.gt_u + (local.get $1) + (i32.const 5) + ) + ) + (br_if $label$1 + (i32.eqz + (local.tee $2 + (i32.load offset=28 + (local.get $0) + ) + ) + ) + ) + (block $label$2 + (block $label$3 + (br_if $label$3 + (i32.eqz + (i32.load offset=12 (local.get $0) ) - (local.set $14 - (i32.load offset=40 - (local.get $2) - ) + ) + ) + (if + (i32.eqz + (i32.load + (local.get $0) ) - (i32.store offset=40 - (local.get $2) - (local.get $1) + ) + (br_if $label$3 + (i32.load offset=4 + (local.get $0) ) - (if - (i32.eq - (local.get $3) - (i32.const 42) - ) - (block - (if - (i32.eq - (i32.load offset=24 - (local.get $2) - ) - (i32.const 2) - ) - (unreachable) - ) - (local.set $4 - (i32.add - (i32.shl - (i32.load offset=48 - (local.get $2) - ) - (i32.const 12) - ) - (i32.const -30720) - ) - ) - (local.set $3 - (i32.const 0) - ) - (block $label$24 - (br_if $label$24 - (i32.gt_s - (i32.load offset=136 - (local.get $2) - ) - (i32.const 1) - ) - ) - (br_if $label$24 - (i32.lt_s - (local.tee $6 - (i32.load offset=132 - (local.get $2) - ) - ) - (i32.const 2) - ) - ) - (local.set $3 - (i32.const 64) - ) - (br_if $label$24 - (i32.lt_s - (local.get $6) - (i32.const 6) - ) - ) - (local.set $3 - (select - (i32.const 128) - (i32.const 192) - (i32.eq - (local.get $6) - (i32.const 6) - ) - ) - ) - ) - (i32.store offset=4 - (local.get $2) - (i32.const 113) - ) - (i32.store offset=20 - (local.get $2) - (i32.add - (local.tee $9 - (i32.load offset=20 - (local.get $2) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (local.get $9) - (i32.load offset=8 - (local.get $2) - ) - ) - (i32.shr_u - (local.tee $3 - (select - (i32.or - (local.tee $3 - (i32.or + ) + ) + (local.set $3 + (i32.load offset=4 + (local.get $2) + ) + ) + (br_if $label$2 + (i32.eq + (local.get $1) + (i32.const 4) + ) + ) + (br_if $label$2 + (i32.ne + (local.get $3) + (i32.const 666) + ) + ) + ) + (i32.store offset=24 + (local.get $0) + (i32.load + (i32.const 16992) + ) + ) + (return + (i32.const -2) + ) + ) + (if + (i32.eqz + (i32.load offset=16 + (local.get $0) + ) + ) + (br $folding-inner0) + ) + (i32.store + (local.get $2) + (local.get $0) + ) + (local.set $7 + (i32.load offset=40 + (local.get $2) + ) + ) + (i32.store offset=40 + (local.get $2) + (local.get $1) + ) + (block $label$6 + (block $label$7 + (block $label$8 + (block $label$9 + (block $label$10 + (block $label$11 + (block $label$12 + (block $label$13 + (block $label$14 + (block $label$15 + (block $label$16 + (if + (i32.eq (local.get $3) - (local.get $4) + (i32.const 42) ) - ) - (i32.const 32) - ) - (local.get $3) - (i32.load offset=108 - (local.get $2) - ) - ) - ) - (i32.const 8) - ) - ) - (i32.store offset=20 - (local.get $2) - (i32.add - (local.tee $4 - (i32.load offset=20 - (local.get $2) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (local.get $4) - (i32.load offset=8 - (local.get $2) - ) - ) - (i32.xor - (i32.or - (i32.rem_u - (local.get $3) - (i32.const 31) - ) - (local.get $3) - ) - (i32.const 31) - ) - ) - (if - (i32.load offset=108 - (local.get $2) - ) - (block - (local.set $9 - (i32.load offset=48 - (local.get $0) - ) - ) - (i32.store offset=20 - (local.get $2) - (i32.add - (local.tee $7 - (i32.load offset=20 - (local.get $2) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (local.get $7) - (i32.load offset=8 - (local.get $2) - ) - ) - (i32.shr_u - (local.get $9) - (i32.const 24) - ) - ) - (i32.store offset=20 - (local.get $2) - (i32.add - (local.tee $7 - (i32.load offset=20 - (local.get $2) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (local.get $7) - (i32.load offset=8 - (local.get $2) - ) - ) - (i32.shr_u - (local.get $9) - (i32.const 16) - ) - ) - (local.set $9 - (i32.load offset=48 - (local.get $0) - ) - ) - (i32.store offset=20 - (local.get $2) - (i32.add - (local.tee $7 - (i32.load offset=20 - (local.get $2) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (local.get $7) - (i32.load offset=8 - (local.get $2) - ) - ) - (i32.shr_u - (local.get $9) - (i32.const 8) - ) - ) - (i32.store offset=20 - (local.get $2) - (i32.add - (local.tee $7 - (i32.load offset=20 - (local.get $2) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (local.get $7) - (i32.load offset=8 - (local.get $2) - ) - ) - (local.get $9) - ) - ) - ) - (unreachable) - ) - ) - (block $label$6 - (block $label$7 - (block $label$8 - (block $label$9 - (block $label$10 - (block $label$11 - (block $label$12 - (block $label$13 - (block $label$14 + (block (if (i32.eq - (local.get $3) - (i32.const 69) + (i32.load offset=24 + (local.get $2) + ) + (i32.const 2) ) (block - (block $label$26 - (if - (i32.load offset=16 - (local.tee $4 - (i32.load offset=28 - (local.get $2) + (i32.store offset=48 + (local.get $0) + (call $fimport$14 + (i32.const 0) + (i32.const 0) + (i32.const 0) + ) + ) + (i32.store offset=20 + (local.get $2) + (i32.add + (local.tee $3 + (i32.load offset=20 + (local.get $2) + ) + ) + (i32.const 1) + ) + ) + (i32.store8 + (i32.add + (local.get $3) + (i32.load offset=8 + (local.get $2) + ) + ) + (i32.const 31) + ) + (i32.store offset=20 + (local.get $2) + (i32.add + (local.tee $3 + (i32.load offset=20 + (local.get $2) + ) + ) + (i32.const 1) + ) + ) + (i32.store8 + (i32.add + (local.get $3) + (i32.load offset=8 + (local.get $2) + ) + ) + (i32.const 139) + ) + (i32.store offset=20 + (local.get $2) + (i32.add + (local.tee $3 + (i32.load offset=20 + (local.get $2) + ) + ) + (i32.const 1) + ) + ) + (i32.store8 + (i32.add + (local.get $3) + (i32.load offset=8 + (local.get $2) + ) + ) + (i32.const 8) + ) + (if + (i32.eqz + (local.tee $3 + (i32.load offset=28 + (local.get $2) + ) + ) + ) + (block + (i32.store offset=20 + (local.get $2) + (i32.add + (local.tee $3 + (i32.load offset=20 + (local.get $2) + ) ) + (i32.const 1) ) ) - (block - (local.set $3 - (i32.load offset=20 + (i32.store8 + (i32.add + (local.get $3) + (i32.load offset=8 (local.get $2) ) ) - (br_if $label$26 - (i32.ge_u - (local.tee $6 - (i32.load offset=32 - (local.get $2) - ) + (i32.const 0) + ) + (i32.store offset=20 + (local.get $2) + (i32.add + (local.tee $3 + (i32.load offset=20 + (local.get $2) ) - (i32.load16_u offset=20 - (local.get $4) + ) + (i32.const 1) + ) + ) + (i32.store8 + (i32.add + (local.get $3) + (i32.load offset=8 + (local.get $2) + ) + ) + (i32.const 0) + ) + (i32.store offset=20 + (local.get $2) + (i32.add + (local.tee $3 + (i32.load offset=20 + (local.get $2) ) ) + (i32.const 1) ) - (local.set $9 - (local.get $0) + ) + (i32.store8 + (i32.add + (local.get $3) + (i32.load offset=8 + (local.get $2) + ) + ) + (i32.const 0) + ) + (i32.store offset=20 + (local.get $2) + (i32.add + (local.tee $3 + (i32.load offset=20 + (local.get $2) + ) + ) + (i32.const 1) ) - (local.set $13 - (local.tee $10 + ) + (i32.store8 + (i32.add + (local.get $3) + (i32.load offset=8 (local.get $2) ) ) - (local.set $5 + (i32.const 0) + ) + (i32.store offset=20 + (local.get $2) + (i32.add + (local.tee $3 + (i32.load offset=20 + (local.get $2) + ) + ) + (i32.const 1) + ) + ) + (i32.store8 + (i32.add (local.get $3) + (i32.load offset=8 + (local.get $2) + ) ) - (loop $label$28 - (if - (i32.eq - (i32.load offset=12 - (local.get $10) - ) - (local.get $3) + (i32.const 0) + ) + (local.set $3 + (i32.const 2) + ) + (if + (i32.ne + (local.tee $4 + (i32.load offset=132 + (local.get $2) ) - (block - (block $label$30 - (br_if $label$30 - (i32.le_u - (local.get $3) - (local.get $5) - ) - ) - (br_if $label$30 - (i32.eqz - (i32.load offset=44 - (local.get $4) - ) - ) - ) - (drop - (i32.load offset=48 - (local.get $9) - ) - ) - (drop - (i32.load offset=8 - (local.get $13) - ) - ) - (unreachable) - ) - (if - (select - (local.tee $3 - (i32.load offset=16 - (local.get $0) - ) - ) - (local.tee $4 - (i32.load offset=20 - (local.tee $6 - (i32.load offset=28 - (local.get $0) - ) - ) - ) - ) - (i32.gt_u - (local.get $4) - (local.get $3) - ) - ) - (block - (drop - (i32.load offset=12 - (local.get $0) - ) - ) - (drop - (i32.load offset=16 - (local.get $6) - ) - ) - (unreachable) - ) - ) - (local.set $4 - (i32.load offset=28 - (local.get $2) - ) - ) - (br_if $label$26 - (i32.eq - (local.tee $3 - (i32.load offset=20 - (local.get $2) - ) - ) - (i32.load offset=12 - (local.get $10) - ) - ) - ) - (local.set $6 - (i32.load offset=32 + ) + (i32.const 9) + ) + (local.set $3 + (select + (i32.const 4) + (i32.shl + (i32.gt_s + (i32.load offset=136 (local.get $2) ) + (i32.const 1) ) - (local.set $5 - (local.get $3) - ) + (i32.const 2) + ) + (i32.lt_s + (local.get $4) + (i32.const 2) ) ) - (local.set $4 - (i32.load8_u - (i32.add - (i32.load offset=16 - (local.get $4) - ) - (local.get $6) - ) + ) + ) + (i32.store offset=20 + (local.get $2) + (i32.add + (local.tee $4 + (i32.load offset=20 + (local.get $2) ) ) - (i32.store offset=20 + (i32.const 1) + ) + ) + (i32.store8 + (i32.add + (local.get $4) + (i32.load offset=8 (local.get $2) - (i32.add - (local.get $3) - (i32.const 1) + ) + ) + (local.get $3) + ) + (i32.store offset=20 + (local.get $2) + (i32.add + (local.tee $3 + (i32.load offset=20 + (local.get $2) ) ) - (i32.store8 - (i32.add - (i32.load offset=8 - (local.get $13) + (i32.const 1) + ) + ) + (i32.store8 + (i32.add + (local.get $3) + (i32.load offset=8 + (local.get $2) + ) + ) + (i32.const 3) + ) + (i32.store offset=4 + (local.get $2) + (i32.const 113) + ) + (br $label$6) + ) + ) + (local.set $4 + (i32.load offset=36 + (local.get $3) + ) + ) + (local.set $5 + (i32.load offset=28 + (local.get $3) + ) + ) + (local.set $6 + (i32.load offset=16 + (local.get $3) + ) + ) + (local.set $8 + (i32.load offset=44 + (local.get $3) + ) + ) + (local.set $9 + (i32.load + (local.get $3) + ) + ) + (i32.store offset=20 + (local.get $2) + (i32.add + (local.tee $10 + (i32.load offset=20 + (local.get $2) + ) + ) + (i32.const 1) + ) + ) + (local.set $3 + (i32.const 2) + ) + (i32.store8 + (i32.add + (local.get $10) + (i32.load offset=8 + (local.get $2) + ) + ) + (i32.or + (i32.or + (i32.or + (i32.or + (i32.shl + (i32.ne + (local.get $8) + (i32.const 0) ) + (i32.const 1) + ) + (i32.ne + (local.get $9) + (i32.const 0) + ) + ) + (i32.shl + (i32.ne + (local.get $6) + (i32.const 0) + ) + (i32.const 2) + ) + ) + (i32.shl + (i32.ne + (local.get $5) + (i32.const 0) + ) + (i32.const 3) + ) + ) + (i32.shl + (i32.ne + (local.get $4) + (i32.const 0) + ) + (i32.const 4) + ) + ) + ) + (local.set $4 + (i32.load offset=4 + (i32.load offset=28 + (local.get $2) + ) + ) + ) + (i32.store offset=20 + (local.get $2) + (i32.add + (local.tee $5 + (i32.load offset=20 + (local.get $2) + ) + ) + (i32.const 1) + ) + ) + (i32.store8 + (i32.add + (local.get $5) + (i32.load offset=8 + (local.get $2) + ) + ) + (local.get $4) + ) + (local.set $4 + (i32.load offset=4 + (i32.load offset=28 + (local.get $2) + ) + ) + ) + (i32.store offset=20 + (local.get $2) + (i32.add + (local.tee $5 + (i32.load offset=20 + (local.get $2) + ) + ) + (i32.const 1) + ) + ) + (i32.store8 + (i32.add + (local.get $5) + (i32.load offset=8 + (local.get $2) + ) + ) + (i32.shr_u + (local.get $4) + (i32.const 8) + ) + ) + (local.set $4 + (i32.load16_u offset=6 + (i32.load offset=28 + (local.get $2) + ) + ) + ) + (i32.store offset=20 + (local.get $2) + (i32.add + (local.tee $5 + (i32.load offset=20 + (local.get $2) + ) + ) + (i32.const 1) + ) + ) + (i32.store8 + (i32.add + (local.get $5) + (i32.load offset=8 + (local.get $2) + ) + ) + (local.get $4) + ) + (local.set $4 + (i32.load8_u offset=7 + (i32.load offset=28 + (local.get $2) + ) + ) + ) + (i32.store offset=20 + (local.get $2) + (i32.add + (local.tee $5 + (i32.load offset=20 + (local.get $2) + ) + ) + (i32.const 1) + ) + ) + (i32.store8 + (i32.add + (local.get $5) + (i32.load offset=8 + (local.get $2) + ) + ) + (local.get $4) + ) + (if + (i32.ne + (local.tee $4 + (i32.load offset=132 + (local.get $2) + ) + ) + (i32.const 9) + ) + (local.set $3 + (select + (i32.const 4) + (i32.shl + (i32.gt_s + (i32.load offset=136 + (local.get $2) + ) + (i32.const 1) + ) + (i32.const 2) + ) + (i32.lt_s + (local.get $4) + (i32.const 2) + ) + ) + ) + ) + (i32.store offset=20 + (local.get $2) + (i32.add + (local.tee $4 + (i32.load offset=20 + (local.get $2) + ) + ) + (i32.const 1) + ) + ) + (i32.store8 + (i32.add + (local.get $4) + (i32.load offset=8 + (local.get $2) + ) + ) + (local.get $3) + ) + (local.set $3 + (i32.load offset=12 + (i32.load offset=28 + (local.get $2) + ) + ) + ) + (i32.store offset=20 + (local.get $2) + (i32.add + (local.tee $4 + (i32.load offset=20 + (local.get $2) + ) + ) + (i32.const 1) + ) + ) + (i32.store8 + (i32.add + (local.get $4) + (i32.load offset=8 + (local.get $2) + ) + ) + (local.get $3) + ) + (if + (i32.load offset=44 + (if (result i32) + (i32.load offset=16 + (local.tee $3 + (i32.load offset=28 + (local.get $2) + ) + ) + ) + (block (result i32) + (local.set $3 + (i32.load offset=20 (local.get $3) ) - (local.get $4) ) - (i32.store offset=32 + (i32.store offset=20 (local.get $2) - (local.tee $6 - (i32.add - (i32.load offset=32 + (i32.add + (local.tee $4 + (i32.load offset=20 (local.get $2) ) - (i32.const 1) ) + (i32.const 1) ) ) - (if - (i32.ge_u - (local.get $6) - (i32.load16_u offset=20 - (local.tee $4 - (i32.load offset=28 - (local.get $2) - ) - ) + (i32.store8 + (i32.add + (local.get $4) + (i32.load offset=8 + (local.get $2) ) ) - (block - (local.set $3 - (local.get $5) + (local.get $3) + ) + (local.set $3 + (i32.load offset=20 + (i32.load offset=28 + (local.get $2) ) - (br $label$26) ) - (block - (local.set $3 + ) + (i32.store offset=20 + (local.get $2) + (i32.add + (local.tee $4 (i32.load offset=20 (local.get $2) ) ) - (br $label$28) + (i32.const 1) + ) + ) + (i32.store8 + (i32.add + (local.get $4) + (i32.load offset=8 + (local.get $2) + ) + ) + (i32.shr_u + (local.get $3) + (i32.const 8) ) ) + (i32.load offset=28 + (local.get $2) + ) + ) + (local.get $3) + ) + ) + (i32.store offset=48 + (local.get $0) + (call $fimport$14 + (i32.load offset=48 + (local.get $0) + ) + (i32.load offset=8 + (local.get $2) + ) + (i32.load offset=20 + (local.get $2) ) ) ) - (i32.store offset=4 + ) + (i32.store offset=4 + (local.get $2) + (i32.const 69) + ) + (i32.store offset=32 + (local.get $2) + (i32.const 0) + ) + (br $label$16) + ) + ) + (local.set $4 + (i32.add + (i32.shl + (i32.load offset=48 (local.get $2) - (i32.const 73) ) - (br $label$14) + (i32.const 12) ) - (block $label$33 - (br_if $label$33 - (i32.eqz - (i32.load offset=44 - (local.get $4) + (i32.const -30720) + ) + ) + (local.set $3 + (i32.const 0) + ) + (block $label$24 + (br_if $label$24 + (i32.gt_s + (i32.load offset=136 + (local.get $2) + ) + (i32.const 1) + ) + ) + (br_if $label$24 + (i32.lt_s + (local.tee $5 + (i32.load offset=132 + (local.get $2) + ) + ) + (i32.const 2) + ) + ) + (local.set $3 + (i32.const 64) + ) + (br_if $label$24 + (i32.lt_s + (local.get $5) + (i32.const 6) + ) + ) + (local.set $3 + (select + (i32.const 128) + (i32.const 192) + (i32.eq + (local.get $5) + (i32.const 6) + ) + ) + ) + ) + (i32.store offset=4 + (local.get $2) + (i32.const 113) + ) + (i32.store offset=20 + (local.get $2) + (i32.add + (local.tee $5 + (i32.load offset=20 + (local.get $2) + ) + ) + (i32.const 1) + ) + ) + (i32.store8 + (i32.add + (local.get $5) + (i32.load offset=8 + (local.get $2) + ) + ) + (i32.shr_u + (local.tee $3 + (select + (i32.or + (local.tee $3 + (i32.or + (local.get $3) + (local.get $4) + ) ) + (i32.const 32) + ) + (local.get $3) + (i32.load offset=108 + (local.get $2) ) ) - (br_if $label$33 - (i32.le_u + ) + (i32.const 8) + ) + ) + (i32.store offset=20 + (local.get $2) + (i32.add + (local.tee $4 + (i32.load offset=20 + (local.get $2) + ) + ) + (i32.const 1) + ) + ) + (i32.store8 + (i32.add + (local.get $4) + (i32.load offset=8 + (local.get $2) + ) + ) + (i32.xor + (i32.or + (i32.rem_u + (local.get $3) + (i32.const 31) + ) + (local.get $3) + ) + (i32.const 31) + ) + ) + (if + (i32.load offset=108 + (local.get $2) + ) + (block + (local.set $3 + (i32.load offset=48 + (local.get $0) + ) + ) + (i32.store offset=20 + (local.get $2) + (i32.add + (local.tee $4 (i32.load offset=20 (local.get $2) ) - (local.get $3) ) + (i32.const 1) ) - (br $folding-inner2) ) - (if - (i32.eq - (i32.load offset=32 + (i32.store8 + (i32.add + (local.get $4) + (i32.load offset=8 (local.get $2) ) - (i32.load offset=20 - (local.get $4) + ) + (i32.shr_u + (local.get $3) + (i32.const 24) + ) + ) + (i32.store offset=20 + (local.get $2) + (i32.add + (local.tee $4 + (i32.load offset=20 + (local.get $2) + ) ) + (i32.const 1) ) - (block - (i32.store offset=4 + ) + (i32.store8 + (i32.add + (local.get $4) + (i32.load offset=8 (local.get $2) - (i32.const 73) ) - (i32.store offset=32 + ) + (i32.shr_u + (local.get $3) + (i32.const 16) + ) + ) + (local.set $3 + (i32.load offset=48 + (local.get $0) + ) + ) + (i32.store offset=20 + (local.get $2) + (i32.add + (local.tee $4 + (i32.load offset=20 + (local.get $2) + ) + ) + (i32.const 1) + ) + ) + (i32.store8 + (i32.add + (local.get $4) + (i32.load offset=8 (local.get $2) - (i32.const 0) ) - (br $label$14) + ) + (i32.shr_u + (local.get $3) + (i32.const 8) ) ) - (local.set $3 - (i32.load offset=4 - (local.get $2) + (i32.store offset=20 + (local.get $2) + (i32.add + (local.tee $4 + (i32.load offset=20 + (local.get $2) + ) + ) + (i32.const 1) + ) + ) + (i32.store8 + (i32.add + (local.get $4) + (i32.load offset=8 + (local.get $2) + ) ) + (local.get $3) ) ) ) - (br_if $label$13 - (i32.ne - (local.get $3) - (i32.const 73) + (i32.store offset=48 + (local.get $0) + (call $fimport$15 + (i32.const 0) + (i32.const 0) + (i32.const 0) ) ) - (local.set $4 - (i32.load offset=28 + (local.set $3 + (i32.load offset=4 (local.get $2) ) ) ) - (br_if $label$11 - (i32.eqz - (i32.load offset=28 - (local.get $4) - ) - ) - ) - (local.set $13 - (local.get $0) + ) + (br_if $label$15 + (i32.ne + (local.get $3) + (i32.const 69) ) - (local.set $10 - (local.tee $12 - (local.tee $11 + ) + ) + (block $label$26 + (if + (i32.load offset=16 + (local.tee $4 + (i32.load offset=28 (local.get $2) ) ) ) - (local.set $5 - (local.tee $3 + (block + (local.set $3 (i32.load offset=20 (local.get $2) ) ) - ) - (local.set $4 - (block $label$35 (result i32) - (loop $label$37 - (block $label$36 - (if - (i32.eq - (i32.load offset=12 - (local.get $11) + (br_if $label$26 + (i32.ge_u + (local.tee $5 + (i32.load offset=32 + (local.get $2) + ) + ) + (i32.load16_u offset=20 + (local.get $4) + ) + ) + ) + (local.set $6 + (local.get $3) + ) + (loop $label$28 + (if + (i32.eq + (i32.load offset=12 + (local.get $2) + ) + (local.get $3) + ) + (block + (block $label$30 + (br_if $label$30 + (i32.le_u + (local.get $3) + (local.get $6) ) - (local.get $3) ) - (block - (block $label$39 - (br_if $label$39 - (i32.le_u - (local.get $3) - (local.get $5) - ) + (br_if $label$30 + (i32.eqz + (i32.load offset=44 + (local.get $4) ) - (br_if $label$39 - (i32.eqz - (i32.load offset=44 - (i32.load offset=28 - (local.get $12) - ) - ) + ) + ) + (i32.store offset=48 + (local.get $0) + (call $fimport$14 + (i32.load offset=48 + (local.get $0) + ) + (i32.add + (i32.load offset=8 + (local.get $2) ) + (local.get $6) + ) + (i32.sub + (local.get $3) + (local.get $6) ) - (br $folding-inner3) ) - (if - (select - (local.tee $3 - (i32.load offset=16 - (local.get $0) + ) + ) + (block $label$31 + (br_if $label$31 + (i32.eqz + (local.tee $3 + (select + (local.tee $3 + (i32.load offset=16 + (local.get $0) + ) ) - ) - (local.tee $4 - (i32.load offset=20 - (local.tee $5 - (i32.load offset=28 - (local.get $0) + (local.tee $4 + (i32.load offset=20 + (local.tee $5 + (i32.load offset=28 + (local.get $0) + ) ) ) ) - ) - (i32.gt_u - (local.get $4) - (local.get $3) - ) - ) - (br $folding-inner4) - ) - (br_if $label$36 - (i32.eq - (local.tee $3 - (i32.load offset=20 - (local.get $2) + (i32.gt_u + (local.get $4) + (local.get $3) ) ) - (i32.load offset=12 - (local.get $11) - ) ) ) - (local.set $5 + ) + (drop + (call $fimport$98 + (i32.load offset=12 + (local.get $0) + ) + (i32.load offset=16 + (local.get $5) + ) (local.get $3) ) ) - ) - (local.set $4 - (i32.load offset=28 - (i32.load offset=28 - (local.get $12) + (i32.store offset=12 + (local.get $0) + (i32.add + (i32.load offset=12 + (local.get $0) + ) + (local.get $3) ) ) - ) - (i32.store offset=32 - (local.get $2) - (i32.add - (local.tee $7 - (i32.load offset=32 - (local.get $2) + (i32.store offset=16 + (local.tee $4 + (i32.load offset=28 + (local.get $0) + ) + ) + (i32.add + (i32.load offset=16 + (local.get $4) ) + (local.get $3) ) - (i32.const 1) ) - ) - (local.set $4 - (i32.load8_u + (i32.store offset=20 + (local.get $0) (i32.add - (local.get $4) - (local.get $7) + (i32.load offset=20 + (local.get $0) + ) + (local.get $3) ) ) - ) - (i32.store offset=20 - (local.get $2) - (i32.add + (i32.store offset=16 + (local.get $0) + (i32.sub + (i32.load offset=16 + (local.get $0) + ) + (local.get $3) + ) + ) + (i32.store offset=20 + (local.get $4) + (local.tee $3 + (i32.sub + (i32.load offset=20 + (local.get $4) + ) + (local.get $3) + ) + ) + ) + (br_if $label$31 (local.get $3) - (i32.const 1) ) - ) - (i32.store8 - (i32.add + (i32.store offset=16 + (local.get $4) (i32.load offset=8 - (local.get $10) + (local.get $4) ) - (local.get $3) ) - (local.get $4) ) - (if - (local.get $4) - (block - (local.set $3 + (local.set $4 + (i32.load offset=28 + (local.get $2) + ) + ) + (br_if $label$26 + (i32.eq + (local.tee $3 (i32.load offset=20 (local.get $2) ) ) - (br $label$37) - ) - (block - (local.set $3 - (local.get $5) - ) - (br $label$35 - (i32.const 0) + (i32.load offset=12 + (local.get $2) ) ) ) + (local.set $5 + (i32.load offset=32 + (local.get $2) + ) + ) + (local.set $6 + (local.get $3) + ) ) ) - (i32.const 1) - ) - ) - (block $label$42 - (br_if $label$42 - (i32.eqz - (i32.load offset=44 - (i32.load offset=28 + (local.set $4 + (i32.load8_u + (i32.add + (i32.load offset=16 + (local.get $4) + ) + (local.get $5) + ) + ) + ) + (i32.store offset=20 + (local.get $2) + (i32.add + (local.get $3) + (i32.const 1) + ) + ) + (i32.store8 + (i32.add + (i32.load offset=8 (local.get $2) ) + (local.get $3) ) + (local.get $4) ) - ) - (br_if $label$42 - (i32.le_u - (i32.load offset=20 - (local.get $2) + (i32.store offset=32 + (local.get $2) + (local.tee $5 + (i32.add + (i32.load offset=32 + (local.get $2) + ) + (i32.const 1) + ) + ) + ) + (if + (i32.ge_u + (local.get $5) + (i32.load16_u offset=20 + (local.tee $4 + (i32.load offset=28 + (local.get $2) + ) + ) + ) + ) + (block + (local.set $3 + (local.get $6) + ) + (br $label$26) + ) + (block + (local.set $3 + (i32.load offset=20 + (local.get $2) + ) + ) + (br $label$28) ) - (local.get $3) ) ) - (br $folding-inner2) ) - (br_if $label$12 - (i32.eqz + ) + (i32.store offset=4 + (local.get $2) + (i32.const 73) + ) + (br $label$14) + ) + (block $label$33 + (br_if $label$33 + (i32.eqz + (i32.load offset=44 (local.get $4) ) ) - (local.set $3 - (i32.load offset=4 - (local.get $2) + ) + (br_if $label$33 + (i32.le_u + (local.tee $5 + (i32.load offset=20 + (local.get $2) + ) ) + (local.get $3) ) ) - (br_if $label$10 - (i32.eq - (local.get $3) - (i32.const 91) + (i32.store offset=48 + (local.get $0) + (call $fimport$14 + (i32.load offset=48 + (local.get $0) + ) + (i32.add + (i32.load offset=8 + (local.get $2) + ) + (local.get $3) + ) + (i32.sub + (local.get $5) + (local.get $3) + ) + ) + ) + (local.set $4 + (i32.load offset=28 + (local.get $2) ) ) - (br $label$9) ) - (i32.store offset=32 - (local.get $2) - (i32.const 0) + (if + (i32.eq + (i32.load offset=32 + (local.get $2) + ) + (i32.load offset=20 + (local.get $4) + ) + ) + (block + (i32.store offset=4 + (local.get $2) + (i32.const 73) + ) + (i32.store offset=32 + (local.get $2) + (i32.const 0) + ) + (br $label$14) + ) ) - ) - (i32.store offset=4 - (local.get $2) - (i32.const 91) - ) - ) - (br_if $label$8 - (i32.eqz - (i32.load offset=36 - (i32.load offset=28 + (local.set $3 + (i32.load offset=4 (local.get $2) ) ) ) - ) - (local.set $13 - (local.get $0) - ) - (local.set $10 - (local.tee $12 - (local.tee $11 + (br_if $label$13 + (i32.ne + (local.get $3) + (i32.const 73) + ) + ) + (local.set $4 + (i32.load offset=28 (local.get $2) ) ) ) - (local.set $5 + (br_if $label$11 + (i32.eqz + (i32.load offset=28 + (local.get $4) + ) + ) + ) + (local.set $6 (local.tee $3 (i32.load offset=20 (local.get $2) @@ -902,59 +1415,152 @@ total ) ) (local.set $4 - (block $label$43 (result i32) - (loop $label$45 - (block $label$44 + (block $label$35 (result i32) + (loop $label$37 + (block $label$36 (if (i32.eq (i32.load offset=12 - (local.get $11) + (local.get $2) ) (local.get $3) ) (block - (block $label$47 - (br_if $label$47 + (block $label$39 + (br_if $label$39 (i32.le_u (local.get $3) - (local.get $5) + (local.get $6) ) ) - (br_if $label$47 + (br_if $label$39 (i32.eqz (i32.load offset=44 (i32.load offset=28 - (local.get $12) + (local.get $2) + ) + ) + ) + ) + (i32.store offset=48 + (local.get $0) + (call $fimport$14 + (i32.load offset=48 + (local.get $0) + ) + (i32.add + (i32.load offset=8 + (local.get $2) ) + (local.get $6) + ) + (i32.sub + (local.get $3) + (local.get $6) ) ) ) - (br $folding-inner3) ) - (if - (select - (local.tee $3 + (block $label$40 + (br_if $label$40 + (i32.eqz + (local.tee $3 + (select + (local.tee $3 + (i32.load offset=16 + (local.get $0) + ) + ) + (local.tee $4 + (i32.load offset=20 + (local.tee $5 + (i32.load offset=28 + (local.get $0) + ) + ) + ) + ) + (i32.gt_u + (local.get $4) + (local.get $3) + ) + ) + ) + ) + ) + (drop + (call $fimport$98 + (i32.load offset=12 + (local.get $0) + ) (i32.load offset=16 + (local.get $5) + ) + (local.get $3) + ) + ) + (i32.store offset=12 + (local.get $0) + (i32.add + (i32.load offset=12 (local.get $0) ) + (local.get $3) ) + ) + (i32.store offset=16 (local.tee $4 + (i32.load offset=28 + (local.get $0) + ) + ) + (i32.add + (i32.load offset=16 + (local.get $4) + ) + (local.get $3) + ) + ) + (i32.store offset=20 + (local.get $0) + (i32.add (i32.load offset=20 - (local.tee $5 - (i32.load offset=28 - (local.get $0) - ) + (local.get $0) + ) + (local.get $3) + ) + ) + (i32.store offset=16 + (local.get $0) + (i32.sub + (i32.load offset=16 + (local.get $0) + ) + (local.get $3) + ) + ) + (i32.store offset=20 + (local.get $4) + (local.tee $3 + (i32.sub + (i32.load offset=20 + (local.get $4) ) + (local.get $3) ) ) - (i32.gt_u + ) + (br_if $label$40 + (local.get $3) + ) + (i32.store offset=16 + (local.get $4) + (i32.load offset=8 (local.get $4) - (local.get $3) ) ) - (br $folding-inner4) ) - (br_if $label$44 + (br_if $label$36 (i32.eq (local.tee $3 (i32.load offset=20 @@ -962,26 +1568,26 @@ total ) ) (i32.load offset=12 - (local.get $11) + (local.get $2) ) ) ) - (local.set $5 + (local.set $6 (local.get $3) ) ) ) (local.set $4 - (i32.load offset=36 + (i32.load offset=28 (i32.load offset=28 - (local.get $12) + (local.get $2) ) ) ) (i32.store offset=32 (local.get $2) (i32.add - (local.tee $7 + (local.tee $5 (i32.load offset=32 (local.get $2) ) @@ -993,7 +1599,7 @@ total (i32.load8_u (i32.add (local.get $4) - (local.get $7) + (local.get $5) ) ) ) @@ -1007,7 +1613,7 @@ total (i32.store8 (i32.add (i32.load offset=8 - (local.get $10) + (local.get $2) ) (local.get $3) ) @@ -1021,13 +1627,13 @@ total (local.get $2) ) ) - (br $label$45) + (br $label$37) ) (block (local.set $3 - (local.get $5) + (local.get $6) ) - (br $label$43 + (br $label$35 (i32.const 0) ) ) @@ -1037,8 +1643,8 @@ total (i32.const 1) ) ) - (block $label$50 - (br_if $label$50 + (block $label$42 + (br_if $label$42 (i32.eqz (i32.load offset=44 (i32.load offset=28 @@ -1047,17 +1653,36 @@ total ) ) ) - (br_if $label$50 + (br_if $label$42 (i32.le_u - (i32.load offset=20 - (local.get $2) + (local.tee $5 + (i32.load offset=20 + (local.get $2) + ) ) (local.get $3) ) ) - (br $folding-inner2) + (i32.store offset=48 + (local.get $0) + (call $fimport$14 + (i32.load offset=48 + (local.get $0) + ) + (i32.add + (i32.load offset=8 + (local.get $2) + ) + (local.get $3) + ) + (i32.sub + (local.get $5) + (local.get $3) + ) + ) + ) ) - (br_if $label$8 + (br_if $label$12 (i32.eqz (local.get $4) ) @@ -1068,1510 +1693,1459 @@ total ) ) ) - (br_if $label$7 + (br_if $label$10 (i32.eq (local.get $3) - (i32.const 103) + (i32.const 91) ) ) - (br $label$6) + (br $label$9) ) - (i32.store offset=4 + (i32.store offset=32 (local.get $2) - (i32.const 103) + (i32.const 0) ) ) - (if - (i32.load offset=44 + (i32.store offset=4 + (local.get $2) + (i32.const 91) + ) + ) + (br_if $label$8 + (i32.eqz + (i32.load offset=36 (i32.load offset=28 (local.get $2) ) ) - (block - (block $label$52 - (br_if $label$52 - (i32.le_u - (i32.add - (i32.load offset=20 - (local.get $2) - ) - (i32.const 2) - ) - (i32.load offset=12 - (local.get $2) - ) - ) - ) - (br_if $label$52 - (i32.eqz - (select - (local.tee $3 - (i32.load offset=16 - (local.get $0) - ) - ) - (local.tee $4 - (i32.load offset=20 - (local.tee $7 - (i32.load offset=28 - (local.get $0) - ) - ) - ) - ) - (i32.gt_u - (local.get $4) - (local.get $3) - ) - ) - ) - ) - (br $folding-inner5) - ) - (br_if $label$6 - (i32.gt_u - (i32.add - (local.tee $4 - (i32.load offset=20 - (local.get $2) - ) - ) - (i32.const 2) - ) - (i32.load offset=12 - (local.get $2) - ) - ) - ) - (local.set $6 - (i32.load offset=48 - (local.get $0) - ) - ) - (i32.store offset=20 - (local.get $2) - (i32.add - (local.get $4) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (i32.load offset=8 - (local.get $2) - ) - (local.get $4) - ) - (local.get $6) - ) - (local.set $4 - (i32.load offset=48 - (local.get $0) - ) - ) - (i32.store offset=20 - (local.get $2) - (i32.add - (local.tee $6 - (i32.load offset=20 - (local.get $2) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (local.get $6) - (i32.load offset=8 - (local.get $2) - ) - ) - (i32.shr_u - (local.get $4) - (i32.const 8) - ) - ) - (unreachable) - ) - ) - (i32.store offset=4 - (local.get $2) - (i32.const 113) ) ) - (block $label$53 - (if + (local.set $6 + (local.tee $3 (i32.load offset=20 (local.get $2) ) - (block - (if - (select - (local.tee $4 - (i32.load offset=16 - (local.get $0) - ) - ) - (local.tee $3 - (i32.load offset=20 - (local.tee $7 - (i32.load offset=28 - (local.get $0) - ) - ) - ) - ) - (i32.gt_u - (local.get $3) - (local.get $4) - ) - ) - (br $folding-inner5) - ) - (br_if $label$53 - (local.get $4) - ) - (br $folding-inner1) - ) - ) - (br_if $label$53 - (i32.eq - (local.get $1) - (i32.const 4) - ) - ) - (br_if $label$53 - (i32.lt_s - (local.get $14) - (local.get $1) - ) - ) - (br_if $label$53 - (i32.load offset=4 - (local.get $0) - ) - ) - (br $folding-inner0) - ) - (local.set $3 - (i32.load offset=4 - (local.get $0) ) ) - (block $label$56 - (block $label$57 - (block $label$58 - (if - (i32.eq - (local.tee $4 - (i32.load offset=4 - (local.get $2) - ) - ) - (i32.const 666) - ) - (block - (br_if $label$58 - (i32.eqz - (local.get $3) - ) - ) - (br $folding-inner0) - ) - ) - (br_if $label$57 - (local.get $3) - ) - ) - (br_if $label$57 - (i32.ne - (i32.or - (i32.eqz - (local.get $1) - ) - (i32.eq - (local.get $4) - (i32.const 666) - ) - ) - (i32.const 1) - ) - ) - (br_if $label$56 - (i32.eqz - (i32.load offset=116 - (local.get $2) - ) - ) - ) - ) - (if - (block (result i32) - (block $label$63 + (local.set $4 + (block $label$43 (result i32) + (loop $label$45 + (block $label$44 (if - (i32.ne - (local.tee $3 - (i32.load offset=136 - (local.get $2) - ) + (i32.eq + (i32.load offset=12 + (local.get $2) ) - (i32.const 3) + (local.get $3) ) (block - (br_if $label$63 - (i32.ne - (local.get $3) - (i32.const 2) - ) - ) - (local.set $9 - (i32.add - (local.tee $12 - (local.tee $11 - (local.tee $10 - (local.tee $3 - (local.get $2) - ) - ) - ) + (block $label$47 + (br_if $label$47 + (i32.le_u + (local.get $3) + (local.get $6) ) - (i32.const 5792) - ) - ) - (local.set $8 - (i32.add - (local.get $2) - (i32.const 5796) - ) - ) - (local.set $13 - (i32.add - (local.get $2) - (i32.const 5784) - ) - ) - (local.set $4 - (i32.add - (local.get $2) - (i32.const 5788) ) - ) - (loop $label$66 - (if + (br_if $label$47 (i32.eqz - (i32.load offset=116 - (local.get $3) - ) - ) - (unreachable) - ) - (i32.store offset=96 - (local.get $10) - (i32.const 0) - ) - (local.set $6 - (i32.load8_u - (i32.add - (i32.load offset=56 - (local.get $12) - ) - (i32.load offset=108 - (local.get $11) - ) - ) - ) - ) - (i32.store16 - (i32.add - (i32.load - (local.get $8) - ) - (i32.shl - (local.tee $7 - (i32.load - (local.get $9) - ) + (i32.load offset=44 + (i32.load offset=28 + (local.get $2) ) - (i32.const 1) ) ) - (i32.const 0) ) - (i32.store - (local.get $9) - (i32.add - (local.get $7) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (local.get $7) - (i32.load - (local.get $13) + (i32.store offset=48 + (local.get $0) + (call $fimport$14 + (i32.load offset=48 + (local.get $0) ) - ) - (local.get $6) - ) - (i32.store16 offset=148 - (local.tee $5 (i32.add - (local.get $12) - (i32.shl - (local.get $6) - (i32.const 2) + (i32.load offset=8 + (local.get $2) ) + (local.get $6) ) - ) - (i32.add - (i32.load16_u offset=148 - (local.get $5) - ) - (i32.const 1) - ) - ) - (i32.store offset=116 - (local.get $3) - (i32.add - (i32.load offset=116 + (i32.sub (local.get $3) - ) - (i32.const -1) - ) - ) - (i32.store offset=108 - (local.get $11) - (i32.add - (i32.load offset=108 - (local.get $11) - ) - (i32.const 1) - ) - ) - (br_if $label$66 - (i32.ne - (i32.load - (local.get $9) - ) - (i32.add - (i32.load - (local.get $4) - ) - (i32.const -1) - ) - ) - ) - ) - (drop - (if (result i32) - (i32.ge_s - (local.tee $5 - (i32.load offset=92 - (local.get $12) - ) - ) - (i32.const 0) - ) - (i32.add - (i32.load offset=56 - (local.get $12) - ) - (local.get $5) - ) - (i32.const 0) - ) - ) - (unreachable) - ) - ) - (local.set $9 - (i32.add - (local.tee $3 - (local.tee $12 - (local.tee $11 - (local.get $2) - ) - ) - ) - (i32.const 5792) - ) - ) - (local.set $4 - (i32.add - (local.get $2) - (i32.const 5796) - ) - ) - (local.set $14 - (i32.add - (local.get $2) - (i32.const 5784) - ) - ) - (local.set $1 - (i32.add - (local.get $2) - (i32.const 5788) - ) - ) - (loop $label$72 - (block $label$75 - (if - (i32.ge_u - (local.tee $6 - (i32.load offset=116 - (local.get $11) + (local.get $6) ) ) - (i32.const 258) - ) - (block - (i32.store offset=96 - (local.get $12) - (i32.const 0) - ) - (br $label$75) ) ) - (unreachable) - ) - (block $label$73 - (block $label$74 - (if + (block $label$48 + (br_if $label$48 (i32.eqz - (local.tee $7 - (i32.load offset=108 - (local.get $3) - ) - ) - ) - (block - (local.set $7 - (i32.const 0) - ) - (br $label$74) - ) - ) - (br_if $label$74 - (i32.ne - (local.tee $5 - (i32.load8_u - (i32.add - (local.tee $2 - (i32.add - (i32.load offset=56 - (local.get $3) - ) - (local.get $7) - ) + (local.tee $3 + (select + (local.tee $3 + (i32.load offset=16 + (local.get $0) ) - (i32.const -1) ) - ) - ) - (i32.load8_u - (local.get $2) - ) - ) - ) - (br_if $label$74 - (i32.ne - (local.get $5) - (i32.load8_u offset=1 - (local.get $2) - ) - ) - ) - (br_if $label$74 - (i32.ne - (local.get $5) - (i32.load8_u offset=2 - (local.get $2) - ) - ) - ) - (local.set $0 - (i32.add - (local.get $2) - (i32.const 258) - ) - ) - (local.set $10 - (i32.const 1) - ) - (block $label$83 - (block $label$84 - (block $label$85 - (block $label$86 - (block $label$87 - (block $label$88 - (loop $label$90 - (if - (i32.eq - (i32.load8_u offset=2 - (local.tee $8 - (i32.add - (local.get $2) - (local.get $10) - ) - ) - ) - (local.get $5) - ) - (block - (br_if $label$88 - (i32.ne - (local.get $5) - (i32.load8_u offset=3 - (local.get $8) - ) - ) - ) - (br_if $label$87 - (i32.ne - (local.get $5) - (i32.load8_u offset=4 - (local.get $8) - ) - ) - ) - (br_if $label$86 - (i32.ne - (local.get $5) - (i32.load8_u offset=5 - (local.get $8) - ) - ) - ) - (br_if $label$85 - (i32.ne - (local.get $5) - (i32.load8_u offset=6 - (local.get $8) - ) - ) - ) - (br_if $label$84 - (i32.ne - (local.get $5) - (i32.load8_u offset=7 - (local.get $8) - ) - ) - ) - (br_if $label$83 - (i32.ne - (local.get $5) - (i32.load8_u - (local.tee $8 - (i32.add - (local.get $2) - (local.tee $13 - (i32.add - (local.get $10) - (i32.const 8) - ) - ) - ) - ) - ) - ) - ) - (local.set $8 - (i32.add - (local.get $2) - (local.tee $10 - (i32.add - (local.get $10) - (i32.const 9) - ) - ) - ) - ) - (br_if $label$83 - (i32.gt_u - (local.get $10) - (i32.const 257) - ) - ) - (local.set $10 - (local.get $13) - ) - (br_if $label$90 - (i32.eq - (local.get $5) - (i32.load8_u - (local.get $8) - ) - ) - ) - (br $label$83) - ) - ) - ) - (local.set $8 - (i32.add - (local.get $8) - (i32.const 2) + (local.tee $4 + (i32.load offset=20 + (local.tee $5 + (i32.load offset=28 + (local.get $0) ) ) - (br $label$83) - ) - (local.set $8 - (i32.add - (local.get $8) - (i32.const 3) - ) - ) - (br $label$83) - ) - (local.set $8 - (i32.add - (local.get $8) - (i32.const 4) ) ) - (br $label$83) - ) - (local.set $8 - (i32.add - (local.get $8) - (i32.const 5) - ) - ) - (br $label$83) - ) - (local.set $8 - (i32.add - (local.get $8) - (i32.const 6) - ) - ) - (br $label$83) - ) - (local.set $8 - (i32.add - (local.get $8) - (i32.const 7) - ) - ) - ) - (i32.store offset=96 - (local.get $12) - (local.tee $6 - (select - (local.get $6) - (local.tee $5 - (i32.add - (i32.sub - (local.get $8) - (local.get $0) - ) - (i32.const 258) + (i32.gt_u + (local.get $4) + (local.get $3) ) ) - (i32.gt_u - (local.get $5) - (local.get $6) - ) ) ) ) - (br_if $label$74 - (i32.lt_u - (local.get $6) - (i32.const 3) - ) - ) - (i32.store16 - (i32.add - (i32.load - (local.get $4) + (drop + (call $fimport$98 + (i32.load offset=12 + (local.get $0) ) - (i32.shl - (local.tee $7 - (i32.load - (local.get $9) - ) - ) - (i32.const 1) + (i32.load offset=16 + (local.get $5) ) - ) - (i32.const 1) - ) - (i32.store - (local.get $9) - (i32.add - (local.get $7) - (i32.const 1) + (local.get $3) ) ) - (i32.store8 + (i32.store offset=12 + (local.get $0) (i32.add - (local.get $7) - (i32.load - (local.get $14) - ) - ) - (local.tee $6 - (i32.add - (local.get $6) - (i32.const -3) + (i32.load offset=12 + (local.get $0) ) + (local.get $3) ) ) - (i32.store16 offset=152 - (local.tee $5 - (i32.add - (local.get $3) - (i32.or - (i32.shl - (i32.load8_u - (i32.add - (i32.and - (local.get $6) - (i32.const 255) - ) - (i32.const 13488) - ) - ) - (i32.const 2) - ) - (i32.const 1024) - ) + (i32.store offset=16 + (local.tee $4 + (i32.load offset=28 + (local.get $0) ) ) (i32.add - (i32.load16_u offset=152 - (local.get $5) + (i32.load offset=16 + (local.get $4) ) - (i32.const 1) + (local.get $3) ) ) - (i32.store16 - (local.tee $6 - (i32.add - (i32.add - (local.get $3) - (i32.shl - (i32.load8_u - (i32.const 12976) - ) - (i32.const 2) - ) - ) - (i32.const 2440) - ) - ) + (i32.store offset=20 + (local.get $0) (i32.add - (i32.load16_u - (local.get $6) + (i32.load offset=20 + (local.get $0) ) - (i32.const 1) - ) - ) - (local.set $6 - (i32.load offset=96 - (local.get $12) + (local.get $3) ) ) - (i32.store offset=96 - (local.get $12) - (i32.const 0) - ) - (i32.store offset=116 - (local.get $11) + (i32.store offset=16 + (local.get $0) (i32.sub - (i32.load offset=116 - (local.get $11) + (i32.load offset=16 + (local.get $0) ) - (local.get $6) + (local.get $3) ) ) - (i32.store offset=108 - (local.get $3) - (i32.add - (local.get $6) - (i32.load offset=108 + (i32.store offset=20 + (local.get $4) + (local.tee $3 + (i32.sub + (i32.load offset=20 + (local.get $4) + ) (local.get $3) ) ) ) - (br $label$73) - ) - (local.set $6 - (i32.load8_u - (i32.add - (i32.load offset=56 - (local.get $3) - ) - (local.get $7) - ) + (br_if $label$48 + (local.get $3) ) - ) - (i32.store16 - (i32.add - (i32.load + (i32.store offset=16 + (local.get $4) + (i32.load offset=8 (local.get $4) ) - (i32.shl - (local.tee $7 - (i32.load - (local.get $9) - ) - ) - (i32.const 1) - ) - ) - (i32.const 0) - ) - (i32.store - (local.get $9) - (i32.add - (local.get $7) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (local.get $7) - (i32.load - (local.get $14) - ) ) - (local.get $6) ) - (i32.store16 offset=148 - (local.tee $5 - (i32.add - (local.get $3) - (i32.shl - (local.get $6) - (i32.const 2) + (br_if $label$44 + (i32.eq + (local.tee $3 + (i32.load offset=20 + (local.get $2) ) ) - ) - (i32.add - (i32.load16_u offset=148 - (local.get $5) - ) - (i32.const 1) - ) - ) - (i32.store offset=116 - (local.get $11) - (i32.add - (i32.load offset=116 - (local.get $11) + (i32.load offset=12 + (local.get $2) ) - (i32.const -1) ) ) - (i32.store offset=108 + (local.set $6 (local.get $3) - (i32.add - (i32.load offset=108 - (local.get $3) - ) - (i32.const 1) - ) ) ) - (br_if $label$72 - (i32.ne - (i32.load - (local.get $9) - ) - (i32.add - (i32.load - (local.get $1) - ) - (i32.const -1) - ) + ) + (local.set $4 + (i32.load offset=36 + (i32.load offset=28 + (local.get $2) ) ) ) - (drop - (if (result i32) - (i32.ge_s - (local.tee $5 - (i32.load offset=92 - (local.get $3) - ) + (i32.store offset=32 + (local.get $2) + (i32.add + (local.tee $5 + (i32.load offset=32 + (local.get $2) ) - (i32.const 0) ) + (i32.const 1) + ) + ) + (local.set $4 + (i32.load8_u (i32.add - (i32.load offset=56 - (local.get $3) - ) + (local.get $4) (local.get $5) ) - (i32.const 0) ) ) - (unreachable) - ) - (i32.eq - (i32.or - (local.tee $3 - (call_indirect (type $2) + (i32.store offset=20 + (local.get $2) + (i32.add + (local.get $3) + (i32.const 1) + ) + ) + (i32.store8 + (i32.add + (i32.load offset=8 (local.get $2) - (local.get $1) - (i32.load - (i32.add - (i32.mul - (i32.load offset=132 - (local.get $2) - ) - (i32.const 12) - ) - (i32.const 9832) - ) + ) + (local.get $3) + ) + (local.get $4) + ) + (if + (local.get $4) + (block + (local.set $3 + (i32.load offset=20 + (local.get $2) ) ) + (br $label$45) + ) + (block + (local.set $3 + (local.get $6) + ) + (br $label$43 + (i32.const 0) + ) ) - (i32.const 1) ) - (i32.const 3) ) ) - (i32.store offset=4 - (local.get $2) - (i32.const 666) - ) + (i32.const 1) ) - (if + ) + (block $label$50 + (br_if $label$50 (i32.eqz - (i32.and - (local.get $3) - (i32.const -3) - ) - ) - (block - (local.set $3 - (i32.const 0) - ) - (br_if $label$1 - (i32.load offset=16 - (local.get $0) + (i32.load offset=44 + (i32.load offset=28 + (local.get $2) ) ) - (br $folding-inner1) - ) - ) - (br_if $label$56 - (i32.ne - (local.get $3) - (i32.const 1) ) ) - (if - (i32.ne - (local.get $1) - (i32.const 5) - ) - (block - (if - (i32.eq - (local.get $1) - (i32.const 1) + (br_if $label$50 + (i32.le_u + (local.tee $5 + (i32.load offset=20 + (local.get $2) ) - (unreachable) ) - (unreachable) + (local.get $3) ) ) - (if - (select - (local.tee $4 - (i32.load offset=16 - (local.get $0) - ) + (i32.store offset=48 + (local.get $0) + (call $fimport$14 + (i32.load offset=48 + (local.get $0) ) - (local.tee $3 - (i32.load offset=20 - (local.tee $7 - (i32.load offset=28 - (local.get $0) - ) - ) + (i32.add + (i32.load offset=8 + (local.get $2) ) + (local.get $3) ) - (i32.gt_u + (i32.sub + (local.get $5) (local.get $3) - (local.get $4) ) ) - (br $folding-inner5) ) - (br_if $label$56 + ) + (br_if $label$8 + (i32.eqz (local.get $4) ) - (br $folding-inner1) ) (local.set $3 - (i32.const 0) - ) - (br_if $label$1 - (i32.ne - (local.get $1) - (i32.const 4) + (i32.load offset=4 + (local.get $2) ) ) - (local.set $3 - (i32.const 1) + ) + (br_if $label$7 + (i32.eq + (local.get $3) + (i32.const 103) ) - (br_if $label$1 - (i32.lt_s - (local.tee $1 - (i32.load offset=24 + ) + (br $label$6) + ) + (i32.store offset=4 + (local.get $2) + (i32.const 103) + ) + ) + (if + (i32.load offset=44 + (i32.load offset=28 + (local.get $2) + ) + ) + (block + (block $label$52 + (br_if $label$52 + (i32.le_u + (i32.add + (i32.load offset=20 (local.get $2) ) + (i32.const 2) + ) + (i32.load offset=12 + (local.get $2) ) - (i32.const 1) - ) - ) - (local.set $4 - (i32.load offset=48 - (local.get $0) ) ) - (i32.store8 - (block $label$97 (result i32) - (if - (i32.eq - (local.get $1) - (i32.const 2) - ) - (block - (i32.store offset=20 - (local.get $2) - (i32.add - (local.tee $1 - (i32.load offset=20 - (local.get $2) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (local.get $1) - (i32.load offset=8 - (local.get $2) - ) - ) - (local.get $4) - ) - (local.set $1 - (i32.load offset=48 - (local.get $0) - ) - ) - (i32.store offset=20 - (local.get $2) - (i32.add - (local.tee $4 - (i32.load offset=20 - (local.get $2) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (local.get $4) - (i32.load offset=8 - (local.get $2) - ) - ) - (i32.shr_u - (local.get $1) - (i32.const 8) - ) - ) - (local.set $1 - (i32.load16_u offset=50 + (br_if $label$52 + (i32.eqz + (local.tee $3 + (select + (local.tee $3 + (i32.load offset=16 (local.get $0) ) ) - (i32.store offset=20 - (local.get $2) - (i32.add - (local.tee $4 - (i32.load offset=20 - (local.get $2) + (local.tee $4 + (i32.load offset=20 + (local.tee $5 + (i32.load offset=28 + (local.get $0) ) ) - (i32.const 1) ) ) - (i32.store8 - (i32.add - (local.get $4) - (i32.load offset=8 - (local.get $2) - ) - ) - (local.get $1) + (i32.gt_u + (local.get $4) + (local.get $3) ) - (local.set $1 - (i32.load8_u offset=51 + ) + ) + ) + ) + (drop + (call $fimport$98 + (i32.load offset=12 + (local.get $0) + ) + (i32.load offset=16 + (local.get $5) + ) + (local.get $3) + ) + ) + (i32.store offset=12 + (local.get $0) + (i32.add + (i32.load offset=12 + (local.get $0) + ) + (local.get $3) + ) + ) + (i32.store offset=16 + (local.tee $4 + (i32.load offset=28 + (local.get $0) + ) + ) + (i32.add + (i32.load offset=16 + (local.get $4) + ) + (local.get $3) + ) + ) + (i32.store offset=20 + (local.get $0) + (i32.add + (i32.load offset=20 + (local.get $0) + ) + (local.get $3) + ) + ) + (i32.store offset=16 + (local.get $0) + (i32.sub + (i32.load offset=16 + (local.get $0) + ) + (local.get $3) + ) + ) + (i32.store offset=20 + (local.get $4) + (local.tee $3 + (i32.sub + (i32.load offset=20 + (local.get $4) + ) + (local.get $3) + ) + ) + ) + (br_if $label$52 + (local.get $3) + ) + (i32.store offset=16 + (local.get $4) + (i32.load offset=8 + (local.get $4) + ) + ) + ) + (br_if $label$6 + (i32.gt_u + (i32.add + (local.tee $3 + (i32.load offset=20 + (local.get $2) + ) + ) + (i32.const 2) + ) + (i32.load offset=12 + (local.get $2) + ) + ) + ) + (local.set $4 + (i32.load offset=48 + (local.get $0) + ) + ) + (i32.store offset=20 + (local.get $2) + (i32.add + (local.get $3) + (i32.const 1) + ) + ) + (i32.store8 + (i32.add + (i32.load offset=8 + (local.get $2) + ) + (local.get $3) + ) + (local.get $4) + ) + (local.set $3 + (i32.load offset=48 + (local.get $0) + ) + ) + (i32.store offset=20 + (local.get $2) + (i32.add + (local.tee $4 + (i32.load offset=20 + (local.get $2) + ) + ) + (i32.const 1) + ) + ) + (i32.store8 + (i32.add + (local.get $4) + (i32.load offset=8 + (local.get $2) + ) + ) + (i32.shr_u + (local.get $3) + (i32.const 8) + ) + ) + (i32.store offset=48 + (local.get $0) + (call $fimport$14 + (i32.const 0) + (i32.const 0) + (i32.const 0) + ) + ) + (i32.store offset=4 + (local.get $2) + (i32.const 113) + ) + (br $label$6) + ) + ) + (i32.store offset=4 + (local.get $2) + (i32.const 113) + ) + ) + (block $label$53 + (if + (i32.load offset=20 + (local.get $2) + ) + (block + (block $label$55 + (br_if $label$55 + (i32.eqz + (local.tee $3 + (select + (local.tee $4 + (i32.load offset=16 (local.get $0) ) ) - (i32.store offset=20 - (local.get $2) - (i32.add - (local.tee $4 - (i32.load offset=20 - (local.get $2) + (local.tee $3 + (i32.load offset=20 + (local.tee $5 + (i32.load offset=28 + (local.get $0) ) ) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (local.get $4) - (i32.load offset=8 - (local.get $2) - ) - ) - (local.get $1) - ) - (local.set $1 - (i32.load offset=8 - (local.get $0) ) ) - (i32.store offset=20 - (local.get $2) - (i32.add - (local.tee $4 - (i32.load offset=20 - (local.get $2) - ) - ) - (i32.const 1) - ) + (i32.gt_u + (local.get $3) + (local.get $4) ) - (i32.store8 - (i32.add - (local.get $4) - (i32.load offset=8 + ) + ) + ) + ) + (drop + (call $fimport$98 + (i32.load offset=12 + (local.get $0) + ) + (i32.load offset=16 + (local.get $5) + ) + (local.get $3) + ) + ) + (i32.store offset=12 + (local.get $0) + (i32.add + (i32.load offset=12 + (local.get $0) + ) + (local.get $3) + ) + ) + (i32.store offset=16 + (local.tee $5 + (i32.load offset=28 + (local.get $0) + ) + ) + (i32.add + (i32.load offset=16 + (local.get $5) + ) + (local.get $3) + ) + ) + (i32.store offset=20 + (local.get $0) + (i32.add + (i32.load offset=20 + (local.get $0) + ) + (local.get $3) + ) + ) + (i32.store offset=16 + (local.get $0) + (local.tee $4 + (i32.sub + (i32.load offset=16 + (local.get $0) + ) + (local.get $3) + ) + ) + ) + (i32.store offset=20 + (local.get $5) + (local.tee $3 + (i32.sub + (i32.load offset=20 + (local.get $5) + ) + (local.get $3) + ) + ) + ) + (br_if $label$55 + (local.get $3) + ) + (i32.store offset=16 + (local.get $5) + (i32.load offset=8 + (local.get $5) + ) + ) + ) + (br_if $label$53 + (local.get $4) + ) + (br $folding-inner1) + ) + ) + (br_if $label$53 + (i32.eq + (local.get $1) + (i32.const 4) + ) + ) + (br_if $label$53 + (i32.lt_s + (local.get $7) + (local.get $1) + ) + ) + (br_if $label$53 + (i32.load offset=4 + (local.get $0) + ) + ) + (br $folding-inner0) + ) + (local.set $3 + (i32.load offset=4 + (local.get $0) + ) + ) + (block $label$56 + (block $label$57 + (block $label$58 + (if + (i32.eq + (local.tee $4 + (i32.load offset=4 + (local.get $2) + ) + ) + (i32.const 666) + ) + (block + (br_if $label$58 + (i32.eqz + (local.get $3) + ) + ) + (br $folding-inner0) + ) + ) + (br_if $label$57 + (local.get $3) + ) + ) + (br_if $label$57 + (i32.ne + (i32.or + (i32.eqz + (local.get $1) + ) + (i32.eq + (local.get $4) + (i32.const 666) + ) + ) + (i32.const 1) + ) + ) + (br_if $label$56 + (i32.eqz + (i32.load offset=116 + (local.get $2) + ) + ) + ) + ) + (if + (i32.eq + (i32.or + (local.tee $3 + (block $label$60 (result i32) + (block $label$61 + (if + (i32.ne + (local.tee $3 + (i32.load offset=136 (local.get $2) ) ) - (local.get $1) - ) - (local.set $1 - (i32.load offset=8 - (local.get $0) - ) + (i32.const 3) ) - (i32.store offset=20 - (local.get $2) - (i32.add - (local.tee $4 - (i32.load offset=20 - (local.get $2) - ) + (block + (br_if $label$61 + (i32.ne + (local.get $3) + (i32.const 2) ) - (i32.const 1) ) - ) - (i32.store8 - (i32.add - (local.get $4) - (i32.load offset=8 + (br $label$60 + (call $fimport$20 (local.get $2) + (local.get $1) ) ) - (i32.shr_u - (local.get $1) - (i32.const 8) - ) - ) - (local.set $1 - (i32.load16_u offset=10 - (local.get $0) - ) ) - (i32.store offset=20 + ) + (br $label$60 + (call $fimport$21 (local.get $2) - (i32.add - (local.tee $4 - (i32.load offset=20 - (local.get $2) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (local.get $4) - (i32.load offset=8 - (local.get $2) - ) - ) (local.get $1) ) - (local.set $1 - (i32.load8_u offset=11 - (local.get $0) - ) - ) - (i32.store offset=20 - (local.get $2) - (i32.add - (local.tee $4 - (i32.load offset=20 - (local.get $2) - ) - ) - (i32.const 1) - ) - ) - (br $label$97 - (i32.add - (local.get $4) - (i32.load offset=8 - (local.get $2) - ) - ) - ) ) ) - (i32.store offset=20 + (call_indirect (type $FUNCSIG$iii) (local.get $2) - (i32.add - (local.tee $1 - (i32.load offset=20 - (local.get $2) + (local.get $1) + (i32.load + (i32.add + (i32.mul + (i32.load offset=132 + (local.get $2) + ) + (i32.const 12) ) + (i32.const 11032) ) - (i32.const 1) ) ) - (i32.store8 - (i32.add - (local.get $1) - (i32.load offset=8 - (local.get $2) - ) + ) + ) + (i32.const 1) + ) + (i32.const 3) + ) + (i32.store offset=4 + (local.get $2) + (i32.const 666) + ) + ) + (if + (i32.eqz + (i32.and + (local.get $3) + (i32.const -3) + ) + ) + (block + (local.set $3 + (i32.const 0) + ) + (br_if $label$1 + (i32.load offset=16 + (local.get $0) + ) + ) + (br $folding-inner1) + ) + ) + (br_if $label$56 + (i32.ne + (local.get $3) + (i32.const 1) + ) + ) + (block $label$65 + (br_if $label$65 + (i32.eq + (local.get $1) + (i32.const 5) + ) + ) + (if + (i32.eq + (local.get $1) + (i32.const 1) + ) + (block + (call $fimport$30 + (local.get $2) + ) + (br $label$65) + ) + ) + (call $fimport$29 + (local.get $2) + (i32.const 0) + (i32.const 0) + (i32.const 0) + ) + (br_if $label$65 + (i32.ne + (local.get $1) + (i32.const 3) + ) + ) + (i32.store16 + (i32.add + (local.tee $3 + (i32.load offset=68 + (local.get $2) + ) + ) + (local.tee $4 + (i32.add + (i32.shl + (i32.load offset=76 + (local.get $2) ) - (i32.shr_u - (local.get $4) - (i32.const 24) + (i32.const 1) + ) + (i32.const -2) + ) + ) + ) + (i32.const 0) + ) + (drop + (call $fimport$97 + (local.get $3) + (i32.const 0) + (local.get $4) + ) + ) + (br_if $label$65 + (i32.load offset=116 + (local.get $2) + ) + ) + (i32.store offset=92 + (local.get $2) + (i32.const 0) + ) + (i32.store offset=108 + (local.get $2) + (i32.const 0) + ) + ) + (block $label$67 + (br_if $label$67 + (i32.eqz + (local.tee $3 + (select + (local.tee $4 + (i32.load offset=16 + (local.get $0) ) ) - (i32.store offset=20 - (local.get $2) - (i32.add - (local.tee $1 - (i32.load offset=20 - (local.get $2) + (local.tee $3 + (i32.load offset=20 + (local.tee $5 + (i32.load offset=28 + (local.get $0) ) ) - (i32.const 1) ) ) - (i32.store8 - (i32.add - (local.get $1) - (i32.load offset=8 - (local.get $2) - ) - ) - (i32.shr_u - (local.get $4) - (i32.const 16) - ) + (i32.gt_u + (local.get $3) + (local.get $4) ) - (local.set $1 - (i32.load offset=48 - (local.get $0) + ) + ) + ) + ) + (drop + (call $fimport$98 + (i32.load offset=12 + (local.get $0) + ) + (i32.load offset=16 + (local.get $5) + ) + (local.get $3) + ) + ) + (i32.store offset=12 + (local.get $0) + (i32.add + (i32.load offset=12 + (local.get $0) + ) + (local.get $3) + ) + ) + (i32.store offset=16 + (local.tee $5 + (i32.load offset=28 + (local.get $0) + ) + ) + (i32.add + (i32.load offset=16 + (local.get $5) + ) + (local.get $3) + ) + ) + (i32.store offset=20 + (local.get $0) + (i32.add + (i32.load offset=20 + (local.get $0) + ) + (local.get $3) + ) + ) + (i32.store offset=16 + (local.get $0) + (local.tee $4 + (i32.sub + (i32.load offset=16 + (local.get $0) + ) + (local.get $3) + ) + ) + ) + (i32.store offset=20 + (local.get $5) + (local.tee $3 + (i32.sub + (i32.load offset=20 + (local.get $5) + ) + (local.get $3) + ) + ) + ) + (br_if $label$67 + (local.get $3) + ) + (i32.store offset=16 + (local.get $5) + (i32.load offset=8 + (local.get $5) + ) + ) + ) + (br_if $label$56 + (local.get $4) + ) + (br $folding-inner1) + ) + (local.set $3 + (i32.const 0) + ) + (br_if $label$1 + (i32.ne + (local.get $1) + (i32.const 4) + ) + ) + (local.set $3 + (i32.const 1) + ) + (br_if $label$1 + (i32.lt_s + (local.tee $1 + (i32.load offset=24 + (local.get $2) + ) + ) + (i32.const 1) + ) + ) + (local.set $3 + (i32.load offset=48 + (local.get $0) + ) + ) + (i32.store8 + (block $label$68 (result i32) + (if + (i32.eq + (local.get $1) + (i32.const 2) + ) + (block + (i32.store offset=20 + (local.get $2) + (i32.add + (local.tee $1 + (i32.load offset=20 + (local.get $2) ) ) - (i32.store offset=20 + (i32.const 1) + ) + ) + (i32.store8 + (i32.add + (local.get $1) + (i32.load offset=8 (local.get $2) - (i32.add - (local.tee $4 - (i32.load offset=20 - (local.get $2) - ) - ) - (i32.const 1) - ) ) - (i32.store8 - (i32.add - (local.get $4) - (i32.load offset=8 - (local.get $2) - ) - ) - (i32.shr_u - (local.get $1) - (i32.const 8) + ) + (local.get $3) + ) + (local.set $3 + (i32.load offset=48 + (local.get $0) + ) + ) + (i32.store offset=20 + (local.get $2) + (i32.add + (local.tee $1 + (i32.load offset=20 + (local.get $2) ) ) - (i32.store offset=20 + (i32.const 1) + ) + ) + (i32.store8 + (i32.add + (local.get $1) + (i32.load offset=8 (local.get $2) - (i32.add - (local.tee $4 - (i32.load offset=20 - (local.get $2) - ) - ) - (i32.const 1) - ) ) - (i32.add - (local.get $4) - (i32.load offset=8 + ) + (i32.shr_u + (local.get $3) + (i32.const 8) + ) + ) + (local.set $3 + (i32.load16_u offset=50 + (local.get $0) + ) + ) + (i32.store offset=20 + (local.get $2) + (i32.add + (local.tee $1 + (i32.load offset=20 (local.get $2) ) ) + (i32.const 1) ) - (local.get $1) ) - (if - (select - (local.tee $3 - (i32.load offset=16 - (local.get $0) - ) + (i32.store8 + (i32.add + (local.get $1) + (i32.load offset=8 + (local.get $2) ) + ) + (local.get $3) + ) + (local.set $3 + (i32.load8_u offset=51 + (local.get $0) + ) + ) + (i32.store offset=20 + (local.get $2) + (i32.add (local.tee $1 (i32.load offset=20 - (local.tee $9 - (i32.load offset=28 - (local.tee $5 - (local.get $0) - ) - ) - ) + (local.get $2) ) ) - (i32.gt_u - (local.get $1) - (local.get $3) + (i32.const 1) + ) + ) + (i32.store8 + (i32.add + (local.get $1) + (i32.load offset=8 + (local.get $2) ) ) - (block - (drop - (i32.load offset=12 - (local.get $5) + (local.get $3) + ) + (local.set $3 + (i32.load offset=8 + (local.get $0) + ) + ) + (i32.store offset=20 + (local.get $2) + (i32.add + (local.tee $1 + (i32.load offset=20 + (local.get $2) ) ) - (drop - (i32.load offset=16 - (local.get $9) + (i32.const 1) + ) + ) + (i32.store8 + (i32.add + (local.get $1) + (i32.load offset=8 + (local.get $2) + ) + ) + (local.get $3) + ) + (local.set $3 + (i32.load offset=8 + (local.get $0) + ) + ) + (i32.store offset=20 + (local.get $2) + (i32.add + (local.tee $1 + (i32.load offset=20 + (local.get $2) ) ) - (unreachable) + (i32.const 1) ) ) - (if - (i32.ge_s - (local.tee $3 - (i32.load offset=24 + (i32.store8 + (i32.add + (local.get $1) + (i32.load offset=8 + (local.get $2) + ) + ) + (i32.shr_u + (local.get $3) + (i32.const 8) + ) + ) + (local.set $3 + (i32.load16_u offset=10 + (local.get $0) + ) + ) + (i32.store offset=20 + (local.get $2) + (i32.add + (local.tee $1 + (i32.load offset=20 (local.get $2) ) ) (i32.const 1) ) - (i32.store offset=24 - (local.get $2) - (i32.sub - (i32.const 0) - (local.get $3) + ) + (i32.store8 + (i32.add + (local.get $1) + (i32.load offset=8 + (local.get $2) ) ) + (local.get $3) ) (local.set $3 - (i32.eqz - (i32.load offset=20 + (i32.load8_u offset=11 + (local.get $0) + ) + ) + (i32.store offset=20 + (local.get $2) + (i32.add + (local.tee $1 + (i32.load offset=20 + (local.get $2) + ) + ) + (i32.const 1) + ) + ) + (br $label$68 + (i32.add + (local.get $1) + (i32.load offset=8 (local.get $2) ) ) ) ) - (return + ) + (i32.store offset=20 + (local.get $2) + (i32.add + (local.tee $1 + (i32.load offset=20 + (local.get $2) + ) + ) + (i32.const 1) + ) + ) + (i32.store8 + (i32.add + (local.get $1) + (i32.load offset=8 + (local.get $2) + ) + ) + (i32.shr_u (local.get $3) + (i32.const 24) ) ) - (i32.store offset=24 - (local.get $0) - (i32.load - (i32.const 15804) + (i32.store offset=20 + (local.get $2) + (i32.add + (local.tee $1 + (i32.load offset=20 + (local.get $2) + ) + ) + (i32.const 1) + ) + ) + (i32.store8 + (i32.add + (local.get $1) + (i32.load offset=8 + (local.get $2) + ) + ) + (i32.shr_u + (local.get $3) + (i32.const 16) + ) + ) + (local.set $3 + (i32.load offset=48 + (local.get $0) + ) + ) + (i32.store offset=20 + (local.get $2) + (i32.add + (local.tee $1 + (i32.load offset=20 + (local.get $2) + ) + ) + (i32.const 1) + ) + ) + (i32.store8 + (i32.add + (local.get $1) + (i32.load offset=8 + (local.get $2) + ) + ) + (i32.shr_u + (local.get $3) + (i32.const 8) + ) + ) + (i32.store offset=20 + (local.get $2) + (i32.add + (local.tee $1 + (i32.load offset=20 + (local.get $2) + ) + ) + (i32.const 1) ) ) - (return - (i32.const -5) + (i32.add + (local.get $1) + (i32.load offset=8 + (local.get $2) + ) ) ) - (i32.store offset=40 - (local.get $2) - (i32.const -1) + (local.get $3) + ) + (block $label$70 + (br_if $label$70 + (i32.eqz + (local.tee $3 + (select + (local.tee $3 + (i32.load offset=16 + (local.get $0) + ) + ) + (local.tee $1 + (i32.load offset=20 + (local.tee $4 + (i32.load offset=28 + (local.get $0) + ) + ) + ) + ) + (i32.gt_u + (local.get $1) + (local.get $3) + ) + ) + ) + ) ) - (return - (i32.const 0) + (drop + (call $fimport$98 + (i32.load offset=12 + (local.get $0) + ) + (i32.load offset=16 + (local.get $4) + ) + (local.get $3) + ) ) - ) - (drop - (i32.load offset=48 + (i32.store offset=12 (local.get $0) + (i32.add + (i32.load offset=12 + (local.get $0) + ) + (local.get $3) + ) + ) + (i32.store offset=16 + (local.tee $1 + (i32.load offset=28 + (local.get $0) + ) + ) + (i32.add + (i32.load offset=16 + (local.get $1) + ) + (local.get $3) + ) + ) + (i32.store offset=20 + (local.get $0) + (i32.add + (i32.load offset=20 + (local.get $0) + ) + (local.get $3) + ) + ) + (i32.store offset=16 + (local.get $0) + (i32.sub + (i32.load offset=16 + (local.get $0) + ) + (local.get $3) + ) + ) + (i32.store offset=20 + (local.get $1) + (local.tee $0 + (i32.sub + (i32.load offset=20 + (local.get $1) + ) + (local.get $3) + ) + ) + ) + (br_if $label$70 + (local.get $0) + ) + (i32.store offset=16 + (local.get $1) + (i32.load offset=8 + (local.get $1) + ) ) ) - (drop - (i32.load offset=8 + (if + (i32.ge_s + (local.tee $0 + (i32.load offset=24 + (local.get $2) + ) + ) + (i32.const 1) + ) + (i32.store offset=24 (local.get $2) + (i32.sub + (i32.const 0) + (local.get $0) + ) ) ) - (unreachable) - ) - (drop - (i32.load offset=48 - (local.get $13) - ) - ) - (drop - (i32.load offset=8 - (local.get $10) + (local.set $3 + (i32.eqz + (i32.load offset=20 + (local.get $2) + ) + ) ) ) - (unreachable) - ) - (drop - (i32.load offset=12 - (local.get $0) + (return + (local.get $3) ) ) - (drop - (i32.load offset=16 - (local.get $5) + (i32.store offset=24 + (local.get $0) + (i32.load + (i32.const 17004) ) ) - (unreachable) - ) - (drop - (i32.load offset=12 - (local.get $0) + (return + (i32.const -5) ) ) - (drop - (i32.load offset=16 - (local.get $7) - ) + (i32.store offset=40 + (local.get $2) + (i32.const -1) ) - (unreachable) + (i32.const 0) ) ) diff --git a/test/passes/O3_low-memory-unused_metrics.wast b/test/passes/O3_low-memory-unused_metrics.wast index e7d2d1ef6..8604b894d 100644 --- a/test/passes/O3_low-memory-unused_metrics.wast +++ b/test/passes/O3_low-memory-unused_metrics.wast @@ -1,101 +1,150 @@ -;; deflate from zlib using wasm backend, before any byn opts +;; zlib key deflate() function, with deflate_rle/deflate_huff inlining disabled (module (type $0 (func (param i32 i32 i32) (result i32))) (type $1 (func (param i32 i32))) (type $2 (func (param i32 i32) (result i32))) - (type $3 (func (param i32))) + (type $3 (func (param i32 i32 i32 i32))) (type $4 (func (param i32) (result i32))) (type $5 (func)) - (type $6 (func (param i32 i32 i32 i32))) - (type $7 (func (param i32 i32 i32 i32) (result i32))) - (type $8 (func (param i32 i32 i32 i32 i32 i32 i32 i32) (result i32))) - (type $9 (func (param i32 i32 i32 i32 i32 i32) (result i32))) - (type $10 (func (param i32 i32 i32))) - (type $11 (func (result i32))) + (type $6 (func (param i32 i32 i32))) + (type $7 (func (result i32))) + (type $8 (func (param i32 i32 i32 i32) (result i32))) + (type $9 (func (param i32 i32 i32 i32 i32 i32 i32 i32) (result i32))) + (type $10 (func (param i32))) + (type $11 (func (param i32 i32 i32 i32 i32 i32) (result i32))) (type $12 (func (param i64 i64) (result i32))) (type $13 (func (param i32 i64 i64 i32))) (type $14 (func (param i32 i32 i32 i32 i32) (result i32))) - (type $15 (func (param i32 i64 i64 i32 i32 i32 i32) (result i32))) + (type $15 (func (param i64 i32 i32) (result i32))) (type $16 (func (param i64 i32) (result i32))) - (type $17 (func (param i64 i32 i32) (result i32))) - (type $18 (func (param i32 i32 i32 i32 i32))) + (type $17 (func (param i32 i32 i32 i32 i32))) + (type $18 (func (param i32 i64 i64 i32 i32 i32 i32) (result i32))) (type $19 (func (param i32 i64 i64 i64 i64))) (type $20 (func (param i64 i64 i64 i64) (result i32))) (type $21 (func (param i32 f64))) - (import "env" "memory" (memory $7 256 256)) - (import "env" "__indirect_function_table" (table $timport$8 10 funcref)) - (import "env" "exit" (func $exit (param i32))) - (import "env" "__syscall140" (func $__syscall140 (param i32 i32) (result i32))) - (import "env" "__syscall6" (func $__syscall6 (param i32 i32) (result i32))) - (import "env" "__syscall54" (func $__syscall54 (param i32 i32) (result i32))) - (import "env" "__syscall146" (func $__syscall146 (param i32 i32) (result i32))) - (import "env" "sbrk" (func $sbrk (param i32) (result i32))) - (import "env" "emscripten_memcpy_big" (func $emscripten_memcpy_big (param i32 i32 i32) (result i32))) - (global $global$0 (mut i32) (i32.const 5261440)) - (global $global$1 i32 (i32.const 5261440)) - (global $global$2 i32 (i32.const 18560)) - (export "deflate" (func $deflate)) - (func $__wasm_call_ctors (; 7 ;) (type $5) - (unreachable) - ) - (func $test_compress (; 8 ;) (type $6) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (unreachable) - ) - (func $test_deflate (; 9 ;) (type $1) (param $0 i32) (param $1 i32) - (unreachable) - ) - (func $test_inflate (; 10 ;) (type $6) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (unreachable) - ) - (func $test_large_deflate (; 11 ;) (type $6) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (unreachable) - ) - (func $test_large_inflate (; 12 ;) (type $6) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (unreachable) - ) - (func $test_flush (; 13 ;) (type $1) (param $0 i32) (param $1 i32) - (unreachable) - ) - (func $test_sync (; 14 ;) (type $6) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (unreachable) - ) - (func $test_dict_deflate (; 15 ;) (type $1) (param $0 i32) (param $1 i32) - (unreachable) - ) - (func $test_dict_inflate (; 16 ;) (type $6) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (unreachable) - ) - (func $main (; 17 ;) (type $2) (param $0 i32) (param $1 i32) (result i32) - (unreachable) - ) - (func $compress (; 18 ;) (type $7) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (unreachable) - ) - (func $crc32 (; 19 ;) (type $0) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (unreachable) - ) - (func $adler32 (; 20 ;) (type $0) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (unreachable) - ) - (func $deflateInit_ (; 21 ;) (type $7) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (unreachable) - ) - (func $deflateInit2_ (; 22 ;) (type $8) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32) (param $7 i32) (result i32) - (unreachable) - ) - (func $deflateEnd (; 23 ;) (type $4) (param $0 i32) (result i32) - (unreachable) - ) - (func $deflateReset (; 24 ;) (type $4) (param $0 i32) (result i32) - (unreachable) - ) - (func $deflateSetDictionary (; 25 ;) (type $0) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (unreachable) - ) - (func $deflateParams (; 26 ;) (type $0) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (unreachable) - ) - (func $deflate (; 27 ;) (type $2) (param $0 i32) (param $1 i32) (result i32) + (type $22 (func (param i32 i32 i32) (result i32))) + (type $23 (func (param i32 i32))) + (type $24 (func (param i32 i32) (result i32))) + (type $25 (func (param i32) (result i32))) + (type $26 (func (result i32))) + (type $27 (func (param i32))) + (type $28 (func (param i32 i32 i32 i32) (result i32))) + (type $29 (func (param i32 i32 i32))) + (import "env" "memory" (memory $108 4096 4096)) + (import "env" "table" (table $timport$109 10 funcref)) + (import "env" "__assert_fail" (func $fimport$0 (param i32 i32 i32 i32))) + (import "env" "__syscall54" (func $fimport$1 (param i32 i32) (result i32))) + (import "env" "__syscall6" (func $fimport$2 (param i32 i32) (result i32))) + (import "env" "__syscall140" (func $fimport$3 (param i32 i32) (result i32))) + (import "env" "__syscall146" (func $fimport$4 (param i32 i32) (result i32))) + (import "env" "sbrk" (func $fimport$5 (param i32) (result i32))) + (import "env" "emscripten_memcpy_big" (func $fimport$6 (param i32 i32 i32) (result i32))) + (import "env" "__wasm_call_ctors" (func $fimport$7)) + (import "env" "doit" (func $fimport$8 (param i32 i32 i32))) + (import "env" "benchmark_main" (func $fimport$9 (param i32 i32) (result i32))) + (import "env" "__original_main" (func $fimport$10 (result i32))) + (import "env" "main" (func $fimport$11 (param i32 i32) (result i32))) + (import "env" "compress" (func $fimport$12 (param i32 i32 i32 i32) (result i32))) + (import "env" "compressBound" (func $fimport$13 (param i32) (result i32))) + (import "env" "crc32" (func $fimport$14 (param i32 i32 i32) (result i32))) + (import "env" "adler32" (func $fimport$15 (param i32 i32 i32) (result i32))) + (import "env" "deflateInit_" (func $fimport$16 (param i32 i32 i32 i32) (result i32))) + (import "env" "deflateInit2_" (func $fimport$17 (param i32 i32 i32 i32 i32 i32 i32 i32) (result i32))) + (import "env" "deflateEnd" (func $fimport$18 (param i32) (result i32))) + (import "env" "deflateReset" (func $fimport$19 (param i32) (result i32))) + (import "env" "deflate_huff" (func $fimport$20 (param i32 i32) (result i32))) + (import "env" "deflate_rle" (func $fimport$21 (param i32 i32) (result i32))) + (import "env" "fill_window" (func $fimport$22 (param i32))) + (import "env" "deflate_stored" (func $fimport$23 (param i32 i32) (result i32))) + (import "env" "deflate_fast" (func $fimport$24 (param i32 i32) (result i32))) + (import "env" "longest_match" (func $fimport$25 (param i32 i32) (result i32))) + (import "env" "deflate_slow" (func $fimport$26 (param i32 i32) (result i32))) + (import "env" "_tr_init" (func $fimport$27 (param i32))) + (import "env" "init_block" (func $fimport$28 (param i32))) + (import "env" "_tr_stored_block" (func $fimport$29 (param i32 i32 i32 i32))) + (import "env" "_tr_align" (func $fimport$30 (param i32))) + (import "env" "_tr_flush_block" (func $fimport$31 (param i32 i32 i32 i32))) + (import "env" "build_tree" (func $fimport$32 (param i32 i32))) + (import "env" "compress_block" (func $fimport$33 (param i32 i32 i32))) + (import "env" "send_tree" (func $fimport$34 (param i32 i32 i32))) + (import "env" "inflate_table" (func $fimport$35 (param i32 i32 i32 i32 i32 i32) (result i32))) + (import "env" "inflate_fast" (func $fimport$36 (param i32 i32))) + (import "env" "inflateInit2_" (func $fimport$37 (param i32 i32 i32 i32) (result i32))) + (import "env" "inflateInit_" (func $fimport$38 (param i32 i32 i32) (result i32))) + (import "env" "inflate" (func $fimport$39 (param i32 i32) (result i32))) + (import "env" "updatewindow" (func $fimport$40 (param i32 i32) (result i32))) + (import "env" "inflateEnd" (func $fimport$41 (param i32) (result i32))) + (import "env" "uncompress" (func $fimport$42 (param i32 i32 i32 i32) (result i32))) + (import "env" "zcalloc" (func $fimport$43 (param i32 i32 i32) (result i32))) + (import "env" "zcfree" (func $fimport$44 (param i32 i32))) + (import "env" "strcmp" (func $fimport$45 (param i32 i32) (result i32))) + (import "env" "puts" (func $fimport$46 (param i32) (result i32))) + (import "env" "strlen" (func $fimport$47 (param i32) (result i32))) + (import "env" "fputs" (func $fimport$48 (param i32 i32) (result i32))) + (import "env" "__towrite" (func $fimport$49 (param i32) (result i32))) + (import "env" "__fwritex" (func $fimport$50 (param i32 i32 i32) (result i32))) + (import "env" "fwrite" (func $fimport$51 (param i32 i32 i32 i32) (result i32))) + (import "env" "__lockfile" (func $fimport$52 (param i32) (result i32))) + (import "env" "__unlockfile" (func $fimport$53 (param i32))) + (import "env" "__stdout_write" (func $fimport$54 (param i32 i32 i32) (result i32))) + (import "env" "__errno_location" (func $fimport$55 (result i32))) + (import "env" "__syscall_ret" (func $fimport$56 (param i32) (result i32))) + (import "env" "dummy" (func $fimport$57 (param i32) (result i32))) + (import "env" "__stdio_close" (func $fimport$58 (param i32) (result i32))) + (import "env" "printf" (func $fimport$59 (param i32 i32) (result i32))) + (import "env" "__overflow" (func $fimport$60 (param i32 i32) (result i32))) + (import "env" "isdigit" (func $fimport$61 (param i32) (result i32))) + (import "env" "memchr" (func $fimport$62 (param i32 i32 i32) (result i32))) + (import "env" "pthread_self" (func $fimport$63 (result i32))) + (import "env" "wcrtomb" (func $fimport$64 (param i32 i32 i32) (result i32))) + (import "env" "__pthread_self" (func $fimport$65 (result i32))) + (import "env" "wctomb" (func $fimport$66 (param i32 i32) (result i32))) + (import "env" "__signbitl" (func $fimport$67 (param i64 i64) (result i32))) + (import "env" "frexpl" (func $fimport$68 (param i32 i64 i64 i32))) + (import "env" "vfprintf" (func $fimport$69 (param i32 i32 i32) (result i32))) + (import "env" "printf_core" (func $fimport$70 (param i32 i32 i32 i32 i32) (result i32))) + (import "env" "out" (func $fimport$71 (param i32 i32 i32))) + (import "env" "getint" (func $fimport$72 (param i32) (result i32))) + (import "env" "pop_arg" (func $fimport$73 (param i32 i32 i32))) + (import "env" "fmt_x" (func $fimport$74 (param i64 i32 i32) (result i32))) + (import "env" "fmt_o" (func $fimport$75 (param i64 i32) (result i32))) + (import "env" "fmt_u" (func $fimport$76 (param i64 i32) (result i32))) + (import "env" "pad" (func $fimport$77 (param i32 i32 i32 i32 i32))) + (import "env" "fmt_fp" (func $fimport$78 (param i32 i64 i64 i32 i32 i32 i32) (result i32))) + (import "env" "__stdio_seek" (func $fimport$79 (param i32 i32 i32) (result i32))) + (import "env" "__stdio_write" (func $fimport$80 (param i32 i32 i32) (result i32))) + (import "env" "malloc" (func $fimport$81 (param i32) (result i32))) + (import "env" "free" (func $fimport$82 (param i32))) + (import "env" "__addtf3" (func $fimport$83 (param i32 i64 i64 i64 i64))) + (import "env" "__ashlti3" (func $fimport$84 (param i32 i64 i64 i32))) + (import "env" "__unordtf2" (func $fimport$85 (param i64 i64 i64 i64) (result i32))) + (import "env" "__eqtf2" (func $fimport$86 (param i64 i64 i64 i64) (result i32))) + (import "env" "__netf2" (func $fimport$87 (param i64 i64 i64 i64) (result i32))) + (import "env" "__extenddftf2" (func $fimport$88 (param i32 f64))) + (import "env" "__fixtfsi" (func $fimport$89 (param i64 i64) (result i32))) + (import "env" "__fixunstfsi" (func $fimport$90 (param i64 i64) (result i32))) + (import "env" "__floatsitf" (func $fimport$91 (param i32 i32))) + (import "env" "__floatunsitf" (func $fimport$92 (param i32 i32))) + (import "env" "__lshrti3" (func $fimport$93 (param i32 i64 i64 i32))) + (import "env" "__multf3" (func $fimport$94 (param i32 i64 i64 i64 i64))) + (import "env" "__subtf3" (func $fimport$95 (param i32 i64 i64 i64 i64))) + (import "env" "__fpclassifyl" (func $fimport$96 (param i64 i64) (result i32))) + (import "env" "memset" (func $fimport$97 (param i32 i32 i32) (result i32))) + (import "env" "memcpy" (func $fimport$98 (param i32 i32 i32) (result i32))) + (import "env" "setThrew" (func $fimport$99 (param i32 i32))) + (import "env" "stackSave" (func $fimport$100 (result i32))) + (import "env" "stackAlloc" (func $fimport$101 (param i32) (result i32))) + (import "env" "stackRestore" (func $fimport$102 (param i32))) + (import "env" "__growWasmMemory" (func $fimport$103 (param i32) (result i32))) + (import "env" "dynCall_iiii" (func $fimport$104 (param i32 i32 i32 i32) (result i32))) + (import "env" "dynCall_vii" (func $fimport$105 (param i32 i32 i32))) + (import "env" "dynCall_iii" (func $fimport$106 (param i32 i32 i32) (result i32))) + (import "env" "dynCall_ii" (func $fimport$107 (param i32 i32) (result i32))) + (global $global$0 (mut i32) (i32.const 5243904)) + (global $global$1 i32 (i32.const 5260880)) + (global $global$2 i32 (i32.const 17988)) + (export "deflate" (func $0)) + (func $0 (; 108 ;) (type $2) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -105,15 +154,6 @@ (local $8 i32) (local $9 i32) (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (local $16 i32) - (local $17 i32) - (local $18 i32) - (local $19 i32) (local.set $2 (i32.const -2) ) @@ -179,7 +219,7 @@ ) (i32.store offset=24 (local.get $0) - (i32.load offset=15792 + (i32.load offset=16992 (i32.const 0) ) ) @@ -195,7 +235,7 @@ ) (i32.store offset=24 (local.get $0) - (i32.load offset=15804 + (i32.load offset=17004 (i32.const 0) ) ) @@ -245,7 +285,7 @@ ) (i32.store offset=48 (local.get $0) - (call $crc32 + (call $fimport$14 (i32.const 0) (i32.const 0) (i32.const 0) @@ -319,17 +359,12 @@ ) ) ) - (i32.store - (local.tee $2 - (i32.add - (local.get $3) - (i32.const 20) - ) - ) + (i32.store offset=20 + (local.get $3) (i32.add - (local.tee $5 - (i32.load - (local.get $2) + (local.tee $2 + (i32.load offset=20 + (local.get $3) ) ) (i32.const 1) @@ -337,24 +372,19 @@ ) (i32.store8 (i32.add - (local.get $5) - (i32.load - (local.tee $6 - (i32.add - (local.get $3) - (i32.const 8) - ) - ) + (local.get $2) + (i32.load offset=8 + (local.get $3) ) ) (i32.const 0) ) - (i32.store - (local.get $2) + (i32.store offset=20 + (local.get $3) (i32.add - (local.tee $5 - (i32.load - (local.get $2) + (local.tee $2 + (i32.load offset=20 + (local.get $3) ) ) (i32.const 1) @@ -362,19 +392,19 @@ ) (i32.store8 (i32.add - (local.get $5) - (i32.load - (local.get $6) + (local.get $2) + (i32.load offset=8 + (local.get $3) ) ) (i32.const 0) ) - (i32.store - (local.get $2) + (i32.store offset=20 + (local.get $3) (i32.add - (local.tee $5 - (i32.load - (local.get $2) + (local.tee $2 + (i32.load offset=20 + (local.get $3) ) ) (i32.const 1) @@ -382,19 +412,19 @@ ) (i32.store8 (i32.add - (local.get $5) - (i32.load - (local.get $6) + (local.get $2) + (i32.load offset=8 + (local.get $3) ) ) (i32.const 0) ) - (i32.store - (local.get $2) + (i32.store offset=20 + (local.get $3) (i32.add - (local.tee $5 - (i32.load - (local.get $2) + (local.tee $2 + (i32.load offset=20 + (local.get $3) ) ) (i32.const 1) @@ -402,19 +432,19 @@ ) (i32.store8 (i32.add - (local.get $5) - (i32.load - (local.get $6) + (local.get $2) + (i32.load offset=8 + (local.get $3) ) ) (i32.const 0) ) - (i32.store - (local.get $2) + (i32.store offset=20 + (local.get $3) (i32.add - (local.tee $5 - (i32.load - (local.get $2) + (local.tee $2 + (i32.load offset=20 + (local.get $3) ) ) (i32.const 1) @@ -422,14 +452,14 @@ ) (i32.store8 (i32.add - (local.get $5) - (i32.load - (local.get $6) + (local.get $2) + (i32.load offset=8 + (local.get $3) ) ) (i32.const 0) ) - (local.set $6 + (local.set $2 (i32.const 2) ) (block $label$20 @@ -443,7 +473,7 @@ (i32.const 9) ) ) - (local.set $6 + (local.set $2 (select (i32.const 4) (i32.shl @@ -462,12 +492,12 @@ ) ) ) - (i32.store - (local.get $2) + (i32.store offset=20 + (local.get $3) (i32.add (local.tee $5 - (i32.load - (local.get $2) + (i32.load offset=20 + (local.get $3) ) ) (i32.const 1) @@ -476,23 +506,18 @@ (i32.store8 (i32.add (local.get $5) - (i32.load - (local.tee $7 - (i32.add - (local.get $3) - (i32.const 8) - ) - ) + (i32.load offset=8 + (local.get $3) ) ) - (local.get $6) - ) - (i32.store (local.get $2) + ) + (i32.store offset=20 + (local.get $3) (i32.add - (local.tee $6 - (i32.load - (local.get $2) + (local.tee $2 + (i32.load offset=20 + (local.get $3) ) ) (i32.const 1) @@ -500,76 +525,63 @@ ) (i32.store8 (i32.add - (local.get $6) - (i32.load - (local.get $7) + (local.get $2) + (i32.load offset=8 + (local.get $3) ) ) (i32.const 3) ) - (i32.store - (i32.add - (local.get $3) - (i32.const 4) - ) + (i32.store offset=4 + (local.get $3) (i32.const 113) ) (br $label$6) ) - (local.set $6 + (local.set $5 (i32.load offset=36 (local.get $2) ) ) - (local.set $8 + (local.set $6 (i32.load offset=28 (local.get $2) ) ) - (local.set $9 + (local.set $7 (i32.load offset=16 (local.get $2) ) ) - (local.set $10 + (local.set $8 (i32.load offset=44 (local.get $2) ) ) - (local.set $11 + (local.set $9 (i32.load (local.get $2) ) ) - (i32.store - (local.tee $2 - (i32.add - (local.get $3) - (i32.const 20) - ) - ) + (i32.store offset=20 + (local.get $3) (i32.add - (local.tee $12 - (i32.load - (local.get $2) + (local.tee $10 + (i32.load offset=20 + (local.get $3) ) ) (i32.const 1) ) ) - (local.set $7 + (local.set $2 (i32.const 2) ) (i32.store8 (i32.add - (local.get $12) - (i32.load - (local.tee $5 - (i32.add - (local.get $3) - (i32.const 8) - ) - ) + (local.get $10) + (i32.load offset=8 + (local.get $3) ) ) (i32.or @@ -578,19 +590,19 @@ (i32.or (i32.shl (i32.ne - (local.get $10) + (local.get $8) (i32.const 0) ) (i32.const 1) ) (i32.ne - (local.get $11) + (local.get $9) (i32.const 0) ) ) (i32.shl (i32.ne - (local.get $9) + (local.get $7) (i32.const 0) ) (i32.const 2) @@ -598,7 +610,7 @@ ) (i32.shl (i32.ne - (local.get $8) + (local.get $6) (i32.const 0) ) (i32.const 3) @@ -606,31 +618,26 @@ ) (i32.shl (i32.ne - (local.get $6) + (local.get $5) (i32.const 0) ) (i32.const 4) ) ) ) - (local.set $8 + (local.set $5 (i32.load offset=4 - (i32.load - (local.tee $6 - (i32.add - (local.get $3) - (i32.const 28) - ) - ) + (i32.load offset=28 + (local.get $3) ) ) ) - (i32.store - (local.get $2) + (i32.store offset=20 + (local.get $3) (i32.add - (local.tee $9 - (i32.load - (local.get $2) + (local.tee $6 + (i32.load offset=20 + (local.get $3) ) ) (i32.const 1) @@ -638,26 +645,26 @@ ) (i32.store8 (i32.add - (local.get $9) - (i32.load - (local.get $5) + (local.get $6) + (i32.load offset=8 + (local.get $3) ) ) - (local.get $8) + (local.get $5) ) - (local.set $8 + (local.set $5 (i32.load offset=4 - (i32.load - (local.get $6) + (i32.load offset=28 + (local.get $3) ) ) ) - (i32.store - (local.get $2) + (i32.store offset=20 + (local.get $3) (i32.add - (local.tee $9 - (i32.load - (local.get $2) + (local.tee $6 + (i32.load offset=20 + (local.get $3) ) ) (i32.const 1) @@ -665,32 +672,32 @@ ) (i32.store8 (i32.add - (local.get $9) - (i32.load - (local.get $5) + (local.get $6) + (i32.load offset=8 + (local.get $3) ) ) (i32.shr_u - (local.get $8) + (local.get $5) (i32.const 8) ) ) - (local.set $8 + (local.set $5 (i32.load16_u (i32.add - (i32.load - (local.get $6) + (i32.load offset=28 + (local.get $3) ) (i32.const 6) ) ) ) - (i32.store - (local.get $2) + (i32.store offset=20 + (local.get $3) (i32.add - (local.tee $9 - (i32.load - (local.get $2) + (local.tee $6 + (i32.load offset=20 + (local.get $3) ) ) (i32.const 1) @@ -698,29 +705,29 @@ ) (i32.store8 (i32.add - (local.get $9) - (i32.load - (local.get $5) + (local.get $6) + (i32.load offset=8 + (local.get $3) ) ) - (local.get $8) + (local.get $5) ) - (local.set $8 + (local.set $5 (i32.load8_u (i32.add - (i32.load - (local.get $6) + (i32.load offset=28 + (local.get $3) ) (i32.const 7) ) ) ) - (i32.store - (local.get $2) + (i32.store offset=20 + (local.get $3) (i32.add - (local.tee $9 - (i32.load - (local.get $2) + (local.tee $6 + (i32.load offset=20 + (local.get $3) ) ) (i32.const 1) @@ -728,12 +735,12 @@ ) (i32.store8 (i32.add - (local.get $9) - (i32.load - (local.get $5) + (local.get $6) + (i32.load offset=8 + (local.get $3) ) ) - (local.get $8) + (local.get $5) ) (block $label$21 (br_if $label$21 @@ -746,7 +753,7 @@ (i32.const 9) ) ) - (local.set $7 + (local.set $2 (select (i32.const 4) (i32.shl @@ -765,12 +772,12 @@ ) ) ) - (i32.store - (local.get $2) + (i32.store offset=20 + (local.get $3) (i32.add - (local.tee $8 - (i32.load - (local.get $2) + (local.tee $5 + (i32.load offset=20 + (local.get $3) ) ) (i32.const 1) @@ -778,31 +785,26 @@ ) (i32.store8 (i32.add - (local.get $8) - (i32.load - (local.tee $5 - (i32.add - (local.get $3) - (i32.const 8) - ) - ) + (local.get $5) + (i32.load offset=8 + (local.get $3) ) ) - (local.get $7) + (local.get $2) ) - (local.set $7 + (local.set $2 (i32.load offset=12 - (i32.load - (local.get $6) + (i32.load offset=28 + (local.get $3) ) ) ) - (i32.store - (local.get $2) + (i32.store offset=20 + (local.get $3) (i32.add - (local.tee $8 - (i32.load - (local.get $2) + (local.tee $5 + (i32.load offset=20 + (local.get $3) ) ) (i32.const 1) @@ -810,41 +812,36 @@ ) (i32.store8 (i32.add - (local.get $8) - (i32.load - (local.get $5) + (local.get $5) + (i32.load offset=8 + (local.get $3) ) ) - (local.get $7) + (local.get $2) ) (block $label$22 (br_if $label$22 (i32.eqz (i32.load offset=16 (local.tee $2 - (i32.load - (local.get $6) + (i32.load offset=28 + (local.get $3) ) ) ) ) ) - (local.set $6 + (local.set $2 (i32.load offset=20 (local.get $2) ) ) - (i32.store - (local.tee $2 - (i32.add - (local.get $3) - (i32.const 20) - ) - ) + (i32.store offset=20 + (local.get $3) (i32.add - (local.tee $7 - (i32.load - (local.get $2) + (local.tee $5 + (i32.load offset=20 + (local.get $3) ) ) (i32.const 1) @@ -852,31 +849,26 @@ ) (i32.store8 (i32.add - (local.get $7) - (i32.load - (local.get $5) + (local.get $5) + (i32.load offset=8 + (local.get $3) ) ) - (local.get $6) + (local.get $2) ) - (local.set $7 + (local.set $2 (i32.load offset=20 - (i32.load - (local.tee $6 - (i32.add - (local.get $3) - (i32.const 28) - ) - ) + (i32.load offset=28 + (local.get $3) ) ) ) - (i32.store - (local.get $2) + (i32.store offset=20 + (local.get $3) (i32.add - (local.tee $8 - (i32.load - (local.get $2) + (local.tee $5 + (i32.load offset=20 + (local.get $3) ) ) (i32.const 1) @@ -884,19 +876,19 @@ ) (i32.store8 (i32.add - (local.get $8) - (i32.load - (local.get $5) + (local.get $5) + (i32.load offset=8 + (local.get $3) ) ) (i32.shr_u - (local.get $7) + (local.get $2) (i32.const 8) ) ) (local.set $2 - (i32.load - (local.get $6) + (i32.load offset=28 + (local.get $3) ) ) ) @@ -908,46 +900,32 @@ ) ) ) - (i32.store - (local.tee $2 - (i32.add + (i32.store offset=48 + (local.get $0) + (call $fimport$14 + (i32.load offset=48 (local.get $0) - (i32.const 48) ) - ) - (call $crc32 - (i32.load - (local.get $2) - ) - (i32.load - (i32.add - (local.get $3) - (i32.const 8) - ) + (i32.load offset=8 + (local.get $3) ) - (i32.load - (i32.add - (local.get $3) - (i32.const 20) - ) + (i32.load offset=20 + (local.get $3) ) ) ) ) + (i32.store offset=4 + (local.get $3) + (i32.const 69) + ) (i32.store offset=32 (local.get $3) (i32.const 0) ) - (i32.store - (i32.add - (local.get $3) - (i32.const 4) - ) - (i32.const 69) - ) (br $label$16) ) - (local.set $6 + (local.set $5 (i32.add (i32.shl (i32.load offset=48 @@ -972,7 +950,7 @@ ) (br_if $label$24 (i32.lt_s - (local.tee $5 + (local.tee $6 (i32.load offset=132 (local.get $3) ) @@ -985,7 +963,7 @@ ) (br_if $label$24 (i32.lt_s - (local.get $5) + (local.get $6) (i32.const 6) ) ) @@ -994,25 +972,20 @@ (i32.const 128) (i32.const 192) (i32.eq - (local.get $5) + (local.get $6) (i32.const 6) ) ) ) ) - (i32.store - (local.tee $5 - (i32.add - (local.get $3) - (i32.const 4) - ) - ) + (i32.store offset=4 + (local.get $3) (i32.const 113) ) (i32.store offset=20 (local.get $3) (i32.add - (local.tee $7 + (local.tee $6 (i32.load offset=20 (local.get $3) ) @@ -1022,7 +995,7 @@ ) (i32.store8 (i32.add - (local.get $7) + (local.get $6) (i32.load offset=8 (local.get $3) ) @@ -1034,7 +1007,7 @@ (local.tee $2 (i32.or (local.get $2) - (local.get $6) + (local.get $5) ) ) (i32.const 32) @@ -1051,7 +1024,7 @@ (i32.store offset=20 (local.get $3) (i32.add - (local.tee $6 + (local.tee $5 (i32.load offset=20 (local.get $3) ) @@ -1061,7 +1034,7 @@ ) (i32.store8 (i32.add - (local.get $6) + (local.get $5) (i32.load offset=8 (local.get $3) ) @@ -1085,22 +1058,17 @@ ) ) ) - (local.set $7 + (local.set $2 (i32.load offset=48 (local.get $0) ) ) - (i32.store - (local.tee $2 - (i32.add - (local.get $3) - (i32.const 20) - ) - ) + (i32.store offset=20 + (local.get $3) (i32.add - (local.tee $8 - (i32.load - (local.get $2) + (local.tee $5 + (i32.load offset=20 + (local.get $3) ) ) (i32.const 1) @@ -1108,27 +1076,22 @@ ) (i32.store8 (i32.add - (local.get $8) - (i32.load - (local.tee $6 - (i32.add - (local.get $3) - (i32.const 8) - ) - ) + (local.get $5) + (i32.load offset=8 + (local.get $3) ) ) (i32.shr_u - (local.get $7) + (local.get $2) (i32.const 24) ) ) - (i32.store - (local.get $2) + (i32.store offset=20 + (local.get $3) (i32.add - (local.tee $8 - (i32.load - (local.get $2) + (local.tee $5 + (i32.load offset=20 + (local.get $3) ) ) (i32.const 1) @@ -1136,27 +1099,27 @@ ) (i32.store8 (i32.add - (local.get $8) - (i32.load - (local.get $6) + (local.get $5) + (i32.load offset=8 + (local.get $3) ) ) (i32.shr_u - (local.get $7) + (local.get $2) (i32.const 16) ) ) - (local.set $7 + (local.set $2 (i32.load offset=48 (local.get $0) ) ) - (i32.store - (local.get $2) + (i32.store offset=20 + (local.get $3) (i32.add - (local.tee $8 - (i32.load - (local.get $2) + (local.tee $5 + (i32.load offset=20 + (local.get $3) ) ) (i32.const 1) @@ -1164,22 +1127,22 @@ ) (i32.store8 (i32.add - (local.get $8) - (i32.load - (local.get $6) + (local.get $5) + (i32.load offset=8 + (local.get $3) ) ) (i32.shr_u - (local.get $7) + (local.get $2) (i32.const 8) ) ) - (i32.store - (local.get $2) + (i32.store offset=20 + (local.get $3) (i32.add - (local.tee $8 - (i32.load - (local.get $2) + (local.tee $5 + (i32.load offset=20 + (local.get $3) ) ) (i32.const 1) @@ -1187,25 +1150,25 @@ ) (i32.store8 (i32.add - (local.get $8) - (i32.load - (local.get $6) + (local.get $5) + (i32.load offset=8 + (local.get $3) ) ) - (local.get $7) + (local.get $2) ) ) (i32.store offset=48 (local.get $0) - (call $adler32 + (call $fimport$15 (i32.const 0) (i32.const 0) (i32.const 0) ) ) (local.set $2 - (i32.load - (local.get $5) + (i32.load offset=4 + (local.get $3) ) ) ) @@ -1221,7 +1184,7 @@ (br_if $label$27 (i32.eqz (i32.load offset=16 - (local.tee $6 + (local.tee $5 (i32.load offset=28 (local.get $3) ) @@ -1236,59 +1199,17 @@ ) (br_if $label$26 (i32.ge_u - (local.tee $5 + (local.tee $6 (i32.load offset=32 (local.get $3) ) ) (i32.load16_u offset=20 - (local.get $6) + (local.get $5) ) ) ) - (local.set $10 - (i32.add - (local.get $3) - (i32.const 12) - ) - ) - (local.set $11 - (i32.add - (local.get $3) - (i32.const 8) - ) - ) - (local.set $13 - (i32.add - (local.get $0) - (i32.const 48) - ) - ) - (local.set $12 - (i32.add - (local.get $0) - (i32.const 16) - ) - ) - (local.set $14 - (i32.add - (local.get $0) - (i32.const 28) - ) - ) - (local.set $8 - (i32.add - (local.get $3) - (i32.const 20) - ) - ) (local.set $7 - (i32.add - (local.get $3) - (i32.const 32) - ) - ) - (local.set $9 (local.get $2) ) (loop $label$28 @@ -1296,8 +1217,8 @@ (br_if $label$29 (i32.ne (local.get $2) - (i32.load - (local.get $10) + (i32.load offset=12 + (local.get $3) ) ) ) @@ -1305,31 +1226,31 @@ (br_if $label$30 (i32.le_u (local.get $2) - (local.get $9) + (local.get $7) ) ) (br_if $label$30 (i32.eqz (i32.load offset=44 - (local.get $6) + (local.get $5) ) ) ) - (i32.store - (local.get $13) - (call $crc32 - (i32.load - (local.get $13) + (i32.store offset=48 + (local.get $0) + (call $fimport$14 + (i32.load offset=48 + (local.get $0) ) (i32.add - (i32.load - (local.get $11) + (i32.load offset=8 + (local.get $3) ) - (local.get $9) + (local.get $7) ) (i32.sub (local.get $2) - (local.get $9) + (local.get $7) ) ) ) @@ -1340,21 +1261,21 @@ (local.tee $2 (select (local.tee $2 - (i32.load - (local.get $12) + (i32.load offset=16 + (local.get $0) ) ) - (local.tee $6 + (local.tee $5 (i32.load offset=20 - (local.tee $5 - (i32.load - (local.get $14) + (local.tee $6 + (i32.load offset=28 + (local.get $0) ) ) ) ) (i32.gt_u - (local.get $6) + (local.get $5) (local.get $2) ) ) @@ -1362,72 +1283,62 @@ ) ) (drop - (call $memcpy - (i32.load - (local.tee $6 - (i32.add - (local.get $0) - (i32.const 12) - ) - ) + (call $fimport$98 + (i32.load offset=12 + (local.get $0) ) (i32.load offset=16 - (local.get $5) + (local.get $6) ) (local.get $2) ) ) - (i32.store - (local.get $6) + (i32.store offset=12 + (local.get $0) (i32.add - (i32.load - (local.get $6) + (i32.load offset=12 + (local.get $0) ) (local.get $2) ) ) (i32.store offset=16 - (local.tee $6 - (i32.load - (local.get $14) + (local.tee $5 + (i32.load offset=28 + (local.get $0) ) ) (i32.add (i32.load offset=16 - (local.get $6) + (local.get $5) ) (local.get $2) ) ) - (i32.store - (local.tee $5 - (i32.add - (local.get $0) - (i32.const 20) - ) - ) + (i32.store offset=20 + (local.get $0) (i32.add - (i32.load - (local.get $5) + (i32.load offset=20 + (local.get $0) ) (local.get $2) ) ) - (i32.store - (local.get $12) + (i32.store offset=16 + (local.get $0) (i32.sub - (i32.load - (local.get $12) + (i32.load offset=16 + (local.get $0) ) (local.get $2) ) ) (i32.store offset=20 - (local.get $6) + (local.get $5) (local.tee $2 (i32.sub (i32.load offset=20 - (local.get $6) + (local.get $5) ) (local.get $2) ) @@ -1436,57 +1347,51 @@ (br_if $label$31 (local.get $2) ) - (i32.store - (i32.add - (local.get $6) - (i32.const 16) - ) + (i32.store offset=16 + (local.get $5) (i32.load offset=8 - (local.get $6) + (local.get $5) ) ) ) - (local.set $6 - (i32.load - (i32.add - (local.get $3) - (i32.const 28) - ) + (local.set $5 + (i32.load offset=28 + (local.get $3) ) ) (br_if $label$26 (i32.eq (local.tee $2 - (i32.load - (local.get $8) + (i32.load offset=20 + (local.get $3) ) ) - (i32.load - (local.get $10) + (i32.load offset=12 + (local.get $3) ) ) ) - (local.set $5 - (i32.load - (local.get $7) + (local.set $6 + (i32.load offset=32 + (local.get $3) ) ) - (local.set $9 + (local.set $7 (local.get $2) ) ) - (local.set $6 + (local.set $5 (i32.load8_u (i32.add (i32.load offset=16 - (local.get $6) + (local.get $5) ) - (local.get $5) + (local.get $6) ) ) ) - (i32.store - (local.get $8) + (i32.store offset=20 + (local.get $3) (i32.add (local.get $2) (i32.const 1) @@ -1494,19 +1399,19 @@ ) (i32.store8 (i32.add - (i32.load - (local.get $11) + (i32.load offset=8 + (local.get $3) ) (local.get $2) ) - (local.get $6) + (local.get $5) ) - (i32.store - (local.get $7) - (local.tee $5 + (i32.store offset=32 + (local.get $3) + (local.tee $6 (i32.add - (i32.load - (local.get $7) + (i32.load offset=32 + (local.get $3) ) (i32.const 1) ) @@ -1515,37 +1420,31 @@ (block $label$32 (br_if $label$32 (i32.lt_u - (local.get $5) + (local.get $6) (i32.load16_u offset=20 - (local.tee $6 - (i32.load - (i32.add - (local.get $3) - (i32.const 28) - ) + (local.tee $5 + (i32.load offset=28 + (local.get $3) ) ) ) ) ) (local.set $2 - (local.get $9) + (local.get $7) ) (br $label$26) ) (local.set $2 - (i32.load - (local.get $8) + (i32.load offset=20 + (local.get $3) ) ) (br $label$28) ) ) - (i32.store - (i32.add - (local.get $3) - (i32.const 4) - ) + (i32.store offset=4 + (local.get $3) (i32.const 73) ) (br $label$14) @@ -1554,18 +1453,15 @@ (br_if $label$33 (i32.eqz (i32.load offset=44 - (local.get $6) + (local.get $5) ) ) ) (br_if $label$33 (i32.le_u - (local.tee $5 - (i32.load - (i32.add - (local.get $3) - (i32.const 20) - ) + (local.tee $6 + (i32.load offset=20 + (local.get $3) ) ) (local.get $2) @@ -1573,7 +1469,7 @@ ) (i32.store offset=48 (local.get $0) - (call $crc32 + (call $fimport$14 (i32.load offset=48 (local.get $0) ) @@ -1584,55 +1480,41 @@ (local.get $2) ) (i32.sub - (local.get $5) + (local.get $6) (local.get $2) ) ) ) - (local.set $6 - (i32.load - (i32.add - (local.get $3) - (i32.const 28) - ) + (local.set $5 + (i32.load offset=28 + (local.get $3) ) ) ) (block $label$34 (br_if $label$34 (i32.ne - (i32.load - (local.tee $2 - (i32.add - (local.get $3) - (i32.const 32) - ) - ) + (i32.load offset=32 + (local.get $3) ) (i32.load offset=20 - (local.get $6) + (local.get $5) ) ) ) - (i32.store - (i32.add - (local.get $3) - (i32.const 4) - ) + (i32.store offset=4 + (local.get $3) (i32.const 73) ) - (i32.store - (local.get $2) + (i32.store offset=32 + (local.get $3) (i32.const 0) ) (br $label$14) ) (local.set $2 - (i32.load - (i32.add - (local.get $3) - (i32.const 4) - ) + (i32.load offset=4 + (local.get $3) ) ) ) @@ -1642,7 +1524,7 @@ (i32.const 73) ) ) - (local.set $6 + (local.set $5 (i32.load offset=28 (local.get $3) ) @@ -1651,53 +1533,11 @@ (br_if $label$11 (i32.eqz (i32.load offset=28 - (local.get $6) + (local.get $5) ) ) ) - (local.set $10 - (i32.add - (local.get $3) - (i32.const 12) - ) - ) - (local.set $11 - (i32.add - (local.get $3) - (i32.const 28) - ) - ) - (local.set $12 - (i32.add - (local.get $3) - (i32.const 8) - ) - ) - (local.set $13 - (i32.add - (local.get $0) - (i32.const 48) - ) - ) - (local.set $14 - (i32.add - (local.get $0) - (i32.const 16) - ) - ) - (local.set $5 - (i32.add - (local.get $3) - (i32.const 20) - ) - ) (local.set $7 - (i32.add - (local.get $3) - (i32.const 32) - ) - ) - (local.set $9 (local.tee $2 (i32.load offset=20 (local.get $3) @@ -1711,8 +1551,8 @@ (br_if $label$38 (i32.ne (local.get $2) - (i32.load - (local.get $10) + (i32.load offset=12 + (local.get $3) ) ) ) @@ -1720,33 +1560,33 @@ (br_if $label$39 (i32.le_u (local.get $2) - (local.get $9) + (local.get $7) ) ) (br_if $label$39 (i32.eqz (i32.load offset=44 - (i32.load - (local.get $11) + (i32.load offset=28 + (local.get $3) ) ) ) ) - (i32.store - (local.get $13) - (call $crc32 - (i32.load - (local.get $13) + (i32.store offset=48 + (local.get $0) + (call $fimport$14 + (i32.load offset=48 + (local.get $0) ) (i32.add - (i32.load - (local.get $12) + (i32.load offset=8 + (local.get $3) ) - (local.get $9) + (local.get $7) ) (i32.sub (local.get $2) - (local.get $9) + (local.get $7) ) ) ) @@ -1757,26 +1597,21 @@ (local.tee $2 (select (local.tee $2 - (i32.load - (local.get $14) + (i32.load offset=16 + (local.get $0) ) ) - (local.tee $6 + (local.tee $5 (i32.load offset=20 - (local.tee $9 - (i32.load - (local.tee $8 - (i32.add - (local.get $0) - (i32.const 28) - ) - ) + (local.tee $6 + (i32.load offset=28 + (local.get $0) ) ) ) ) (i32.gt_u - (local.get $6) + (local.get $5) (local.get $2) ) ) @@ -1784,72 +1619,62 @@ ) ) (drop - (call $memcpy - (i32.load - (local.tee $6 - (i32.add - (local.get $0) - (i32.const 12) - ) - ) + (call $fimport$98 + (i32.load offset=12 + (local.get $0) ) (i32.load offset=16 - (local.get $9) + (local.get $6) ) (local.get $2) ) ) - (i32.store - (local.get $6) + (i32.store offset=12 + (local.get $0) (i32.add - (i32.load - (local.get $6) + (i32.load offset=12 + (local.get $0) ) (local.get $2) ) ) (i32.store offset=16 - (local.tee $6 - (i32.load - (local.get $8) + (local.tee $5 + (i32.load offset=28 + (local.get $0) ) ) (i32.add (i32.load offset=16 - (local.get $6) + (local.get $5) ) (local.get $2) ) ) - (i32.store - (local.tee $8 - (i32.add - (local.get $0) - (i32.const 20) - ) - ) + (i32.store offset=20 + (local.get $0) (i32.add - (i32.load - (local.get $8) + (i32.load offset=20 + (local.get $0) ) (local.get $2) ) ) - (i32.store - (local.get $14) + (i32.store offset=16 + (local.get $0) (i32.sub - (i32.load - (local.get $14) + (i32.load offset=16 + (local.get $0) ) (local.get $2) ) ) (i32.store offset=20 - (local.get $6) + (local.get $5) (local.tee $2 (i32.sub (i32.load offset=20 - (local.get $6) + (local.get $5) ) (local.get $2) ) @@ -1858,60 +1683,57 @@ (br_if $label$40 (local.get $2) ) - (i32.store - (i32.add - (local.get $6) - (i32.const 16) - ) + (i32.store offset=16 + (local.get $5) (i32.load offset=8 - (local.get $6) + (local.get $5) ) ) ) (br_if $label$36 (i32.eq (local.tee $2 - (i32.load - (local.get $5) + (i32.load offset=20 + (local.get $3) ) ) - (i32.load - (local.get $10) + (i32.load offset=12 + (local.get $3) ) ) ) - (local.set $9 + (local.set $7 (local.get $2) ) ) - (local.set $6 + (local.set $5 (i32.load offset=28 - (i32.load - (local.get $11) + (i32.load offset=28 + (local.get $3) ) ) ) - (i32.store - (local.get $7) + (i32.store offset=32 + (local.get $3) (i32.add - (local.tee $8 - (i32.load - (local.get $7) + (local.tee $6 + (i32.load offset=32 + (local.get $3) ) ) (i32.const 1) ) ) - (local.set $6 + (local.set $5 (i32.load8_u (i32.add + (local.get $5) (local.get $6) - (local.get $8) ) ) ) - (i32.store - (local.get $5) + (i32.store offset=20 + (local.get $3) (i32.add (local.get $2) (i32.const 1) @@ -1919,34 +1741,34 @@ ) (i32.store8 (i32.add - (i32.load - (local.get $12) + (i32.load offset=8 + (local.get $3) ) (local.get $2) ) - (local.get $6) + (local.get $5) ) (block $label$41 (br_if $label$41 - (local.get $6) + (local.get $5) ) - (local.set $6 + (local.set $5 (i32.const 0) ) (local.set $2 - (local.get $9) + (local.get $7) ) (br $label$35) ) (local.set $2 - (i32.load - (local.get $5) + (i32.load offset=20 + (local.get $3) ) ) (br $label$37) ) ) - (local.set $6 + (local.set $5 (i32.const 1) ) ) @@ -1954,50 +1776,36 @@ (br_if $label$42 (i32.eqz (i32.load offset=44 - (i32.load - (i32.add - (local.get $3) - (i32.const 28) - ) + (i32.load offset=28 + (local.get $3) ) ) ) ) (br_if $label$42 (i32.le_u - (local.tee $5 - (i32.load - (i32.add - (local.get $3) - (i32.const 20) - ) + (local.tee $6 + (i32.load offset=20 + (local.get $3) ) ) (local.get $2) ) ) - (i32.store - (local.tee $7 - (i32.add + (i32.store offset=48 + (local.get $0) + (call $fimport$14 + (i32.load offset=48 (local.get $0) - (i32.const 48) - ) - ) - (call $crc32 - (i32.load - (local.get $7) ) (i32.add - (i32.load - (i32.add - (local.get $3) - (i32.const 8) - ) + (i32.load offset=8 + (local.get $3) ) (local.get $2) ) (i32.sub - (local.get $5) + (local.get $6) (local.get $2) ) ) @@ -2005,15 +1813,12 @@ ) (br_if $label$12 (i32.eqz - (local.get $6) + (local.get $5) ) ) (local.set $2 - (i32.load - (i32.add - (local.get $3) - (i32.const 4) - ) + (i32.load offset=4 + (local.get $3) ) ) ) @@ -2025,19 +1830,13 @@ ) (br $label$9) ) - (i32.store - (i32.add - (local.get $3) - (i32.const 32) - ) + (i32.store offset=32 + (local.get $3) (i32.const 0) ) ) - (i32.store - (i32.add - (local.get $3) - (i32.const 4) - ) + (i32.store offset=4 + (local.get $3) (i32.const 91) ) ) @@ -2050,49 +1849,7 @@ ) ) ) - (local.set $10 - (i32.add - (local.get $3) - (i32.const 12) - ) - ) - (local.set $11 - (i32.add - (local.get $3) - (i32.const 28) - ) - ) - (local.set $12 - (i32.add - (local.get $3) - (i32.const 8) - ) - ) - (local.set $13 - (i32.add - (local.get $0) - (i32.const 48) - ) - ) - (local.set $14 - (i32.add - (local.get $0) - (i32.const 16) - ) - ) - (local.set $5 - (i32.add - (local.get $3) - (i32.const 20) - ) - ) (local.set $7 - (i32.add - (local.get $3) - (i32.const 32) - ) - ) - (local.set $9 (local.tee $2 (i32.load offset=20 (local.get $3) @@ -2106,8 +1863,8 @@ (br_if $label$46 (i32.ne (local.get $2) - (i32.load - (local.get $10) + (i32.load offset=12 + (local.get $3) ) ) ) @@ -2115,33 +1872,33 @@ (br_if $label$47 (i32.le_u (local.get $2) - (local.get $9) + (local.get $7) ) ) (br_if $label$47 (i32.eqz (i32.load offset=44 - (i32.load - (local.get $11) + (i32.load offset=28 + (local.get $3) ) ) ) ) - (i32.store - (local.get $13) - (call $crc32 - (i32.load - (local.get $13) + (i32.store offset=48 + (local.get $0) + (call $fimport$14 + (i32.load offset=48 + (local.get $0) ) (i32.add - (i32.load - (local.get $12) + (i32.load offset=8 + (local.get $3) ) - (local.get $9) + (local.get $7) ) (i32.sub (local.get $2) - (local.get $9) + (local.get $7) ) ) ) @@ -2152,26 +1909,21 @@ (local.tee $2 (select (local.tee $2 - (i32.load - (local.get $14) + (i32.load offset=16 + (local.get $0) ) ) - (local.tee $6 + (local.tee $5 (i32.load offset=20 - (local.tee $9 - (i32.load - (local.tee $8 - (i32.add - (local.get $0) - (i32.const 28) - ) - ) + (local.tee $6 + (i32.load offset=28 + (local.get $0) ) ) ) ) (i32.gt_u - (local.get $6) + (local.get $5) (local.get $2) ) ) @@ -2179,72 +1931,62 @@ ) ) (drop - (call $memcpy - (i32.load - (local.tee $6 - (i32.add - (local.get $0) - (i32.const 12) - ) - ) + (call $fimport$98 + (i32.load offset=12 + (local.get $0) ) (i32.load offset=16 - (local.get $9) + (local.get $6) ) (local.get $2) ) ) - (i32.store - (local.get $6) + (i32.store offset=12 + (local.get $0) (i32.add - (i32.load - (local.get $6) + (i32.load offset=12 + (local.get $0) ) (local.get $2) ) ) (i32.store offset=16 - (local.tee $6 - (i32.load - (local.get $8) + (local.tee $5 + (i32.load offset=28 + (local.get $0) ) ) (i32.add (i32.load offset=16 - (local.get $6) + (local.get $5) ) (local.get $2) ) ) - (i32.store - (local.tee $8 - (i32.add - (local.get $0) - (i32.const 20) - ) - ) + (i32.store offset=20 + (local.get $0) (i32.add - (i32.load - (local.get $8) + (i32.load offset=20 + (local.get $0) ) (local.get $2) ) ) - (i32.store - (local.get $14) + (i32.store offset=16 + (local.get $0) (i32.sub - (i32.load - (local.get $14) + (i32.load offset=16 + (local.get $0) ) (local.get $2) ) ) (i32.store offset=20 - (local.get $6) + (local.get $5) (local.tee $2 (i32.sub (i32.load offset=20 - (local.get $6) + (local.get $5) ) (local.get $2) ) @@ -2253,60 +1995,57 @@ (br_if $label$48 (local.get $2) ) - (i32.store - (i32.add - (local.get $6) - (i32.const 16) - ) + (i32.store offset=16 + (local.get $5) (i32.load offset=8 - (local.get $6) + (local.get $5) ) ) ) (br_if $label$44 (i32.eq (local.tee $2 - (i32.load - (local.get $5) + (i32.load offset=20 + (local.get $3) ) ) - (i32.load - (local.get $10) + (i32.load offset=12 + (local.get $3) ) ) ) - (local.set $9 + (local.set $7 (local.get $2) ) ) - (local.set $6 + (local.set $5 (i32.load offset=36 - (i32.load - (local.get $11) + (i32.load offset=28 + (local.get $3) ) ) ) - (i32.store - (local.get $7) + (i32.store offset=32 + (local.get $3) (i32.add - (local.tee $8 - (i32.load - (local.get $7) + (local.tee $6 + (i32.load offset=32 + (local.get $3) ) ) (i32.const 1) ) ) - (local.set $6 + (local.set $5 (i32.load8_u (i32.add + (local.get $5) (local.get $6) - (local.get $8) ) ) ) - (i32.store - (local.get $5) + (i32.store offset=20 + (local.get $3) (i32.add (local.get $2) (i32.const 1) @@ -2314,34 +2053,34 @@ ) (i32.store8 (i32.add - (i32.load - (local.get $12) + (i32.load offset=8 + (local.get $3) ) (local.get $2) ) - (local.get $6) + (local.get $5) ) (block $label$49 (br_if $label$49 - (local.get $6) + (local.get $5) ) - (local.set $6 + (local.set $5 (i32.const 0) ) (local.set $2 - (local.get $9) + (local.get $7) ) (br $label$43) ) (local.set $2 - (i32.load - (local.get $5) + (i32.load offset=20 + (local.get $3) ) ) (br $label$45) ) ) - (local.set $6 + (local.set $5 (i32.const 1) ) ) @@ -2349,50 +2088,36 @@ (br_if $label$50 (i32.eqz (i32.load offset=44 - (i32.load - (i32.add - (local.get $3) - (i32.const 28) - ) + (i32.load offset=28 + (local.get $3) ) ) ) ) (br_if $label$50 (i32.le_u - (local.tee $5 - (i32.load - (i32.add - (local.get $3) - (i32.const 20) - ) + (local.tee $6 + (i32.load offset=20 + (local.get $3) ) ) (local.get $2) ) ) - (i32.store - (local.tee $7 - (i32.add + (i32.store offset=48 + (local.get $0) + (call $fimport$14 + (i32.load offset=48 (local.get $0) - (i32.const 48) - ) - ) - (call $crc32 - (i32.load - (local.get $7) ) (i32.add - (i32.load - (i32.add - (local.get $3) - (i32.const 8) - ) + (i32.load offset=8 + (local.get $3) ) (local.get $2) ) (i32.sub - (local.get $5) + (local.get $6) (local.get $2) ) ) @@ -2400,15 +2125,12 @@ ) (br_if $label$8 (i32.eqz - (local.get $6) + (local.get $5) ) ) (local.set $2 - (i32.load - (i32.add - (local.get $3) - (i32.const 4) - ) + (i32.load offset=4 + (local.get $3) ) ) ) @@ -2420,11 +2142,8 @@ ) (br $label$6) ) - (i32.store - (i32.add - (local.get $3) - (i32.const 4) - ) + (i32.store offset=4 + (local.get $3) (i32.const 103) ) ) @@ -2457,31 +2176,21 @@ (local.tee $2 (select (local.tee $2 - (i32.load - (local.tee $5 - (i32.add - (local.get $0) - (i32.const 16) - ) - ) + (i32.load offset=16 + (local.get $0) ) ) - (local.tee $6 + (local.tee $5 (i32.load offset=20 - (local.tee $8 - (i32.load - (local.tee $7 - (i32.add - (local.get $0) - (i32.const 28) - ) - ) + (local.tee $6 + (i32.load offset=28 + (local.get $0) ) ) ) ) (i32.gt_u - (local.get $6) + (local.get $5) (local.get $2) ) ) @@ -2489,39 +2198,34 @@ ) ) (drop - (call $memcpy - (i32.load - (local.tee $6 - (i32.add - (local.get $0) - (i32.const 12) - ) - ) + (call $fimport$98 + (i32.load offset=12 + (local.get $0) ) (i32.load offset=16 - (local.get $8) + (local.get $6) ) (local.get $2) ) ) - (i32.store - (local.get $6) + (i32.store offset=12 + (local.get $0) (i32.add - (i32.load - (local.get $6) + (i32.load offset=12 + (local.get $0) ) (local.get $2) ) ) (i32.store offset=16 - (local.tee $6 - (i32.load - (local.get $7) + (local.tee $5 + (i32.load offset=28 + (local.get $0) ) ) (i32.add (i32.load offset=16 - (local.get $6) + (local.get $5) ) (local.get $2) ) @@ -2535,21 +2239,21 @@ (local.get $2) ) ) - (i32.store - (local.get $5) + (i32.store offset=16 + (local.get $0) (i32.sub - (i32.load - (local.get $5) + (i32.load offset=16 + (local.get $0) ) (local.get $2) ) ) (i32.store offset=20 - (local.get $6) + (local.get $5) (local.tee $2 (i32.sub (i32.load offset=20 - (local.get $6) + (local.get $5) ) (local.get $2) ) @@ -2558,36 +2262,25 @@ (br_if $label$52 (local.get $2) ) - (i32.store - (i32.add - (local.get $6) - (i32.const 16) - ) + (i32.store offset=16 + (local.get $5) (i32.load offset=8 - (local.get $6) + (local.get $5) ) ) ) (br_if $label$6 (i32.gt_u (i32.add - (local.tee $6 - (i32.load - (local.tee $2 - (i32.add - (local.get $3) - (i32.const 20) - ) - ) + (local.tee $2 + (i32.load offset=20 + (local.get $3) ) ) (i32.const 2) ) - (i32.load - (i32.add - (local.get $3) - (i32.const 12) - ) + (i32.load offset=12 + (local.get $3) ) ) ) @@ -2596,10 +2289,10 @@ (local.get $0) ) ) - (i32.store - (local.get $2) + (i32.store offset=20 + (local.get $3) (i32.add - (local.get $6) + (local.get $2) (i32.const 1) ) ) @@ -2608,21 +2301,21 @@ (i32.load offset=8 (local.get $3) ) - (local.get $6) + (local.get $2) ) (local.get $5) ) - (local.set $6 + (local.set $2 (i32.load offset=48 (local.get $0) ) ) - (i32.store - (local.get $2) + (i32.store offset=20 + (local.get $3) (i32.add (local.tee $5 - (i32.load - (local.get $2) + (i32.load offset=20 + (local.get $3) ) ) (i32.const 1) @@ -2636,32 +2329,26 @@ ) ) (i32.shr_u - (local.get $6) + (local.get $2) (i32.const 8) ) ) (i32.store offset=48 (local.get $0) - (call $crc32 + (call $fimport$14 (i32.const 0) (i32.const 0) (i32.const 0) ) ) - (i32.store - (i32.add - (local.get $3) - (i32.const 4) - ) + (i32.store offset=4 + (local.get $3) (i32.const 113) ) (br $label$6) ) - (i32.store - (i32.add - (local.get $3) - (i32.const 4) - ) + (i32.store offset=4 + (local.get $3) (i32.const 113) ) ) @@ -2679,72 +2366,57 @@ (i32.eqz (local.tee $2 (select - (local.tee $6 - (i32.load - (local.tee $7 - (i32.add - (local.get $0) - (i32.const 16) - ) - ) + (local.tee $5 + (i32.load offset=16 + (local.get $0) ) ) (local.tee $2 (i32.load offset=20 - (local.tee $8 - (i32.load - (local.tee $5 - (i32.add - (local.get $0) - (i32.const 28) - ) - ) + (local.tee $6 + (i32.load offset=28 + (local.get $0) ) ) ) ) (i32.gt_u (local.get $2) - (local.get $6) + (local.get $5) ) ) ) ) ) (drop - (call $memcpy - (i32.load - (local.tee $6 - (i32.add - (local.get $0) - (i32.const 12) - ) - ) + (call $fimport$98 + (i32.load offset=12 + (local.get $0) ) (i32.load offset=16 - (local.get $8) + (local.get $6) ) (local.get $2) ) ) - (i32.store - (local.get $6) + (i32.store offset=12 + (local.get $0) (i32.add - (i32.load - (local.get $6) + (i32.load offset=12 + (local.get $0) ) (local.get $2) ) ) (i32.store offset=16 - (local.tee $5 - (i32.load - (local.get $5) + (local.tee $6 + (i32.load offset=28 + (local.get $0) ) ) (i32.add (i32.load offset=16 - (local.get $5) + (local.get $6) ) (local.get $2) ) @@ -2758,23 +2430,23 @@ (local.get $2) ) ) - (i32.store - (local.get $7) - (local.tee $6 + (i32.store offset=16 + (local.get $0) + (local.tee $5 (i32.sub - (i32.load - (local.get $7) + (i32.load offset=16 + (local.get $0) ) (local.get $2) ) ) ) (i32.store offset=20 - (local.get $5) + (local.get $6) (local.tee $2 (i32.sub (i32.load offset=20 - (local.get $5) + (local.get $6) ) (local.get $2) ) @@ -2783,24 +2455,18 @@ (br_if $label$55 (local.get $2) ) - (i32.store - (i32.add - (local.get $5) - (i32.const 16) - ) + (i32.store offset=16 + (local.get $6) (i32.load offset=8 - (local.get $5) + (local.get $6) ) ) ) (br_if $label$53 - (local.get $6) + (local.get $5) ) - (i32.store - (i32.add - (local.get $3) - (i32.const 40) - ) + (i32.store offset=40 + (local.get $3) (i32.const -1) ) (return @@ -2826,7 +2492,7 @@ ) (i32.store offset=24 (local.get $0) - (i32.load offset=15804 + (i32.load offset=17004 (i32.const 0) ) ) @@ -2845,12 +2511,9 @@ (block $label$59 (br_if $label$59 (i32.ne - (local.tee $6 - (i32.load - (i32.add - (local.get $3) - (i32.const 4) - ) + (local.tee $5 + (i32.load offset=4 + (local.get $3) ) ) (i32.const 666) @@ -2863,7 +2526,7 @@ ) (i32.store offset=24 (local.get $0) - (i32.load offset=15804 + (i32.load offset=17004 (i32.const 0) ) ) @@ -2882,7 +2545,7 @@ (local.get $1) ) (i32.eq - (local.get $6) + (local.get $5) (i32.const 666) ) ) @@ -2900,1581 +2563,88 @@ (block $label$60 (block $label$61 (block $label$62 - (block $label$63 - (block $label$64 - (br_if $label$64 - (i32.eq - (local.tee $2 - (i32.load offset=136 - (local.get $3) - ) - ) - (i32.const 3) - ) - ) - (br_if $label$63 - (i32.ne - (local.get $2) - (i32.const 2) - ) - ) - (local.set $6 - (i32.add - (local.get $3) - (i32.const 116) - ) - ) - (local.set $11 - (i32.add - (local.get $3) - (i32.const 96) - ) - ) - (local.set $2 - (i32.add - (local.get $3) - (i32.const 108) - ) - ) - (local.set $10 - (i32.add - (local.get $3) - (i32.const 56) - ) - ) - (local.set $7 - (i32.add - (local.get $3) - (i32.const 5792) - ) - ) - (local.set $12 - (i32.add - (local.get $3) - (i32.const 5796) - ) - ) - (local.set $14 - (i32.add - (local.get $3) - (i32.const 5784) - ) - ) - (local.set $13 - (i32.add - (local.get $3) - (i32.const 5788) - ) - ) - (local.set $4 - (i32.add + (br_if $label$62 + (i32.eq + (local.tee $2 + (i32.load offset=136 (local.get $3) - (i32.const 92) ) ) - (block $label$65 - (loop $label$66 - (block $label$67 - (br_if $label$67 - (i32.load - (local.get $6) - ) - ) - (call $fill_window - (local.get $3) - ) - (br_if $label$67 - (i32.load - (local.get $6) - ) - ) - (br_if $label$61 - (i32.eqz - (local.get $1) - ) - ) - (local.set $2 - (i32.const 0) - ) - (block $label$68 - (br_if $label$68 - (i32.lt_s - (local.tee $6 - (i32.load - (local.tee $5 - (i32.add - (local.get $3) - (i32.const 92) - ) - ) - ) - ) - (i32.const 0) - ) - ) - (local.set $2 - (i32.add - (i32.load - (i32.add - (local.get $3) - (i32.const 56) - ) - ) - (local.get $6) - ) - ) - ) - (call $_tr_flush_block - (local.get $3) - (local.get $2) - (i32.sub - (i32.load - (local.tee $7 - (i32.add - (local.get $3) - (i32.const 108) - ) - ) - ) - (local.get $6) - ) - (i32.eq - (local.get $1) - (i32.const 4) - ) - ) - (i32.store - (local.get $5) - (i32.load - (local.get $7) - ) - ) - (block $label$69 - (br_if $label$69 - (i32.eqz - (local.tee $6 - (select - (local.tee $6 - (i32.load offset=16 - (local.tee $2 - (i32.load - (local.get $3) - ) - ) - ) - ) - (local.tee $5 - (i32.load offset=20 - (local.tee $7 - (i32.load offset=28 - (local.get $2) - ) - ) - ) - ) - (i32.gt_u - (local.get $5) - (local.get $6) - ) - ) - ) - ) - ) - (drop - (call $memcpy - (i32.load offset=12 - (local.get $2) - ) - (i32.load offset=16 - (local.get $7) - ) - (local.get $6) - ) - ) - (i32.store offset=12 - (local.get $2) - (i32.add - (i32.load offset=12 - (local.get $2) - ) - (local.get $6) - ) - ) - (i32.store offset=16 - (local.tee $5 - (i32.load - (i32.add - (local.get $2) - (i32.const 28) - ) - ) - ) - (i32.add - (i32.load offset=16 - (local.get $5) - ) - (local.get $6) - ) - ) - (i32.store offset=20 - (local.get $2) - (i32.add - (i32.load offset=20 - (local.get $2) - ) - (local.get $6) - ) - ) - (i32.store - (local.tee $2 - (i32.add - (local.get $2) - (i32.const 16) - ) - ) - (i32.sub - (i32.load - (local.get $2) - ) - (local.get $6) - ) - ) - (i32.store offset=20 - (local.get $5) - (local.tee $2 - (i32.sub - (i32.load offset=20 - (local.get $5) - ) - (local.get $6) - ) - ) - ) - (br_if $label$69 - (local.get $2) - ) - (i32.store - (i32.add - (local.get $5) - (i32.const 16) - ) - (i32.load offset=8 - (local.get $5) - ) - ) - ) - (br_if $label$65 - (i32.load offset=16 - (i32.load - (local.get $3) - ) - ) - ) - (local.set $2 - (i32.shl - (i32.eq - (local.get $1) - (i32.const 4) - ) - (i32.const 1) - ) - ) - (br $label$62) - ) - (i32.store - (local.get $11) - (i32.const 0) - ) - (local.set $5 - (i32.load8_u - (i32.add - (i32.load - (local.get $10) - ) - (i32.load - (local.get $2) - ) - ) - ) - ) - (i32.store16 - (i32.add - (i32.load - (local.get $12) - ) - (i32.shl - (local.tee $8 - (i32.load - (local.get $7) - ) - ) - (i32.const 1) - ) - ) - (i32.const 0) - ) - (i32.store - (local.get $7) - (i32.add - (local.get $8) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (local.get $8) - (i32.load - (local.get $14) - ) - ) - (local.get $5) - ) - (i32.store16 - (local.tee $5 - (i32.add - (i32.add - (local.get $3) - (i32.shl - (local.get $5) - (i32.const 2) - ) - ) - (i32.const 148) - ) - ) - (i32.add - (i32.load16_u - (local.get $5) - ) - (i32.const 1) - ) - ) - (i32.store - (local.get $6) - (i32.add - (i32.load - (local.get $6) - ) - (i32.const -1) - ) - ) - (i32.store - (local.get $2) - (local.tee $5 - (i32.add - (i32.load - (local.get $2) - ) - (i32.const 1) - ) - ) - ) - (br_if $label$66 - (i32.ne - (i32.load - (local.get $7) - ) - (i32.add - (i32.load - (local.get $13) - ) - (i32.const -1) - ) - ) - ) - (local.set $8 - (i32.const 0) - ) - (block $label$70 - (br_if $label$70 - (i32.lt_s - (local.tee $9 - (i32.load - (local.get $4) - ) - ) - (i32.const 0) - ) - ) - (local.set $8 - (i32.add - (i32.load - (local.get $10) - ) - (local.get $9) - ) - ) - ) - (call $_tr_flush_block - (local.get $3) - (local.get $8) - (i32.sub - (local.get $5) - (local.get $9) - ) - (i32.const 0) - ) - (i32.store - (local.get $4) - (i32.load - (local.get $2) - ) - ) - (block $label$71 - (br_if $label$71 - (i32.eqz - (local.tee $8 - (select - (local.tee $8 - (i32.load offset=16 - (local.tee $5 - (i32.load - (local.get $3) - ) - ) - ) - ) - (local.tee $9 - (i32.load offset=20 - (local.tee $15 - (i32.load offset=28 - (local.get $5) - ) - ) - ) - ) - (i32.gt_u - (local.get $9) - (local.get $8) - ) - ) - ) - ) - ) - (drop - (call $memcpy - (i32.load offset=12 - (local.get $5) - ) - (i32.load offset=16 - (local.get $15) - ) - (local.get $8) - ) - ) - (i32.store offset=12 - (local.get $5) - (i32.add - (i32.load offset=12 - (local.get $5) - ) - (local.get $8) - ) - ) - (i32.store offset=16 - (local.tee $9 - (i32.load - (i32.add - (local.get $5) - (i32.const 28) - ) - ) - ) - (i32.add - (i32.load offset=16 - (local.get $9) - ) - (local.get $8) - ) - ) - (i32.store offset=20 - (local.get $5) - (i32.add - (i32.load offset=20 - (local.get $5) - ) - (local.get $8) - ) - ) - (i32.store - (local.tee $5 - (i32.add - (local.get $5) - (i32.const 16) - ) - ) - (i32.sub - (i32.load - (local.get $5) - ) - (local.get $8) - ) - ) - (i32.store offset=20 - (local.get $9) - (local.tee $5 - (i32.sub - (i32.load offset=20 - (local.get $9) - ) - (local.get $8) - ) - ) - ) - (br_if $label$71 - (local.get $5) - ) - (i32.store - (i32.add - (local.get $9) - (i32.const 16) - ) - (i32.load offset=8 - (local.get $9) - ) - ) - ) - (br_if $label$66 - (i32.load offset=16 - (i32.load - (local.get $3) - ) - ) - ) - (br $label$61) - ) - ) - (local.set $2 - (select - (i32.const 3) - (i32.const 1) - (i32.eq - (local.get $1) - (i32.const 4) - ) - ) - ) - (br $label$62) - ) - (local.set $2 - (i32.add - (local.get $3) - (i32.const 116) - ) - ) - (local.set $14 - (i32.add - (local.get $3) - (i32.const 96) - ) - ) - (local.set $6 - (i32.add - (local.get $3) - (i32.const 108) - ) - ) - (local.set $11 - (i32.add - (local.get $3) - (i32.const 56) - ) - ) - (local.set $7 - (i32.add - (local.get $3) - (i32.const 5792) - ) - ) - (local.set $13 - (i32.add - (local.get $3) - (i32.const 5796) - ) - ) - (local.set $4 - (i32.add - (local.get $3) - (i32.const 5784) - ) - ) - (local.set $15 - (i32.add - (local.get $3) - (i32.const 5788) - ) - ) - (local.set $16 - (i32.add - (local.get $3) - (i32.const 92) - ) + (i32.const 3) ) - (loop $label$72 - (block $label$73 - (block $label$74 - (block $label$75 - (block $label$76 - (br_if $label$76 - (i32.lt_u - (local.tee $5 - (i32.load - (local.get $2) - ) - ) - (i32.const 258) - ) - ) - (i32.store - (local.get $14) - (i32.const 0) - ) - (br $label$75) - ) - (call $fill_window - (local.get $3) - ) - (local.set $5 - (i32.load - (local.get $2) - ) - ) - (block $label$77 - (br_if $label$77 - (local.get $1) - ) - (br_if $label$61 - (i32.lt_u - (local.get $5) - (i32.const 258) - ) - ) - ) - (block $label$78 - (br_if $label$78 - (i32.eqz - (local.get $5) - ) - ) - (i32.store - (local.get $14) - (i32.const 0) - ) - (br_if $label$75 - (i32.gt_u - (local.get $5) - (i32.const 2) - ) - ) - (local.set $8 - (i32.load - (local.get $6) - ) - ) - (br $label$74) - ) - (local.set $2 - (i32.const 0) - ) - (block $label$79 - (br_if $label$79 - (i32.lt_s - (local.tee $6 - (i32.load - (local.tee $5 - (i32.add - (local.get $3) - (i32.const 92) - ) - ) - ) - ) - (i32.const 0) - ) - ) - (local.set $2 - (i32.add - (i32.load - (i32.add - (local.get $3) - (i32.const 56) - ) - ) - (local.get $6) - ) - ) - ) - (call $_tr_flush_block - (local.get $3) - (local.get $2) - (i32.sub - (i32.load - (local.tee $7 - (i32.add - (local.get $3) - (i32.const 108) - ) - ) - ) - (local.get $6) - ) - (i32.eq - (local.get $1) - (i32.const 4) - ) - ) - (i32.store - (local.get $5) - (i32.load - (local.get $7) - ) - ) - (block $label$80 - (br_if $label$80 - (i32.eqz - (local.tee $6 - (select - (local.tee $6 - (i32.load offset=16 - (local.tee $2 - (i32.load - (local.get $3) - ) - ) - ) - ) - (local.tee $5 - (i32.load offset=20 - (local.tee $7 - (i32.load offset=28 - (local.get $2) - ) - ) - ) - ) - (i32.gt_u - (local.get $5) - (local.get $6) - ) - ) - ) - ) - ) - (drop - (call $memcpy - (i32.load offset=12 - (local.get $2) - ) - (i32.load offset=16 - (local.get $7) - ) - (local.get $6) - ) - ) - (i32.store offset=12 - (local.get $2) - (i32.add - (i32.load offset=12 - (local.get $2) - ) - (local.get $6) - ) - ) - (i32.store offset=16 - (local.tee $5 - (i32.load - (i32.add - (local.get $2) - (i32.const 28) - ) - ) - ) - (i32.add - (i32.load offset=16 - (local.get $5) - ) - (local.get $6) - ) - ) - (i32.store offset=20 - (local.get $2) - (i32.add - (i32.load offset=20 - (local.get $2) - ) - (local.get $6) - ) - ) - (i32.store - (local.tee $2 - (i32.add - (local.get $2) - (i32.const 16) - ) - ) - (i32.sub - (i32.load - (local.get $2) - ) - (local.get $6) - ) - ) - (i32.store offset=20 - (local.get $5) - (local.tee $2 - (i32.sub - (i32.load offset=20 - (local.get $5) - ) - (local.get $6) - ) - ) - ) - (br_if $label$80 - (local.get $2) - ) - (i32.store - (i32.add - (local.get $5) - (i32.const 16) - ) - (i32.load offset=8 - (local.get $5) - ) - ) - ) - (block $label$81 - (br_if $label$81 - (i32.load offset=16 - (i32.load - (local.get $3) - ) - ) - ) - (local.set $2 - (i32.shl - (i32.eq - (local.get $1) - (i32.const 4) - ) - (i32.const 1) - ) - ) - (br $label$62) - ) - (local.set $2 - (select - (i32.const 3) - (i32.const 1) - (i32.eq - (local.get $1) - (i32.const 4) - ) - ) - ) - (br $label$62) - ) - (block $label$82 - (br_if $label$82 - (local.tee $8 - (i32.load - (local.get $6) - ) - ) - ) - (local.set $8 - (i32.const 0) - ) - (br $label$74) - ) - (br_if $label$74 - (i32.ne - (local.tee $9 - (i32.load8_u - (i32.add - (local.tee $10 - (i32.add - (i32.load - (local.get $11) - ) - (local.get $8) - ) - ) - (i32.const -1) - ) - ) - ) - (i32.load8_u - (local.get $10) - ) - ) - ) - (br_if $label$74 - (i32.ne - (local.get $9) - (i32.load8_u offset=1 - (local.get $10) - ) - ) - ) - (br_if $label$74 - (i32.ne - (local.get $9) - (i32.load8_u - (i32.add - (local.get $10) - (i32.const 2) - ) - ) - ) - ) - (local.set $17 - (i32.add - (local.get $10) - (i32.const 258) - ) - ) - (local.set $18 - (i32.const 1) - ) - (block $label$83 - (block $label$84 - (block $label$85 - (block $label$86 - (block $label$87 - (block $label$88 - (block $label$89 - (loop $label$90 - (br_if $label$89 - (i32.ne - (local.get $9) - (i32.load8_u offset=2 - (local.tee $12 - (i32.add - (local.get $10) - (local.get $18) - ) - ) - ) - ) - ) - (br_if $label$88 - (i32.ne - (local.get $9) - (i32.load8_u offset=3 - (local.get $12) - ) - ) - ) - (br_if $label$87 - (i32.ne - (local.get $9) - (i32.load8_u offset=4 - (local.get $12) - ) - ) - ) - (br_if $label$86 - (i32.ne - (local.get $9) - (i32.load8_u offset=5 - (local.get $12) - ) - ) - ) - (br_if $label$85 - (i32.ne - (local.get $9) - (i32.load8_u offset=6 - (local.get $12) - ) - ) - ) - (br_if $label$84 - (i32.ne - (local.get $9) - (i32.load8_u offset=7 - (local.get $12) - ) - ) - ) - (br_if $label$83 - (i32.ne - (local.get $9) - (i32.load8_u - (local.tee $12 - (i32.add - (local.get $10) - (local.tee $19 - (i32.add - (local.get $18) - (i32.const 8) - ) - ) - ) - ) - ) - ) - ) - (local.set $12 - (i32.add - (local.get $10) - (local.tee $18 - (i32.add - (local.get $18) - (i32.const 9) - ) - ) - ) - ) - (br_if $label$83 - (i32.gt_u - (local.get $18) - (i32.const 257) - ) - ) - (local.set $18 - (local.get $19) - ) - (br_if $label$90 - (i32.eq - (local.get $9) - (i32.and - (i32.load8_u - (local.get $12) - ) - (i32.const 255) - ) - ) - ) - (br $label$83) - ) - ) - (local.set $12 - (i32.add - (local.get $12) - (i32.const 2) - ) - ) - (br $label$83) - ) - (local.set $12 - (i32.add - (local.get $12) - (i32.const 3) - ) - ) - (br $label$83) - ) - (local.set $12 - (i32.add - (local.get $12) - (i32.const 4) - ) - ) - (br $label$83) - ) - (local.set $12 - (i32.add - (local.get $12) - (i32.const 5) - ) - ) - (br $label$83) - ) - (local.set $12 - (i32.add - (local.get $12) - (i32.const 6) - ) - ) - (br $label$83) - ) - (local.set $12 - (i32.add - (local.get $12) - (i32.const 7) - ) - ) - ) - (i32.store - (local.get $14) - (local.tee $5 - (select - (local.get $5) - (local.tee $9 - (i32.add - (i32.sub - (local.get $12) - (local.get $17) - ) - (i32.const 258) - ) - ) - (i32.gt_u - (local.get $9) - (local.get $5) - ) - ) - ) - ) - (br_if $label$74 - (i32.lt_u - (local.get $5) - (i32.const 3) - ) - ) - (i32.store16 - (i32.add - (i32.load - (local.get $13) - ) - (i32.shl - (local.tee $8 - (i32.load - (local.get $7) - ) - ) - (i32.const 1) - ) - ) - (i32.const 1) - ) - (i32.store - (local.get $7) - (i32.add - (local.get $8) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (local.get $8) - (i32.load - (local.get $4) - ) - ) - (local.tee $5 - (i32.add - (local.get $5) - (i32.const -3) - ) - ) - ) - (i32.store16 - (local.tee $5 - (i32.add - (i32.add - (local.get $3) - (i32.or - (i32.shl - (i32.load8_u - (i32.add - (i32.and - (local.get $5) - (i32.const 255) - ) - (i32.const 13488) - ) - ) - (i32.const 2) - ) - (i32.const 1024) - ) - ) - (i32.const 152) - ) - ) - (i32.add - (i32.load16_u - (local.get $5) - ) - (i32.const 1) - ) - ) - (i32.store16 - (local.tee $5 - (i32.add - (i32.add - (local.get $3) - (i32.shl - (i32.load8_u offset=12976 - (i32.const 0) - ) - (i32.const 2) - ) - ) - (i32.const 2440) - ) - ) - (i32.add - (i32.load16_u - (local.get $5) - ) - (i32.const 1) - ) - ) - (local.set $5 - (i32.load - (local.get $14) - ) - ) - (i32.store - (local.get $14) - (i32.const 0) - ) - (i32.store - (local.get $2) - (i32.sub - (i32.load - (local.get $2) - ) - (local.get $5) - ) - ) - (i32.store - (local.get $6) - (local.tee $5 - (i32.add - (local.get $5) - (i32.load - (local.get $6) - ) - ) - ) - ) - (br_if $label$72 - (i32.ne - (i32.load - (local.get $7) - ) - (i32.add - (i32.load - (local.get $15) - ) - (i32.const -1) - ) - ) - ) - (br $label$73) - ) - (local.set $5 - (i32.load8_u - (i32.add - (i32.load - (local.get $11) - ) - (local.get $8) - ) - ) - ) - (i32.store16 - (i32.add - (i32.load - (local.get $13) - ) - (i32.shl - (local.tee $8 - (i32.load - (local.get $7) - ) - ) - (i32.const 1) - ) - ) - (i32.const 0) - ) - (i32.store - (local.get $7) - (i32.add - (local.get $8) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (local.get $8) - (i32.load - (local.get $4) - ) - ) - (local.get $5) - ) - (i32.store16 - (local.tee $5 - (i32.add - (i32.add - (local.get $3) - (i32.shl - (local.get $5) - (i32.const 2) - ) - ) - (i32.const 148) - ) - ) - (i32.add - (i32.load16_u - (local.get $5) - ) - (i32.const 1) - ) - ) - (i32.store - (local.get $2) - (i32.add - (i32.load - (local.get $2) - ) - (i32.const -1) - ) - ) - (i32.store - (local.get $6) - (local.tee $5 - (i32.add - (i32.load - (local.get $6) - ) - (i32.const 1) - ) - ) - ) - (br_if $label$72 - (i32.ne - (i32.load - (local.get $7) - ) - (i32.add - (i32.load - (local.get $15) - ) - (i32.const -1) - ) - ) - ) - ) - (local.set $8 - (i32.const 0) - ) - (block $label$91 - (br_if $label$91 - (i32.lt_s - (local.tee $9 - (i32.load - (local.get $16) - ) - ) - (i32.const 0) - ) - ) - (local.set $8 - (i32.add - (i32.load - (local.get $11) - ) - (local.get $9) - ) - ) - ) - (call $_tr_flush_block - (local.get $3) - (local.get $8) - (i32.sub - (local.get $5) - (local.get $9) - ) - (i32.const 0) - ) - (i32.store - (local.get $16) - (i32.load - (local.get $6) - ) - ) - (block $label$92 - (br_if $label$92 - (i32.eqz - (local.tee $8 - (select - (local.tee $8 - (i32.load offset=16 - (local.tee $5 - (i32.load - (local.get $3) - ) - ) - ) - ) - (local.tee $9 - (i32.load offset=20 - (local.tee $10 - (i32.load offset=28 - (local.get $5) - ) - ) - ) - ) - (i32.gt_u - (local.get $9) - (local.get $8) - ) - ) - ) - ) - ) - (drop - (call $memcpy - (i32.load offset=12 - (local.get $5) - ) - (i32.load offset=16 - (local.get $10) - ) - (local.get $8) - ) - ) - (i32.store offset=12 - (local.get $5) - (i32.add - (i32.load offset=12 - (local.get $5) - ) - (local.get $8) - ) - ) - (i32.store offset=16 - (local.tee $9 - (i32.load - (i32.add - (local.get $5) - (i32.const 28) - ) - ) - ) - (i32.add - (i32.load offset=16 - (local.get $9) - ) - (local.get $8) - ) - ) - (i32.store offset=20 - (local.get $5) - (i32.add - (i32.load offset=20 - (local.get $5) - ) - (local.get $8) - ) - ) - (i32.store - (local.tee $5 - (i32.add - (local.get $5) - (i32.const 16) - ) - ) - (i32.sub - (i32.load - (local.get $5) - ) - (local.get $8) - ) - ) - (i32.store offset=20 - (local.get $9) - (local.tee $5 - (i32.sub - (i32.load offset=20 - (local.get $9) - ) - (local.get $8) - ) - ) - ) - (br_if $label$92 - (local.get $5) - ) - (i32.store - (i32.add - (local.get $9) - (i32.const 16) - ) - (i32.load offset=8 - (local.get $9) - ) - ) - ) - (br_if $label$72 - (i32.load offset=16 - (i32.load - (local.get $3) - ) - ) - ) - (br $label$61) + ) + (br_if $label$61 + (i32.ne + (local.get $2) + (i32.const 2) ) ) (local.set $2 - (call_indirect (type $2) + (call $fimport$20 (local.get $3) (local.get $1) - (i32.load - (i32.add - (i32.mul - (i32.load offset=132 - (local.get $3) - ) - (i32.const 12) - ) - (i32.const 9832) - ) - ) ) ) + (br $label$60) ) - (block $label$93 - (br_if $label$93 - (i32.ne - (i32.or - (local.get $2) - (i32.const 1) - ) - (i32.const 3) - ) + (local.set $2 + (call $fimport$21 + (local.get $3) + (local.get $1) ) - (i32.store + ) + (br $label$60) + ) + (local.set $2 + (call_indirect (type $2) + (local.get $3) + (local.get $1) + (i32.load (i32.add - (local.get $3) - (i32.const 4) + (i32.mul + (i32.load offset=132 + (local.get $3) + ) + (i32.const 12) + ) + (i32.const 11032) ) - (i32.const 666) ) ) - (br_if $label$60 - (i32.and + ) + ) + (block $label$63 + (br_if $label$63 + (i32.ne + (i32.or (local.get $2) - (i32.const -3) + (i32.const 1) ) + (i32.const 3) + ) + ) + (i32.store offset=4 + (local.get $3) + (i32.const 666) + ) + ) + (block $label$64 + (br_if $label$64 + (i32.and + (local.get $2) + (i32.const -3) ) ) (local.set $2 (i32.const 0) ) (br_if $label$1 - (i32.load - (i32.add - (local.get $0) - (i32.const 16) - ) + (i32.load offset=16 + (local.get $0) ) ) - (i32.store - (i32.add - (local.get $3) - (i32.const 40) - ) + (i32.store offset=40 + (local.get $3) (i32.const -1) ) (return @@ -4487,32 +2657,32 @@ (i32.const 1) ) ) - (block $label$94 - (br_if $label$94 + (block $label$65 + (br_if $label$65 (i32.eq (local.get $1) (i32.const 5) ) ) - (block $label$95 - (br_if $label$95 + (block $label$66 + (br_if $label$66 (i32.ne (local.get $1) (i32.const 1) ) ) - (call $_tr_align + (call $fimport$30 (local.get $3) ) - (br $label$94) + (br $label$65) ) - (call $_tr_stored_block + (call $fimport$29 (local.get $3) (i32.const 0) (i32.const 0) (i32.const 0) ) - (br_if $label$94 + (br_if $label$65 (i32.ne (local.get $1) (i32.const 3) @@ -4525,7 +2695,7 @@ (local.get $3) ) ) - (local.tee $6 + (local.tee $5 (i32.add (i32.shl (i32.load offset=76 @@ -4540,13 +2710,13 @@ (i32.const 0) ) (drop - (call $memset + (call $fimport$97 (local.get $2) (i32.const 0) - (local.get $6) + (local.get $5) ) ) - (br_if $label$94 + (br_if $label$65 (i32.load offset=116 (local.get $3) ) @@ -4560,77 +2730,62 @@ (i32.const 0) ) ) - (block $label$96 - (br_if $label$96 + (block $label$67 + (br_if $label$67 (i32.eqz (local.tee $2 (select - (local.tee $6 - (i32.load - (local.tee $7 - (i32.add - (local.get $0) - (i32.const 16) - ) - ) + (local.tee $5 + (i32.load offset=16 + (local.get $0) ) ) (local.tee $2 (i32.load offset=20 - (local.tee $8 - (i32.load - (local.tee $5 - (i32.add - (local.get $0) - (i32.const 28) - ) - ) + (local.tee $6 + (i32.load offset=28 + (local.get $0) ) ) ) ) (i32.gt_u (local.get $2) - (local.get $6) + (local.get $5) ) ) ) ) ) (drop - (call $memcpy - (i32.load - (local.tee $6 - (i32.add - (local.get $0) - (i32.const 12) - ) - ) + (call $fimport$98 + (i32.load offset=12 + (local.get $0) ) (i32.load offset=16 - (local.get $8) + (local.get $6) ) (local.get $2) ) ) - (i32.store - (local.get $6) + (i32.store offset=12 + (local.get $0) (i32.add - (i32.load - (local.get $6) + (i32.load offset=12 + (local.get $0) ) (local.get $2) ) ) (i32.store offset=16 - (local.tee $5 - (i32.load - (local.get $5) + (local.tee $6 + (i32.load offset=28 + (local.get $0) ) ) (i32.add (i32.load offset=16 - (local.get $5) + (local.get $6) ) (local.get $2) ) @@ -4644,49 +2799,43 @@ (local.get $2) ) ) - (i32.store - (local.get $7) - (local.tee $6 + (i32.store offset=16 + (local.get $0) + (local.tee $5 (i32.sub - (i32.load - (local.get $7) + (i32.load offset=16 + (local.get $0) ) (local.get $2) ) ) ) (i32.store offset=20 - (local.get $5) + (local.get $6) (local.tee $2 (i32.sub (i32.load offset=20 - (local.get $5) + (local.get $6) ) (local.get $2) ) ) ) - (br_if $label$96 + (br_if $label$67 (local.get $2) ) - (i32.store - (i32.add - (local.get $5) - (i32.const 16) - ) + (i32.store offset=16 + (local.get $6) (i32.load offset=8 - (local.get $5) + (local.get $6) ) ) ) (br_if $label$56 - (local.get $6) + (local.get $5) ) - (i32.store - (i32.add - (local.get $3) - (i32.const 40) - ) + (i32.store offset=40 + (local.get $3) (i32.const -1) ) (return @@ -4715,30 +2864,25 @@ (i32.const 1) ) ) - (local.set $6 + (local.set $2 (i32.load offset=48 (local.get $0) ) ) - (block $label$97 - (block $label$98 - (br_if $label$98 + (block $label$68 + (block $label$69 + (br_if $label$69 (i32.ne (local.get $1) (i32.const 2) ) ) - (i32.store - (local.tee $2 - (i32.add - (local.get $3) - (i32.const 20) - ) - ) + (i32.store offset=20 + (local.get $3) (i32.add (local.tee $1 - (i32.load - (local.get $2) + (i32.load offset=20 + (local.get $3) ) ) (i32.const 1) @@ -4751,22 +2895,19 @@ (local.get $3) ) ) - (local.get $6) + (local.get $2) ) - (local.set $1 - (i32.load - (i32.add - (local.get $0) - (i32.const 48) - ) + (local.set $2 + (i32.load offset=48 + (local.get $0) ) ) - (i32.store - (local.get $2) + (i32.store offset=20 + (local.get $3) (i32.add - (local.tee $6 - (i32.load - (local.get $2) + (local.tee $1 + (i32.load offset=20 + (local.get $3) ) ) (i32.const 1) @@ -4774,17 +2915,17 @@ ) (i32.store8 (i32.add - (local.get $6) + (local.get $1) (i32.load offset=8 (local.get $3) ) ) (i32.shr_u - (local.get $1) + (local.get $2) (i32.const 8) ) ) - (local.set $1 + (local.set $2 (i32.load16_u (i32.add (local.get $0) @@ -4792,12 +2933,12 @@ ) ) ) - (i32.store - (local.get $2) + (i32.store offset=20 + (local.get $3) (i32.add - (local.tee $6 - (i32.load - (local.get $2) + (local.tee $1 + (i32.load offset=20 + (local.get $3) ) ) (i32.const 1) @@ -4805,14 +2946,14 @@ ) (i32.store8 (i32.add - (local.get $6) + (local.get $1) (i32.load offset=8 (local.get $3) ) ) - (local.get $1) + (local.get $2) ) - (local.set $1 + (local.set $2 (i32.load8_u (i32.add (local.get $0) @@ -4820,12 +2961,12 @@ ) ) ) - (i32.store - (local.get $2) + (i32.store offset=20 + (local.get $3) (i32.add - (local.tee $6 - (i32.load - (local.get $2) + (local.tee $1 + (i32.load offset=20 + (local.get $3) ) ) (i32.const 1) @@ -4833,24 +2974,24 @@ ) (i32.store8 (i32.add - (local.get $6) + (local.get $1) (i32.load offset=8 (local.get $3) ) ) - (local.get $1) + (local.get $2) ) - (local.set $1 + (local.set $2 (i32.load offset=8 (local.get $0) ) ) - (i32.store - (local.get $2) + (i32.store offset=20 + (local.get $3) (i32.add - (local.tee $6 - (i32.load - (local.get $2) + (local.tee $1 + (i32.load offset=20 + (local.get $3) ) ) (i32.const 1) @@ -4858,24 +2999,24 @@ ) (i32.store8 (i32.add - (local.get $6) + (local.get $1) (i32.load offset=8 (local.get $3) ) ) - (local.get $1) + (local.get $2) ) - (local.set $1 + (local.set $2 (i32.load offset=8 (local.get $0) ) ) - (i32.store - (local.get $2) + (i32.store offset=20 + (local.get $3) (i32.add - (local.tee $6 - (i32.load - (local.get $2) + (local.tee $1 + (i32.load offset=20 + (local.get $3) ) ) (i32.const 1) @@ -4883,17 +3024,17 @@ ) (i32.store8 (i32.add - (local.get $6) + (local.get $1) (i32.load offset=8 (local.get $3) ) ) (i32.shr_u - (local.get $1) + (local.get $2) (i32.const 8) ) ) - (local.set $1 + (local.set $2 (i32.load16_u (i32.add (local.get $0) @@ -4901,12 +3042,12 @@ ) ) ) - (i32.store - (local.get $2) + (i32.store offset=20 + (local.get $3) (i32.add - (local.tee $6 - (i32.load - (local.get $2) + (local.tee $1 + (i32.load offset=20 + (local.get $3) ) ) (i32.const 1) @@ -4914,14 +3055,14 @@ ) (i32.store8 (i32.add - (local.get $6) + (local.get $1) (i32.load offset=8 (local.get $3) ) ) - (local.get $1) + (local.get $2) ) - (local.set $1 + (local.set $2 (i32.load8_u (i32.add (local.get $0) @@ -4929,38 +3070,33 @@ ) ) ) - (i32.store - (local.get $2) + (i32.store offset=20 + (local.get $3) (i32.add - (local.tee $6 - (i32.load - (local.get $2) + (local.tee $1 + (i32.load offset=20 + (local.get $3) ) ) (i32.const 1) ) ) - (local.set $2 + (local.set $1 (i32.add - (local.get $6) + (local.get $1) (i32.load offset=8 (local.get $3) ) ) ) - (br $label$97) + (br $label$68) ) - (i32.store - (local.tee $2 - (i32.add - (local.get $3) - (i32.const 20) - ) - ) + (i32.store offset=20 + (local.get $3) (i32.add (local.tee $1 - (i32.load - (local.get $2) + (i32.load offset=20 + (local.get $3) ) ) (i32.const 1) @@ -4974,16 +3110,16 @@ ) ) (i32.shr_u - (local.get $6) + (local.get $2) (i32.const 24) ) ) - (i32.store - (local.get $2) + (i32.store offset=20 + (local.get $3) (i32.add (local.tee $1 - (i32.load - (local.get $2) + (i32.load offset=20 + (local.get $3) ) ) (i32.const 1) @@ -4997,24 +3133,21 @@ ) ) (i32.shr_u - (local.get $6) + (local.get $2) (i32.const 16) ) ) - (local.set $1 - (i32.load - (i32.add - (local.get $0) - (i32.const 48) - ) + (local.set $2 + (i32.load offset=48 + (local.get $0) ) ) - (i32.store - (local.get $2) + (i32.store offset=20 + (local.get $3) (i32.add - (local.tee $6 - (i32.load - (local.get $2) + (local.tee $1 + (i32.load offset=20 + (local.get $3) ) ) (i32.const 1) @@ -5022,30 +3155,30 @@ ) (i32.store8 (i32.add - (local.get $6) + (local.get $1) (i32.load offset=8 (local.get $3) ) ) (i32.shr_u - (local.get $1) + (local.get $2) (i32.const 8) ) ) - (i32.store - (local.get $2) + (i32.store offset=20 + (local.get $3) (i32.add - (local.tee $6 - (i32.load - (local.get $2) + (local.tee $1 + (i32.load offset=20 + (local.get $3) ) ) (i32.const 1) ) ) - (local.set $2 + (local.set $1 (i32.add - (local.get $6) + (local.get $1) (i32.load offset=8 (local.get $3) ) @@ -5053,34 +3186,24 @@ ) ) (i32.store8 - (local.get $2) (local.get $1) + (local.get $2) ) - (block $label$99 - (br_if $label$99 + (block $label$70 + (br_if $label$70 (i32.eqz (local.tee $2 (select (local.tee $2 - (i32.load - (local.tee $6 - (i32.add - (local.get $0) - (i32.const 16) - ) - ) + (i32.load offset=16 + (local.get $0) ) ) (local.tee $1 (i32.load offset=20 - (local.tee $7 - (i32.load - (local.tee $5 - (i32.add - (local.get $0) - (i32.const 28) - ) - ) + (local.tee $5 + (i32.load offset=28 + (local.get $0) ) ) ) @@ -5094,34 +3217,29 @@ ) ) (drop - (call $memcpy - (i32.load - (local.tee $1 - (i32.add - (local.get $0) - (i32.const 12) - ) - ) + (call $fimport$98 + (i32.load offset=12 + (local.get $0) ) (i32.load offset=16 - (local.get $7) + (local.get $5) ) (local.get $2) ) ) - (i32.store - (local.get $1) + (i32.store offset=12 + (local.get $0) (i32.add - (i32.load - (local.get $1) + (i32.load offset=12 + (local.get $0) ) (local.get $2) ) ) (i32.store offset=16 (local.tee $1 - (i32.load - (local.get $5) + (i32.load offset=28 + (local.get $0) ) ) (i32.add @@ -5140,11 +3258,11 @@ (local.get $2) ) ) - (i32.store - (local.get $6) + (i32.store offset=16 + (local.get $0) (i32.sub - (i32.load - (local.get $6) + (i32.load offset=16 + (local.get $0) ) (local.get $2) ) @@ -5160,307 +3278,45 @@ ) ) ) - (br_if $label$99 + (br_if $label$70 (local.get $0) ) - (i32.store - (i32.add - (local.get $1) - (i32.const 16) - ) + (i32.store offset=16 + (local.get $1) (i32.load offset=8 (local.get $1) ) ) ) - (block $label$100 - (br_if $label$100 + (block $label$71 + (br_if $label$71 (i32.lt_s - (local.tee $2 - (i32.load - (local.tee $0 - (i32.add - (local.get $3) - (i32.const 24) - ) - ) + (local.tee $0 + (i32.load offset=24 + (local.get $3) ) ) (i32.const 1) ) ) - (i32.store - (local.get $0) + (i32.store offset=24 + (local.get $3) (i32.sub (i32.const 0) - (local.get $2) + (local.get $0) ) ) ) (local.set $2 (i32.eqz - (i32.load - (i32.add - (local.get $3) - (i32.const 20) - ) + (i32.load offset=20 + (local.get $3) ) ) ) ) (local.get $2) ) - (func $fill_window (; 28 ;) (type $3) (param $0 i32) - (unreachable) - ) - (func $deflate_stored (; 29 ;) (type $2) (param $0 i32) (param $1 i32) (result i32) - (unreachable) - ) - (func $deflate_fast (; 30 ;) (type $2) (param $0 i32) (param $1 i32) (result i32) - (unreachable) - ) - (func $longest_match (; 31 ;) (type $2) (param $0 i32) (param $1 i32) (result i32) - (unreachable) - ) - (func $deflate_slow (; 32 ;) (type $2) (param $0 i32) (param $1 i32) (result i32) - (unreachable) - ) - (func $inflate_fast (; 33 ;) (type $1) (param $0 i32) (param $1 i32) - (unreachable) - ) - (func $inflateInit2_ (; 34 ;) (type $7) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (unreachable) - ) - (func $inflateInit_ (; 35 ;) (type $0) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (unreachable) - ) - (func $inflate (; 36 ;) (type $2) (param $0 i32) (param $1 i32) (result i32) - (unreachable) - ) - (func $updatewindow (; 37 ;) (type $2) (param $0 i32) (param $1 i32) (result i32) - (unreachable) - ) - (func $inflateEnd (; 38 ;) (type $4) (param $0 i32) (result i32) - (unreachable) - ) - (func $inflateSetDictionary (; 39 ;) (type $0) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (unreachable) - ) - (func $inflateSync (; 40 ;) (type $4) (param $0 i32) (result i32) - (unreachable) - ) - (func $inflate_table (; 41 ;) (type $9) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (result i32) - (unreachable) - ) - (func $_tr_init (; 42 ;) (type $3) (param $0 i32) - (unreachable) - ) - (func $init_block (; 43 ;) (type $3) (param $0 i32) - (unreachable) - ) - (func $_tr_stored_block (; 44 ;) (type $6) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (unreachable) - ) - (func $_tr_align (; 45 ;) (type $3) (param $0 i32) - (unreachable) - ) - (func $_tr_flush_block (; 46 ;) (type $6) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (unreachable) - ) - (func $build_tree (; 47 ;) (type $1) (param $0 i32) (param $1 i32) - (unreachable) - ) - (func $compress_block (; 48 ;) (type $10) (param $0 i32) (param $1 i32) (param $2 i32) - (unreachable) - ) - (func $send_tree (; 49 ;) (type $10) (param $0 i32) (param $1 i32) (param $2 i32) - (unreachable) - ) - (func $uncompress (; 50 ;) (type $7) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (unreachable) - ) - (func $zlibVersion (; 51 ;) (type $11) (result i32) - (unreachable) - ) - (func $zlibCompileFlags (; 52 ;) (type $11) (result i32) - (unreachable) - ) - (func $zcalloc (; 53 ;) (type $0) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (unreachable) - ) - (func $zcfree (; 54 ;) (type $1) (param $0 i32) (param $1 i32) - (unreachable) - ) - (func $strlen (; 55 ;) (type $4) (param $0 i32) (result i32) - (unreachable) - ) - (func $strcmp (; 56 ;) (type $2) (param $0 i32) (param $1 i32) (result i32) - (unreachable) - ) - (func $memchr (; 57 ;) (type $0) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (unreachable) - ) - (func $__syscall_ret (; 58 ;) (type $4) (param $0 i32) (result i32) - (unreachable) - ) - (func $__errno_location (; 59 ;) (type $11) (result i32) - (unreachable) - ) - (func $pthread_self (; 60 ;) (type $11) (result i32) - (unreachable) - ) - (func $dummy (; 61 ;) (type $4) (param $0 i32) (result i32) - (unreachable) - ) - (func $puts (; 62 ;) (type $4) (param $0 i32) (result i32) - (unreachable) - ) - (func $fputs (; 63 ;) (type $2) (param $0 i32) (param $1 i32) (result i32) - (unreachable) - ) - (func $__towrite (; 64 ;) (type $4) (param $0 i32) (result i32) - (unreachable) - ) - (func $__fwritex (; 65 ;) (type $0) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (unreachable) - ) - (func $fwrite (; 66 ;) (type $7) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (unreachable) - ) - (func $__lockfile (; 67 ;) (type $4) (param $0 i32) (result i32) - (unreachable) - ) - (func $__unlockfile (; 68 ;) (type $3) (param $0 i32) - (unreachable) - ) - (func $__stdout_write (; 69 ;) (type $0) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (unreachable) - ) - (func $__stdio_close (; 70 ;) (type $4) (param $0 i32) (result i32) - (unreachable) - ) - (func $printf (; 71 ;) (type $2) (param $0 i32) (param $1 i32) (result i32) - (unreachable) - ) - (func $fprintf (; 72 ;) (type $0) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (unreachable) - ) - (func $__overflow (; 73 ;) (type $2) (param $0 i32) (param $1 i32) (result i32) - (unreachable) - ) - (func $isdigit (; 74 ;) (type $4) (param $0 i32) (result i32) - (unreachable) - ) - (func $wcrtomb (; 75 ;) (type $0) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (unreachable) - ) - (func $__pthread_self (; 76 ;) (type $11) (result i32) - (unreachable) - ) - (func $wctomb (; 77 ;) (type $2) (param $0 i32) (param $1 i32) (result i32) - (unreachable) - ) - (func $__signbitl (; 78 ;) (type $12) (param $0 i64) (param $1 i64) (result i32) - (unreachable) - ) - (func $frexpl (; 79 ;) (type $13) (param $0 i32) (param $1 i64) (param $2 i64) (param $3 i32) - (unreachable) - ) - (func $vfprintf (; 80 ;) (type $0) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (unreachable) - ) - (func $printf_core (; 81 ;) (type $14) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) - (unreachable) - ) - (func $out (; 82 ;) (type $10) (param $0 i32) (param $1 i32) (param $2 i32) - (unreachable) - ) - (func $getint (; 83 ;) (type $4) (param $0 i32) (result i32) - (unreachable) - ) - (func $pop_arg (; 84 ;) (type $10) (param $0 i32) (param $1 i32) (param $2 i32) - (unreachable) - ) - (func $fmt_fp (; 85 ;) (type $15) (param $0 i32) (param $1 i64) (param $2 i64) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32) (result i32) - (unreachable) - ) - (func $fmt_o (; 86 ;) (type $16) (param $0 i64) (param $1 i32) (result i32) - (unreachable) - ) - (func $fmt_x (; 87 ;) (type $17) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) - (unreachable) - ) - (func $fmt_u (; 88 ;) (type $16) (param $0 i64) (param $1 i32) (result i32) - (unreachable) - ) - (func $pad (; 89 ;) (type $18) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) - (unreachable) - ) - (func $__stdio_seek (; 90 ;) (type $0) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (unreachable) - ) - (func $__stdio_write (; 91 ;) (type $0) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (unreachable) - ) - (func $malloc (; 92 ;) (type $4) (param $0 i32) (result i32) - (unreachable) - ) - (func $free (; 93 ;) (type $3) (param $0 i32) - (unreachable) - ) - (func $calloc (; 94 ;) (type $2) (param $0 i32) (param $1 i32) (result i32) - (unreachable) - ) - (func $__addtf3 (; 95 ;) (type $19) (param $0 i32) (param $1 i64) (param $2 i64) (param $3 i64) (param $4 i64) - (unreachable) - ) - (func $__ashlti3 (; 96 ;) (type $13) (param $0 i32) (param $1 i64) (param $2 i64) (param $3 i32) - (unreachable) - ) - (func $__unordtf2 (; 97 ;) (type $20) (param $0 i64) (param $1 i64) (param $2 i64) (param $3 i64) (result i32) - (unreachable) - ) - (func $__eqtf2 (; 98 ;) (type $20) (param $0 i64) (param $1 i64) (param $2 i64) (param $3 i64) (result i32) - (unreachable) - ) - (func $__netf2 (; 99 ;) (type $20) (param $0 i64) (param $1 i64) (param $2 i64) (param $3 i64) (result i32) - (unreachable) - ) - (func $__extenddftf2 (; 100 ;) (type $21) (param $0 i32) (param $1 f64) - (unreachable) - ) - (func $__fixtfsi (; 101 ;) (type $12) (param $0 i64) (param $1 i64) (result i32) - (unreachable) - ) - (func $__fixunstfsi (; 102 ;) (type $12) (param $0 i64) (param $1 i64) (result i32) - (unreachable) - ) - (func $__floatsitf (; 103 ;) (type $1) (param $0 i32) (param $1 i32) - (unreachable) - ) - (func $__floatunsitf (; 104 ;) (type $1) (param $0 i32) (param $1 i32) - (unreachable) - ) - (func $__lshrti3 (; 105 ;) (type $13) (param $0 i32) (param $1 i64) (param $2 i64) (param $3 i32) - (unreachable) - ) - (func $__multf3 (; 106 ;) (type $19) (param $0 i32) (param $1 i64) (param $2 i64) (param $3 i64) (param $4 i64) - (unreachable) - ) - (func $__subtf3 (; 107 ;) (type $19) (param $0 i32) (param $1 i64) (param $2 i64) (param $3 i64) (param $4 i64) - (unreachable) - ) - (func $__fpclassifyl (; 108 ;) (type $12) (param $0 i64) (param $1 i64) (result i32) - (unreachable) - ) - (func $memset (; 109 ;) (type $0) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (unreachable) - ) - (func $memcpy (; 110 ;) (type $0) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (unreachable) - ) - (func $setThrew (; 111 ;) (type $1) (param $0 i32) (param $1 i32) - (unreachable) - ) + ;; custom section "producers", size 183 ) diff --git a/test/passes/O4.txt b/test/passes/O4.txt index 0111c2102..2845d30d9 100644 --- a/test/passes/O4.txt +++ b/test/passes/O4.txt @@ -9,3 +9,1293 @@ (unreachable) ) ) +(module + (type $0 (func)) + (type $3 (func (param i32) (result i32))) + (type $8 (func (result f64))) + (type $10 (func (param i32) (result f64))) + (type $11 (func (param i32))) + (import "env" "memory" (memory $0 1)) + (data (i32.const 8) "\0d\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") + (data (i32.const 40) "\1c\00\00\00~\00l\00i\00b\00/\00i\00n\00t\00e\00r\00n\00a\00l\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s") + (table $0 1 funcref) + (elem (i32.const 0) $null) + (global $global$0 (mut i32) (i32.const 0)) + (global $global$1 (mut i32) (i32.const 0)) + (global $global$5 (mut i32) (i32.const 0)) + (export "memory" (memory $0)) + (export "table" (table $0)) + (export "init" (func $assembly/index/init)) + (export "step" (func $assembly/index/step)) + (export "bench" (func $assembly/index/bench)) + (export "getBody" (func $assembly/index/getBody)) + (start $start) + (func $~lib/allocator/arena/__memory_allocate (; 0 ;) (; has Stack IR ;) (type $3) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (if + (i32.gt_u + (local.get $0) + (i32.const 1073741824) + ) + (unreachable) + ) + (if + (i32.gt_u + (local.tee $2 + (i32.and + (i32.add + (i32.add + (local.tee $1 + (global.get $global$1) + ) + (select + (local.get $0) + (i32.const 1) + (i32.gt_u + (local.get $0) + (i32.const 1) + ) + ) + ) + (i32.const 7) + ) + (i32.const -8) + ) + ) + (i32.shl + (local.tee $3 + (current_memory) + ) + (i32.const 16) + ) + ) + (if + (i32.lt_s + (grow_memory + (select + (local.get $3) + (local.tee $0 + (i32.shr_u + (i32.and + (i32.add + (i32.sub + (local.get $2) + (local.get $1) + ) + (i32.const 65535) + ) + (i32.const -65536) + ) + (i32.const 16) + ) + ) + (i32.gt_s + (local.get $3) + (local.get $0) + ) + ) + ) + (i32.const 0) + ) + (if + (i32.lt_s + (grow_memory + (local.get $0) + ) + (i32.const 0) + ) + (unreachable) + ) + ) + ) + (global.set $global$1 + (local.get $2) + ) + (local.get $1) + ) + (func $assembly/index/NBodySystem#constructor (; 1 ;) (; has Stack IR ;) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 f64) + (local $4 f64) + (local $5 f64) + (local $6 f64) + (local $7 i32) + (local.set $7 + (i32.load offset=4 + (local.get $0) + ) + ) + (loop $label$3 + (if + (i32.lt_s + (local.get $1) + (local.get $7) + ) + (block + (local.set $3 + (f64.load offset=48 + (local.tee $2 + (i32.load offset=8 + (i32.add + (i32.load + (local.get $0) + ) + (i32.shl + (local.get $1) + (i32.const 2) + ) + ) + ) + ) + ) + ) + (local.set $4 + (f64.add + (local.get $4) + (f64.mul + (f64.load offset=24 + (local.get $2) + ) + (local.get $3) + ) + ) + ) + (local.set $5 + (f64.add + (local.get $5) + (f64.mul + (f64.load offset=32 + (local.get $2) + ) + (local.get $3) + ) + ) + ) + (local.set $6 + (f64.add + (local.get $6) + (f64.mul + (f64.load offset=40 + (local.get $2) + ) + (local.get $3) + ) + ) + ) + (local.set $1 + (i32.add + (local.get $1) + (i32.const 1) + ) + ) + (br $label$3) + ) + ) + ) + (f64.store offset=24 + (local.tee $1 + (if (result i32) + (i32.lt_u + (i32.const 0) + (i32.shr_u + (i32.load + (local.tee $1 + (i32.load + (local.get $0) + ) + ) + ) + (i32.const 2) + ) + ) + (i32.load offset=8 + (local.get $1) + ) + (unreachable) + ) + ) + (f64.div + (f64.neg + (local.get $4) + ) + (f64.const 39.47841760435743) + ) + ) + (f64.store offset=32 + (local.get $1) + (f64.div + (f64.neg + (local.get $5) + ) + (f64.const 39.47841760435743) + ) + ) + (f64.store offset=40 + (local.get $1) + (f64.div + (f64.neg + (local.get $6) + ) + (f64.const 39.47841760435743) + ) + ) + (i32.store + (local.tee $1 + (call $~lib/allocator/arena/__memory_allocate + (i32.const 4) + ) + ) + (local.get $0) + ) + (local.get $1) + ) + (func $assembly/index/Body#constructor (; 2 ;) (; has Stack IR ;) (param $0 f64) (param $1 f64) (param $2 f64) (param $3 f64) (param $4 f64) (param $5 f64) (param $6 f64) (result i32) + (local $7 i32) + (f64.store + (local.tee $7 + (call $~lib/allocator/arena/__memory_allocate + (i32.const 56) + ) + ) + (local.get $0) + ) + (f64.store offset=8 + (local.get $7) + (local.get $1) + ) + (f64.store offset=16 + (local.get $7) + (local.get $2) + ) + (f64.store offset=24 + (local.get $7) + (local.get $3) + ) + (f64.store offset=32 + (local.get $7) + (local.get $4) + ) + (f64.store offset=40 + (local.get $7) + (local.get $5) + ) + (f64.store offset=48 + (local.get $7) + (local.get $6) + ) + (local.get $7) + ) + (func $~lib/internal/memory/memset (; 3 ;) (; has Stack IR ;) (param $0 i32) + (local $1 i32) + (local $2 i32) + (i32.store8 + (local.get $0) + (i32.const 0) + ) + (i32.store8 + (i32.sub + (local.tee $1 + (i32.add + (local.get $0) + (i32.const 20) + ) + ) + (i32.const 1) + ) + (i32.const 0) + ) + (i32.store8 + (i32.add + (local.get $0) + (i32.const 1) + ) + (i32.const 0) + ) + (i32.store8 + (i32.add + (local.get $0) + (i32.const 2) + ) + (i32.const 0) + ) + (i32.store8 + (i32.sub + (local.get $1) + (i32.const 2) + ) + (i32.const 0) + ) + (i32.store8 + (i32.sub + (local.get $1) + (i32.const 3) + ) + (i32.const 0) + ) + (i32.store8 + (i32.add + (local.get $0) + (i32.const 3) + ) + (i32.const 0) + ) + (i32.store8 + (i32.sub + (local.get $1) + (i32.const 4) + ) + (i32.const 0) + ) + (i32.store + (local.tee $0 + (i32.add + (local.tee $1 + (i32.and + (i32.sub + (i32.const 0) + (local.get $0) + ) + (i32.const 3) + ) + ) + (local.get $0) + ) + ) + (i32.const 0) + ) + (i32.store + (i32.sub + (i32.add + (local.tee $2 + (i32.and + (i32.sub + (i32.const 20) + (local.get $1) + ) + (i32.const -4) + ) + ) + (local.get $0) + ) + (i32.const 4) + ) + (i32.const 0) + ) + (if + (i32.le_u + (local.get $2) + (i32.const 8) + ) + (return) + ) + (i32.store + (i32.add + (local.get $0) + (i32.const 4) + ) + (i32.const 0) + ) + (i32.store + (i32.add + (local.get $0) + (i32.const 8) + ) + (i32.const 0) + ) + (i32.store + (i32.sub + (local.tee $1 + (i32.add + (local.get $0) + (local.get $2) + ) + ) + (i32.const 12) + ) + (i32.const 0) + ) + (i32.store + (i32.sub + (local.get $1) + (i32.const 8) + ) + (i32.const 0) + ) + (if + (i32.le_u + (local.get $2) + (i32.const 24) + ) + (return) + ) + (i32.store + (i32.add + (local.get $0) + (i32.const 12) + ) + (i32.const 0) + ) + (i32.store + (i32.add + (local.get $0) + (i32.const 16) + ) + (i32.const 0) + ) + (i32.store + (i32.add + (local.get $0) + (i32.const 20) + ) + (i32.const 0) + ) + (i32.store + (i32.add + (local.get $0) + (i32.const 24) + ) + (i32.const 0) + ) + (i32.store + (i32.sub + (local.tee $1 + (i32.add + (local.get $0) + (local.get $2) + ) + ) + (i32.const 28) + ) + (i32.const 0) + ) + (i32.store + (i32.sub + (local.get $1) + (i32.const 24) + ) + (i32.const 0) + ) + (i32.store + (i32.sub + (local.get $1) + (i32.const 20) + ) + (i32.const 0) + ) + (i32.store + (i32.sub + (local.get $1) + (i32.const 16) + ) + (i32.const 0) + ) + (local.set $0 + (i32.add + (local.tee $1 + (i32.add + (i32.and + (local.get $0) + (i32.const 4) + ) + (i32.const 24) + ) + ) + (local.get $0) + ) + ) + (local.set $2 + (i32.sub + (local.get $2) + (local.get $1) + ) + ) + (loop $label$8 + (if + (i32.ge_u + (local.get $2) + (i32.const 32) + ) + (block + (i64.store + (local.get $0) + (i64.const 0) + ) + (i64.store + (i32.add + (local.get $0) + (i32.const 8) + ) + (i64.const 0) + ) + (i64.store + (i32.add + (local.get $0) + (i32.const 16) + ) + (i64.const 0) + ) + (i64.store + (i32.add + (local.get $0) + (i32.const 24) + ) + (i64.const 0) + ) + (local.set $2 + (i32.sub + (local.get $2) + (i32.const 32) + ) + ) + (local.set $0 + (i32.add + (local.get $0) + (i32.const 32) + ) + ) + (br $label$8) + ) + ) + ) + ) + (func $~lib/array/Array<Body>#constructor (; 4 ;) (; has Stack IR ;) (result i32) + (local $0 i32) + (local $1 i32) + (i32.store + (local.tee $1 + (call $~lib/allocator/arena/__memory_allocate + (i32.const 32) + ) + ) + (i32.const 20) + ) + (i32.store + (local.tee $0 + (call $~lib/allocator/arena/__memory_allocate + (i32.const 8) + ) + ) + (i32.const 0) + ) + (i32.store offset=4 + (local.get $0) + (i32.const 0) + ) + (i32.store + (local.get $0) + (local.get $1) + ) + (i32.store offset=4 + (local.get $0) + (i32.const 5) + ) + (call $~lib/internal/memory/memset + (i32.add + (local.get $1) + (i32.const 8) + ) + ) + (local.get $0) + ) + (func $assembly/index/init (; 5 ;) (; has Stack IR ;) (type $0) + (local $0 i32) + (local $1 i32) + (local.set $1 + (call $~lib/array/Array<Body>#constructor) + ) + (local.set $0 + (call $assembly/index/Body#constructor + (f64.const 0) + (f64.const 0) + (f64.const 0) + (f64.const 0) + (f64.const 0) + (f64.const 0) + (f64.const 39.47841760435743) + ) + ) + (i32.store offset=8 + (i32.load + (local.get $1) + ) + (local.get $0) + ) + (local.set $0 + (call $assembly/index/Body#constructor + (f64.const 4.841431442464721) + (f64.const -1.1603200440274284) + (f64.const -0.10362204447112311) + (f64.const 0.606326392995832) + (f64.const 2.81198684491626) + (f64.const -0.02521836165988763) + (f64.const 0.03769367487038949) + ) + ) + (i32.store offset=8 + (i32.add + (i32.load + (local.get $1) + ) + (i32.const 4) + ) + (local.get $0) + ) + (local.set $0 + (call $assembly/index/Body#constructor + (f64.const 8.34336671824458) + (f64.const 4.124798564124305) + (f64.const -0.4035234171143214) + (f64.const -1.0107743461787924) + (f64.const 1.8256623712304119) + (f64.const 0.008415761376584154) + (f64.const 0.011286326131968767) + ) + ) + (i32.store offset=8 + (i32.add + (i32.load + (local.get $1) + ) + (i32.const 8) + ) + (local.get $0) + ) + (local.set $0 + (call $assembly/index/Body#constructor + (f64.const 12.894369562139131) + (f64.const -15.111151401698631) + (f64.const -0.22330757889265573) + (f64.const 1.0827910064415354) + (f64.const 0.8687130181696082) + (f64.const -0.010832637401363636) + (f64.const 1.7237240570597112e-03) + ) + ) + (i32.store offset=8 + (i32.add + (i32.load + (local.get $1) + ) + (i32.const 12) + ) + (local.get $0) + ) + (local.set $0 + (call $assembly/index/Body#constructor + (f64.const 15.379697114850917) + (f64.const -25.919314609987964) + (f64.const 0.17925877295037118) + (f64.const 0.979090732243898) + (f64.const 0.5946989986476762) + (f64.const -0.034755955504078104) + (f64.const 2.0336868699246304e-03) + ) + ) + (i32.store offset=8 + (i32.add + (i32.load + (local.get $1) + ) + (i32.const 16) + ) + (local.get $0) + ) + (global.set $global$5 + (call $assembly/index/NBodySystem#constructor + (local.get $1) + ) + ) + ) + (func $assembly/index/NBodySystem#advance (; 6 ;) (; has Stack IR ;) (param $0 i32) + (local $1 i32) + (local $2 f64) + (local $3 i32) + (local $4 f64) + (local $5 f64) + (local $6 f64) + (local $7 i32) + (local $8 f64) + (local $9 f64) + (local $10 f64) + (local $11 f64) + (local $12 i32) + (local $13 i32) + (local $14 f64) + (local $15 f64) + (local $16 f64) + (local $17 f64) + (local $18 f64) + (local.set $13 + (i32.load offset=4 + (local.tee $12 + (i32.load + (local.get $0) + ) + ) + ) + ) + (loop $label$3 + (if + (i32.lt_u + (local.get $3) + (local.get $13) + ) + (block + (local.set $14 + (f64.load + (local.tee $0 + (i32.load offset=8 + (i32.add + (i32.load + (local.get $12) + ) + (i32.shl + (local.get $3) + (i32.const 2) + ) + ) + ) + ) + ) + ) + (local.set $15 + (f64.load offset=8 + (local.get $0) + ) + ) + (local.set $16 + (f64.load offset=16 + (local.get $0) + ) + ) + (local.set $4 + (f64.load offset=24 + (local.get $0) + ) + ) + (local.set $5 + (f64.load offset=32 + (local.get $0) + ) + ) + (local.set $6 + (f64.load offset=40 + (local.get $0) + ) + ) + (local.set $17 + (f64.load offset=48 + (local.get $0) + ) + ) + (local.set $7 + (i32.add + (local.get $3) + (i32.const 1) + ) + ) + (loop $label$6 + (if + (i32.lt_u + (local.get $7) + (local.get $13) + ) + (block + (local.set $11 + (f64.sqrt + (local.tee $8 + (f64.add + (f64.add + (f64.mul + (local.tee $2 + (local.tee $18 + (f64.sub + (local.get $14) + (f64.load + (local.tee $1 + (i32.load offset=8 + (i32.add + (i32.load + (local.get $12) + ) + (i32.shl + (local.get $7) + (i32.const 2) + ) + ) + ) + ) + ) + ) + ) + ) + (local.get $2) + ) + (f64.mul + (local.tee $9 + (f64.sub + (local.get $15) + (f64.load offset=8 + (local.get $1) + ) + ) + ) + (local.get $9) + ) + ) + (f64.mul + (local.tee $10 + (f64.sub + (local.get $16) + (f64.load offset=16 + (local.get $1) + ) + ) + ) + (local.get $10) + ) + ) + ) + ) + ) + (local.set $4 + (f64.sub + (local.get $4) + (f64.mul + (local.get $2) + (local.tee $8 + (f64.mul + (f64.load offset=48 + (local.get $1) + ) + (local.tee $11 + (f64.div + (f64.const 0.01) + (f64.mul + (local.get $8) + (local.get $11) + ) + ) + ) + ) + ) + ) + ) + ) + (local.set $5 + (f64.sub + (local.get $5) + (f64.mul + (local.get $9) + (local.get $8) + ) + ) + ) + (local.set $6 + (f64.sub + (local.get $6) + (f64.mul + (local.get $10) + (local.get $8) + ) + ) + ) + (f64.store offset=24 + (local.get $1) + (f64.add + (f64.load offset=24 + (local.get $1) + ) + (f64.mul + (local.get $18) + (local.tee $2 + (f64.mul + (local.get $17) + (local.get $11) + ) + ) + ) + ) + ) + (f64.store offset=32 + (local.get $1) + (f64.add + (f64.load offset=32 + (local.get $1) + ) + (f64.mul + (local.get $9) + (local.get $2) + ) + ) + ) + (f64.store offset=40 + (local.get $1) + (f64.add + (f64.load offset=40 + (local.get $1) + ) + (f64.mul + (local.get $10) + (local.get $2) + ) + ) + ) + (local.set $7 + (i32.add + (local.get $7) + (i32.const 1) + ) + ) + (br $label$6) + ) + ) + ) + (f64.store offset=24 + (local.get $0) + (local.get $4) + ) + (f64.store offset=32 + (local.get $0) + (local.get $5) + ) + (f64.store offset=40 + (local.get $0) + (local.get $6) + ) + (f64.store + (local.get $0) + (f64.add + (f64.load + (local.get $0) + ) + (f64.mul + (f64.const 0.01) + (local.get $4) + ) + ) + ) + (f64.store offset=8 + (local.get $0) + (f64.add + (f64.load offset=8 + (local.get $0) + ) + (f64.mul + (f64.const 0.01) + (local.get $5) + ) + ) + ) + (f64.store offset=16 + (local.get $0) + (f64.add + (f64.load offset=16 + (local.get $0) + ) + (f64.mul + (f64.const 0.01) + (local.get $6) + ) + ) + ) + (local.set $3 + (i32.add + (local.get $3) + (i32.const 1) + ) + ) + (br $label$3) + ) + ) + ) + ) + (func $assembly/index/NBodySystem#energy (; 7 ;) (; has Stack IR ;) (type $10) (param $0 i32) (result f64) + (local $1 f64) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 f64) + (local $7 f64) + (local $8 f64) + (local $9 f64) + (local $10 f64) + (local.set $5 + (i32.load offset=4 + (local.tee $4 + (i32.load + (local.get $0) + ) + ) + ) + ) + (loop $label$4 + (if + (i32.lt_u + (local.get $2) + (local.get $5) + ) + (block + (local.set $6 + (f64.load + (local.tee $0 + (i32.load offset=8 + (i32.add + (i32.load + (local.get $4) + ) + (i32.shl + (local.get $2) + (i32.const 2) + ) + ) + ) + ) + ) + ) + (local.set $7 + (f64.load offset=8 + (local.get $0) + ) + ) + (local.set $8 + (f64.load offset=16 + (local.get $0) + ) + ) + (local.set $1 + (f64.add + (local.get $1) + (f64.mul + (f64.mul + (f64.const 0.5) + (local.tee $9 + (f64.load offset=48 + (local.get $0) + ) + ) + ) + (f64.add + (f64.add + (f64.mul + (local.tee $1 + (f64.load offset=24 + (local.get $0) + ) + ) + (local.get $1) + ) + (f64.mul + (local.tee $1 + (f64.load offset=32 + (local.get $0) + ) + ) + (local.get $1) + ) + ) + (f64.mul + (local.tee $1 + (f64.load offset=40 + (local.get $0) + ) + ) + (local.get $1) + ) + ) + ) + ) + ) + (local.set $0 + (i32.add + (local.get $2) + (i32.const 1) + ) + ) + (loop $label$7 + (if + (i32.lt_u + (local.get $0) + (local.get $5) + ) + (block + (local.set $10 + (local.get $1) + ) + (local.set $1 + (f64.add + (f64.mul + (local.tee $1 + (f64.sub + (local.get $6) + (f64.load + (local.tee $3 + (i32.load offset=8 + (i32.add + (i32.load + (local.get $4) + ) + (i32.shl + (local.get $0) + (i32.const 2) + ) + ) + ) + ) + ) + ) + ) + (local.get $1) + ) + (f64.mul + (local.tee $1 + (f64.sub + (local.get $7) + (f64.load offset=8 + (local.get $3) + ) + ) + ) + (local.get $1) + ) + ) + ) + (local.set $1 + (f64.sub + (local.get $10) + (f64.div + (f64.mul + (local.get $9) + (f64.load offset=48 + (local.get $3) + ) + ) + (f64.sqrt + (f64.add + (local.get $1) + (f64.mul + (local.tee $1 + (f64.sub + (local.get $8) + (f64.load offset=16 + (local.get $3) + ) + ) + ) + (local.get $1) + ) + ) + ) + ) + ) + ) + (local.set $0 + (i32.add + (local.get $0) + (i32.const 1) + ) + ) + (br $label$7) + ) + ) + ) + (local.set $2 + (i32.add + (local.get $2) + (i32.const 1) + ) + ) + (br $label$4) + ) + ) + ) + (local.get $1) + ) + (func $assembly/index/step (; 8 ;) (; has Stack IR ;) (type $8) (result f64) + (call $assembly/index/NBodySystem#advance + (global.get $global$5) + ) + (call $assembly/index/NBodySystem#energy + (global.get $global$5) + ) + ) + (func $assembly/index/bench (; 9 ;) (; has Stack IR ;) (type $11) (param $0 i32) + (local $1 i32) + (block $label$1 + (loop $label$2 + (br_if $label$1 + (i32.ge_u + (local.get $1) + (local.get $0) + ) + ) + (call $assembly/index/NBodySystem#advance + (global.get $global$5) + ) + (local.set $1 + (i32.add + (local.get $1) + (i32.const 1) + ) + ) + (br $label$2) + ) + ) + ) + (func $assembly/index/getBody (; 10 ;) (; has Stack IR ;) (type $3) (param $0 i32) (result i32) + (local $1 i32) + (if (result i32) + (i32.lt_u + (local.get $0) + (i32.load offset=4 + (local.tee $1 + (i32.load + (global.get $global$5) + ) + ) + ) + ) + (if (result i32) + (i32.lt_u + (local.get $0) + (i32.shr_u + (i32.load + (local.tee $1 + (i32.load + (local.get $1) + ) + ) + ) + (i32.const 2) + ) + ) + (i32.load offset=8 + (i32.add + (i32.shl + (local.get $0) + (i32.const 2) + ) + (local.get $1) + ) + ) + (unreachable) + ) + (i32.const 0) + ) + ) + (func $start (; 11 ;) (; has Stack IR ;) (type $0) + (global.set $global$0 + (i32.const 104) + ) + (global.set $global$1 + (global.get $global$0) + ) + ) + (func $null (; 12 ;) (; has Stack IR ;) (type $0) + (nop) + ) +) diff --git a/test/passes/O4.wast b/test/passes/O4.wast index 4db19e968..cdea2da96 100644 --- a/test/passes/O4.wast +++ b/test/passes/O4.wast @@ -22,4 +22,1738 @@ (unreachable) ) ) +;; AssemblyScript n-body benchmark +(module + (type $0 (func)) + (type $1 (func (param i32 i32) (result i32))) + (type $2 (func (param i32 f64 f64 f64) (result i32))) + (type $3 (func (param i32) (result i32))) + (type $4 (func (result i32))) + (type $5 (func (param i32 f64 f64 f64 f64 f64 f64 f64) (result i32))) + (type $6 (func (param i32 i32 i32 i32))) + (type $7 (func (param i32 i32 i32))) + (type $8 (func (result f64))) + (type $9 (func (param i32 f64))) + (type $10 (func (param i32) (result f64))) + (type $11 (func (param i32))) + (import "env" "memory" (memory $1 1)) + (data (i32.const 8) "\0d\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00") + (data (i32.const 40) "\1c\00\00\00~\00l\00i\00b\00/\00i\00n\00t\00e\00r\00n\00a\00l\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00") + (import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32))) + (table $0 1 funcref) + (elem (i32.const 0) $null) + (global $global$0 (mut i32) (i32.const 0)) + (global $global$1 (mut i32) (i32.const 0)) + (global $global$2 f64 (f64.const 3.141592653589793)) + (global $global$3 f64 (f64.const 39.47841760435743)) + (global $global$4 f64 (f64.const 365.24)) + (global $global$5 (mut i32) (i32.const 0)) + (global $global$6 i32 (i32.const 100)) + (export "memory" (memory $0)) + (export "table" (table $0)) + (export "init" (func $assembly/index/init)) + (export "step" (func $assembly/index/step)) + (export "bench" (func $assembly/index/bench)) + (export "getBody" (func $assembly/index/getBody)) + (start $start) + (func $start:~lib/allocator/arena (; 1 ;) (type $0) + (global.set $global$0 + (i32.and + (i32.add + (global.get $global$6) + (i32.const 7) + ) + (i32.xor + (i32.const 7) + (i32.const -1) + ) + ) + ) + (global.set $global$1 + (global.get $global$0) + ) + ) + (func $start:assembly/index (; 2 ;) (type $0) + (call $start:~lib/allocator/arena) + ) + (func $~lib/array/Array<Body>#__unchecked_get (; 3 ;) (type $1) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local.set $2 + (i32.load + (local.get $0) + ) + ) + (local.set $3 + (local.get $1) + ) + (local.set $4 + (i32.const 0) + ) + (i32.load offset=8 + (i32.add + (i32.add + (local.get $2) + (i32.shl + (local.get $3) + (i32.const 2) + ) + ) + (local.get $4) + ) + ) + ) + (func $~lib/array/Array<Body>#__get (; 4 ;) (type $1) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local.set $2 + (i32.load + (local.get $0) + ) + ) + (if (result i32) + (i32.lt_u + (local.get $1) + (i32.shr_u + (i32.load + (local.get $2) + ) + (i32.const 2) + ) + ) + (block (result i32) + (local.set $3 + (local.get $2) + ) + (local.set $4 + (local.get $1) + ) + (local.set $5 + (i32.const 0) + ) + (i32.load offset=8 + (i32.add + (i32.add + (local.get $3) + (i32.shl + (local.get $4) + (i32.const 2) + ) + ) + (local.get $5) + ) + ) + ) + (unreachable) + ) + ) + (func $assembly/index/Body#offsetMomentum (; 5 ;) (type $2) (param $0 i32) (param $1 f64) (param $2 f64) (param $3 f64) (result i32) + (f64.store offset=24 + (local.get $0) + (f64.div + (f64.neg + (local.get $1) + ) + (global.get $global$3) + ) + ) + (f64.store offset=32 + (local.get $0) + (f64.div + (f64.neg + (local.get $2) + ) + (global.get $global$3) + ) + ) + (f64.store offset=40 + (local.get $0) + (f64.div + (f64.neg + (local.get $3) + ) + (global.get $global$3) + ) + ) + (local.get $0) + ) + (func $~lib/allocator/arena/__memory_allocate (; 6 ;) (type $3) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (if + (i32.gt_u + (local.get $0) + (i32.const 1073741824) + ) + (unreachable) + ) + (local.set $1 + (global.get $global$1) + ) + (local.set $4 + (i32.and + (i32.add + (i32.add + (local.get $1) + (select + (local.tee $2 + (local.get $0) + ) + (local.tee $3 + (i32.const 1) + ) + (i32.gt_u + (local.get $2) + (local.get $3) + ) + ) + ) + (i32.const 7) + ) + (i32.xor + (i32.const 7) + (i32.const -1) + ) + ) + ) + (local.set $5 + (current_memory) + ) + (if + (i32.gt_u + (local.get $4) + (i32.shl + (local.get $5) + (i32.const 16) + ) + ) + (block + (local.set $2 + (i32.shr_u + (i32.and + (i32.add + (i32.sub + (local.get $4) + (local.get $1) + ) + (i32.const 65535) + ) + (i32.xor + (i32.const 65535) + (i32.const -1) + ) + ) + (i32.const 16) + ) + ) + (local.set $3 + (select + (local.tee $3 + (local.get $5) + ) + (local.tee $6 + (local.get $2) + ) + (i32.gt_s + (local.get $3) + (local.get $6) + ) + ) + ) + (if + (i32.lt_s + (grow_memory + (local.get $3) + ) + (i32.const 0) + ) + (if + (i32.lt_s + (grow_memory + (local.get $2) + ) + (i32.const 0) + ) + (unreachable) + ) + ) + ) + ) + (global.set $global$1 + (local.get $4) + ) + (local.get $1) + ) + (func $~lib/memory/memory.allocate (; 7 ;) (type $3) (param $0 i32) (result i32) + (return + (call $~lib/allocator/arena/__memory_allocate + (local.get $0) + ) + ) + ) + (func $assembly/index/NBodySystem#constructor (; 8 ;) (type $1) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 f64) + (local $6 f64) + (local $7 f64) + (local $8 f64) + (local.set $5 + (f64.const 0) + ) + (local.set $6 + (f64.const 0) + ) + (local.set $7 + (f64.const 0) + ) + (local.set $3 + (block $label$1 (result i32) + (local.set $2 + (local.get $1) + ) + (i32.load offset=4 + (local.get $2) + ) + ) + ) + (block $label$2 + (local.set $2 + (i32.const 0) + ) + (loop $label$3 + (br_if $label$2 + (i32.eqz + (i32.lt_s + (local.get $2) + (local.get $3) + ) + ) + ) + (block $label$4 + (local.set $4 + (call $~lib/array/Array<Body>#__unchecked_get + (local.get $1) + (local.get $2) + ) + ) + (local.set $8 + (f64.load offset=48 + (local.get $4) + ) + ) + (local.set $5 + (f64.add + (local.get $5) + (f64.mul + (f64.load offset=24 + (local.get $4) + ) + (local.get $8) + ) + ) + ) + (local.set $6 + (f64.add + (local.get $6) + (f64.mul + (f64.load offset=32 + (local.get $4) + ) + (local.get $8) + ) + ) + ) + (local.set $7 + (f64.add + (local.get $7) + (f64.mul + (f64.load offset=40 + (local.get $4) + ) + (local.get $8) + ) + ) + ) + ) + (local.set $2 + (i32.add + (local.get $2) + (i32.const 1) + ) + ) + (br $label$3) + ) + ) + (drop + (call $assembly/index/Body#offsetMomentum + (call $~lib/array/Array<Body>#__get + (local.get $1) + (i32.const 0) + ) + (local.get $5) + (local.get $6) + (local.get $7) + ) + ) + (if + (i32.eqz + (local.get $0) + ) + (local.set $0 + (call $~lib/memory/memory.allocate + (i32.const 4) + ) + ) + ) + (i32.store + (local.get $0) + (local.get $1) + ) + (local.get $0) + ) + (func $assembly/index/Body#constructor (; 9 ;) (type $5) (param $0 i32) (param $1 f64) (param $2 f64) (param $3 f64) (param $4 f64) (param $5 f64) (param $6 f64) (param $7 f64) (result i32) + (if + (i32.eqz + (local.get $0) + ) + (local.set $0 + (call $~lib/memory/memory.allocate + (i32.const 56) + ) + ) + ) + (f64.store + (local.get $0) + (local.get $1) + ) + (f64.store offset=8 + (local.get $0) + (local.get $2) + ) + (f64.store offset=16 + (local.get $0) + (local.get $3) + ) + (f64.store offset=24 + (local.get $0) + (local.get $4) + ) + (f64.store offset=32 + (local.get $0) + (local.get $5) + ) + (f64.store offset=40 + (local.get $0) + (local.get $6) + ) + (f64.store offset=48 + (local.get $0) + (local.get $7) + ) + (local.get $0) + ) + (func $assembly/index/Sun (; 10 ;) (type $4) (result i32) + (call $assembly/index/Body#constructor + (i32.const 0) + (f64.const 0) + (f64.const 0) + (f64.const 0) + (f64.const 0) + (f64.const 0) + (f64.const 0) + (global.get $global$3) + ) + ) + (func $assembly/index/Jupiter (; 11 ;) (type $4) (result i32) + (call $assembly/index/Body#constructor + (i32.const 0) + (f64.const 4.841431442464721) + (f64.const -1.1603200440274284) + (f64.const -0.10362204447112311) + (f64.mul + (f64.const 0.001660076642744037) + (global.get $global$4) + ) + (f64.mul + (f64.const 0.007699011184197404) + (global.get $global$4) + ) + (f64.mul + (f64.const -6.90460016972063e-05) + (global.get $global$4) + ) + (f64.mul + (f64.const 9.547919384243266e-04) + (global.get $global$3) + ) + ) + ) + (func $assembly/index/Saturn (; 12 ;) (type $4) (result i32) + (call $assembly/index/Body#constructor + (i32.const 0) + (f64.const 8.34336671824458) + (f64.const 4.124798564124305) + (f64.const -0.4035234171143214) + (f64.mul + (f64.const -0.002767425107268624) + (global.get $global$4) + ) + (f64.mul + (f64.const 0.004998528012349172) + (global.get $global$4) + ) + (f64.mul + (f64.const 2.3041729757376393e-05) + (global.get $global$4) + ) + (f64.mul + (f64.const 2.858859806661308e-04) + (global.get $global$3) + ) + ) + ) + (func $assembly/index/Uranus (; 13 ;) (type $4) (result i32) + (call $assembly/index/Body#constructor + (i32.const 0) + (f64.const 12.894369562139131) + (f64.const -15.111151401698631) + (f64.const -0.22330757889265573) + (f64.mul + (f64.const 0.002964601375647616) + (global.get $global$4) + ) + (f64.mul + (f64.const 2.3784717395948095e-03) + (global.get $global$4) + ) + (f64.mul + (f64.const -2.9658956854023756e-05) + (global.get $global$4) + ) + (f64.mul + (f64.const 4.366244043351563e-05) + (global.get $global$3) + ) + ) + ) + (func $assembly/index/Neptune (; 14 ;) (type $4) (result i32) + (call $assembly/index/Body#constructor + (i32.const 0) + (f64.const 15.379697114850917) + (f64.const -25.919314609987964) + (f64.const 0.17925877295037118) + (f64.mul + (f64.const 2.6806777249038932e-03) + (global.get $global$4) + ) + (f64.mul + (f64.const 0.001628241700382423) + (global.get $global$4) + ) + (f64.mul + (f64.const -9.515922545197159e-05) + (global.get $global$4) + ) + (f64.mul + (f64.const 5.1513890204661145e-05) + (global.get $global$3) + ) + ) + ) + (func $~lib/internal/arraybuffer/computeSize (; 15 ;) (type $3) (param $0 i32) (result i32) + (i32.shl + (i32.const 1) + (i32.sub + (i32.const 32) + (i32.clz + (i32.sub + (i32.add + (local.get $0) + (i32.const 8) + ) + (i32.const 1) + ) + ) + ) + ) + ) + (func $~lib/internal/arraybuffer/allocateUnsafe (; 16 ;) (type $3) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (if + (i32.eqz + (i32.le_u + (local.get $0) + (i32.const 1073741816) + ) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 40) + (i32.const 26) + (i32.const 2) + ) + (unreachable) + ) + ) + (local.set $1 + (block $label$2 (result i32) + (local.set $2 + (call $~lib/internal/arraybuffer/computeSize + (local.get $0) + ) + ) + (br $label$2 + (call $~lib/allocator/arena/__memory_allocate + (local.get $2) + ) + ) + ) + ) + (i32.store + (local.get $1) + (local.get $0) + ) + (local.get $1) + ) + (func $~lib/internal/memory/memset (; 17 ;) (type $7) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i64) + (if + (i32.eqz + (local.get $2) + ) + (return) + ) + (i32.store8 + (local.get $0) + (local.get $1) + ) + (i32.store8 + (i32.sub + (i32.add + (local.get $0) + (local.get $2) + ) + (i32.const 1) + ) + (local.get $1) + ) + (if + (i32.le_u + (local.get $2) + (i32.const 2) + ) + (return) + ) + (i32.store8 + (i32.add + (local.get $0) + (i32.const 1) + ) + (local.get $1) + ) + (i32.store8 + (i32.add + (local.get $0) + (i32.const 2) + ) + (local.get $1) + ) + (i32.store8 + (i32.sub + (i32.add + (local.get $0) + (local.get $2) + ) + (i32.const 2) + ) + (local.get $1) + ) + (i32.store8 + (i32.sub + (i32.add + (local.get $0) + (local.get $2) + ) + (i32.const 3) + ) + (local.get $1) + ) + (if + (i32.le_u + (local.get $2) + (i32.const 6) + ) + (return) + ) + (i32.store8 + (i32.add + (local.get $0) + (i32.const 3) + ) + (local.get $1) + ) + (i32.store8 + (i32.sub + (i32.add + (local.get $0) + (local.get $2) + ) + (i32.const 4) + ) + (local.get $1) + ) + (if + (i32.le_u + (local.get $2) + (i32.const 8) + ) + (return) + ) + (local.set $3 + (i32.and + (i32.sub + (i32.const 0) + (local.get $0) + ) + (i32.const 3) + ) + ) + (local.set $0 + (i32.add + (local.get $0) + (local.get $3) + ) + ) + (local.set $2 + (i32.sub + (local.get $2) + (local.get $3) + ) + ) + (local.set $2 + (i32.and + (local.get $2) + (i32.const -4) + ) + ) + (local.set $4 + (i32.mul + (i32.div_u + (i32.const -1) + (i32.const 255) + ) + (i32.and + (local.get $1) + (i32.const 255) + ) + ) + ) + (i32.store + (local.get $0) + (local.get $4) + ) + (i32.store + (i32.sub + (i32.add + (local.get $0) + (local.get $2) + ) + (i32.const 4) + ) + (local.get $4) + ) + (if + (i32.le_u + (local.get $2) + (i32.const 8) + ) + (return) + ) + (i32.store + (i32.add + (local.get $0) + (i32.const 4) + ) + (local.get $4) + ) + (i32.store + (i32.add + (local.get $0) + (i32.const 8) + ) + (local.get $4) + ) + (i32.store + (i32.sub + (i32.add + (local.get $0) + (local.get $2) + ) + (i32.const 12) + ) + (local.get $4) + ) + (i32.store + (i32.sub + (i32.add + (local.get $0) + (local.get $2) + ) + (i32.const 8) + ) + (local.get $4) + ) + (if + (i32.le_u + (local.get $2) + (i32.const 24) + ) + (return) + ) + (i32.store + (i32.add + (local.get $0) + (i32.const 12) + ) + (local.get $4) + ) + (i32.store + (i32.add + (local.get $0) + (i32.const 16) + ) + (local.get $4) + ) + (i32.store + (i32.add + (local.get $0) + (i32.const 20) + ) + (local.get $4) + ) + (i32.store + (i32.add + (local.get $0) + (i32.const 24) + ) + (local.get $4) + ) + (i32.store + (i32.sub + (i32.add + (local.get $0) + (local.get $2) + ) + (i32.const 28) + ) + (local.get $4) + ) + (i32.store + (i32.sub + (i32.add + (local.get $0) + (local.get $2) + ) + (i32.const 24) + ) + (local.get $4) + ) + (i32.store + (i32.sub + (i32.add + (local.get $0) + (local.get $2) + ) + (i32.const 20) + ) + (local.get $4) + ) + (i32.store + (i32.sub + (i32.add + (local.get $0) + (local.get $2) + ) + (i32.const 16) + ) + (local.get $4) + ) + (local.set $3 + (i32.add + (i32.const 24) + (i32.and + (local.get $0) + (i32.const 4) + ) + ) + ) + (local.set $0 + (i32.add + (local.get $0) + (local.get $3) + ) + ) + (local.set $2 + (i32.sub + (local.get $2) + (local.get $3) + ) + ) + (local.set $5 + (i64.or + (i64.extend_i32_u + (local.get $4) + ) + (i64.shl + (i64.extend_i32_u + (local.get $4) + ) + (i64.const 32) + ) + ) + ) + (block $label$7 + (loop $label$8 + (if + (i32.ge_u + (local.get $2) + (i32.const 32) + ) + (block + (block $label$10 + (i64.store + (local.get $0) + (local.get $5) + ) + (i64.store + (i32.add + (local.get $0) + (i32.const 8) + ) + (local.get $5) + ) + (i64.store + (i32.add + (local.get $0) + (i32.const 16) + ) + (local.get $5) + ) + (i64.store + (i32.add + (local.get $0) + (i32.const 24) + ) + (local.get $5) + ) + (local.set $2 + (i32.sub + (local.get $2) + (i32.const 32) + ) + ) + (local.set $0 + (i32.add + (local.get $0) + (i32.const 32) + ) + ) + ) + (br $label$8) + ) + ) + ) + ) + ) + (func $~lib/array/Array<Body>#constructor (; 18 ;) (type $1) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (if + (i32.gt_u + (local.get $1) + (i32.const 268435454) + ) + (block + (call $~lib/env/abort + (i32.const 0) + (i32.const 8) + (i32.const 45) + (i32.const 39) + ) + (unreachable) + ) + ) + (local.set $2 + (i32.shl + (local.get $1) + (i32.const 2) + ) + ) + (local.set $3 + (call $~lib/internal/arraybuffer/allocateUnsafe + (local.get $2) + ) + ) + (i32.store + (block $label$2 (result i32) + (if + (i32.eqz + (local.get $0) + ) + (local.set $0 + (call $~lib/memory/memory.allocate + (i32.const 8) + ) + ) + ) + (i32.store + (local.get $0) + (i32.const 0) + ) + (i32.store offset=4 + (local.get $0) + (i32.const 0) + ) + (local.get $0) + ) + (local.get $3) + ) + (i32.store offset=4 + (local.get $0) + (local.get $1) + ) + (block $label$4 + (local.set $4 + (i32.add + (local.get $3) + (i32.const 8) + ) + ) + (local.set $5 + (i32.const 0) + ) + (local.set $6 + (local.get $2) + ) + (call $~lib/internal/memory/memset + (local.get $4) + (local.get $5) + (local.get $6) + ) + ) + (local.get $0) + ) + (func $~lib/array/Array<Body>#__unchecked_set (; 19 ;) (type $7) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local.set $3 + (i32.load + (local.get $0) + ) + ) + (local.set $4 + (local.get $1) + ) + (local.set $5 + (local.get $2) + ) + (local.set $6 + (i32.const 0) + ) + (i32.store offset=8 + (i32.add + (i32.add + (local.get $3) + (i32.shl + (local.get $4) + (i32.const 2) + ) + ) + (local.get $6) + ) + (local.get $5) + ) + ) + (func $assembly/index/init (; 20 ;) (type $0) + (local $0 i32) + (global.set $global$5 + (call $assembly/index/NBodySystem#constructor + (i32.const 0) + (block $label$1 (result i32) + (local.set $0 + (call $~lib/array/Array<Body>#constructor + (i32.const 0) + (i32.const 5) + ) + ) + (call $~lib/array/Array<Body>#__unchecked_set + (local.get $0) + (i32.const 0) + (call $assembly/index/Sun) + ) + (call $~lib/array/Array<Body>#__unchecked_set + (local.get $0) + (i32.const 1) + (call $assembly/index/Jupiter) + ) + (call $~lib/array/Array<Body>#__unchecked_set + (local.get $0) + (i32.const 2) + (call $assembly/index/Saturn) + ) + (call $~lib/array/Array<Body>#__unchecked_set + (local.get $0) + (i32.const 3) + (call $assembly/index/Uranus) + ) + (call $~lib/array/Array<Body>#__unchecked_set + (local.get $0) + (i32.const 4) + (call $assembly/index/Neptune) + ) + (local.get $0) + ) + ) + ) + ) + (func $assembly/index/NBodySystem#advance (; 21 ;) (type $9) (param $0 i32) (param $1 f64) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 f64) + (local $9 f64) + (local $10 f64) + (local $11 f64) + (local $12 f64) + (local $13 f64) + (local $14 f64) + (local $15 f64) + (local $16 f64) + (local $17 f64) + (local $18 f64) + (local $19 f64) + (local $20 f64) + (local $21 f64) + (local $22 f64) + (local.set $2 + (i32.load + (local.get $0) + ) + ) + (local.set $4 + (block $label$1 (result i32) + (local.set $3 + (local.get $2) + ) + (i32.load offset=4 + (local.get $3) + ) + ) + ) + (block $label$2 + (local.set $3 + (i32.const 0) + ) + (loop $label$3 + (br_if $label$2 + (i32.eqz + (i32.lt_u + (local.get $3) + (local.get $4) + ) + ) + ) + (block $label$4 + (local.set $5 + (call $~lib/array/Array<Body>#__unchecked_get + (local.get $2) + (local.get $3) + ) + ) + (local.set $8 + (f64.load + (local.get $5) + ) + ) + (local.set $9 + (f64.load offset=8 + (local.get $5) + ) + ) + (local.set $10 + (f64.load offset=16 + (local.get $5) + ) + ) + (local.set $11 + (f64.load offset=24 + (local.get $5) + ) + ) + (local.set $12 + (f64.load offset=32 + (local.get $5) + ) + ) + (local.set $13 + (f64.load offset=40 + (local.get $5) + ) + ) + (local.set $14 + (f64.load offset=48 + (local.get $5) + ) + ) + (block $label$5 + (local.set $6 + (i32.add + (local.get $3) + (i32.const 1) + ) + ) + (loop $label$6 + (br_if $label$5 + (i32.eqz + (i32.lt_u + (local.get $6) + (local.get $4) + ) + ) + ) + (block $label$7 + (local.set $7 + (call $~lib/array/Array<Body>#__unchecked_get + (local.get $2) + (local.get $6) + ) + ) + (local.set $15 + (f64.sub + (local.get $8) + (f64.load + (local.get $7) + ) + ) + ) + (local.set $16 + (f64.sub + (local.get $9) + (f64.load offset=8 + (local.get $7) + ) + ) + ) + (local.set $17 + (f64.sub + (local.get $10) + (f64.load offset=16 + (local.get $7) + ) + ) + ) + (local.set $18 + (f64.add + (f64.add + (f64.mul + (local.get $15) + (local.get $15) + ) + (f64.mul + (local.get $16) + (local.get $16) + ) + ) + (f64.mul + (local.get $17) + (local.get $17) + ) + ) + ) + (local.set $19 + (block $label$8 (result f64) + (local.set $19 + (local.get $18) + ) + (f64.sqrt + (local.get $19) + ) + ) + ) + (local.set $20 + (f64.div + (local.get $1) + (f64.mul + (local.get $18) + (local.get $19) + ) + ) + ) + (local.set $21 + (f64.mul + (local.get $14) + (local.get $20) + ) + ) + (local.set $22 + (f64.mul + (f64.load offset=48 + (local.get $7) + ) + (local.get $20) + ) + ) + (local.set $11 + (f64.sub + (local.get $11) + (f64.mul + (local.get $15) + (local.get $22) + ) + ) + ) + (local.set $12 + (f64.sub + (local.get $12) + (f64.mul + (local.get $16) + (local.get $22) + ) + ) + ) + (local.set $13 + (f64.sub + (local.get $13) + (f64.mul + (local.get $17) + (local.get $22) + ) + ) + ) + (f64.store offset=24 + (local.get $7) + (f64.add + (f64.load offset=24 + (local.get $7) + ) + (f64.mul + (local.get $15) + (local.get $21) + ) + ) + ) + (f64.store offset=32 + (local.get $7) + (f64.add + (f64.load offset=32 + (local.get $7) + ) + (f64.mul + (local.get $16) + (local.get $21) + ) + ) + ) + (f64.store offset=40 + (local.get $7) + (f64.add + (f64.load offset=40 + (local.get $7) + ) + (f64.mul + (local.get $17) + (local.get $21) + ) + ) + ) + ) + (local.set $6 + (i32.add + (local.get $6) + (i32.const 1) + ) + ) + (br $label$6) + ) + ) + (f64.store offset=24 + (local.get $5) + (local.get $11) + ) + (f64.store offset=32 + (local.get $5) + (local.get $12) + ) + (f64.store offset=40 + (local.get $5) + (local.get $13) + ) + (f64.store + (local.get $5) + (f64.add + (f64.load + (local.get $5) + ) + (f64.mul + (local.get $1) + (local.get $11) + ) + ) + ) + (f64.store offset=8 + (local.get $5) + (f64.add + (f64.load offset=8 + (local.get $5) + ) + (f64.mul + (local.get $1) + (local.get $12) + ) + ) + ) + (f64.store offset=16 + (local.get $5) + (f64.add + (f64.load offset=16 + (local.get $5) + ) + (f64.mul + (local.get $1) + (local.get $13) + ) + ) + ) + ) + (local.set $3 + (i32.add + (local.get $3) + (i32.const 1) + ) + ) + (br $label$3) + ) + ) + ) + (func $assembly/index/NBodySystem#energy (; 22 ;) (type $10) (param $0 i32) (result f64) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 f64) + (local $8 f64) + (local $9 f64) + (local $10 f64) + (local $11 f64) + (local $12 f64) + (local $13 f64) + (local $14 f64) + (local $15 f64) + (local $16 f64) + (local $17 f64) + (local $18 f64) + (local.set $7 + (f64.const 0) + ) + (local.set $1 + (i32.load + (local.get $0) + ) + ) + (block $label$1 + (block $label$2 + (local.set $2 + (i32.const 0) + ) + (local.set $3 + (block $label$3 (result i32) + (local.set $3 + (local.get $1) + ) + (i32.load offset=4 + (local.get $3) + ) + ) + ) + ) + (loop $label$4 + (br_if $label$1 + (i32.eqz + (i32.lt_u + (local.get $2) + (local.get $3) + ) + ) + ) + (block $label$5 + (local.set $4 + (call $~lib/array/Array<Body>#__unchecked_get + (local.get $1) + (local.get $2) + ) + ) + (local.set $8 + (f64.load + (local.get $4) + ) + ) + (local.set $9 + (f64.load offset=8 + (local.get $4) + ) + ) + (local.set $10 + (f64.load offset=16 + (local.get $4) + ) + ) + (local.set $11 + (f64.load offset=24 + (local.get $4) + ) + ) + (local.set $12 + (f64.load offset=32 + (local.get $4) + ) + ) + (local.set $13 + (f64.load offset=40 + (local.get $4) + ) + ) + (local.set $14 + (f64.load offset=48 + (local.get $4) + ) + ) + (local.set $7 + (f64.add + (local.get $7) + (f64.mul + (f64.mul + (f64.const 0.5) + (local.get $14) + ) + (f64.add + (f64.add + (f64.mul + (local.get $11) + (local.get $11) + ) + (f64.mul + (local.get $12) + (local.get $12) + ) + ) + (f64.mul + (local.get $13) + (local.get $13) + ) + ) + ) + ) + ) + (block $label$6 + (local.set $5 + (i32.add + (local.get $2) + (i32.const 1) + ) + ) + (loop $label$7 + (br_if $label$6 + (i32.eqz + (i32.lt_u + (local.get $5) + (local.get $3) + ) + ) + ) + (block $label$8 + (local.set $6 + (call $~lib/array/Array<Body>#__unchecked_get + (local.get $1) + (local.get $5) + ) + ) + (local.set $15 + (f64.sub + (local.get $8) + (f64.load + (local.get $6) + ) + ) + ) + (local.set $16 + (f64.sub + (local.get $9) + (f64.load offset=8 + (local.get $6) + ) + ) + ) + (local.set $17 + (f64.sub + (local.get $10) + (f64.load offset=16 + (local.get $6) + ) + ) + ) + (local.set $18 + (block $label$9 (result f64) + (local.set $18 + (f64.add + (f64.add + (f64.mul + (local.get $15) + (local.get $15) + ) + (f64.mul + (local.get $16) + (local.get $16) + ) + ) + (f64.mul + (local.get $17) + (local.get $17) + ) + ) + ) + (f64.sqrt + (local.get $18) + ) + ) + ) + (local.set $7 + (f64.sub + (local.get $7) + (f64.div + (f64.mul + (local.get $14) + (f64.load offset=48 + (local.get $6) + ) + ) + (local.get $18) + ) + ) + ) + ) + (local.set $5 + (i32.add + (local.get $5) + (i32.const 1) + ) + ) + (br $label$7) + ) + ) + ) + (local.set $2 + (i32.add + (local.get $2) + (i32.const 1) + ) + ) + (br $label$4) + ) + ) + (local.get $7) + ) + (func $assembly/index/step (; 23 ;) (type $8) (result f64) + (call $assembly/index/NBodySystem#advance + (global.get $global$5) + (f64.const 0.01) + ) + (call $assembly/index/NBodySystem#energy + (global.get $global$5) + ) + ) + (func $assembly/index/bench (; 24 ;) (type $11) (param $0 i32) + (local $1 i32) + (block $label$1 + (local.set $1 + (i32.const 0) + ) + (loop $label$2 + (br_if $label$1 + (i32.eqz + (i32.lt_u + (local.get $1) + (local.get $0) + ) + ) + ) + (call $assembly/index/NBodySystem#advance + (global.get $global$5) + (f64.const 0.01) + ) + (local.set $1 + (i32.add + (local.get $1) + (i32.const 1) + ) + ) + (br $label$2) + ) + ) + ) + (func $assembly/index/getBody (; 25 ;) (type $3) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local.set $1 + (i32.load + (global.get $global$5) + ) + ) + (if (result i32) + (i32.lt_u + (local.get $0) + (block $label$1 (result i32) + (local.set $2 + (local.get $1) + ) + (i32.load offset=4 + (local.get $2) + ) + ) + ) + (call $~lib/array/Array<Body>#__get + (local.get $1) + (local.get $0) + ) + (i32.const 0) + ) + ) + (func $start (; 26 ;) (type $0) + (call $start:assembly/index) + ) + (func $null (; 27 ;) (type $0) + ) +) diff --git a/test/passes/converge_O3_metrics.bin.txt b/test/passes/converge_O3_metrics.bin.txt index be1ebb897..00835cc1e 100644 --- a/test/passes/converge_O3_metrics.bin.txt +++ b/test/passes/converge_O3_metrics.bin.txt @@ -1,4 +1,5 @@ total + [exports] : 2 [funcs] : 8 [imports] : 3 [memory-data] : 28 @@ -240,6 +241,7 @@ total ) ) total + [exports] : 2 [funcs] : 8 [imports] : 3 [memory-data] : 28 @@ -482,6 +484,7 @@ total ) ) total + [exports] : 2 [funcs] : 8 [imports] : 3 [memory-data] : 28 diff --git a/test/passes/func-metrics.txt b/test/passes/func-metrics.txt index 2d70c07c9..fd8d949bd 100644 --- a/test/passes/func-metrics.txt +++ b/test/passes/func-metrics.txt @@ -1,5 +1,7 @@ global + [exports] : 0 [funcs] : 3 + [imports] : 0 [memory-data] : 9 [table-data] : 3 [total] : 3 @@ -7,10 +9,12 @@ global func: empty [binary-bytes] : 3 [total] : 1 + [vars] : 0 nop : 1 func: small [binary-bytes] : 9 [total] : 5 + [vars] : 0 block : 1 const : 1 drop : 1 @@ -84,30 +88,41 @@ func: ifs ) ) global + [exports] : 0 + [funcs] : 0 + [imports] : 0 + [total] : 0 (module ) global + [exports] : 2 [funcs] : 3 [imports] : 1 + [total] : 0 func: func_a [binary-bytes] : 16 [total] : 8 + [vars] : 0 block : 1 call : 7 func: func_b [binary-bytes] : 22 [total] : 11 + [vars] : 0 block : 1 call : 10 func: func_c [binary-bytes] : 32 [total] : 16 + [vars] : 0 block : 1 call : 15 export: a (func_a) [removable-bytes-without-it]: 72 + [total] : 0 export: b (func_b) [removable-bytes-without-it]: 18 + [total] : 0 (module (type $FUNCSIG$v (func)) (import "env" "waka" (func $waka)) @@ -153,17 +168,22 @@ export: b (func_b) ) ) global + [exports] : 1 [funcs] : 1 [imports] : 1 + [total] : 0 func: func_a [binary-bytes] : 12 [total] : 6 + [vars] : 0 block : 1 call : 5 export: a (func_a) [removable-bytes-without-it]: 7 + [total] : 0 start: func_a [removable-bytes-without-it]: 3 + [total] : 0 (module (type $FUNCSIG$v (func)) (import "env" "waka" (func $waka)) @@ -178,15 +198,19 @@ start: func_a ) ) global + [exports] : 0 [funcs] : 1 [imports] : 1 + [total] : 0 func: func_a [binary-bytes] : 12 [total] : 6 + [vars] : 0 block : 1 call : 5 start: func_a [removable-bytes-without-it]: 67 + [total] : 0 (module (type $FUNCSIG$v (func)) (import "env" "waka" (func $waka)) @@ -200,6 +224,7 @@ start: func_a ) ) global + [exports] : 1 [funcs] : 1 [imports] : 1 [total] : 1 @@ -207,9 +232,11 @@ global func: 0 [binary-bytes] : 4 [total] : 1 + [vars] : 0 global.get : 1 export: stackSave (0) [removable-bytes-without-it]: 74 + [total] : 0 (module (type $0 (func (result i32))) (import "env" "STACKTOP" (global $gimport$0 i32)) diff --git a/test/passes/metrics.txt b/test/passes/metrics.txt index 216ac1fcb..096194e84 100644 --- a/test/passes/metrics.txt +++ b/test/passes/metrics.txt @@ -1,5 +1,7 @@ total + [exports] : 0 [funcs] : 1 + [imports] : 0 [memory-data] : 9 [table-data] : 3 [total] : 27 @@ -57,5 +59,10 @@ total ) ) total + [exports] : 0 + [funcs] : 0 + [imports] : 0 + [total] : 0 + [vars] : 0 (module ) diff --git a/test/passes/metrics_strip-debug_metrics.bin.txt b/test/passes/metrics_strip-debug_metrics.bin.txt index dbb3dcc37..0efad35f5 100644 --- a/test/passes/metrics_strip-debug_metrics.bin.txt +++ b/test/passes/metrics_strip-debug_metrics.bin.txt @@ -1,10 +1,16 @@ total + [exports] : 1 [funcs] : 1 + [imports] : 0 [total] : 1 + [vars] : 0 nop : 1 total + [exports] : 1 [funcs] : 1 + [imports] : 0 [total] : 1 + [vars] : 0 nop : 1 (module (type $0 (func)) diff --git a/test/passes/metrics_strip-producers_metrics.bin.txt b/test/passes/metrics_strip-producers_metrics.bin.txt index 6ddfa5892..e630c14b7 100644 --- a/test/passes/metrics_strip-producers_metrics.bin.txt +++ b/test/passes/metrics_strip-producers_metrics.bin.txt @@ -1,10 +1,16 @@ total + [exports] : 1 [funcs] : 1 + [imports] : 0 [total] : 1 + [vars] : 0 nop : 1 total + [exports] : 1 [funcs] : 1 + [imports] : 0 [total] : 1 + [vars] : 0 nop : 1 (module (type $0 (func)) diff --git a/test/passes/safe-heap.txt b/test/passes/safe-heap.txt index ecb87091c..98f185fe4 100644 --- a/test/passes/safe-heap.txt +++ b/test/passes/safe-heap.txt @@ -171,7 +171,7 @@ (call $SAFE_HEAP_STORE_v128_16_16 (i32.const 14) (i32.const 0) - (v128.const i32 0x00000001 0x00000002 0x00000003 0x00000004) + (v128.const i32x4 0x00000001 0x00000002 0x00000003 0x00000004) ) ) (func $SAFE_HEAP_LOAD_i32_1_A (; 4 ;) (param $0 i32) (param $1 i32) (result i32) diff --git a/test/passes/safe-heap.wast b/test/passes/safe-heap.wast index a2754b469..17c9995c4 100644 --- a/test/passes/safe-heap.wast +++ b/test/passes/safe-heap.wast @@ -32,7 +32,7 @@ (i64.store (i32.const 11) (i64.const 1100)) (f32.store (i32.const 12) (f32.const 1200)) (f64.store (i32.const 13) (f64.const 1300)) - (v128.store (i32.const 14) (v128.const i32 1 2 3 4)) + (v128.store (i32.const 14) (v128.const i32x4 1 2 3 4)) ) ) ;; not shared diff --git a/test/passes/safe-heap_low-memory-unused.txt b/test/passes/safe-heap_low-memory-unused.txt index 0d9287c57..801821e4f 100644 --- a/test/passes/safe-heap_low-memory-unused.txt +++ b/test/passes/safe-heap_low-memory-unused.txt @@ -171,7 +171,7 @@ (call $SAFE_HEAP_STORE_v128_16_16 (i32.const 14) (i32.const 0) - (v128.const i32 0x00000001 0x00000002 0x00000003 0x00000004) + (v128.const i32x4 0x00000001 0x00000002 0x00000003 0x00000004) ) ) (func $SAFE_HEAP_LOAD_i32_1_A (; 4 ;) (param $0 i32) (param $1 i32) (result i32) diff --git a/test/passes/safe-heap_low-memory-unused.wast b/test/passes/safe-heap_low-memory-unused.wast index a2754b469..17c9995c4 100644 --- a/test/passes/safe-heap_low-memory-unused.wast +++ b/test/passes/safe-heap_low-memory-unused.wast @@ -32,7 +32,7 @@ (i64.store (i32.const 11) (i64.const 1100)) (f32.store (i32.const 12) (f32.const 1200)) (f64.store (i32.const 13) (f64.const 1300)) - (v128.store (i32.const 14) (v128.const i32 1 2 3 4)) + (v128.store (i32.const 14) (v128.const i32x4 1 2 3 4)) ) ) ;; not shared diff --git a/test/passes/strip-target-features.bin.txt b/test/passes/strip-target-features.bin.txt new file mode 100644 index 000000000..914273cfb --- /dev/null +++ b/test/passes/strip-target-features.bin.txt @@ -0,0 +1,3 @@ +(module + ;; custom section "linking", size 1 +) diff --git a/test/passes/strip-target-features.wasm b/test/passes/strip-target-features.wasm Binary files differnew file mode 100644 index 000000000..1c837a1dc --- /dev/null +++ b/test/passes/strip-target-features.wasm diff --git a/test/passes/translate-to-fuzz.txt b/test/passes/translate-to-fuzz.txt index 604ccc548..fb80f7c0d 100644 --- a/test/passes/translate-to-fuzz.txt +++ b/test/passes/translate-to-fuzz.txt @@ -302,24 +302,24 @@ (br_if $label$1 (i32.const -1) ) - (v128.const i32 0x0b00c0b2 0x1f010200 0xff00ff01 0xff0fed00) + (v128.const i32x4 0x0b00c0b2 0x1f010200 0xff00ff01 0xff0fed00) ) ) ) ) (local.set $5 - (v128.const i32 0x80190000 0xeb00021b 0x7f001a4a 0x005d1280) + (v128.const i32x4 0x80190000 0xeb00021b 0x7f001a4a 0x005d1280) ) ) ) (func $func_8_invoker (; 9 ;) (type $FUNCSIG$v) (call $func_8 (i32.const 68) - (v128.const i32 0x25373870 0x313c793d 0x150c0902 0x1f4c030a) + (v128.const i32x4 0x25373870 0x313c793d 0x150c0902 0x1f4c030a) (i32.const 420088586) - (v128.const i32 0xfffe1b09 0xfffe0000 0x5f0b1615 0x463dffe6) + (v128.const i32x4 0xfffe1b09 0xfffe0000 0x5f0b1615 0x463dffe6) (i64.const 2055) - (v128.const i32 0x00000000 0x43e00000 0x00000000 0x406c6000) + (v128.const i32x4 0x00000000 0x43e00000 0x00000000 0x406c6000) ) ) (func $func_10 (; 10 ;) (type $FUNCSIG$vd) (param $0 f64) @@ -366,7 +366,7 @@ (global.get $hangLimit) ) (return - (v128.const i32 0xff040000 0xff371d46 0x6f000002 0x00004318) + (v128.const i32x4 0xff040000 0xff371d46 0x6f000002 0x00004318) ) ) (global.set $hangLimit @@ -461,7 +461,7 @@ ) (block $label$0 (local.set $5 - (v128.const i32 0x5d1b5d4e 0x48481b54 0x00000000 0xf8000000) + (v128.const i32x4 0x5d1b5d4e 0x48481b54 0x00000000 0xf8000000) ) (nop) ) diff --git a/test/passes/translate-to-fuzz_no-fuzz-nans.txt b/test/passes/translate-to-fuzz_no-fuzz-nans.txt index 99ef3879d..f256d3bf4 100644 --- a/test/passes/translate-to-fuzz_no-fuzz-nans.txt +++ b/test/passes/translate-to-fuzz_no-fuzz-nans.txt @@ -302,24 +302,24 @@ (br_if $label$1 (i32.const -1) ) - (v128.const i32 0x0b00c0b2 0x1f010200 0xff00ff01 0xff0fed00) + (v128.const i32x4 0x0b00c0b2 0x1f010200 0xff00ff01 0xff0fed00) ) ) ) ) (local.set $5 - (v128.const i32 0x80190000 0xeb00021b 0x7f001a4a 0x005d1280) + (v128.const i32x4 0x80190000 0xeb00021b 0x7f001a4a 0x005d1280) ) ) ) (func $func_8_invoker (; 9 ;) (type $FUNCSIG$v) (call $func_8 (i32.const 68) - (v128.const i32 0x25373870 0x313c793d 0x150c0902 0x1f4c030a) + (v128.const i32x4 0x25373870 0x313c793d 0x150c0902 0x1f4c030a) (i32.const 420088586) - (v128.const i32 0xfffe1b09 0xfffe0000 0x5f0b1615 0x463dffe6) + (v128.const i32x4 0xfffe1b09 0xfffe0000 0x5f0b1615 0x463dffe6) (i64.const 2055) - (v128.const i32 0x00000000 0x43e00000 0x00000000 0x406c6000) + (v128.const i32x4 0x00000000 0x43e00000 0x00000000 0x406c6000) ) ) (func $func_10 (; 10 ;) (type $FUNCSIG$vd) (param $0 f64) @@ -366,7 +366,7 @@ (global.get $hangLimit) ) (return - (v128.const i32 0xff040000 0xff371d46 0x6f000002 0x00004318) + (v128.const i32x4 0xff040000 0xff371d46 0x6f000002 0x00004318) ) ) (global.set $hangLimit @@ -461,7 +461,7 @@ ) (block $label$0 (local.set $5 - (v128.const i32 0x5d1b5d4e 0x48481b54 0x00000000 0xf8000000) + (v128.const i32x4 0x5d1b5d4e 0x48481b54 0x00000000 0xf8000000) ) (nop) ) diff --git a/test/simd.wast b/test/simd.wast index ab6ef6458..11f0c19a6 100644 --- a/test/simd.wast +++ b/test/simd.wast @@ -10,8 +10,23 @@ (local.get $1) ) ) - (func $v128.const (result v128) - (v128.const i32 1 2 3 4) + (func $v128.const.i8x16 (result v128) + (v128.const i8x16 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16) + ) + (func $v128.const.i16x8 (result v128) + (v128.const i16x8 1 2 3 4 5 6 7 8) + ) + (func $v128.const.i32x4 (result v128) + (v128.const i32x4 1 2 3 4) + ) + (func $v128.const.i64x2 (result v128) + (v128.const i64x2 1 2) + ) + (func $v128.const.f32x4 (result v128) + (v128.const f32x4 1.0 2 3 4) + ) + (func $v128.const.f64x2 (result v128) + (v128.const f64x2 1.0 2) ) (func $v128.shuffle (param $0 v128) (param $1 v128) (result v128) (v8x16.shuffle 0 17 2 19 4 21 6 23 8 25 10 27 12 29 14 31 diff --git a/test/simd.wast.from-wast b/test/simd.wast.from-wast index 734d55366..fe1fd241d 100644 --- a/test/simd.wast.from-wast +++ b/test/simd.wast.from-wast @@ -26,782 +26,797 @@ (local.get $1) ) ) - (func $v128.const (; 2 ;) (type $2) (result v128) - (v128.const i32 0x00000001 0x00000002 0x00000003 0x00000004) + (func $v128.const.i8x16 (; 2 ;) (type $2) (result v128) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) - (func $v128.shuffle (; 3 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $v128.const.i16x8 (; 3 ;) (type $2) (result v128) + (v128.const i32x4 0x00020001 0x00040003 0x00060005 0x00080007) + ) + (func $v128.const.i32x4 (; 4 ;) (type $2) (result v128) + (v128.const i32x4 0x00000001 0x00000002 0x00000003 0x00000004) + ) + (func $v128.const.i64x2 (; 5 ;) (type $2) (result v128) + (v128.const i32x4 0x00000001 0x00000000 0x00000002 0x00000000) + ) + (func $v128.const.f32x4 (; 6 ;) (type $2) (result v128) + (v128.const i32x4 0x3f800000 0x40000000 0x40400000 0x40800000) + ) + (func $v128.const.f64x2 (; 7 ;) (type $2) (result v128) + (v128.const i32x4 0x00000000 0x3ff00000 0x00000000 0x40000000) + ) + (func $v128.shuffle (; 8 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (v8x16.shuffle 0 17 2 19 4 21 6 23 8 25 10 27 12 29 14 31 (local.get $0) (local.get $1) ) ) - (func $i8x16.splat (; 4 ;) (type $0) (param $0 i32) (result v128) + (func $i8x16.splat (; 9 ;) (type $0) (param $0 i32) (result v128) (i8x16.splat (local.get $0) ) ) - (func $i8x16.extract_lane_s (; 5 ;) (type $4) (param $0 v128) (result i32) + (func $i8x16.extract_lane_s (; 10 ;) (type $4) (param $0 v128) (result i32) (i8x16.extract_lane_s 0 (local.get $0) ) ) - (func $i8x16.extract_lane_u (; 6 ;) (type $4) (param $0 v128) (result i32) + (func $i8x16.extract_lane_u (; 11 ;) (type $4) (param $0 v128) (result i32) (i8x16.extract_lane_u 0 (local.get $0) ) ) - (func $i8x16.replace_lane (; 7 ;) (type $5) (param $0 v128) (param $1 i32) (result v128) + (func $i8x16.replace_lane (; 12 ;) (type $5) (param $0 v128) (param $1 i32) (result v128) (i8x16.replace_lane 0 (local.get $0) (local.get $1) ) ) - (func $i16x8.splat (; 8 ;) (type $0) (param $0 i32) (result v128) + (func $i16x8.splat (; 13 ;) (type $0) (param $0 i32) (result v128) (i16x8.splat (local.get $0) ) ) - (func $i16x8.extract_lane_s (; 9 ;) (type $4) (param $0 v128) (result i32) + (func $i16x8.extract_lane_s (; 14 ;) (type $4) (param $0 v128) (result i32) (i16x8.extract_lane_s 0 (local.get $0) ) ) - (func $i16x8.extract_lane_u (; 10 ;) (type $4) (param $0 v128) (result i32) + (func $i16x8.extract_lane_u (; 15 ;) (type $4) (param $0 v128) (result i32) (i16x8.extract_lane_u 0 (local.get $0) ) ) - (func $i16x8.replace_lane (; 11 ;) (type $5) (param $0 v128) (param $1 i32) (result v128) + (func $i16x8.replace_lane (; 16 ;) (type $5) (param $0 v128) (param $1 i32) (result v128) (i16x8.replace_lane 0 (local.get $0) (local.get $1) ) ) - (func $i32x4.splat (; 12 ;) (type $0) (param $0 i32) (result v128) + (func $i32x4.splat (; 17 ;) (type $0) (param $0 i32) (result v128) (i32x4.splat (local.get $0) ) ) - (func $i32x4.extract_lane (; 13 ;) (type $4) (param $0 v128) (result i32) + (func $i32x4.extract_lane (; 18 ;) (type $4) (param $0 v128) (result i32) (i32x4.extract_lane 0 (local.get $0) ) ) - (func $i32x4.replace_lane (; 14 ;) (type $5) (param $0 v128) (param $1 i32) (result v128) + (func $i32x4.replace_lane (; 19 ;) (type $5) (param $0 v128) (param $1 i32) (result v128) (i32x4.replace_lane 0 (local.get $0) (local.get $1) ) ) - (func $i64x2.extract_lane (; 15 ;) (type $6) (param $0 v128) (result i64) + (func $i64x2.extract_lane (; 20 ;) (type $6) (param $0 v128) (result i64) (i64x2.extract_lane 0 (local.get $0) ) ) - (func $i64x2.replace_lane (; 16 ;) (type $7) (param $0 v128) (param $1 i64) (result v128) + (func $i64x2.replace_lane (; 21 ;) (type $7) (param $0 v128) (param $1 i64) (result v128) (i64x2.replace_lane 0 (local.get $0) (local.get $1) ) ) - (func $f32x4.splat (; 17 ;) (type $8) (param $0 f32) (result v128) + (func $f32x4.splat (; 22 ;) (type $8) (param $0 f32) (result v128) (f32x4.splat (local.get $0) ) ) - (func $f32x4.extract_lane (; 18 ;) (type $9) (param $0 v128) (result f32) + (func $f32x4.extract_lane (; 23 ;) (type $9) (param $0 v128) (result f32) (f32x4.extract_lane 0 (local.get $0) ) ) - (func $f32x4.replace_lane (; 19 ;) (type $10) (param $0 v128) (param $1 f32) (result v128) + (func $f32x4.replace_lane (; 24 ;) (type $10) (param $0 v128) (param $1 f32) (result v128) (f32x4.replace_lane 0 (local.get $0) (local.get $1) ) ) - (func $f64x2.splat (; 20 ;) (type $11) (param $0 f64) (result v128) + (func $f64x2.splat (; 25 ;) (type $11) (param $0 f64) (result v128) (f64x2.splat (local.get $0) ) ) - (func $f64x2.extract_lane (; 21 ;) (type $12) (param $0 v128) (result f64) + (func $f64x2.extract_lane (; 26 ;) (type $12) (param $0 v128) (result f64) (f64x2.extract_lane 0 (local.get $0) ) ) - (func $f64x2.replace_lane (; 22 ;) (type $13) (param $0 v128) (param $1 f64) (result v128) + (func $f64x2.replace_lane (; 27 ;) (type $13) (param $0 v128) (param $1 f64) (result v128) (f64x2.replace_lane 0 (local.get $0) (local.get $1) ) ) - (func $i8x16.eq (; 23 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.eq (; 28 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i8x16.eq (local.get $0) (local.get $1) ) ) - (func $i8x16.ne (; 24 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.ne (; 29 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i8x16.ne (local.get $0) (local.get $1) ) ) - (func $i8x16.lt_s (; 25 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.lt_s (; 30 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i8x16.lt_s (local.get $0) (local.get $1) ) ) - (func $i8x16.lt_u (; 26 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.lt_u (; 31 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i8x16.lt_u (local.get $0) (local.get $1) ) ) - (func $i8x16.gt_s (; 27 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.gt_s (; 32 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i8x16.gt_s (local.get $0) (local.get $1) ) ) - (func $i8x16.gt_u (; 28 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.gt_u (; 33 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i8x16.gt_u (local.get $0) (local.get $1) ) ) - (func $i8x16.le_s (; 29 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.le_s (; 34 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i8x16.le_s (local.get $0) (local.get $1) ) ) - (func $i8x16.le_u (; 30 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.le_u (; 35 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i8x16.le_u (local.get $0) (local.get $1) ) ) - (func $i8x16.ge_s (; 31 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.ge_s (; 36 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i8x16.ge_s (local.get $0) (local.get $1) ) ) - (func $i8x16.ge_u (; 32 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.ge_u (; 37 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i8x16.ge_u (local.get $0) (local.get $1) ) ) - (func $i16x8.eq (; 33 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.eq (; 38 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i16x8.eq (local.get $0) (local.get $1) ) ) - (func $i16x8.ne (; 34 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.ne (; 39 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i16x8.ne (local.get $0) (local.get $1) ) ) - (func $i16x8.lt_s (; 35 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.lt_s (; 40 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i16x8.lt_s (local.get $0) (local.get $1) ) ) - (func $i16x8.lt_u (; 36 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.lt_u (; 41 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i16x8.lt_u (local.get $0) (local.get $1) ) ) - (func $i16x8.gt_s (; 37 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.gt_s (; 42 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i16x8.gt_s (local.get $0) (local.get $1) ) ) - (func $i16x8.gt_u (; 38 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.gt_u (; 43 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i16x8.gt_u (local.get $0) (local.get $1) ) ) - (func $i16x8.le_s (; 39 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.le_s (; 44 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i16x8.le_s (local.get $0) (local.get $1) ) ) - (func $i16x8.le_u (; 40 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.le_u (; 45 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i16x8.le_u (local.get $0) (local.get $1) ) ) - (func $i16x8.ge_s (; 41 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.ge_s (; 46 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i16x8.ge_s (local.get $0) (local.get $1) ) ) - (func $i16x8.ge_u (; 42 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.ge_u (; 47 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i16x8.ge_u (local.get $0) (local.get $1) ) ) - (func $i32x4.eq (; 43 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $i32x4.eq (; 48 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i32x4.eq (local.get $0) (local.get $1) ) ) - (func $i32x4.ne (; 44 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $i32x4.ne (; 49 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i32x4.ne (local.get $0) (local.get $1) ) ) - (func $i32x4.lt_s (; 45 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $i32x4.lt_s (; 50 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i32x4.lt_s (local.get $0) (local.get $1) ) ) - (func $i32x4.lt_u (; 46 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $i32x4.lt_u (; 51 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i32x4.lt_u (local.get $0) (local.get $1) ) ) - (func $i32x4.gt_s (; 47 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $i32x4.gt_s (; 52 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i32x4.gt_s (local.get $0) (local.get $1) ) ) - (func $i32x4.gt_u (; 48 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $i32x4.gt_u (; 53 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i32x4.gt_u (local.get $0) (local.get $1) ) ) - (func $i32x4.le_s (; 49 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $i32x4.le_s (; 54 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i32x4.le_s (local.get $0) (local.get $1) ) ) - (func $i32x4.le_u (; 50 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $i32x4.le_u (; 55 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i32x4.le_u (local.get $0) (local.get $1) ) ) - (func $i32x4.ge_s (; 51 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $i32x4.ge_s (; 56 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i32x4.ge_s (local.get $0) (local.get $1) ) ) - (func $i32x4.ge_u (; 52 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $i32x4.ge_u (; 57 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i32x4.ge_u (local.get $0) (local.get $1) ) ) - (func $f32x4.eq (; 53 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $f32x4.eq (; 58 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (f32x4.eq (local.get $0) (local.get $1) ) ) - (func $f32x4.ne (; 54 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $f32x4.ne (; 59 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (f32x4.ne (local.get $0) (local.get $1) ) ) - (func $f32x4.lt (; 55 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $f32x4.lt (; 60 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (f32x4.lt (local.get $0) (local.get $1) ) ) - (func $f32x4.gt (; 56 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $f32x4.gt (; 61 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (f32x4.gt (local.get $0) (local.get $1) ) ) - (func $f32x4.le (; 57 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $f32x4.le (; 62 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (f32x4.le (local.get $0) (local.get $1) ) ) - (func $f32x4.ge (; 58 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $f32x4.ge (; 63 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (f32x4.ge (local.get $0) (local.get $1) ) ) - (func $f64x2.eq (; 59 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $f64x2.eq (; 64 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (f64x2.eq (local.get $0) (local.get $1) ) ) - (func $f64x2.ne (; 60 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $f64x2.ne (; 65 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (f64x2.ne (local.get $0) (local.get $1) ) ) - (func $f64x2.lt (; 61 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $f64x2.lt (; 66 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (f64x2.lt (local.get $0) (local.get $1) ) ) - (func $f64x2.gt (; 62 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $f64x2.gt (; 67 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (f64x2.gt (local.get $0) (local.get $1) ) ) - (func $f64x2.le (; 63 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $f64x2.le (; 68 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (f64x2.le (local.get $0) (local.get $1) ) ) - (func $f64x2.ge (; 64 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $f64x2.ge (; 69 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (f64x2.ge (local.get $0) (local.get $1) ) ) - (func $v128.not (; 65 ;) (type $14) (param $0 v128) (result v128) + (func $v128.not (; 70 ;) (type $14) (param $0 v128) (result v128) (v128.not (local.get $0) ) ) - (func $v128.and (; 66 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $v128.and (; 71 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (v128.and (local.get $0) (local.get $1) ) ) - (func $v128.or (; 67 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $v128.or (; 72 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (v128.or (local.get $0) (local.get $1) ) ) - (func $v128.xor (; 68 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $v128.xor (; 73 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (v128.xor (local.get $0) (local.get $1) ) ) - (func $v128.bitselect (; 69 ;) (type $15) (param $0 v128) (param $1 v128) (param $2 v128) (result v128) + (func $v128.bitselect (; 74 ;) (type $15) (param $0 v128) (param $1 v128) (param $2 v128) (result v128) (v128.bitselect (local.get $0) (local.get $1) (local.get $2) ) ) - (func $i8x16.neg (; 70 ;) (type $14) (param $0 v128) (result v128) + (func $i8x16.neg (; 75 ;) (type $14) (param $0 v128) (result v128) (i8x16.neg (local.get $0) ) ) - (func $i8x16.any_true (; 71 ;) (type $4) (param $0 v128) (result i32) + (func $i8x16.any_true (; 76 ;) (type $4) (param $0 v128) (result i32) (i8x16.any_true (local.get $0) ) ) - (func $i8x16.all_true (; 72 ;) (type $4) (param $0 v128) (result i32) + (func $i8x16.all_true (; 77 ;) (type $4) (param $0 v128) (result i32) (i8x16.all_true (local.get $0) ) ) - (func $i8x16.shl (; 73 ;) (type $5) (param $0 v128) (param $1 i32) (result v128) + (func $i8x16.shl (; 78 ;) (type $5) (param $0 v128) (param $1 i32) (result v128) (i8x16.shl (local.get $0) (local.get $1) ) ) - (func $i8x16.shr_s (; 74 ;) (type $5) (param $0 v128) (param $1 i32) (result v128) + (func $i8x16.shr_s (; 79 ;) (type $5) (param $0 v128) (param $1 i32) (result v128) (i8x16.shr_s (local.get $0) (local.get $1) ) ) - (func $i8x16.shr_u (; 75 ;) (type $5) (param $0 v128) (param $1 i32) (result v128) + (func $i8x16.shr_u (; 80 ;) (type $5) (param $0 v128) (param $1 i32) (result v128) (i8x16.shr_u (local.get $0) (local.get $1) ) ) - (func $i8x16.add (; 76 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.add (; 81 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i8x16.add (local.get $0) (local.get $1) ) ) - (func $i8x16.add_saturate_s (; 77 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.add_saturate_s (; 82 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i8x16.add_saturate_s (local.get $0) (local.get $1) ) ) - (func $i8x16.add_saturate_u (; 78 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.add_saturate_u (; 83 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i8x16.add_saturate_u (local.get $0) (local.get $1) ) ) - (func $i8x16.sub (; 79 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.sub (; 84 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i8x16.sub (local.get $0) (local.get $1) ) ) - (func $i8x16.sub_saturate_s (; 80 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.sub_saturate_s (; 85 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i8x16.sub_saturate_s (local.get $0) (local.get $1) ) ) - (func $i8x16.sub_saturate_u (; 81 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.sub_saturate_u (; 86 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i8x16.sub_saturate_u (local.get $0) (local.get $1) ) ) - (func $i8x16.mul (; 82 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.mul (; 87 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i8x16.mul (local.get $0) (local.get $1) ) ) - (func $i16x8.neg (; 83 ;) (type $14) (param $0 v128) (result v128) + (func $i16x8.neg (; 88 ;) (type $14) (param $0 v128) (result v128) (i16x8.neg (local.get $0) ) ) - (func $i16x8.any_true (; 84 ;) (type $4) (param $0 v128) (result i32) + (func $i16x8.any_true (; 89 ;) (type $4) (param $0 v128) (result i32) (i16x8.any_true (local.get $0) ) ) - (func $i16x8.all_true (; 85 ;) (type $4) (param $0 v128) (result i32) + (func $i16x8.all_true (; 90 ;) (type $4) (param $0 v128) (result i32) (i16x8.all_true (local.get $0) ) ) - (func $i16x8.shl (; 86 ;) (type $5) (param $0 v128) (param $1 i32) (result v128) + (func $i16x8.shl (; 91 ;) (type $5) (param $0 v128) (param $1 i32) (result v128) (i16x8.shl (local.get $0) (local.get $1) ) ) - (func $i16x8.shr_s (; 87 ;) (type $5) (param $0 v128) (param $1 i32) (result v128) + (func $i16x8.shr_s (; 92 ;) (type $5) (param $0 v128) (param $1 i32) (result v128) (i16x8.shr_s (local.get $0) (local.get $1) ) ) - (func $i16x8.shr_u (; 88 ;) (type $5) (param $0 v128) (param $1 i32) (result v128) + (func $i16x8.shr_u (; 93 ;) (type $5) (param $0 v128) (param $1 i32) (result v128) (i16x8.shr_u (local.get $0) (local.get $1) ) ) - (func $i16x8.add (; 89 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.add (; 94 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i16x8.add (local.get $0) (local.get $1) ) ) - (func $i16x8.add_saturate_s (; 90 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.add_saturate_s (; 95 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i16x8.add_saturate_s (local.get $0) (local.get $1) ) ) - (func $i16x8.add_saturate_u (; 91 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.add_saturate_u (; 96 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i16x8.add_saturate_u (local.get $0) (local.get $1) ) ) - (func $i16x8.sub (; 92 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.sub (; 97 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i16x8.sub (local.get $0) (local.get $1) ) ) - (func $i16x8.sub_saturate_s (; 93 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.sub_saturate_s (; 98 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i16x8.sub_saturate_s (local.get $0) (local.get $1) ) ) - (func $i16x8.sub_saturate_u (; 94 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.sub_saturate_u (; 99 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i16x8.sub_saturate_u (local.get $0) (local.get $1) ) ) - (func $i16x8.mul (; 95 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.mul (; 100 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i16x8.mul (local.get $0) (local.get $1) ) ) - (func $i32x4.neg (; 96 ;) (type $14) (param $0 v128) (result v128) + (func $i32x4.neg (; 101 ;) (type $14) (param $0 v128) (result v128) (i32x4.neg (local.get $0) ) ) - (func $i32x4.any_true (; 97 ;) (type $4) (param $0 v128) (result i32) + (func $i32x4.any_true (; 102 ;) (type $4) (param $0 v128) (result i32) (i32x4.any_true (local.get $0) ) ) - (func $i32x4.all_true (; 98 ;) (type $4) (param $0 v128) (result i32) + (func $i32x4.all_true (; 103 ;) (type $4) (param $0 v128) (result i32) (i32x4.all_true (local.get $0) ) ) - (func $i32x4.shl (; 99 ;) (type $5) (param $0 v128) (param $1 i32) (result v128) + (func $i32x4.shl (; 104 ;) (type $5) (param $0 v128) (param $1 i32) (result v128) (i32x4.shl (local.get $0) (local.get $1) ) ) - (func $i32x4.shr_s (; 100 ;) (type $5) (param $0 v128) (param $1 i32) (result v128) + (func $i32x4.shr_s (; 105 ;) (type $5) (param $0 v128) (param $1 i32) (result v128) (i32x4.shr_s (local.get $0) (local.get $1) ) ) - (func $i32x4.shr_u (; 101 ;) (type $5) (param $0 v128) (param $1 i32) (result v128) + (func $i32x4.shr_u (; 106 ;) (type $5) (param $0 v128) (param $1 i32) (result v128) (i32x4.shr_u (local.get $0) (local.get $1) ) ) - (func $i32x4.add (; 102 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $i32x4.add (; 107 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i32x4.add (local.get $0) (local.get $1) ) ) - (func $i32x4.sub (; 103 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $i32x4.sub (; 108 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i32x4.sub (local.get $0) (local.get $1) ) ) - (func $i32x4.mul (; 104 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $i32x4.mul (; 109 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i32x4.mul (local.get $0) (local.get $1) ) ) - (func $i64x2.neg (; 105 ;) (type $14) (param $0 v128) (result v128) + (func $i64x2.neg (; 110 ;) (type $14) (param $0 v128) (result v128) (i64x2.neg (local.get $0) ) ) - (func $i64x2.any_true (; 106 ;) (type $4) (param $0 v128) (result i32) + (func $i64x2.any_true (; 111 ;) (type $4) (param $0 v128) (result i32) (i64x2.any_true (local.get $0) ) ) - (func $i64x2.all_true (; 107 ;) (type $4) (param $0 v128) (result i32) + (func $i64x2.all_true (; 112 ;) (type $4) (param $0 v128) (result i32) (i64x2.all_true (local.get $0) ) ) - (func $i64x2.shl (; 108 ;) (type $5) (param $0 v128) (param $1 i32) (result v128) + (func $i64x2.shl (; 113 ;) (type $5) (param $0 v128) (param $1 i32) (result v128) (i64x2.shl (local.get $0) (local.get $1) ) ) - (func $i64x2.shr_s (; 109 ;) (type $5) (param $0 v128) (param $1 i32) (result v128) + (func $i64x2.shr_s (; 114 ;) (type $5) (param $0 v128) (param $1 i32) (result v128) (i64x2.shr_s (local.get $0) (local.get $1) ) ) - (func $i64x2.shr_u (; 110 ;) (type $5) (param $0 v128) (param $1 i32) (result v128) + (func $i64x2.shr_u (; 115 ;) (type $5) (param $0 v128) (param $1 i32) (result v128) (i64x2.shr_u (local.get $0) (local.get $1) ) ) - (func $i64x2.add (; 111 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $i64x2.add (; 116 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i64x2.add (local.get $0) (local.get $1) ) ) - (func $i64x2.sub (; 112 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $i64x2.sub (; 117 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i64x2.sub (local.get $0) (local.get $1) ) ) - (func $f32x4.add (; 113 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $f32x4.add (; 118 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (f32x4.add (local.get $0) (local.get $1) ) ) - (func $f32x4.sub (; 114 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $f32x4.sub (; 119 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (f32x4.sub (local.get $0) (local.get $1) ) ) - (func $f32x4.mul (; 115 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $f32x4.mul (; 120 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (f32x4.mul (local.get $0) (local.get $1) ) ) - (func $f32x4.div (; 116 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $f32x4.div (; 121 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (f32x4.div (local.get $0) (local.get $1) ) ) - (func $f32x4.min (; 117 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $f32x4.min (; 122 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (f32x4.min (local.get $0) (local.get $1) ) ) - (func $f32x4.max (; 118 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $f32x4.max (; 123 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (f32x4.max (local.get $0) (local.get $1) ) ) - (func $f32x4.abs (; 119 ;) (type $14) (param $0 v128) (result v128) + (func $f32x4.abs (; 124 ;) (type $14) (param $0 v128) (result v128) (f32x4.abs (local.get $0) ) ) - (func $f32x4.neg (; 120 ;) (type $14) (param $0 v128) (result v128) + (func $f32x4.neg (; 125 ;) (type $14) (param $0 v128) (result v128) (f32x4.neg (local.get $0) ) ) - (func $f32x4.sqrt (; 121 ;) (type $14) (param $0 v128) (result v128) + (func $f32x4.sqrt (; 126 ;) (type $14) (param $0 v128) (result v128) (f32x4.sqrt (local.get $0) ) ) - (func $f64x2.add (; 122 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $f64x2.add (; 127 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (f64x2.add (local.get $0) (local.get $1) ) ) - (func $f64x2.sub (; 123 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $f64x2.sub (; 128 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (f64x2.sub (local.get $0) (local.get $1) ) ) - (func $f64x2.mul (; 124 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $f64x2.mul (; 129 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (f64x2.mul (local.get $0) (local.get $1) ) ) - (func $f64x2.div (; 125 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $f64x2.div (; 130 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (f64x2.div (local.get $0) (local.get $1) ) ) - (func $f64x2.min (; 126 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $f64x2.min (; 131 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (f64x2.min (local.get $0) (local.get $1) ) ) - (func $f64x2.max (; 127 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $f64x2.max (; 132 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (f64x2.max (local.get $0) (local.get $1) ) ) - (func $f64x2.abs (; 128 ;) (type $14) (param $0 v128) (result v128) + (func $f64x2.abs (; 133 ;) (type $14) (param $0 v128) (result v128) (f64x2.abs (local.get $0) ) ) - (func $f64x2.neg (; 129 ;) (type $14) (param $0 v128) (result v128) + (func $f64x2.neg (; 134 ;) (type $14) (param $0 v128) (result v128) (f64x2.neg (local.get $0) ) ) - (func $f64x2.sqrt (; 130 ;) (type $14) (param $0 v128) (result v128) + (func $f64x2.sqrt (; 135 ;) (type $14) (param $0 v128) (result v128) (f64x2.sqrt (local.get $0) ) ) - (func $i32x4.trunc_sat_f32x4_s (; 131 ;) (type $14) (param $0 v128) (result v128) + (func $i32x4.trunc_sat_f32x4_s (; 136 ;) (type $14) (param $0 v128) (result v128) (i32x4.trunc_sat_f32x4_s (local.get $0) ) ) - (func $i32x4.trunc_sat_f32x4_u (; 132 ;) (type $14) (param $0 v128) (result v128) + (func $i32x4.trunc_sat_f32x4_u (; 137 ;) (type $14) (param $0 v128) (result v128) (i32x4.trunc_sat_f32x4_u (local.get $0) ) ) - (func $i64x2.trunc_sat_f64x2_s (; 133 ;) (type $14) (param $0 v128) (result v128) + (func $i64x2.trunc_sat_f64x2_s (; 138 ;) (type $14) (param $0 v128) (result v128) (i64x2.trunc_sat_f64x2_s (local.get $0) ) ) - (func $i64x2.trunc_sat_f64x2_u (; 134 ;) (type $14) (param $0 v128) (result v128) + (func $i64x2.trunc_sat_f64x2_u (; 139 ;) (type $14) (param $0 v128) (result v128) (i64x2.trunc_sat_f64x2_u (local.get $0) ) ) - (func $f32x4.convert_i32x4_s (; 135 ;) (type $14) (param $0 v128) (result v128) + (func $f32x4.convert_i32x4_s (; 140 ;) (type $14) (param $0 v128) (result v128) (f32x4.convert_i32x4_s (local.get $0) ) ) - (func $f32x4.convert_i32x4_u (; 136 ;) (type $14) (param $0 v128) (result v128) + (func $f32x4.convert_i32x4_u (; 141 ;) (type $14) (param $0 v128) (result v128) (f32x4.convert_i32x4_u (local.get $0) ) ) - (func $f64x2.convert_i64x2_s (; 137 ;) (type $14) (param $0 v128) (result v128) + (func $f64x2.convert_i64x2_s (; 142 ;) (type $14) (param $0 v128) (result v128) (f64x2.convert_i64x2_s (local.get $0) ) ) - (func $f64x2.convert_i64x2_u (; 138 ;) (type $14) (param $0 v128) (result v128) + (func $f64x2.convert_i64x2_u (; 143 ;) (type $14) (param $0 v128) (result v128) (f64x2.convert_i64x2_u (local.get $0) ) diff --git a/test/simd.wast.fromBinary b/test/simd.wast.fromBinary index 268f5e9b2..f3ea3ca91 100644 --- a/test/simd.wast.fromBinary +++ b/test/simd.wast.fromBinary @@ -26,782 +26,797 @@ (local.get $1) ) ) - (func $v128.const (; 2 ;) (type $2) (result v128) - (v128.const i32 0x00000001 0x00000002 0x00000003 0x00000004) + (func $v128.const.i8x16 (; 2 ;) (type $2) (result v128) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) - (func $v128.shuffle (; 3 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $v128.const.i16x8 (; 3 ;) (type $2) (result v128) + (v128.const i32x4 0x00020001 0x00040003 0x00060005 0x00080007) + ) + (func $v128.const.i32x4 (; 4 ;) (type $2) (result v128) + (v128.const i32x4 0x00000001 0x00000002 0x00000003 0x00000004) + ) + (func $v128.const.i64x2 (; 5 ;) (type $2) (result v128) + (v128.const i32x4 0x00000001 0x00000000 0x00000002 0x00000000) + ) + (func $v128.const.f32x4 (; 6 ;) (type $2) (result v128) + (v128.const i32x4 0x3f800000 0x40000000 0x40400000 0x40800000) + ) + (func $v128.const.f64x2 (; 7 ;) (type $2) (result v128) + (v128.const i32x4 0x00000000 0x3ff00000 0x00000000 0x40000000) + ) + (func $v128.shuffle (; 8 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (v8x16.shuffle 0 17 2 19 4 21 6 23 8 25 10 27 12 29 14 31 (local.get $0) (local.get $1) ) ) - (func $i8x16.splat (; 4 ;) (type $0) (param $0 i32) (result v128) + (func $i8x16.splat (; 9 ;) (type $0) (param $0 i32) (result v128) (i8x16.splat (local.get $0) ) ) - (func $i8x16.extract_lane_s (; 5 ;) (type $4) (param $0 v128) (result i32) + (func $i8x16.extract_lane_s (; 10 ;) (type $4) (param $0 v128) (result i32) (i8x16.extract_lane_s 0 (local.get $0) ) ) - (func $i8x16.extract_lane_u (; 6 ;) (type $4) (param $0 v128) (result i32) + (func $i8x16.extract_lane_u (; 11 ;) (type $4) (param $0 v128) (result i32) (i8x16.extract_lane_u 0 (local.get $0) ) ) - (func $i8x16.replace_lane (; 7 ;) (type $5) (param $0 v128) (param $1 i32) (result v128) + (func $i8x16.replace_lane (; 12 ;) (type $5) (param $0 v128) (param $1 i32) (result v128) (i8x16.replace_lane 0 (local.get $0) (local.get $1) ) ) - (func $i16x8.splat (; 8 ;) (type $0) (param $0 i32) (result v128) + (func $i16x8.splat (; 13 ;) (type $0) (param $0 i32) (result v128) (i16x8.splat (local.get $0) ) ) - (func $i16x8.extract_lane_s (; 9 ;) (type $4) (param $0 v128) (result i32) + (func $i16x8.extract_lane_s (; 14 ;) (type $4) (param $0 v128) (result i32) (i16x8.extract_lane_s 0 (local.get $0) ) ) - (func $i16x8.extract_lane_u (; 10 ;) (type $4) (param $0 v128) (result i32) + (func $i16x8.extract_lane_u (; 15 ;) (type $4) (param $0 v128) (result i32) (i16x8.extract_lane_u 0 (local.get $0) ) ) - (func $i16x8.replace_lane (; 11 ;) (type $5) (param $0 v128) (param $1 i32) (result v128) + (func $i16x8.replace_lane (; 16 ;) (type $5) (param $0 v128) (param $1 i32) (result v128) (i16x8.replace_lane 0 (local.get $0) (local.get $1) ) ) - (func $i32x4.splat (; 12 ;) (type $0) (param $0 i32) (result v128) + (func $i32x4.splat (; 17 ;) (type $0) (param $0 i32) (result v128) (i32x4.splat (local.get $0) ) ) - (func $i32x4.extract_lane (; 13 ;) (type $4) (param $0 v128) (result i32) + (func $i32x4.extract_lane (; 18 ;) (type $4) (param $0 v128) (result i32) (i32x4.extract_lane 0 (local.get $0) ) ) - (func $i32x4.replace_lane (; 14 ;) (type $5) (param $0 v128) (param $1 i32) (result v128) + (func $i32x4.replace_lane (; 19 ;) (type $5) (param $0 v128) (param $1 i32) (result v128) (i32x4.replace_lane 0 (local.get $0) (local.get $1) ) ) - (func $i64x2.extract_lane (; 15 ;) (type $6) (param $0 v128) (result i64) + (func $i64x2.extract_lane (; 20 ;) (type $6) (param $0 v128) (result i64) (i64x2.extract_lane 0 (local.get $0) ) ) - (func $i64x2.replace_lane (; 16 ;) (type $7) (param $0 v128) (param $1 i64) (result v128) + (func $i64x2.replace_lane (; 21 ;) (type $7) (param $0 v128) (param $1 i64) (result v128) (i64x2.replace_lane 0 (local.get $0) (local.get $1) ) ) - (func $f32x4.splat (; 17 ;) (type $8) (param $0 f32) (result v128) + (func $f32x4.splat (; 22 ;) (type $8) (param $0 f32) (result v128) (f32x4.splat (local.get $0) ) ) - (func $f32x4.extract_lane (; 18 ;) (type $9) (param $0 v128) (result f32) + (func $f32x4.extract_lane (; 23 ;) (type $9) (param $0 v128) (result f32) (f32x4.extract_lane 0 (local.get $0) ) ) - (func $f32x4.replace_lane (; 19 ;) (type $10) (param $0 v128) (param $1 f32) (result v128) + (func $f32x4.replace_lane (; 24 ;) (type $10) (param $0 v128) (param $1 f32) (result v128) (f32x4.replace_lane 0 (local.get $0) (local.get $1) ) ) - (func $f64x2.splat (; 20 ;) (type $11) (param $0 f64) (result v128) + (func $f64x2.splat (; 25 ;) (type $11) (param $0 f64) (result v128) (f64x2.splat (local.get $0) ) ) - (func $f64x2.extract_lane (; 21 ;) (type $12) (param $0 v128) (result f64) + (func $f64x2.extract_lane (; 26 ;) (type $12) (param $0 v128) (result f64) (f64x2.extract_lane 0 (local.get $0) ) ) - (func $f64x2.replace_lane (; 22 ;) (type $13) (param $0 v128) (param $1 f64) (result v128) + (func $f64x2.replace_lane (; 27 ;) (type $13) (param $0 v128) (param $1 f64) (result v128) (f64x2.replace_lane 0 (local.get $0) (local.get $1) ) ) - (func $i8x16.eq (; 23 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.eq (; 28 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i8x16.eq (local.get $0) (local.get $1) ) ) - (func $i8x16.ne (; 24 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.ne (; 29 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i8x16.ne (local.get $0) (local.get $1) ) ) - (func $i8x16.lt_s (; 25 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.lt_s (; 30 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i8x16.lt_s (local.get $0) (local.get $1) ) ) - (func $i8x16.lt_u (; 26 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.lt_u (; 31 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i8x16.lt_u (local.get $0) (local.get $1) ) ) - (func $i8x16.gt_s (; 27 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.gt_s (; 32 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i8x16.gt_s (local.get $0) (local.get $1) ) ) - (func $i8x16.gt_u (; 28 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.gt_u (; 33 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i8x16.gt_u (local.get $0) (local.get $1) ) ) - (func $i8x16.le_s (; 29 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.le_s (; 34 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i8x16.le_s (local.get $0) (local.get $1) ) ) - (func $i8x16.le_u (; 30 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.le_u (; 35 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i8x16.le_u (local.get $0) (local.get $1) ) ) - (func $i8x16.ge_s (; 31 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.ge_s (; 36 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i8x16.ge_s (local.get $0) (local.get $1) ) ) - (func $i8x16.ge_u (; 32 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.ge_u (; 37 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i8x16.ge_u (local.get $0) (local.get $1) ) ) - (func $i16x8.eq (; 33 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.eq (; 38 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i16x8.eq (local.get $0) (local.get $1) ) ) - (func $i16x8.ne (; 34 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.ne (; 39 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i16x8.ne (local.get $0) (local.get $1) ) ) - (func $i16x8.lt_s (; 35 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.lt_s (; 40 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i16x8.lt_s (local.get $0) (local.get $1) ) ) - (func $i16x8.lt_u (; 36 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.lt_u (; 41 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i16x8.lt_u (local.get $0) (local.get $1) ) ) - (func $i16x8.gt_s (; 37 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.gt_s (; 42 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i16x8.gt_s (local.get $0) (local.get $1) ) ) - (func $i16x8.gt_u (; 38 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.gt_u (; 43 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i16x8.gt_u (local.get $0) (local.get $1) ) ) - (func $i16x8.le_s (; 39 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.le_s (; 44 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i16x8.le_s (local.get $0) (local.get $1) ) ) - (func $i16x8.le_u (; 40 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.le_u (; 45 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i16x8.le_u (local.get $0) (local.get $1) ) ) - (func $i16x8.ge_s (; 41 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.ge_s (; 46 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i16x8.ge_s (local.get $0) (local.get $1) ) ) - (func $i16x8.ge_u (; 42 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.ge_u (; 47 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i16x8.ge_u (local.get $0) (local.get $1) ) ) - (func $i32x4.eq (; 43 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $i32x4.eq (; 48 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i32x4.eq (local.get $0) (local.get $1) ) ) - (func $i32x4.ne (; 44 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $i32x4.ne (; 49 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i32x4.ne (local.get $0) (local.get $1) ) ) - (func $i32x4.lt_s (; 45 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $i32x4.lt_s (; 50 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i32x4.lt_s (local.get $0) (local.get $1) ) ) - (func $i32x4.lt_u (; 46 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $i32x4.lt_u (; 51 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i32x4.lt_u (local.get $0) (local.get $1) ) ) - (func $i32x4.gt_s (; 47 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $i32x4.gt_s (; 52 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i32x4.gt_s (local.get $0) (local.get $1) ) ) - (func $i32x4.gt_u (; 48 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $i32x4.gt_u (; 53 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i32x4.gt_u (local.get $0) (local.get $1) ) ) - (func $i32x4.le_s (; 49 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $i32x4.le_s (; 54 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i32x4.le_s (local.get $0) (local.get $1) ) ) - (func $i32x4.le_u (; 50 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $i32x4.le_u (; 55 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i32x4.le_u (local.get $0) (local.get $1) ) ) - (func $i32x4.ge_s (; 51 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $i32x4.ge_s (; 56 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i32x4.ge_s (local.get $0) (local.get $1) ) ) - (func $i32x4.ge_u (; 52 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $i32x4.ge_u (; 57 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i32x4.ge_u (local.get $0) (local.get $1) ) ) - (func $f32x4.eq (; 53 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $f32x4.eq (; 58 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (f32x4.eq (local.get $0) (local.get $1) ) ) - (func $f32x4.ne (; 54 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $f32x4.ne (; 59 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (f32x4.ne (local.get $0) (local.get $1) ) ) - (func $f32x4.lt (; 55 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $f32x4.lt (; 60 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (f32x4.lt (local.get $0) (local.get $1) ) ) - (func $f32x4.gt (; 56 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $f32x4.gt (; 61 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (f32x4.gt (local.get $0) (local.get $1) ) ) - (func $f32x4.le (; 57 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $f32x4.le (; 62 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (f32x4.le (local.get $0) (local.get $1) ) ) - (func $f32x4.ge (; 58 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $f32x4.ge (; 63 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (f32x4.ge (local.get $0) (local.get $1) ) ) - (func $f64x2.eq (; 59 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $f64x2.eq (; 64 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (f64x2.eq (local.get $0) (local.get $1) ) ) - (func $f64x2.ne (; 60 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $f64x2.ne (; 65 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (f64x2.ne (local.get $0) (local.get $1) ) ) - (func $f64x2.lt (; 61 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $f64x2.lt (; 66 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (f64x2.lt (local.get $0) (local.get $1) ) ) - (func $f64x2.gt (; 62 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $f64x2.gt (; 67 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (f64x2.gt (local.get $0) (local.get $1) ) ) - (func $f64x2.le (; 63 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $f64x2.le (; 68 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (f64x2.le (local.get $0) (local.get $1) ) ) - (func $f64x2.ge (; 64 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $f64x2.ge (; 69 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (f64x2.ge (local.get $0) (local.get $1) ) ) - (func $v128.not (; 65 ;) (type $14) (param $0 v128) (result v128) + (func $v128.not (; 70 ;) (type $14) (param $0 v128) (result v128) (v128.not (local.get $0) ) ) - (func $v128.and (; 66 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $v128.and (; 71 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (v128.and (local.get $0) (local.get $1) ) ) - (func $v128.or (; 67 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $v128.or (; 72 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (v128.or (local.get $0) (local.get $1) ) ) - (func $v128.xor (; 68 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $v128.xor (; 73 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (v128.xor (local.get $0) (local.get $1) ) ) - (func $v128.bitselect (; 69 ;) (type $15) (param $0 v128) (param $1 v128) (param $2 v128) (result v128) + (func $v128.bitselect (; 74 ;) (type $15) (param $0 v128) (param $1 v128) (param $2 v128) (result v128) (v128.bitselect (local.get $0) (local.get $1) (local.get $2) ) ) - (func $i8x16.neg (; 70 ;) (type $14) (param $0 v128) (result v128) + (func $i8x16.neg (; 75 ;) (type $14) (param $0 v128) (result v128) (i8x16.neg (local.get $0) ) ) - (func $i8x16.any_true (; 71 ;) (type $4) (param $0 v128) (result i32) + (func $i8x16.any_true (; 76 ;) (type $4) (param $0 v128) (result i32) (i8x16.any_true (local.get $0) ) ) - (func $i8x16.all_true (; 72 ;) (type $4) (param $0 v128) (result i32) + (func $i8x16.all_true (; 77 ;) (type $4) (param $0 v128) (result i32) (i8x16.all_true (local.get $0) ) ) - (func $i8x16.shl (; 73 ;) (type $5) (param $0 v128) (param $1 i32) (result v128) + (func $i8x16.shl (; 78 ;) (type $5) (param $0 v128) (param $1 i32) (result v128) (i8x16.shl (local.get $0) (local.get $1) ) ) - (func $i8x16.shr_s (; 74 ;) (type $5) (param $0 v128) (param $1 i32) (result v128) + (func $i8x16.shr_s (; 79 ;) (type $5) (param $0 v128) (param $1 i32) (result v128) (i8x16.shr_s (local.get $0) (local.get $1) ) ) - (func $i8x16.shr_u (; 75 ;) (type $5) (param $0 v128) (param $1 i32) (result v128) + (func $i8x16.shr_u (; 80 ;) (type $5) (param $0 v128) (param $1 i32) (result v128) (i8x16.shr_u (local.get $0) (local.get $1) ) ) - (func $i8x16.add (; 76 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.add (; 81 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i8x16.add (local.get $0) (local.get $1) ) ) - (func $i8x16.add_saturate_s (; 77 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.add_saturate_s (; 82 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i8x16.add_saturate_s (local.get $0) (local.get $1) ) ) - (func $i8x16.add_saturate_u (; 78 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.add_saturate_u (; 83 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i8x16.add_saturate_u (local.get $0) (local.get $1) ) ) - (func $i8x16.sub (; 79 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.sub (; 84 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i8x16.sub (local.get $0) (local.get $1) ) ) - (func $i8x16.sub_saturate_s (; 80 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.sub_saturate_s (; 85 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i8x16.sub_saturate_s (local.get $0) (local.get $1) ) ) - (func $i8x16.sub_saturate_u (; 81 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.sub_saturate_u (; 86 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i8x16.sub_saturate_u (local.get $0) (local.get $1) ) ) - (func $i8x16.mul (; 82 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.mul (; 87 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i8x16.mul (local.get $0) (local.get $1) ) ) - (func $i16x8.neg (; 83 ;) (type $14) (param $0 v128) (result v128) + (func $i16x8.neg (; 88 ;) (type $14) (param $0 v128) (result v128) (i16x8.neg (local.get $0) ) ) - (func $i16x8.any_true (; 84 ;) (type $4) (param $0 v128) (result i32) + (func $i16x8.any_true (; 89 ;) (type $4) (param $0 v128) (result i32) (i16x8.any_true (local.get $0) ) ) - (func $i16x8.all_true (; 85 ;) (type $4) (param $0 v128) (result i32) + (func $i16x8.all_true (; 90 ;) (type $4) (param $0 v128) (result i32) (i16x8.all_true (local.get $0) ) ) - (func $i16x8.shl (; 86 ;) (type $5) (param $0 v128) (param $1 i32) (result v128) + (func $i16x8.shl (; 91 ;) (type $5) (param $0 v128) (param $1 i32) (result v128) (i16x8.shl (local.get $0) (local.get $1) ) ) - (func $i16x8.shr_s (; 87 ;) (type $5) (param $0 v128) (param $1 i32) (result v128) + (func $i16x8.shr_s (; 92 ;) (type $5) (param $0 v128) (param $1 i32) (result v128) (i16x8.shr_s (local.get $0) (local.get $1) ) ) - (func $i16x8.shr_u (; 88 ;) (type $5) (param $0 v128) (param $1 i32) (result v128) + (func $i16x8.shr_u (; 93 ;) (type $5) (param $0 v128) (param $1 i32) (result v128) (i16x8.shr_u (local.get $0) (local.get $1) ) ) - (func $i16x8.add (; 89 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.add (; 94 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i16x8.add (local.get $0) (local.get $1) ) ) - (func $i16x8.add_saturate_s (; 90 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.add_saturate_s (; 95 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i16x8.add_saturate_s (local.get $0) (local.get $1) ) ) - (func $i16x8.add_saturate_u (; 91 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.add_saturate_u (; 96 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i16x8.add_saturate_u (local.get $0) (local.get $1) ) ) - (func $i16x8.sub (; 92 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.sub (; 97 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i16x8.sub (local.get $0) (local.get $1) ) ) - (func $i16x8.sub_saturate_s (; 93 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.sub_saturate_s (; 98 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i16x8.sub_saturate_s (local.get $0) (local.get $1) ) ) - (func $i16x8.sub_saturate_u (; 94 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.sub_saturate_u (; 99 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i16x8.sub_saturate_u (local.get $0) (local.get $1) ) ) - (func $i16x8.mul (; 95 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.mul (; 100 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i16x8.mul (local.get $0) (local.get $1) ) ) - (func $i32x4.neg (; 96 ;) (type $14) (param $0 v128) (result v128) + (func $i32x4.neg (; 101 ;) (type $14) (param $0 v128) (result v128) (i32x4.neg (local.get $0) ) ) - (func $i32x4.any_true (; 97 ;) (type $4) (param $0 v128) (result i32) + (func $i32x4.any_true (; 102 ;) (type $4) (param $0 v128) (result i32) (i32x4.any_true (local.get $0) ) ) - (func $i32x4.all_true (; 98 ;) (type $4) (param $0 v128) (result i32) + (func $i32x4.all_true (; 103 ;) (type $4) (param $0 v128) (result i32) (i32x4.all_true (local.get $0) ) ) - (func $i32x4.shl (; 99 ;) (type $5) (param $0 v128) (param $1 i32) (result v128) + (func $i32x4.shl (; 104 ;) (type $5) (param $0 v128) (param $1 i32) (result v128) (i32x4.shl (local.get $0) (local.get $1) ) ) - (func $i32x4.shr_s (; 100 ;) (type $5) (param $0 v128) (param $1 i32) (result v128) + (func $i32x4.shr_s (; 105 ;) (type $5) (param $0 v128) (param $1 i32) (result v128) (i32x4.shr_s (local.get $0) (local.get $1) ) ) - (func $i32x4.shr_u (; 101 ;) (type $5) (param $0 v128) (param $1 i32) (result v128) + (func $i32x4.shr_u (; 106 ;) (type $5) (param $0 v128) (param $1 i32) (result v128) (i32x4.shr_u (local.get $0) (local.get $1) ) ) - (func $i32x4.add (; 102 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $i32x4.add (; 107 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i32x4.add (local.get $0) (local.get $1) ) ) - (func $i32x4.sub (; 103 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $i32x4.sub (; 108 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i32x4.sub (local.get $0) (local.get $1) ) ) - (func $i32x4.mul (; 104 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $i32x4.mul (; 109 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i32x4.mul (local.get $0) (local.get $1) ) ) - (func $i64x2.neg (; 105 ;) (type $14) (param $0 v128) (result v128) + (func $i64x2.neg (; 110 ;) (type $14) (param $0 v128) (result v128) (i64x2.neg (local.get $0) ) ) - (func $i64x2.any_true (; 106 ;) (type $4) (param $0 v128) (result i32) + (func $i64x2.any_true (; 111 ;) (type $4) (param $0 v128) (result i32) (i64x2.any_true (local.get $0) ) ) - (func $i64x2.all_true (; 107 ;) (type $4) (param $0 v128) (result i32) + (func $i64x2.all_true (; 112 ;) (type $4) (param $0 v128) (result i32) (i64x2.all_true (local.get $0) ) ) - (func $i64x2.shl (; 108 ;) (type $5) (param $0 v128) (param $1 i32) (result v128) + (func $i64x2.shl (; 113 ;) (type $5) (param $0 v128) (param $1 i32) (result v128) (i64x2.shl (local.get $0) (local.get $1) ) ) - (func $i64x2.shr_s (; 109 ;) (type $5) (param $0 v128) (param $1 i32) (result v128) + (func $i64x2.shr_s (; 114 ;) (type $5) (param $0 v128) (param $1 i32) (result v128) (i64x2.shr_s (local.get $0) (local.get $1) ) ) - (func $i64x2.shr_u (; 110 ;) (type $5) (param $0 v128) (param $1 i32) (result v128) + (func $i64x2.shr_u (; 115 ;) (type $5) (param $0 v128) (param $1 i32) (result v128) (i64x2.shr_u (local.get $0) (local.get $1) ) ) - (func $i64x2.add (; 111 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $i64x2.add (; 116 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i64x2.add (local.get $0) (local.get $1) ) ) - (func $i64x2.sub (; 112 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $i64x2.sub (; 117 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i64x2.sub (local.get $0) (local.get $1) ) ) - (func $f32x4.add (; 113 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $f32x4.add (; 118 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (f32x4.add (local.get $0) (local.get $1) ) ) - (func $f32x4.sub (; 114 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $f32x4.sub (; 119 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (f32x4.sub (local.get $0) (local.get $1) ) ) - (func $f32x4.mul (; 115 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $f32x4.mul (; 120 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (f32x4.mul (local.get $0) (local.get $1) ) ) - (func $f32x4.div (; 116 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $f32x4.div (; 121 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (f32x4.div (local.get $0) (local.get $1) ) ) - (func $f32x4.min (; 117 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $f32x4.min (; 122 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (f32x4.min (local.get $0) (local.get $1) ) ) - (func $f32x4.max (; 118 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $f32x4.max (; 123 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (f32x4.max (local.get $0) (local.get $1) ) ) - (func $f32x4.abs (; 119 ;) (type $14) (param $0 v128) (result v128) + (func $f32x4.abs (; 124 ;) (type $14) (param $0 v128) (result v128) (f32x4.abs (local.get $0) ) ) - (func $f32x4.neg (; 120 ;) (type $14) (param $0 v128) (result v128) + (func $f32x4.neg (; 125 ;) (type $14) (param $0 v128) (result v128) (f32x4.neg (local.get $0) ) ) - (func $f32x4.sqrt (; 121 ;) (type $14) (param $0 v128) (result v128) + (func $f32x4.sqrt (; 126 ;) (type $14) (param $0 v128) (result v128) (f32x4.sqrt (local.get $0) ) ) - (func $f64x2.add (; 122 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $f64x2.add (; 127 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (f64x2.add (local.get $0) (local.get $1) ) ) - (func $f64x2.sub (; 123 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $f64x2.sub (; 128 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (f64x2.sub (local.get $0) (local.get $1) ) ) - (func $f64x2.mul (; 124 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $f64x2.mul (; 129 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (f64x2.mul (local.get $0) (local.get $1) ) ) - (func $f64x2.div (; 125 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $f64x2.div (; 130 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (f64x2.div (local.get $0) (local.get $1) ) ) - (func $f64x2.min (; 126 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $f64x2.min (; 131 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (f64x2.min (local.get $0) (local.get $1) ) ) - (func $f64x2.max (; 127 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $f64x2.max (; 132 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (f64x2.max (local.get $0) (local.get $1) ) ) - (func $f64x2.abs (; 128 ;) (type $14) (param $0 v128) (result v128) + (func $f64x2.abs (; 133 ;) (type $14) (param $0 v128) (result v128) (f64x2.abs (local.get $0) ) ) - (func $f64x2.neg (; 129 ;) (type $14) (param $0 v128) (result v128) + (func $f64x2.neg (; 134 ;) (type $14) (param $0 v128) (result v128) (f64x2.neg (local.get $0) ) ) - (func $f64x2.sqrt (; 130 ;) (type $14) (param $0 v128) (result v128) + (func $f64x2.sqrt (; 135 ;) (type $14) (param $0 v128) (result v128) (f64x2.sqrt (local.get $0) ) ) - (func $i32x4.trunc_sat_f32x4_s (; 131 ;) (type $14) (param $0 v128) (result v128) + (func $i32x4.trunc_sat_f32x4_s (; 136 ;) (type $14) (param $0 v128) (result v128) (i32x4.trunc_sat_f32x4_s (local.get $0) ) ) - (func $i32x4.trunc_sat_f32x4_u (; 132 ;) (type $14) (param $0 v128) (result v128) + (func $i32x4.trunc_sat_f32x4_u (; 137 ;) (type $14) (param $0 v128) (result v128) (i32x4.trunc_sat_f32x4_u (local.get $0) ) ) - (func $i64x2.trunc_sat_f64x2_s (; 133 ;) (type $14) (param $0 v128) (result v128) + (func $i64x2.trunc_sat_f64x2_s (; 138 ;) (type $14) (param $0 v128) (result v128) (i64x2.trunc_sat_f64x2_s (local.get $0) ) ) - (func $i64x2.trunc_sat_f64x2_u (; 134 ;) (type $14) (param $0 v128) (result v128) + (func $i64x2.trunc_sat_f64x2_u (; 139 ;) (type $14) (param $0 v128) (result v128) (i64x2.trunc_sat_f64x2_u (local.get $0) ) ) - (func $f32x4.convert_i32x4_s (; 135 ;) (type $14) (param $0 v128) (result v128) + (func $f32x4.convert_i32x4_s (; 140 ;) (type $14) (param $0 v128) (result v128) (f32x4.convert_i32x4_s (local.get $0) ) ) - (func $f32x4.convert_i32x4_u (; 136 ;) (type $14) (param $0 v128) (result v128) + (func $f32x4.convert_i32x4_u (; 141 ;) (type $14) (param $0 v128) (result v128) (f32x4.convert_i32x4_u (local.get $0) ) ) - (func $f64x2.convert_i64x2_s (; 137 ;) (type $14) (param $0 v128) (result v128) + (func $f64x2.convert_i64x2_s (; 142 ;) (type $14) (param $0 v128) (result v128) (f64x2.convert_i64x2_s (local.get $0) ) ) - (func $f64x2.convert_i64x2_u (; 138 ;) (type $14) (param $0 v128) (result v128) + (func $f64x2.convert_i64x2_u (; 143 ;) (type $14) (param $0 v128) (result v128) (f64x2.convert_i64x2_u (local.get $0) ) diff --git a/test/simd.wast.fromBinary.noDebugInfo b/test/simd.wast.fromBinary.noDebugInfo index 6ed42e288..75ff49595 100644 --- a/test/simd.wast.fromBinary.noDebugInfo +++ b/test/simd.wast.fromBinary.noDebugInfo @@ -27,781 +27,796 @@ ) ) (func $2 (; 2 ;) (type $2) (result v128) - (v128.const i32 0x00000001 0x00000002 0x00000003 0x00000004) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) - (func $3 (; 3 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $3 (; 3 ;) (type $2) (result v128) + (v128.const i32x4 0x00020001 0x00040003 0x00060005 0x00080007) + ) + (func $4 (; 4 ;) (type $2) (result v128) + (v128.const i32x4 0x00000001 0x00000002 0x00000003 0x00000004) + ) + (func $5 (; 5 ;) (type $2) (result v128) + (v128.const i32x4 0x00000001 0x00000000 0x00000002 0x00000000) + ) + (func $6 (; 6 ;) (type $2) (result v128) + (v128.const i32x4 0x3f800000 0x40000000 0x40400000 0x40800000) + ) + (func $7 (; 7 ;) (type $2) (result v128) + (v128.const i32x4 0x00000000 0x3ff00000 0x00000000 0x40000000) + ) + (func $8 (; 8 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (v8x16.shuffle 0 17 2 19 4 21 6 23 8 25 10 27 12 29 14 31 (local.get $0) (local.get $1) ) ) - (func $4 (; 4 ;) (type $0) (param $0 i32) (result v128) + (func $9 (; 9 ;) (type $0) (param $0 i32) (result v128) (i8x16.splat (local.get $0) ) ) - (func $5 (; 5 ;) (type $4) (param $0 v128) (result i32) + (func $10 (; 10 ;) (type $4) (param $0 v128) (result i32) (i8x16.extract_lane_s 0 (local.get $0) ) ) - (func $6 (; 6 ;) (type $4) (param $0 v128) (result i32) + (func $11 (; 11 ;) (type $4) (param $0 v128) (result i32) (i8x16.extract_lane_u 0 (local.get $0) ) ) - (func $7 (; 7 ;) (type $5) (param $0 v128) (param $1 i32) (result v128) + (func $12 (; 12 ;) (type $5) (param $0 v128) (param $1 i32) (result v128) (i8x16.replace_lane 0 (local.get $0) (local.get $1) ) ) - (func $8 (; 8 ;) (type $0) (param $0 i32) (result v128) + (func $13 (; 13 ;) (type $0) (param $0 i32) (result v128) (i16x8.splat (local.get $0) ) ) - (func $9 (; 9 ;) (type $4) (param $0 v128) (result i32) + (func $14 (; 14 ;) (type $4) (param $0 v128) (result i32) (i16x8.extract_lane_s 0 (local.get $0) ) ) - (func $10 (; 10 ;) (type $4) (param $0 v128) (result i32) + (func $15 (; 15 ;) (type $4) (param $0 v128) (result i32) (i16x8.extract_lane_u 0 (local.get $0) ) ) - (func $11 (; 11 ;) (type $5) (param $0 v128) (param $1 i32) (result v128) + (func $16 (; 16 ;) (type $5) (param $0 v128) (param $1 i32) (result v128) (i16x8.replace_lane 0 (local.get $0) (local.get $1) ) ) - (func $12 (; 12 ;) (type $0) (param $0 i32) (result v128) + (func $17 (; 17 ;) (type $0) (param $0 i32) (result v128) (i32x4.splat (local.get $0) ) ) - (func $13 (; 13 ;) (type $4) (param $0 v128) (result i32) + (func $18 (; 18 ;) (type $4) (param $0 v128) (result i32) (i32x4.extract_lane 0 (local.get $0) ) ) - (func $14 (; 14 ;) (type $5) (param $0 v128) (param $1 i32) (result v128) + (func $19 (; 19 ;) (type $5) (param $0 v128) (param $1 i32) (result v128) (i32x4.replace_lane 0 (local.get $0) (local.get $1) ) ) - (func $15 (; 15 ;) (type $6) (param $0 v128) (result i64) + (func $20 (; 20 ;) (type $6) (param $0 v128) (result i64) (i64x2.extract_lane 0 (local.get $0) ) ) - (func $16 (; 16 ;) (type $7) (param $0 v128) (param $1 i64) (result v128) + (func $21 (; 21 ;) (type $7) (param $0 v128) (param $1 i64) (result v128) (i64x2.replace_lane 0 (local.get $0) (local.get $1) ) ) - (func $17 (; 17 ;) (type $8) (param $0 f32) (result v128) + (func $22 (; 22 ;) (type $8) (param $0 f32) (result v128) (f32x4.splat (local.get $0) ) ) - (func $18 (; 18 ;) (type $9) (param $0 v128) (result f32) + (func $23 (; 23 ;) (type $9) (param $0 v128) (result f32) (f32x4.extract_lane 0 (local.get $0) ) ) - (func $19 (; 19 ;) (type $10) (param $0 v128) (param $1 f32) (result v128) + (func $24 (; 24 ;) (type $10) (param $0 v128) (param $1 f32) (result v128) (f32x4.replace_lane 0 (local.get $0) (local.get $1) ) ) - (func $20 (; 20 ;) (type $11) (param $0 f64) (result v128) + (func $25 (; 25 ;) (type $11) (param $0 f64) (result v128) (f64x2.splat (local.get $0) ) ) - (func $21 (; 21 ;) (type $12) (param $0 v128) (result f64) + (func $26 (; 26 ;) (type $12) (param $0 v128) (result f64) (f64x2.extract_lane 0 (local.get $0) ) ) - (func $22 (; 22 ;) (type $13) (param $0 v128) (param $1 f64) (result v128) + (func $27 (; 27 ;) (type $13) (param $0 v128) (param $1 f64) (result v128) (f64x2.replace_lane 0 (local.get $0) (local.get $1) ) ) - (func $23 (; 23 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $28 (; 28 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i8x16.eq (local.get $0) (local.get $1) ) ) - (func $24 (; 24 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $29 (; 29 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i8x16.ne (local.get $0) (local.get $1) ) ) - (func $25 (; 25 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $30 (; 30 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i8x16.lt_s (local.get $0) (local.get $1) ) ) - (func $26 (; 26 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $31 (; 31 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i8x16.lt_u (local.get $0) (local.get $1) ) ) - (func $27 (; 27 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $32 (; 32 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i8x16.gt_s (local.get $0) (local.get $1) ) ) - (func $28 (; 28 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $33 (; 33 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i8x16.gt_u (local.get $0) (local.get $1) ) ) - (func $29 (; 29 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $34 (; 34 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i8x16.le_s (local.get $0) (local.get $1) ) ) - (func $30 (; 30 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $35 (; 35 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i8x16.le_u (local.get $0) (local.get $1) ) ) - (func $31 (; 31 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $36 (; 36 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i8x16.ge_s (local.get $0) (local.get $1) ) ) - (func $32 (; 32 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $37 (; 37 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i8x16.ge_u (local.get $0) (local.get $1) ) ) - (func $33 (; 33 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $38 (; 38 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i16x8.eq (local.get $0) (local.get $1) ) ) - (func $34 (; 34 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $39 (; 39 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i16x8.ne (local.get $0) (local.get $1) ) ) - (func $35 (; 35 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $40 (; 40 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i16x8.lt_s (local.get $0) (local.get $1) ) ) - (func $36 (; 36 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $41 (; 41 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i16x8.lt_u (local.get $0) (local.get $1) ) ) - (func $37 (; 37 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $42 (; 42 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i16x8.gt_s (local.get $0) (local.get $1) ) ) - (func $38 (; 38 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $43 (; 43 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i16x8.gt_u (local.get $0) (local.get $1) ) ) - (func $39 (; 39 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $44 (; 44 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i16x8.le_s (local.get $0) (local.get $1) ) ) - (func $40 (; 40 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $45 (; 45 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i16x8.le_u (local.get $0) (local.get $1) ) ) - (func $41 (; 41 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $46 (; 46 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i16x8.ge_s (local.get $0) (local.get $1) ) ) - (func $42 (; 42 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $47 (; 47 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i16x8.ge_u (local.get $0) (local.get $1) ) ) - (func $43 (; 43 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $48 (; 48 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i32x4.eq (local.get $0) (local.get $1) ) ) - (func $44 (; 44 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $49 (; 49 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i32x4.ne (local.get $0) (local.get $1) ) ) - (func $45 (; 45 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $50 (; 50 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i32x4.lt_s (local.get $0) (local.get $1) ) ) - (func $46 (; 46 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $51 (; 51 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i32x4.lt_u (local.get $0) (local.get $1) ) ) - (func $47 (; 47 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $52 (; 52 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i32x4.gt_s (local.get $0) (local.get $1) ) ) - (func $48 (; 48 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $53 (; 53 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i32x4.gt_u (local.get $0) (local.get $1) ) ) - (func $49 (; 49 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $54 (; 54 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i32x4.le_s (local.get $0) (local.get $1) ) ) - (func $50 (; 50 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $55 (; 55 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i32x4.le_u (local.get $0) (local.get $1) ) ) - (func $51 (; 51 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $56 (; 56 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i32x4.ge_s (local.get $0) (local.get $1) ) ) - (func $52 (; 52 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $57 (; 57 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i32x4.ge_u (local.get $0) (local.get $1) ) ) - (func $53 (; 53 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $58 (; 58 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (f32x4.eq (local.get $0) (local.get $1) ) ) - (func $54 (; 54 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $59 (; 59 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (f32x4.ne (local.get $0) (local.get $1) ) ) - (func $55 (; 55 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $60 (; 60 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (f32x4.lt (local.get $0) (local.get $1) ) ) - (func $56 (; 56 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $61 (; 61 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (f32x4.gt (local.get $0) (local.get $1) ) ) - (func $57 (; 57 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $62 (; 62 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (f32x4.le (local.get $0) (local.get $1) ) ) - (func $58 (; 58 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $63 (; 63 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (f32x4.ge (local.get $0) (local.get $1) ) ) - (func $59 (; 59 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $64 (; 64 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (f64x2.eq (local.get $0) (local.get $1) ) ) - (func $60 (; 60 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $65 (; 65 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (f64x2.ne (local.get $0) (local.get $1) ) ) - (func $61 (; 61 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $66 (; 66 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (f64x2.lt (local.get $0) (local.get $1) ) ) - (func $62 (; 62 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $67 (; 67 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (f64x2.gt (local.get $0) (local.get $1) ) ) - (func $63 (; 63 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $68 (; 68 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (f64x2.le (local.get $0) (local.get $1) ) ) - (func $64 (; 64 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $69 (; 69 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (f64x2.ge (local.get $0) (local.get $1) ) ) - (func $65 (; 65 ;) (type $14) (param $0 v128) (result v128) + (func $70 (; 70 ;) (type $14) (param $0 v128) (result v128) (v128.not (local.get $0) ) ) - (func $66 (; 66 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $71 (; 71 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (v128.and (local.get $0) (local.get $1) ) ) - (func $67 (; 67 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $72 (; 72 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (v128.or (local.get $0) (local.get $1) ) ) - (func $68 (; 68 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $73 (; 73 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (v128.xor (local.get $0) (local.get $1) ) ) - (func $69 (; 69 ;) (type $15) (param $0 v128) (param $1 v128) (param $2 v128) (result v128) + (func $74 (; 74 ;) (type $15) (param $0 v128) (param $1 v128) (param $2 v128) (result v128) (v128.bitselect (local.get $0) (local.get $1) (local.get $2) ) ) - (func $70 (; 70 ;) (type $14) (param $0 v128) (result v128) + (func $75 (; 75 ;) (type $14) (param $0 v128) (result v128) (i8x16.neg (local.get $0) ) ) - (func $71 (; 71 ;) (type $4) (param $0 v128) (result i32) + (func $76 (; 76 ;) (type $4) (param $0 v128) (result i32) (i8x16.any_true (local.get $0) ) ) - (func $72 (; 72 ;) (type $4) (param $0 v128) (result i32) + (func $77 (; 77 ;) (type $4) (param $0 v128) (result i32) (i8x16.all_true (local.get $0) ) ) - (func $73 (; 73 ;) (type $5) (param $0 v128) (param $1 i32) (result v128) + (func $78 (; 78 ;) (type $5) (param $0 v128) (param $1 i32) (result v128) (i8x16.shl (local.get $0) (local.get $1) ) ) - (func $74 (; 74 ;) (type $5) (param $0 v128) (param $1 i32) (result v128) + (func $79 (; 79 ;) (type $5) (param $0 v128) (param $1 i32) (result v128) (i8x16.shr_s (local.get $0) (local.get $1) ) ) - (func $75 (; 75 ;) (type $5) (param $0 v128) (param $1 i32) (result v128) + (func $80 (; 80 ;) (type $5) (param $0 v128) (param $1 i32) (result v128) (i8x16.shr_u (local.get $0) (local.get $1) ) ) - (func $76 (; 76 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $81 (; 81 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i8x16.add (local.get $0) (local.get $1) ) ) - (func $77 (; 77 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $82 (; 82 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i8x16.add_saturate_s (local.get $0) (local.get $1) ) ) - (func $78 (; 78 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $83 (; 83 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i8x16.add_saturate_u (local.get $0) (local.get $1) ) ) - (func $79 (; 79 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $84 (; 84 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i8x16.sub (local.get $0) (local.get $1) ) ) - (func $80 (; 80 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $85 (; 85 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i8x16.sub_saturate_s (local.get $0) (local.get $1) ) ) - (func $81 (; 81 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $86 (; 86 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i8x16.sub_saturate_u (local.get $0) (local.get $1) ) ) - (func $82 (; 82 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $87 (; 87 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i8x16.mul (local.get $0) (local.get $1) ) ) - (func $83 (; 83 ;) (type $14) (param $0 v128) (result v128) + (func $88 (; 88 ;) (type $14) (param $0 v128) (result v128) (i16x8.neg (local.get $0) ) ) - (func $84 (; 84 ;) (type $4) (param $0 v128) (result i32) + (func $89 (; 89 ;) (type $4) (param $0 v128) (result i32) (i16x8.any_true (local.get $0) ) ) - (func $85 (; 85 ;) (type $4) (param $0 v128) (result i32) + (func $90 (; 90 ;) (type $4) (param $0 v128) (result i32) (i16x8.all_true (local.get $0) ) ) - (func $86 (; 86 ;) (type $5) (param $0 v128) (param $1 i32) (result v128) + (func $91 (; 91 ;) (type $5) (param $0 v128) (param $1 i32) (result v128) (i16x8.shl (local.get $0) (local.get $1) ) ) - (func $87 (; 87 ;) (type $5) (param $0 v128) (param $1 i32) (result v128) + (func $92 (; 92 ;) (type $5) (param $0 v128) (param $1 i32) (result v128) (i16x8.shr_s (local.get $0) (local.get $1) ) ) - (func $88 (; 88 ;) (type $5) (param $0 v128) (param $1 i32) (result v128) + (func $93 (; 93 ;) (type $5) (param $0 v128) (param $1 i32) (result v128) (i16x8.shr_u (local.get $0) (local.get $1) ) ) - (func $89 (; 89 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $94 (; 94 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i16x8.add (local.get $0) (local.get $1) ) ) - (func $90 (; 90 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $95 (; 95 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i16x8.add_saturate_s (local.get $0) (local.get $1) ) ) - (func $91 (; 91 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $96 (; 96 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i16x8.add_saturate_u (local.get $0) (local.get $1) ) ) - (func $92 (; 92 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $97 (; 97 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i16x8.sub (local.get $0) (local.get $1) ) ) - (func $93 (; 93 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $98 (; 98 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i16x8.sub_saturate_s (local.get $0) (local.get $1) ) ) - (func $94 (; 94 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $99 (; 99 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i16x8.sub_saturate_u (local.get $0) (local.get $1) ) ) - (func $95 (; 95 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $100 (; 100 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i16x8.mul (local.get $0) (local.get $1) ) ) - (func $96 (; 96 ;) (type $14) (param $0 v128) (result v128) + (func $101 (; 101 ;) (type $14) (param $0 v128) (result v128) (i32x4.neg (local.get $0) ) ) - (func $97 (; 97 ;) (type $4) (param $0 v128) (result i32) + (func $102 (; 102 ;) (type $4) (param $0 v128) (result i32) (i32x4.any_true (local.get $0) ) ) - (func $98 (; 98 ;) (type $4) (param $0 v128) (result i32) + (func $103 (; 103 ;) (type $4) (param $0 v128) (result i32) (i32x4.all_true (local.get $0) ) ) - (func $99 (; 99 ;) (type $5) (param $0 v128) (param $1 i32) (result v128) + (func $104 (; 104 ;) (type $5) (param $0 v128) (param $1 i32) (result v128) (i32x4.shl (local.get $0) (local.get $1) ) ) - (func $100 (; 100 ;) (type $5) (param $0 v128) (param $1 i32) (result v128) + (func $105 (; 105 ;) (type $5) (param $0 v128) (param $1 i32) (result v128) (i32x4.shr_s (local.get $0) (local.get $1) ) ) - (func $101 (; 101 ;) (type $5) (param $0 v128) (param $1 i32) (result v128) + (func $106 (; 106 ;) (type $5) (param $0 v128) (param $1 i32) (result v128) (i32x4.shr_u (local.get $0) (local.get $1) ) ) - (func $102 (; 102 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $107 (; 107 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i32x4.add (local.get $0) (local.get $1) ) ) - (func $103 (; 103 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $108 (; 108 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i32x4.sub (local.get $0) (local.get $1) ) ) - (func $104 (; 104 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $109 (; 109 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i32x4.mul (local.get $0) (local.get $1) ) ) - (func $105 (; 105 ;) (type $14) (param $0 v128) (result v128) + (func $110 (; 110 ;) (type $14) (param $0 v128) (result v128) (i64x2.neg (local.get $0) ) ) - (func $106 (; 106 ;) (type $4) (param $0 v128) (result i32) + (func $111 (; 111 ;) (type $4) (param $0 v128) (result i32) (i64x2.any_true (local.get $0) ) ) - (func $107 (; 107 ;) (type $4) (param $0 v128) (result i32) + (func $112 (; 112 ;) (type $4) (param $0 v128) (result i32) (i64x2.all_true (local.get $0) ) ) - (func $108 (; 108 ;) (type $5) (param $0 v128) (param $1 i32) (result v128) + (func $113 (; 113 ;) (type $5) (param $0 v128) (param $1 i32) (result v128) (i64x2.shl (local.get $0) (local.get $1) ) ) - (func $109 (; 109 ;) (type $5) (param $0 v128) (param $1 i32) (result v128) + (func $114 (; 114 ;) (type $5) (param $0 v128) (param $1 i32) (result v128) (i64x2.shr_s (local.get $0) (local.get $1) ) ) - (func $110 (; 110 ;) (type $5) (param $0 v128) (param $1 i32) (result v128) + (func $115 (; 115 ;) (type $5) (param $0 v128) (param $1 i32) (result v128) (i64x2.shr_u (local.get $0) (local.get $1) ) ) - (func $111 (; 111 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $116 (; 116 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i64x2.add (local.get $0) (local.get $1) ) ) - (func $112 (; 112 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $117 (; 117 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (i64x2.sub (local.get $0) (local.get $1) ) ) - (func $113 (; 113 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $118 (; 118 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (f32x4.add (local.get $0) (local.get $1) ) ) - (func $114 (; 114 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $119 (; 119 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (f32x4.sub (local.get $0) (local.get $1) ) ) - (func $115 (; 115 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $120 (; 120 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (f32x4.mul (local.get $0) (local.get $1) ) ) - (func $116 (; 116 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $121 (; 121 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (f32x4.div (local.get $0) (local.get $1) ) ) - (func $117 (; 117 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $122 (; 122 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (f32x4.min (local.get $0) (local.get $1) ) ) - (func $118 (; 118 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $123 (; 123 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (f32x4.max (local.get $0) (local.get $1) ) ) - (func $119 (; 119 ;) (type $14) (param $0 v128) (result v128) + (func $124 (; 124 ;) (type $14) (param $0 v128) (result v128) (f32x4.abs (local.get $0) ) ) - (func $120 (; 120 ;) (type $14) (param $0 v128) (result v128) + (func $125 (; 125 ;) (type $14) (param $0 v128) (result v128) (f32x4.neg (local.get $0) ) ) - (func $121 (; 121 ;) (type $14) (param $0 v128) (result v128) + (func $126 (; 126 ;) (type $14) (param $0 v128) (result v128) (f32x4.sqrt (local.get $0) ) ) - (func $122 (; 122 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $127 (; 127 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (f64x2.add (local.get $0) (local.get $1) ) ) - (func $123 (; 123 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $128 (; 128 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (f64x2.sub (local.get $0) (local.get $1) ) ) - (func $124 (; 124 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $129 (; 129 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (f64x2.mul (local.get $0) (local.get $1) ) ) - (func $125 (; 125 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $130 (; 130 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (f64x2.div (local.get $0) (local.get $1) ) ) - (func $126 (; 126 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $131 (; 131 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (f64x2.min (local.get $0) (local.get $1) ) ) - (func $127 (; 127 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) + (func $132 (; 132 ;) (type $3) (param $0 v128) (param $1 v128) (result v128) (f64x2.max (local.get $0) (local.get $1) ) ) - (func $128 (; 128 ;) (type $14) (param $0 v128) (result v128) + (func $133 (; 133 ;) (type $14) (param $0 v128) (result v128) (f64x2.abs (local.get $0) ) ) - (func $129 (; 129 ;) (type $14) (param $0 v128) (result v128) + (func $134 (; 134 ;) (type $14) (param $0 v128) (result v128) (f64x2.neg (local.get $0) ) ) - (func $130 (; 130 ;) (type $14) (param $0 v128) (result v128) + (func $135 (; 135 ;) (type $14) (param $0 v128) (result v128) (f64x2.sqrt (local.get $0) ) ) - (func $131 (; 131 ;) (type $14) (param $0 v128) (result v128) + (func $136 (; 136 ;) (type $14) (param $0 v128) (result v128) (i32x4.trunc_sat_f32x4_s (local.get $0) ) ) - (func $132 (; 132 ;) (type $14) (param $0 v128) (result v128) + (func $137 (; 137 ;) (type $14) (param $0 v128) (result v128) (i32x4.trunc_sat_f32x4_u (local.get $0) ) ) - (func $133 (; 133 ;) (type $14) (param $0 v128) (result v128) + (func $138 (; 138 ;) (type $14) (param $0 v128) (result v128) (i64x2.trunc_sat_f64x2_s (local.get $0) ) ) - (func $134 (; 134 ;) (type $14) (param $0 v128) (result v128) + (func $139 (; 139 ;) (type $14) (param $0 v128) (result v128) (i64x2.trunc_sat_f64x2_u (local.get $0) ) ) - (func $135 (; 135 ;) (type $14) (param $0 v128) (result v128) + (func $140 (; 140 ;) (type $14) (param $0 v128) (result v128) (f32x4.convert_i32x4_s (local.get $0) ) ) - (func $136 (; 136 ;) (type $14) (param $0 v128) (result v128) + (func $141 (; 141 ;) (type $14) (param $0 v128) (result v128) (f32x4.convert_i32x4_u (local.get $0) ) ) - (func $137 (; 137 ;) (type $14) (param $0 v128) (result v128) + (func $142 (; 142 ;) (type $14) (param $0 v128) (result v128) (f64x2.convert_i64x2_s (local.get $0) ) ) - (func $138 (; 138 ;) (type $14) (param $0 v128) (result v128) + (func $143 (; 143 ;) (type $14) (param $0 v128) (result v128) (f64x2.convert_i64x2_u (local.get $0) ) diff --git a/test/spec/simd.wast b/test/spec/simd.wast index 8d2edc42e..14aabee45 100644 --- a/test/spec/simd.wast +++ b/test/spec/simd.wast @@ -6,7 +6,12 @@ (v128.store offset=0 align=16 (local.get $0) (local.get $1)) (v128.load (local.get $0)) ) - (func (export "v128.const") (result v128) (v128.const i32 1 2 3 4)) + (func (export "v128.const.i8x16") (result v128) (v128.const i8x16 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16)) + (func (export "v128.const.i16x8") (result v128) (v128.const i16x8 1 2 3 4 5 6 7 8)) + (func (export "v128.const.i32x4") (result v128) (v128.const i32x4 1 2 3 4)) + (func (export "v128.const.i64x2") (result v128) (v128.const i64x2 1 2)) + (func (export "v128.const.f32x4") (result v128) (v128.const f32x4 1.0 2 3 4)) + (func (export "v128.const.f64x2") (result v128) (v128.const f64x2 1.0 2)) (func (export "v128.shuffle_interleave_bytes") (param $0 v128) (param $1 v128) (result v128) (v8x16.shuffle 0 17 2 19 4 21 6 23 8 25 10 27 12 29 14 31 (local.get $0) (local.get $1)) ) @@ -168,494 +173,499 @@ ) ;; Basic v128 manipulation -(assert_return (invoke "v128.load" (i32.const 128)) (v128.const i32 87 65 83 77 83 73 77 68 71 79 69 83 70 65 83 84)) -(assert_return (invoke "v128.store" (i32.const 16) (v128.const i32 1 2 3 4)) (v128.const i32 1 2 3 4)) -(assert_return (invoke "v128.const") (v128.const i32 01 00 00 00 02 00 00 00 03 00 00 00 04 00 00 00)) +(assert_return (invoke "v128.load" (i32.const 128)) (v128.const i8x16 87 65 83 77 83 73 77 68 71 79 69 83 70 65 83 84)) +(assert_return (invoke "v128.store" (i32.const 16) (v128.const i32x4 1 2 3 4)) (v128.const i32x4 1 2 3 4)) +(assert_return (invoke "v128.const.i8x16") (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d)) +(assert_return (invoke "v128.const.i16x8") (v128.const i8x16 01 00 02 00 03 00 04 00 05 00 06 00 07 00 08 00)) +(assert_return (invoke "v128.const.i32x4") (v128.const i8x16 01 00 00 00 02 00 00 00 03 00 00 00 04 00 00 00)) +(assert_return (invoke "v128.const.i64x2") (v128.const i8x16 01 00 00 00 00 00 00 00 02 00 00 00 00 00 00 00)) +(assert_return (invoke "v128.const.f32x4") (v128.const f32x4 1 2 3 4)) +(assert_return (invoke "v128.const.f64x2") (v128.const f64x2 1 2)) (assert_return (invoke "v128.shuffle_interleave_bytes" - (v128.const i32 1 0 3 0 5 0 7 0 9 0 11 0 13 0 15 0) - (v128.const i32 0 2 0 4 0 6 0 8 0 10 0 12 0 14 0 16) + (v128.const i8x16 1 0 3 0 5 0 7 0 9 0 11 0 13 0 15 0) + (v128.const i8x16 0 2 0 4 0 6 0 8 0 10 0 12 0 14 0 16) ) - (v128.const i32 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16) + (v128.const i8x16 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16) ) -(assert_return (invoke "v128.shuffle_reverse_i32s" (v128.const i32 1 2 3 4)) (v128.const i32 4 3 2 1)) +(assert_return (invoke "v128.shuffle_reverse_i32s" (v128.const i32x4 1 2 3 4)) (v128.const i32x4 4 3 2 1)) ;; i8x16 lane accesses -(assert_return (invoke "i8x16.splat" (i32.const 5)) (v128.const i32 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5)) -(assert_return (invoke "i8x16.splat" (i32.const 257)) (v128.const i32 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1)) -(assert_return (invoke "i8x16.extract_lane_s_first" (v128.const i32 255 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) (i32.const -1)) -(assert_return (invoke "i8x16.extract_lane_s_last" (v128.const i32 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 255)) (i32.const -1)) -(assert_return (invoke "i8x16.extract_lane_u_first" (v128.const i32 255 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) (i32.const 255)) -(assert_return (invoke "i8x16.extract_lane_u_last" (v128.const i32 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 255)) (i32.const 255)) -(assert_return (invoke "i8x16.replace_lane_first" (v128.const i64 0 0) (i32.const 7)) (v128.const i32 7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) -(assert_return (invoke "i8x16.replace_lane_last" (v128.const i64 0 0) (i32.const 7)) (v128.const i32 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7)) +(assert_return (invoke "i8x16.splat" (i32.const 5)) (v128.const i8x16 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5)) +(assert_return (invoke "i8x16.splat" (i32.const 257)) (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1)) +(assert_return (invoke "i8x16.extract_lane_s_first" (v128.const i8x16 255 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) (i32.const -1)) +(assert_return (invoke "i8x16.extract_lane_s_last" (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 255)) (i32.const -1)) +(assert_return (invoke "i8x16.extract_lane_u_first" (v128.const i8x16 255 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) (i32.const 255)) +(assert_return (invoke "i8x16.extract_lane_u_last" (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 255)) (i32.const 255)) +(assert_return (invoke "i8x16.replace_lane_first" (v128.const i64x2 0 0) (i32.const 7)) (v128.const i8x16 7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) +(assert_return (invoke "i8x16.replace_lane_last" (v128.const i64x2 0 0) (i32.const 7)) (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7)) ;; i16x8 lane accesses -(assert_return (invoke "i16x8.splat" (i32.const 5)) (v128.const i32 5 5 5 5 5 5 5 5)) -(assert_return (invoke "i16x8.splat" (i32.const 65537)) (v128.const i32 1 1 1 1 1 1 1 1)) -(assert_return (invoke "i16x8.extract_lane_s_first" (v128.const i32 65535 0 0 0 0 0 0 0)) (i32.const -1)) -(assert_return (invoke "i16x8.extract_lane_s_last" (v128.const i32 0 0 0 0 0 0 0 65535)) (i32.const -1)) -(assert_return (invoke "i16x8.extract_lane_u_first" (v128.const i32 65535 0 0 0 0 0 0 0)) (i32.const 65535)) -(assert_return (invoke "i16x8.extract_lane_u_last" (v128.const i32 0 0 0 0 0 0 0 65535)) (i32.const 65535)) -(assert_return (invoke "i16x8.replace_lane_first" (v128.const i64 0 0) (i32.const 7)) (v128.const i32 7 0 0 0 0 0 0 0)) -(assert_return (invoke "i16x8.replace_lane_last" (v128.const i64 0 0) (i32.const 7)) (v128.const i32 0 0 0 0 0 0 0 7)) +(assert_return (invoke "i16x8.splat" (i32.const 5)) (v128.const i16x8 5 5 5 5 5 5 5 5)) +(assert_return (invoke "i16x8.splat" (i32.const 65537)) (v128.const i32x4 1 1 1 1 1 1 1 1)) +(assert_return (invoke "i16x8.extract_lane_s_first" (v128.const i32x4 65535 0 0 0 0 0 0 0)) (i32.const -1)) +(assert_return (invoke "i16x8.extract_lane_s_last" (v128.const i32x4 0 0 0 0 0 0 0 65535)) (i32.const -1)) +(assert_return (invoke "i16x8.extract_lane_u_first" (v128.const i32x4 65535 0 0 0 0 0 0 0)) (i32.const 65535)) +(assert_return (invoke "i16x8.extract_lane_u_last" (v128.const i32x4 0 0 0 0 0 0 0 65535)) (i32.const 65535)) +(assert_return (invoke "i16x8.replace_lane_first" (v128.const i64x2 0 0) (i32.const 7)) (v128.const i32x4 7 0 0 0 0 0 0 0)) +(assert_return (invoke "i16x8.replace_lane_last" (v128.const i64x2 0 0) (i32.const 7)) (v128.const i32x4 0 0 0 0 0 0 0 7)) ;; i32x4 lane accesses -(assert_return (invoke "i32x4.splat" (i32.const -5)) (v128.const i32 -5 -5 -5 -5)) -(assert_return (invoke "i32x4.extract_lane_first" (v128.const i32 -5 0 0 0)) (i32.const -5)) -(assert_return (invoke "i32x4.extract_lane_last" (v128.const i32 0 0 0 -5)) (i32.const -5)) -(assert_return (invoke "i32x4.replace_lane_first" (v128.const i64 0 0) (i32.const 53)) (v128.const i32 53 0 0 0)) -(assert_return (invoke "i32x4.replace_lane_last" (v128.const i64 0 0) (i32.const 53)) (v128.const i32 0 0 0 53)) +(assert_return (invoke "i32x4.splat" (i32.const -5)) (v128.const i32x4 -5 -5 -5 -5)) +(assert_return (invoke "i32x4.extract_lane_first" (v128.const i32x4 -5 0 0 0)) (i32.const -5)) +(assert_return (invoke "i32x4.extract_lane_last" (v128.const i32x4 0 0 0 -5)) (i32.const -5)) +(assert_return (invoke "i32x4.replace_lane_first" (v128.const i64x2 0 0) (i32.const 53)) (v128.const i32x4 53 0 0 0)) +(assert_return (invoke "i32x4.replace_lane_last" (v128.const i64x2 0 0) (i32.const 53)) (v128.const i32x4 0 0 0 53)) ;; i64x2 lane accesses -(assert_return (invoke "i64x2.splat" (i64.const -5)) (v128.const i64 -5 -5)) -(assert_return (invoke "i64x2.extract_lane_first" (v128.const i64 -5 0)) (i64.const -5)) -(assert_return (invoke "i64x2.extract_lane_last" (v128.const i64 0 -5)) (i64.const -5)) -(assert_return (invoke "i64x2.replace_lane_first" (v128.const i64 0 0) (i64.const 53)) (v128.const i64 53 0)) -(assert_return (invoke "i64x2.replace_lane_last" (v128.const i64 0 0) (i64.const 53)) (v128.const i64 0 53)) +(assert_return (invoke "i64x2.splat" (i64.const -5)) (v128.const i64x2 -5 -5)) +(assert_return (invoke "i64x2.extract_lane_first" (v128.const i64x2 -5 0)) (i64.const -5)) +(assert_return (invoke "i64x2.extract_lane_last" (v128.const i64x2 0 -5)) (i64.const -5)) +(assert_return (invoke "i64x2.replace_lane_first" (v128.const i64x2 0 0) (i64.const 53)) (v128.const i64x2 53 0)) +(assert_return (invoke "i64x2.replace_lane_last" (v128.const i64x2 0 0) (i64.const 53)) (v128.const i64x2 0 53)) ;; f32x4 lane accesses -(assert_return (invoke "f32x4.splat" (f32.const -5)) (v128.const f32 -5 -5 -5 -5)) -(assert_return (invoke "f32x4.extract_lane_first" (v128.const f32 -5 0 0 0)) (f32.const -5)) -(assert_return (invoke "f32x4.extract_lane_last" (v128.const f32 0 0 0 -5)) (f32.const -5)) -(assert_return (invoke "f32x4.replace_lane_first" (v128.const i64 0 0) (f32.const 53)) (v128.const f32 53 0 0 0)) -(assert_return (invoke "f32x4.replace_lane_last" (v128.const i64 0 0) (f32.const 53)) (v128.const f32 0 0 0 53)) +(assert_return (invoke "f32x4.splat" (f32.const -5)) (v128.const f32x4 -5 -5 -5 -5)) +(assert_return (invoke "f32x4.extract_lane_first" (v128.const f32x4 -5 0 0 0)) (f32.const -5)) +(assert_return (invoke "f32x4.extract_lane_last" (v128.const f32x4 0 0 0 -5)) (f32.const -5)) +(assert_return (invoke "f32x4.replace_lane_first" (v128.const i64x2 0 0) (f32.const 53)) (v128.const f32x4 53 0 0 0)) +(assert_return (invoke "f32x4.replace_lane_last" (v128.const i64x2 0 0) (f32.const 53)) (v128.const f32x4 0 0 0 53)) ;; f64x2 lane accesses -(assert_return (invoke "f64x2.splat" (f64.const -5)) (v128.const f64 -5 -5)) -(assert_return (invoke "f64x2.extract_lane_first" (v128.const f64 -5 0)) (f64.const -5)) -(assert_return (invoke "f64x2.extract_lane_last" (v128.const f64 0 -5)) (f64.const -5)) -(assert_return (invoke "f64x2.replace_lane_first" (v128.const f64 0 0) (f64.const 53)) (v128.const f64 53 0)) -(assert_return (invoke "f64x2.replace_lane_last" (v128.const f64 0 0) (f64.const 53)) (v128.const f64 0 53)) +(assert_return (invoke "f64x2.splat" (f64.const -5)) (v128.const f64x2 -5 -5)) +(assert_return (invoke "f64x2.extract_lane_first" (v128.const f64x2 -5 0)) (f64.const -5)) +(assert_return (invoke "f64x2.extract_lane_last" (v128.const f64x2 0 -5)) (f64.const -5)) +(assert_return (invoke "f64x2.replace_lane_first" (v128.const f64x2 0 0) (f64.const 53)) (v128.const f64x2 53 0)) +(assert_return (invoke "f64x2.replace_lane_last" (v128.const f64x2 0 0) (f64.const 53)) (v128.const f64x2 0 53)) ;; i8x16 comparisons (assert_return (invoke "i8x16.eq" - (v128.const i32 0 127 13 128 1 13 129 42 0 127 255 42 1 13 129 42) - (v128.const i32 0 255 13 42 129 127 0 128 0 255 13 42 129 127 0 128) + (v128.const i32x4 0 127 13 128 1 13 129 42 0 127 255 42 1 13 129 42) + (v128.const i32x4 0 255 13 42 129 127 0 128 0 255 13 42 129 127 0 128) ) - (v128.const i32 -1 0 -1 0 0 0 0 0 -1 0 0 -1 0 0 0 0) + (v128.const i32x4 -1 0 -1 0 0 0 0 0 -1 0 0 -1 0 0 0 0) ) (assert_return (invoke "i8x16.ne" - (v128.const i32 0 127 13 128 1 13 129 42 0 127 255 42 1 13 129 42) - (v128.const i32 0 255 13 42 129 127 0 128 0 255 13 42 129 127 0 128) + (v128.const i32x4 0 127 13 128 1 13 129 42 0 127 255 42 1 13 129 42) + (v128.const i32x4 0 255 13 42 129 127 0 128 0 255 13 42 129 127 0 128) ) - (v128.const i32 0 -1 0 -1 -1 -1 -1 -1 0 -1 -1 0 -1 -1 -1 -1) + (v128.const i32x4 0 -1 0 -1 -1 -1 -1 -1 0 -1 -1 0 -1 -1 -1 -1) ) (assert_return (invoke "i8x16.lt_s" - (v128.const i32 0 127 13 128 1 13 129 42 0 127 255 42 1 13 129 42) - (v128.const i32 0 255 13 42 129 127 0 128 0 255 13 42 129 127 0 128) + (v128.const i32x4 0 127 13 128 1 13 129 42 0 127 255 42 1 13 129 42) + (v128.const i32x4 0 255 13 42 129 127 0 128 0 255 13 42 129 127 0 128) ) - (v128.const i32 0 0 0 -1 0 -1 -1 0 0 0 -1 0 0 -1 -1 0) + (v128.const i32x4 0 0 0 -1 0 -1 -1 0 0 0 -1 0 0 -1 -1 0) ) (assert_return (invoke "i8x16.lt_u" - (v128.const i32 0 127 13 128 1 13 129 42 0 127 255 42 1 13 129 42) - (v128.const i32 0 255 13 42 129 127 0 128 0 255 13 42 129 127 0 128) + (v128.const i32x4 0 127 13 128 1 13 129 42 0 127 255 42 1 13 129 42) + (v128.const i32x4 0 255 13 42 129 127 0 128 0 255 13 42 129 127 0 128) ) - (v128.const i32 0 -1 0 0 -1 -1 0 -1 0 -1 0 0 -1 -1 0 -1) + (v128.const i32x4 0 -1 0 0 -1 -1 0 -1 0 -1 0 0 -1 -1 0 -1) ) (assert_return (invoke "i8x16.gt_s" - (v128.const i32 0 127 13 128 1 13 129 42 0 127 255 42 1 13 129 42) - (v128.const i32 0 255 13 42 129 127 0 128 0 255 13 42 129 127 0 128) + (v128.const i32x4 0 127 13 128 1 13 129 42 0 127 255 42 1 13 129 42) + (v128.const i32x4 0 255 13 42 129 127 0 128 0 255 13 42 129 127 0 128) ) - (v128.const i32 0 -1 0 0 -1 0 0 -1 0 -1 0 0 -1 0 0 -1) + (v128.const i32x4 0 -1 0 0 -1 0 0 -1 0 -1 0 0 -1 0 0 -1) ) (assert_return (invoke "i8x16.gt_u" - (v128.const i32 0 127 13 128 1 13 129 42 0 127 255 42 1 13 129 42) - (v128.const i32 0 255 13 42 129 127 0 128 0 255 13 42 129 127 0 128) + (v128.const i32x4 0 127 13 128 1 13 129 42 0 127 255 42 1 13 129 42) + (v128.const i32x4 0 255 13 42 129 127 0 128 0 255 13 42 129 127 0 128) ) - (v128.const i32 0 0 0 -1 0 0 -1 0 0 0 -1 0 0 0 -1 0) + (v128.const i32x4 0 0 0 -1 0 0 -1 0 0 0 -1 0 0 0 -1 0) ) (assert_return (invoke "i8x16.le_s" - (v128.const i32 0 127 13 128 1 13 129 42 0 127 255 42 1 13 129 42) - (v128.const i32 0 255 13 42 129 127 0 128 0 255 13 42 129 127 0 128) + (v128.const i32x4 0 127 13 128 1 13 129 42 0 127 255 42 1 13 129 42) + (v128.const i32x4 0 255 13 42 129 127 0 128 0 255 13 42 129 127 0 128) ) - (v128.const i32 -1 0 -1 -1 0 -1 -1 0 -1 0 -1 -1 0 -1 -1 0) + (v128.const i32x4 -1 0 -1 -1 0 -1 -1 0 -1 0 -1 -1 0 -1 -1 0) ) (assert_return (invoke "i8x16.le_u" - (v128.const i32 0 127 13 128 1 13 129 42 0 127 255 42 1 13 129 42) - (v128.const i32 0 255 13 42 129 127 0 128 0 255 13 42 129 127 0 128) + (v128.const i32x4 0 127 13 128 1 13 129 42 0 127 255 42 1 13 129 42) + (v128.const i32x4 0 255 13 42 129 127 0 128 0 255 13 42 129 127 0 128) ) - (v128.const i32 -1 -1 -1 0 -1 -1 0 -1 -1 -1 0 -1 -1 -1 0 -1) + (v128.const i32x4 -1 -1 -1 0 -1 -1 0 -1 -1 -1 0 -1 -1 -1 0 -1) ) (assert_return (invoke "i8x16.ge_s" - (v128.const i32 0 127 13 128 1 13 129 42 0 127 255 42 1 13 129 42) - (v128.const i32 0 255 13 42 129 127 0 128 0 255 13 42 129 127 0 128) + (v128.const i32x4 0 127 13 128 1 13 129 42 0 127 255 42 1 13 129 42) + (v128.const i32x4 0 255 13 42 129 127 0 128 0 255 13 42 129 127 0 128) ) - (v128.const i32 -1 -1 -1 0 -1 0 0 -1 -1 -1 0 -1 -1 0 0 -1) + (v128.const i32x4 -1 -1 -1 0 -1 0 0 -1 -1 -1 0 -1 -1 0 0 -1) ) (assert_return (invoke "i8x16.ge_u" - (v128.const i32 0 127 13 128 1 13 129 42 0 127 255 42 1 13 129 42) - (v128.const i32 0 255 13 42 129 127 0 128 0 255 13 42 129 127 0 128) + (v128.const i32x4 0 127 13 128 1 13 129 42 0 127 255 42 1 13 129 42) + (v128.const i32x4 0 255 13 42 129 127 0 128 0 255 13 42 129 127 0 128) ) - (v128.const i32 -1 0 -1 -1 0 0 -1 0 -1 0 -1 -1 0 0 -1 0) + (v128.const i32x4 -1 0 -1 -1 0 0 -1 0 -1 0 -1 -1 0 0 -1 0) ) ;; i16x8 comparisons (assert_return (invoke "i16x8.eq" - (v128.const i32 0 32767 13 32768 1 32769 42 40000) - (v128.const i32 0 13 1 32767 32769 42 40000 32767) + (v128.const i32x4 0 32767 13 32768 1 32769 42 40000) + (v128.const i32x4 0 13 1 32767 32769 42 40000 32767) ) - (v128.const i32 -1 0 0 0 0 0 0 0) + (v128.const i32x4 -1 0 0 0 0 0 0 0) ) (assert_return (invoke "i16x8.ne" - (v128.const i32 0 32767 13 32768 1 32769 42 40000) - (v128.const i32 0 13 1 32767 32769 42 40000 32767) + (v128.const i32x4 0 32767 13 32768 1 32769 42 40000) + (v128.const i32x4 0 13 1 32767 32769 42 40000 32767) ) - (v128.const i32 0 -1 -1 -1 -1 -1 -1 -1) + (v128.const i32x4 0 -1 -1 -1 -1 -1 -1 -1) ) (assert_return (invoke "i16x8.lt_s" - (v128.const i32 0 32767 13 32768 1 32769 42 40000) - (v128.const i32 0 13 1 32767 32769 42 40000 32767) + (v128.const i32x4 0 32767 13 32768 1 32769 42 40000) + (v128.const i32x4 0 13 1 32767 32769 42 40000 32767) ) - (v128.const i32 0 0 0 -1 0 -1 0 -1) + (v128.const i32x4 0 0 0 -1 0 -1 0 -1) ) (assert_return (invoke "i16x8.lt_u" - (v128.const i32 0 32767 13 32768 1 32769 42 40000) - (v128.const i32 0 13 1 32767 32769 42 40000 32767) + (v128.const i32x4 0 32767 13 32768 1 32769 42 40000) + (v128.const i32x4 0 13 1 32767 32769 42 40000 32767) ) - (v128.const i32 0 0 0 0 -1 0 -1 0) + (v128.const i32x4 0 0 0 0 -1 0 -1 0) ) (assert_return (invoke "i16x8.gt_s" - (v128.const i32 0 32767 13 32768 1 32769 42 40000) - (v128.const i32 0 13 1 32767 32769 42 40000 32767) + (v128.const i32x4 0 32767 13 32768 1 32769 42 40000) + (v128.const i32x4 0 13 1 32767 32769 42 40000 32767) ) - (v128.const i32 0 -1 -1 0 -1 0 -1 0) + (v128.const i32x4 0 -1 -1 0 -1 0 -1 0) ) (assert_return (invoke "i16x8.gt_u" - (v128.const i32 0 32767 13 32768 1 32769 42 40000) - (v128.const i32 0 13 1 32767 32769 42 40000 32767) + (v128.const i32x4 0 32767 13 32768 1 32769 42 40000) + (v128.const i32x4 0 13 1 32767 32769 42 40000 32767) ) - (v128.const i32 0 -1 -1 -1 0 -1 0 -1) + (v128.const i32x4 0 -1 -1 -1 0 -1 0 -1) ) (assert_return (invoke "i16x8.le_s" - (v128.const i32 0 32767 13 32768 1 32769 42 40000) - (v128.const i32 0 13 1 32767 32769 42 40000 32767) + (v128.const i32x4 0 32767 13 32768 1 32769 42 40000) + (v128.const i32x4 0 13 1 32767 32769 42 40000 32767) ) - (v128.const i32 -1 0 0 -1 0 -1 0 -1) + (v128.const i32x4 -1 0 0 -1 0 -1 0 -1) ) (assert_return (invoke "i16x8.le_u" - (v128.const i32 0 32767 13 32768 1 32769 42 40000) - (v128.const i32 0 13 1 32767 32769 42 40000 32767) + (v128.const i32x4 0 32767 13 32768 1 32769 42 40000) + (v128.const i32x4 0 13 1 32767 32769 42 40000 32767) ) - (v128.const i32 -1 0 0 0 -1 0 -1 0) + (v128.const i32x4 -1 0 0 0 -1 0 -1 0) ) (assert_return (invoke "i16x8.ge_s" - (v128.const i32 0 32767 13 32768 1 32769 42 40000) - (v128.const i32 0 13 1 32767 32769 42 40000 32767) + (v128.const i32x4 0 32767 13 32768 1 32769 42 40000) + (v128.const i32x4 0 13 1 32767 32769 42 40000 32767) ) - (v128.const i32 -1 -1 -1 0 -1 0 -1 0) + (v128.const i32x4 -1 -1 -1 0 -1 0 -1 0) ) (assert_return (invoke "i16x8.ge_u" - (v128.const i32 0 32767 13 32768 1 32769 42 40000) - (v128.const i32 0 13 1 32767 32769 42 40000 32767) + (v128.const i32x4 0 32767 13 32768 1 32769 42 40000) + (v128.const i32x4 0 13 1 32767 32769 42 40000 32767) ) - (v128.const i32 -1 -1 -1 -1 0 -1 0 -1) + (v128.const i32x4 -1 -1 -1 -1 0 -1 0 -1) ) ;; i32x4 comparisons -(assert_return (invoke "i32x4.eq" (v128.const i32 0 -1 53 -7) (v128.const i32 0 53 -7 -1)) (v128.const i32 -1 0 0 0)) -(assert_return (invoke "i32x4.ne" (v128.const i32 0 -1 53 -7) (v128.const i32 0 53 -7 -1)) (v128.const i32 0 -1 -1 -1)) -(assert_return (invoke "i32x4.lt_s" (v128.const i32 0 -1 53 -7) (v128.const i32 0 53 -7 -1)) (v128.const i32 0 -1 0 -1)) -(assert_return (invoke "i32x4.lt_u" (v128.const i32 0 -1 53 -7) (v128.const i32 0 53 -7 -1)) (v128.const i32 0 0 -1 -1)) -(assert_return (invoke "i32x4.gt_s" (v128.const i32 0 -1 53 -7) (v128.const i32 0 53 -7 -1)) (v128.const i32 0 0 -1 0)) -(assert_return (invoke "i32x4.gt_u" (v128.const i32 0 -1 53 -7) (v128.const i32 0 53 -7 -1)) (v128.const i32 0 -1 0 0)) -(assert_return (invoke "i32x4.le_s" (v128.const i32 0 -1 53 -7) (v128.const i32 0 53 -7 -1)) (v128.const i32 -1 -1 0 -1)) -(assert_return (invoke "i32x4.le_u" (v128.const i32 0 -1 53 -7) (v128.const i32 0 53 -7 -1)) (v128.const i32 -1 0 -1 -1)) -(assert_return (invoke "i32x4.ge_s" (v128.const i32 0 -1 53 -7) (v128.const i32 0 53 -7 -1)) (v128.const i32 -1 0 -1 0)) -(assert_return (invoke "i32x4.ge_u" (v128.const i32 0 -1 53 -7) (v128.const i32 0 53 -7 -1)) (v128.const i32 -1 -1 0 0)) +(assert_return (invoke "i32x4.eq" (v128.const i32x4 0 -1 53 -7) (v128.const i32x4 0 53 -7 -1)) (v128.const i32x4 -1 0 0 0)) +(assert_return (invoke "i32x4.ne" (v128.const i32x4 0 -1 53 -7) (v128.const i32x4 0 53 -7 -1)) (v128.const i32x4 0 -1 -1 -1)) +(assert_return (invoke "i32x4.lt_s" (v128.const i32x4 0 -1 53 -7) (v128.const i32x4 0 53 -7 -1)) (v128.const i32x4 0 -1 0 -1)) +(assert_return (invoke "i32x4.lt_u" (v128.const i32x4 0 -1 53 -7) (v128.const i32x4 0 53 -7 -1)) (v128.const i32x4 0 0 -1 -1)) +(assert_return (invoke "i32x4.gt_s" (v128.const i32x4 0 -1 53 -7) (v128.const i32x4 0 53 -7 -1)) (v128.const i32x4 0 0 -1 0)) +(assert_return (invoke "i32x4.gt_u" (v128.const i32x4 0 -1 53 -7) (v128.const i32x4 0 53 -7 -1)) (v128.const i32x4 0 -1 0 0)) +(assert_return (invoke "i32x4.le_s" (v128.const i32x4 0 -1 53 -7) (v128.const i32x4 0 53 -7 -1)) (v128.const i32x4 -1 -1 0 -1)) +(assert_return (invoke "i32x4.le_u" (v128.const i32x4 0 -1 53 -7) (v128.const i32x4 0 53 -7 -1)) (v128.const i32x4 -1 0 -1 -1)) +(assert_return (invoke "i32x4.ge_s" (v128.const i32x4 0 -1 53 -7) (v128.const i32x4 0 53 -7 -1)) (v128.const i32x4 -1 0 -1 0)) +(assert_return (invoke "i32x4.ge_u" (v128.const i32x4 0 -1 53 -7) (v128.const i32x4 0 53 -7 -1)) (v128.const i32x4 -1 -1 0 0)) ;; f32x4 comparisons -(assert_return (invoke "f32x4.eq" (v128.const f32 0 -1 1 0) (v128.const f32 0 0 -1 1)) (v128.const i32 -1 0 0 0)) -(assert_return (invoke "f32x4.ne" (v128.const f32 0 -1 1 0) (v128.const f32 0 0 -1 1)) (v128.const i32 0 -1 -1 -1)) -(assert_return (invoke "f32x4.lt" (v128.const f32 0 -1 1 0) (v128.const f32 0 0 -1 1)) (v128.const i32 0 -1 0 -1)) -(assert_return (invoke "f32x4.gt" (v128.const f32 0 -1 1 0) (v128.const f32 0 0 -1 1)) (v128.const i32 0 0 -1 0)) -(assert_return (invoke "f32x4.le" (v128.const f32 0 -1 1 0) (v128.const f32 0 0 -1 1)) (v128.const i32 -1 -1 0 -1)) -(assert_return (invoke "f32x4.ge" (v128.const f32 0 -1 1 0) (v128.const f32 0 0 -1 1)) (v128.const i32 -1 0 -1 0)) -(assert_return (invoke "f32x4.eq" (v128.const f32 nan 0 nan infinity) (v128.const f32 0 nan nan infinity)) (v128.const i32 0 0 0 -1)) -(assert_return (invoke "f32x4.ne" (v128.const f32 nan 0 nan infinity) (v128.const f32 0 nan nan infinity)) (v128.const i32 -1 -1 -1 0)) -(assert_return (invoke "f32x4.lt" (v128.const f32 nan 0 nan infinity) (v128.const f32 0 nan nan infinity)) (v128.const i32 0 0 0 0)) -(assert_return (invoke "f32x4.gt" (v128.const f32 nan 0 nan infinity) (v128.const f32 0 nan nan infinity)) (v128.const i32 0 0 0 0)) -(assert_return (invoke "f32x4.le" (v128.const f32 nan 0 nan infinity) (v128.const f32 0 nan nan infinity)) (v128.const i32 0 0 0 -1)) -(assert_return (invoke "f32x4.ge" (v128.const f32 nan 0 nan infinity) (v128.const f32 0 nan nan infinity)) (v128.const i32 0 0 0 -1)) -(assert_return (invoke "f32x4.eq" (v128.const f32 -infinity 0 nan -infinity) (v128.const f32 0 infinity infinity nan)) (v128.const i32 0 0 0 0)) -(assert_return (invoke "f32x4.ne" (v128.const f32 -infinity 0 nan -infinity) (v128.const f32 0 infinity infinity nan)) (v128.const i32 -1 -1 -1 -1)) -(assert_return (invoke "f32x4.lt" (v128.const f32 -infinity 0 nan -infinity) (v128.const f32 0 infinity infinity nan)) (v128.const i32 -1 -1 0 0)) -(assert_return (invoke "f32x4.gt" (v128.const f32 -infinity 0 nan -infinity) (v128.const f32 0 infinity infinity nan)) (v128.const i32 0 0 0 0)) -(assert_return (invoke "f32x4.le" (v128.const f32 -infinity 0 nan -infinity) (v128.const f32 0 infinity infinity nan)) (v128.const i32 -1 -1 0 0)) -(assert_return (invoke "f32x4.ge" (v128.const f32 -infinity 0 nan -infinity) (v128.const f32 0 infinity infinity nan)) (v128.const i32 0 0 0 0)) +(assert_return (invoke "f32x4.eq" (v128.const f32x4 0 -1 1 0) (v128.const f32x4 0 0 -1 1)) (v128.const i32x4 -1 0 0 0)) +(assert_return (invoke "f32x4.ne" (v128.const f32x4 0 -1 1 0) (v128.const f32x4 0 0 -1 1)) (v128.const i32x4 0 -1 -1 -1)) +(assert_return (invoke "f32x4.lt" (v128.const f32x4 0 -1 1 0) (v128.const f32x4 0 0 -1 1)) (v128.const i32x4 0 -1 0 -1)) +(assert_return (invoke "f32x4.gt" (v128.const f32x4 0 -1 1 0) (v128.const f32x4 0 0 -1 1)) (v128.const i32x4 0 0 -1 0)) +(assert_return (invoke "f32x4.le" (v128.const f32x4 0 -1 1 0) (v128.const f32x4 0 0 -1 1)) (v128.const i32x4 -1 -1 0 -1)) +(assert_return (invoke "f32x4.ge" (v128.const f32x4 0 -1 1 0) (v128.const f32x4 0 0 -1 1)) (v128.const i32x4 -1 0 -1 0)) +(assert_return (invoke "f32x4.eq" (v128.const f32x4 nan 0 nan infinity) (v128.const f32x4 0 nan nan infinity)) (v128.const i32x4 0 0 0 -1)) +(assert_return (invoke "f32x4.ne" (v128.const f32x4 nan 0 nan infinity) (v128.const f32x4 0 nan nan infinity)) (v128.const i32x4 -1 -1 -1 0)) +(assert_return (invoke "f32x4.lt" (v128.const f32x4 nan 0 nan infinity) (v128.const f32x4 0 nan nan infinity)) (v128.const i32x4 0 0 0 0)) +(assert_return (invoke "f32x4.gt" (v128.const f32x4 nan 0 nan infinity) (v128.const f32x4 0 nan nan infinity)) (v128.const i32x4 0 0 0 0)) +(assert_return (invoke "f32x4.le" (v128.const f32x4 nan 0 nan infinity) (v128.const f32x4 0 nan nan infinity)) (v128.const i32x4 0 0 0 -1)) +(assert_return (invoke "f32x4.ge" (v128.const f32x4 nan 0 nan infinity) (v128.const f32x4 0 nan nan infinity)) (v128.const i32x4 0 0 0 -1)) +(assert_return (invoke "f32x4.eq" (v128.const f32x4 -infinity 0 nan -infinity) (v128.const f32x4 0 infinity infinity nan)) (v128.const i32x4 0 0 0 0)) +(assert_return (invoke "f32x4.ne" (v128.const f32x4 -infinity 0 nan -infinity) (v128.const f32x4 0 infinity infinity nan)) (v128.const i32x4 -1 -1 -1 -1)) +(assert_return (invoke "f32x4.lt" (v128.const f32x4 -infinity 0 nan -infinity) (v128.const f32x4 0 infinity infinity nan)) (v128.const i32x4 -1 -1 0 0)) +(assert_return (invoke "f32x4.gt" (v128.const f32x4 -infinity 0 nan -infinity) (v128.const f32x4 0 infinity infinity nan)) (v128.const i32x4 0 0 0 0)) +(assert_return (invoke "f32x4.le" (v128.const f32x4 -infinity 0 nan -infinity) (v128.const f32x4 0 infinity infinity nan)) (v128.const i32x4 -1 -1 0 0)) +(assert_return (invoke "f32x4.ge" (v128.const f32x4 -infinity 0 nan -infinity) (v128.const f32x4 0 infinity infinity nan)) (v128.const i32x4 0 0 0 0)) ;; f64x2 comparisons -(assert_return (invoke "f64x2.eq" (v128.const f64 0 1) (v128.const f64 0 0)) (v128.const i64 -1 0)) -(assert_return (invoke "f64x2.ne" (v128.const f64 0 1) (v128.const f64 0 0)) (v128.const i64 0 -1)) -(assert_return (invoke "f64x2.lt" (v128.const f64 0 1) (v128.const f64 0 0)) (v128.const i64 0 0)) -(assert_return (invoke "f64x2.gt" (v128.const f64 0 1) (v128.const f64 0 0)) (v128.const i64 0 -1)) -(assert_return (invoke "f64x2.le" (v128.const f64 0 1) (v128.const f64 0 0)) (v128.const i64 -1 0)) -(assert_return (invoke "f64x2.ge" (v128.const f64 0 1) (v128.const f64 0 0)) (v128.const i64 -1 -1)) -(assert_return (invoke "f64x2.eq" (v128.const f64 nan 0) (v128.const f64 infinity infinity)) (v128.const i64 0 0)) -(assert_return (invoke "f64x2.ne" (v128.const f64 nan 0) (v128.const f64 infinity infinity)) (v128.const i64 -1 -1)) -(assert_return (invoke "f64x2.lt" (v128.const f64 nan 0) (v128.const f64 infinity infinity)) (v128.const i64 0 -1)) -(assert_return (invoke "f64x2.gt" (v128.const f64 nan 0) (v128.const f64 infinity infinity)) (v128.const i64 0 0)) -(assert_return (invoke "f64x2.le" (v128.const f64 nan 0) (v128.const f64 infinity infinity)) (v128.const i64 0 -1)) -(assert_return (invoke "f64x2.ge" (v128.const f64 nan 0) (v128.const f64 infinity infinity)) (v128.const i64 0 0)) +(assert_return (invoke "f64x2.eq" (v128.const f64x2 0 1) (v128.const f64x2 0 0)) (v128.const i64x2 -1 0)) +(assert_return (invoke "f64x2.ne" (v128.const f64x2 0 1) (v128.const f64x2 0 0)) (v128.const i64x2 0 -1)) +(assert_return (invoke "f64x2.lt" (v128.const f64x2 0 1) (v128.const f64x2 0 0)) (v128.const i64x2 0 0)) +(assert_return (invoke "f64x2.gt" (v128.const f64x2 0 1) (v128.const f64x2 0 0)) (v128.const i64x2 0 -1)) +(assert_return (invoke "f64x2.le" (v128.const f64x2 0 1) (v128.const f64x2 0 0)) (v128.const i64x2 -1 0)) +(assert_return (invoke "f64x2.ge" (v128.const f64x2 0 1) (v128.const f64x2 0 0)) (v128.const i64x2 -1 -1)) +(assert_return (invoke "f64x2.eq" (v128.const f64x2 nan 0) (v128.const f64x2 infinity infinity)) (v128.const i64x2 0 0)) +(assert_return (invoke "f64x2.ne" (v128.const f64x2 nan 0) (v128.const f64x2 infinity infinity)) (v128.const i64x2 -1 -1)) +(assert_return (invoke "f64x2.lt" (v128.const f64x2 nan 0) (v128.const f64x2 infinity infinity)) (v128.const i64x2 0 -1)) +(assert_return (invoke "f64x2.gt" (v128.const f64x2 nan 0) (v128.const f64x2 infinity infinity)) (v128.const i64x2 0 0)) +(assert_return (invoke "f64x2.le" (v128.const f64x2 nan 0) (v128.const f64x2 infinity infinity)) (v128.const i64x2 0 -1)) +(assert_return (invoke "f64x2.ge" (v128.const f64x2 nan 0) (v128.const f64x2 infinity infinity)) (v128.const i64x2 0 0)) ;; bitwise operations -(assert_return (invoke "v128.not" (v128.const i32 0 -1 0 -1)) (v128.const i32 -1 0 -1 0)) -(assert_return (invoke "v128.and" (v128.const i32 0 0 -1 -1) (v128.const i32 0 -1 0 -1)) (v128.const i32 0 0 0 -1)) -(assert_return (invoke "v128.or" (v128.const i32 0 0 -1 -1) (v128.const i32 0 -1 0 -1)) (v128.const i32 0 -1 -1 -1)) -(assert_return (invoke "v128.xor" (v128.const i32 0 0 -1 -1) (v128.const i32 0 -1 0 -1)) (v128.const i32 0 -1 -1 0)) +(assert_return (invoke "v128.not" (v128.const i32x4 0 -1 0 -1)) (v128.const i32x4 -1 0 -1 0)) +(assert_return (invoke "v128.and" (v128.const i32x4 0 0 -1 -1) (v128.const i32x4 0 -1 0 -1)) (v128.const i32x4 0 0 0 -1)) +(assert_return (invoke "v128.or" (v128.const i32x4 0 0 -1 -1) (v128.const i32x4 0 -1 0 -1)) (v128.const i32x4 0 -1 -1 -1)) +(assert_return (invoke "v128.xor" (v128.const i32x4 0 0 -1 -1) (v128.const i32x4 0 -1 0 -1)) (v128.const i32x4 0 -1 -1 0)) (assert_return (invoke "v128.bitselect" - (v128.const i32 0xAAAAAAAA 0xAAAAAAAA 0xAAAAAAAA 0xAAAAAAAA) - (v128.const i32 0xBBBBBBBB 0xBBBBBBBB 0xBBBBBBBB 0xBBBBBBBB) - (v128.const i32 0xF0F0F0F0 0xFFFFFFFF 0x00000000 0xFF00FF00) + (v128.const i32x4 0xAAAAAAAA 0xAAAAAAAA 0xAAAAAAAA 0xAAAAAAAA) + (v128.const i32x4 0xBBBBBBBB 0xBBBBBBBB 0xBBBBBBBB 0xBBBBBBBB) + (v128.const i32x4 0xF0F0F0F0 0xFFFFFFFF 0x00000000 0xFF00FF00) ) - (v128.const i32 0xABABABAB 0xAAAAAAAA 0xBBBBBBBB 0xAABBAABB) + (v128.const i32x4 0xABABABAB 0xAAAAAAAA 0xBBBBBBBB 0xAABBAABB) ) ;; i8x16 arithmetic -(assert_return (invoke "i8x16.neg" (v128.const i32 0 1 42 -3 -56 127 -128 -126 0 -1 -42 3 56 -127 -128 126)) - (v128.const i32 0 -1 -42 3 56 -127 -128 126 0 1 42 -3 -56 127 -128 -126) +(assert_return (invoke "i8x16.neg" (v128.const i32x4 0 1 42 -3 -56 127 -128 -126 0 -1 -42 3 56 -127 -128 126)) + (v128.const i32x4 0 -1 -42 3 56 -127 -128 126 0 1 42 -3 -56 127 -128 -126) ) -(assert_return (invoke "i8x16.any_true" (v128.const i32 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) (i32.const 0)) -(assert_return (invoke "i8x16.any_true" (v128.const i32 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0)) (i32.const 1)) -(assert_return (invoke "i8x16.any_true" (v128.const i32 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1)) (i32.const 1)) -(assert_return (invoke "i8x16.any_true" (v128.const i32 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1)) (i32.const 1)) -(assert_return (invoke "i8x16.all_true" (v128.const i32 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) (i32.const 0)) -(assert_return (invoke "i8x16.all_true" (v128.const i32 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0)) (i32.const 0)) -(assert_return (invoke "i8x16.all_true" (v128.const i32 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1)) (i32.const 0)) -(assert_return (invoke "i8x16.all_true" (v128.const i32 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1)) (i32.const 1)) -(assert_return (invoke "i8x16.shl" (v128.const i32 0 1 2 4 8 16 32 64 -128 3 6 12 24 48 96 -64) (i32.const 1)) - (v128.const i32 0 2 4 8 16 32 64 -128 0 6 12 24 48 96 -64 -128) +(assert_return (invoke "i8x16.any_true" (v128.const i32x4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) (i32.const 0)) +(assert_return (invoke "i8x16.any_true" (v128.const i32x4 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0)) (i32.const 1)) +(assert_return (invoke "i8x16.any_true" (v128.const i32x4 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1)) (i32.const 1)) +(assert_return (invoke "i8x16.any_true" (v128.const i32x4 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1)) (i32.const 1)) +(assert_return (invoke "i8x16.all_true" (v128.const i32x4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) (i32.const 0)) +(assert_return (invoke "i8x16.all_true" (v128.const i32x4 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0)) (i32.const 0)) +(assert_return (invoke "i8x16.all_true" (v128.const i32x4 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1)) (i32.const 0)) +(assert_return (invoke "i8x16.all_true" (v128.const i32x4 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1)) (i32.const 1)) +(assert_return (invoke "i8x16.shl" (v128.const i32x4 0 1 2 4 8 16 32 64 -128 3 6 12 24 48 96 -64) (i32.const 1)) + (v128.const i32x4 0 2 4 8 16 32 64 -128 0 6 12 24 48 96 -64 -128) ) -(assert_return (invoke "i8x16.shl" (v128.const i32 0 1 2 4 8 16 32 64 -128 3 6 12 24 48 96 -64) (i32.const 8)) - (v128.const i32 0 1 2 4 8 16 32 64 -128 3 6 12 24 48 96 -64) +(assert_return (invoke "i8x16.shl" (v128.const i32x4 0 1 2 4 8 16 32 64 -128 3 6 12 24 48 96 -64) (i32.const 8)) + (v128.const i32x4 0 1 2 4 8 16 32 64 -128 3 6 12 24 48 96 -64) ) -(assert_return (invoke "i8x16.shr_u" (v128.const i32 0 1 2 4 8 16 32 64 -128 3 6 12 24 48 96 -64) (i32.const 1)) - (v128.const i32 0 0 1 2 4 8 16 32 64 1 3 6 12 24 48 96) +(assert_return (invoke "i8x16.shr_u" (v128.const i32x4 0 1 2 4 8 16 32 64 -128 3 6 12 24 48 96 -64) (i32.const 1)) + (v128.const i32x4 0 0 1 2 4 8 16 32 64 1 3 6 12 24 48 96) ) -(assert_return (invoke "i8x16.shr_u" (v128.const i32 0 1 2 4 8 16 32 64 -128 3 6 12 24 48 96 -64) (i32.const 8)) - (v128.const i32 0 1 2 4 8 16 32 64 -128 3 6 12 24 48 96 -64) +(assert_return (invoke "i8x16.shr_u" (v128.const i32x4 0 1 2 4 8 16 32 64 -128 3 6 12 24 48 96 -64) (i32.const 8)) + (v128.const i32x4 0 1 2 4 8 16 32 64 -128 3 6 12 24 48 96 -64) ) -(assert_return (invoke "i8x16.shr_s" (v128.const i32 0 1 2 4 8 16 32 64 -128 3 6 12 24 48 96 -64) (i32.const 1)) - (v128.const i32 0 0 1 2 4 8 16 32 -64 1 3 6 12 24 48 -32) +(assert_return (invoke "i8x16.shr_s" (v128.const i32x4 0 1 2 4 8 16 32 64 -128 3 6 12 24 48 96 -64) (i32.const 1)) + (v128.const i32x4 0 0 1 2 4 8 16 32 -64 1 3 6 12 24 48 -32) ) -(assert_return (invoke "i8x16.shr_s" (v128.const i32 0 1 2 4 8 16 32 64 -128 3 6 12 24 48 96 -64) (i32.const 8)) - (v128.const i32 0 1 2 4 8 16 32 64 -128 3 6 12 24 48 96 -64) +(assert_return (invoke "i8x16.shr_s" (v128.const i32x4 0 1 2 4 8 16 32 64 -128 3 6 12 24 48 96 -64) (i32.const 8)) + (v128.const i32x4 0 1 2 4 8 16 32 64 -128 3 6 12 24 48 96 -64) ) (assert_return (invoke "i8x16.add" - (v128.const i32 0 42 255 128 127 129 6 29 103 196 231 142 17 250 1 73) - (v128.const i32 3 231 1 128 129 6 103 17 42 29 73 42 0 255 127 142) + (v128.const i32x4 0 42 255 128 127 129 6 29 103 196 231 142 17 250 1 73) + (v128.const i32x4 3 231 1 128 129 6 103 17 42 29 73 42 0 255 127 142) ) - (v128.const i32 3 17 0 0 0 135 109 46 145 225 48 184 17 249 128 215) + (v128.const i32x4 3 17 0 0 0 135 109 46 145 225 48 184 17 249 128 215) ) (assert_return (invoke "i8x16.add_saturate_s" - (v128.const i32 0 42 255 128 127 129 6 29 103 196 231 142 17 250 1 73) - (v128.const i32 3 231 1 128 129 6 103 17 42 29 73 42 0 255 127 142) + (v128.const i32x4 0 42 255 128 127 129 6 29 103 196 231 142 17 250 1 73) + (v128.const i32x4 3 231 1 128 129 6 103 17 42 29 73 42 0 255 127 142) ) - (v128.const i32 3 17 0 128 0 135 109 46 127 225 48 184 17 249 127 215) + (v128.const i32x4 3 17 0 128 0 135 109 46 127 225 48 184 17 249 127 215) ) (assert_return (invoke "i8x16.add_saturate_u" - (v128.const i32 0 42 255 128 127 129 6 29 103 196 231 142 17 250 1 73) - (v128.const i32 3 231 1 128 129 6 103 17 42 29 73 42 0 255 127 142) + (v128.const i32x4 0 42 255 128 127 129 6 29 103 196 231 142 17 250 1 73) + (v128.const i32x4 3 231 1 128 129 6 103 17 42 29 73 42 0 255 127 142) ) - (v128.const i32 3 255 255 255 255 135 109 46 145 225 255 184 17 255 128 215) + (v128.const i32x4 3 255 255 255 255 135 109 46 145 225 255 184 17 255 128 215) ) (assert_return (invoke "i8x16.sub" - (v128.const i32 0 42 255 128 127 129 6 29 103 196 231 142 17 250 1 73) - (v128.const i32 3 231 1 128 129 6 103 17 42 29 73 42 0 255 127 142) + (v128.const i32x4 0 42 255 128 127 129 6 29 103 196 231 142 17 250 1 73) + (v128.const i32x4 3 231 1 128 129 6 103 17 42 29 73 42 0 255 127 142) ) - (v128.const i32 253 67 254 0 254 123 159 12 61 167 158 100 17 251 130 187) + (v128.const i32x4 253 67 254 0 254 123 159 12 61 167 158 100 17 251 130 187) ) (assert_return (invoke "i8x16.sub_saturate_s" - (v128.const i32 0 42 255 128 127 129 6 29 103 196 231 142 17 250 1 73) - (v128.const i32 3 231 1 128 129 6 103 17 42 29 73 42 0 255 127 142) + (v128.const i32x4 0 42 255 128 127 129 6 29 103 196 231 142 17 250 1 73) + (v128.const i32x4 3 231 1 128 129 6 103 17 42 29 73 42 0 255 127 142) ) - (v128.const i32 253 67 254 0 127 128 159 12 61 167 158 128 17 251 130 127) + (v128.const i32x4 253 67 254 0 127 128 159 12 61 167 158 128 17 251 130 127) ) (assert_return (invoke "i8x16.sub_saturate_u" - (v128.const i32 0 42 255 128 127 129 6 29 103 196 231 142 17 250 1 73) - (v128.const i32 3 231 1 128 129 6 103 17 42 29 73 42 0 255 127 142) + (v128.const i32x4 0 42 255 128 127 129 6 29 103 196 231 142 17 250 1 73) + (v128.const i32x4 3 231 1 128 129 6 103 17 42 29 73 42 0 255 127 142) ) - (v128.const i32 0 0 254 0 0 123 0 12 61 167 158 100 17 0 0 0) + (v128.const i32x4 0 0 254 0 0 123 0 12 61 167 158 100 17 0 0 0) ) (assert_return (invoke "i8x16.mul" - (v128.const i32 0 42 255 128 127 129 6 29 103 196 231 142 17 250 1 73) - (v128.const i32 3 231 1 128 129 6 103 17 42 29 73 42 0 255 127 142) + (v128.const i32x4 0 42 255 128 127 129 6 29 103 196 231 142 17 250 1 73) + (v128.const i32x4 3 231 1 128 129 6 103 17 42 29 73 42 0 255 127 142) ) - (v128.const i32 0 230 255 0 255 6 106 237 230 52 223 76 0 6 127 126) + (v128.const i32x4 0 230 255 0 255 6 106 237 230 52 223 76 0 6 127 126) ) ;; i16x8 arithmetic -(assert_return (invoke "i16x8.neg" (v128.const i32 0 1 42 -3 -56 32767 -32768 32766)) - (v128.const i32 0 -1 -42 3 56 -32767 -32768 -32766) -) -(assert_return (invoke "i16x8.any_true" (v128.const i32 0 0 0 0 0 0 0 0)) (i32.const 0)) -(assert_return (invoke "i16x8.any_true" (v128.const i32 0 0 1 0 0 0 0 0)) (i32.const 1)) -(assert_return (invoke "i16x8.any_true" (v128.const i32 1 1 1 1 1 0 1 1)) (i32.const 1)) -(assert_return (invoke "i16x8.any_true" (v128.const i32 1 1 1 1 1 1 1 1)) (i32.const 1)) -(assert_return (invoke "i16x8.all_true" (v128.const i32 0 0 0 0 0 0 0 0)) (i32.const 0)) -(assert_return (invoke "i16x8.all_true" (v128.const i32 0 0 1 0 0 0 0 0)) (i32.const 0)) -(assert_return (invoke "i16x8.all_true" (v128.const i32 1 1 1 1 1 0 1 1)) (i32.const 0)) -(assert_return (invoke "i16x8.all_true" (v128.const i32 1 1 1 1 1 1 1 1)) (i32.const 1)) -(assert_return (invoke "i16x8.shl" (v128.const i32 0 8 16 128 256 2048 4096 -32768) (i32.const 1)) (v128.const i32 0 16 32 256 512 4096 8192 0)) -(assert_return (invoke "i16x8.shl" (v128.const i32 0 8 16 128 256 2048 4096 -32768) (i32.const 16)) (v128.const i32 0 8 16 128 256 2048 4096 -32768)) -(assert_return (invoke "i16x8.shr_u" (v128.const i32 0 8 16 128 256 2048 4096 -32768) (i32.const 1)) (v128.const i32 0 4 8 64 128 1024 2048 16384)) -(assert_return (invoke "i16x8.shr_u" (v128.const i32 0 8 16 128 256 2048 4096 -32768) (i32.const 16)) (v128.const i32 0 8 16 128 256 2048 4096 -32768)) -(assert_return (invoke "i16x8.shr_s" (v128.const i32 0 8 16 128 256 2048 4096 -32768) (i32.const 1)) (v128.const i32 0 4 8 64 128 1024 2048 -16384)) -(assert_return (invoke "i16x8.shr_s" (v128.const i32 0 8 16 128 256 2048 4096 -32768) (i32.const 16)) (v128.const i32 0 8 16 128 256 2048 4096 -32768)) +(assert_return (invoke "i16x8.neg" (v128.const i32x4 0 1 42 -3 -56 32767 -32768 32766)) + (v128.const i32x4 0 -1 -42 3 56 -32767 -32768 -32766) +) +(assert_return (invoke "i16x8.any_true" (v128.const i32x4 0 0 0 0 0 0 0 0)) (i32.const 0)) +(assert_return (invoke "i16x8.any_true" (v128.const i32x4 0 0 1 0 0 0 0 0)) (i32.const 1)) +(assert_return (invoke "i16x8.any_true" (v128.const i32x4 1 1 1 1 1 0 1 1)) (i32.const 1)) +(assert_return (invoke "i16x8.any_true" (v128.const i32x4 1 1 1 1 1 1 1 1)) (i32.const 1)) +(assert_return (invoke "i16x8.all_true" (v128.const i32x4 0 0 0 0 0 0 0 0)) (i32.const 0)) +(assert_return (invoke "i16x8.all_true" (v128.const i32x4 0 0 1 0 0 0 0 0)) (i32.const 0)) +(assert_return (invoke "i16x8.all_true" (v128.const i32x4 1 1 1 1 1 0 1 1)) (i32.const 0)) +(assert_return (invoke "i16x8.all_true" (v128.const i32x4 1 1 1 1 1 1 1 1)) (i32.const 1)) +(assert_return (invoke "i16x8.shl" (v128.const i32x4 0 8 16 128 256 2048 4096 -32768) (i32.const 1)) (v128.const i32x4 0 16 32 256 512 4096 8192 0)) +(assert_return (invoke "i16x8.shl" (v128.const i32x4 0 8 16 128 256 2048 4096 -32768) (i32.const 16)) (v128.const i32x4 0 8 16 128 256 2048 4096 -32768)) +(assert_return (invoke "i16x8.shr_u" (v128.const i32x4 0 8 16 128 256 2048 4096 -32768) (i32.const 1)) (v128.const i32x4 0 4 8 64 128 1024 2048 16384)) +(assert_return (invoke "i16x8.shr_u" (v128.const i32x4 0 8 16 128 256 2048 4096 -32768) (i32.const 16)) (v128.const i32x4 0 8 16 128 256 2048 4096 -32768)) +(assert_return (invoke "i16x8.shr_s" (v128.const i32x4 0 8 16 128 256 2048 4096 -32768) (i32.const 1)) (v128.const i32x4 0 4 8 64 128 1024 2048 -16384)) +(assert_return (invoke "i16x8.shr_s" (v128.const i32x4 0 8 16 128 256 2048 4096 -32768) (i32.const 16)) (v128.const i32x4 0 8 16 128 256 2048 4096 -32768)) (assert_return (invoke "i16x8.add" - (v128.const i32 0 65280 32768 32512 33024 59136 64000 32766) - (v128.const i32 768 1 32768 33024 1536 18688 65280 2) + (v128.const i32x4 0 65280 32768 32512 33024 59136 64000 32766) + (v128.const i32x4 768 1 32768 33024 1536 18688 65280 2) ) - (v128.const i32 768 65281 0 0 34560 12288 63744 32768) + (v128.const i32x4 768 65281 0 0 34560 12288 63744 32768) ) (assert_return (invoke "i16x8.add_saturate_s" - (v128.const i32 0 65280 32768 32512 33024 59136 64000 32766) - (v128.const i32 768 1 32768 33024 1536 18688 65280 2) + (v128.const i32x4 0 65280 32768 32512 33024 59136 64000 32766) + (v128.const i32x4 768 1 32768 33024 1536 18688 65280 2) ) - (v128.const i32 768 65281 32768 0 34560 12288 63744 32767) + (v128.const i32x4 768 65281 32768 0 34560 12288 63744 32767) ) (assert_return (invoke "i16x8.add_saturate_u" - (v128.const i32 0 65280 32768 32512 33024 59136 64000 32766) - (v128.const i32 768 1 32768 33024 1536 18688 65280 2) + (v128.const i32x4 0 65280 32768 32512 33024 59136 64000 32766) + (v128.const i32x4 768 1 32768 33024 1536 18688 65280 2) ) - (v128.const i32 768 65281 65535 65535 34560 65535 65535 32768) + (v128.const i32x4 768 65281 65535 65535 34560 65535 65535 32768) ) (assert_return (invoke "i16x8.sub" - (v128.const i32 0 65280 32768 32512 33024 59136 64000 32766) - (v128.const i32 768 1 32768 33024 1536 18688 65280 2) + (v128.const i32x4 0 65280 32768 32512 33024 59136 64000 32766) + (v128.const i32x4 768 1 32768 33024 1536 18688 65280 2) ) - (v128.const i32 64768 65279 0 65024 31488 40448 64256 32764) + (v128.const i32x4 64768 65279 0 65024 31488 40448 64256 32764) ) (assert_return (invoke "i16x8.sub_saturate_s" - (v128.const i32 0 65280 32768 32512 33024 59136 64000 32766) - (v128.const i32 768 1 32768 33024 1536 18688 65280 2) + (v128.const i32x4 0 65280 32768 32512 33024 59136 64000 32766) + (v128.const i32x4 768 1 32768 33024 1536 18688 65280 2) ) - (v128.const i32 64768 65279 0 32767 32768 40448 64256 32764) + (v128.const i32x4 64768 65279 0 32767 32768 40448 64256 32764) ) (assert_return (invoke "i16x8.sub_saturate_u" - (v128.const i32 0 65280 32768 32512 33024 59136 64000 32766) - (v128.const i32 768 1 32768 33024 1536 18688 65280 2) + (v128.const i32x4 0 65280 32768 32512 33024 59136 64000 32766) + (v128.const i32x4 768 1 32768 33024 1536 18688 65280 2) ) - (v128.const i32 0 65279 0 0 31488 40448 0 32764) + (v128.const i32x4 0 65279 0 0 31488 40448 0 32764) ) (assert_return (invoke "i16x8.mul" - (v128.const i32 0 65280 32768 32512 33024 59136 64000 32766) - (v128.const i32 768 1 32768 33024 1536 18688 65280 2) + (v128.const i32x4 0 65280 32768 32512 33024 59136 64000 32766) + (v128.const i32x4 768 1 32768 33024 1536 18688 65280 2) ) - (v128.const i32 0 65280 0 0 0 0 0 65532) + (v128.const i32x4 0 65280 0 0 0 0 0 65532) ) ;; i32x4 arithmetic -(assert_return (invoke "i32x4.neg" (v128.const i32 0 1 0x80000000 0x7fffffff)) (v128.const i32 0 -1 0x80000000 0x80000001)) -(assert_return (invoke "i32x4.any_true" (v128.const i32 0 0 0 0)) (i32.const 0)) -(assert_return (invoke "i32x4.any_true" (v128.const i32 0 0 1 0)) (i32.const 1)) -(assert_return (invoke "i32x4.any_true" (v128.const i32 1 0 1 1)) (i32.const 1)) -(assert_return (invoke "i32x4.any_true" (v128.const i32 1 1 1 1)) (i32.const 1)) -(assert_return (invoke "i32x4.all_true" (v128.const i32 0 0 0 0)) (i32.const 0)) -(assert_return (invoke "i32x4.all_true" (v128.const i32 0 0 1 0)) (i32.const 0)) -(assert_return (invoke "i32x4.all_true" (v128.const i32 1 0 1 1)) (i32.const 0)) -(assert_return (invoke "i32x4.all_true" (v128.const i32 1 1 1 1)) (i32.const 1)) -(assert_return (invoke "i32x4.shl" (v128.const i32 1 0x40000000 0x80000000 -1) (i32.const 1)) (v128.const i32 2 0x80000000 0 -2)) -(assert_return (invoke "i32x4.shl" (v128.const i32 1 0x40000000 0x80000000 -1) (i32.const 32)) (v128.const i32 1 0x40000000 0x80000000 -1)) -(assert_return (invoke "i32x4.shr_s" (v128.const i32 1 0x40000000 0x80000000 -1) (i32.const 1)) (v128.const i32 0 0x20000000 0xc0000000 -1)) -(assert_return (invoke "i32x4.shr_s" (v128.const i32 1 0x40000000 0x80000000 -1) (i32.const 32)) (v128.const i32 1 0x40000000 0x80000000 -1)) -(assert_return (invoke "i32x4.shr_u" (v128.const i32 1 0x40000000 0x80000000 -1) (i32.const 1)) (v128.const i32 0 0x20000000 0x40000000 0x7fffffff)) -(assert_return (invoke "i32x4.shr_u" (v128.const i32 1 0x40000000 0x80000000 -1) (i32.const 32)) (v128.const i32 1 0x40000000 0x80000000 -1)) -(assert_return (invoke "i32x4.add" (v128.const i32 0 0x80000001 42 5) (v128.const i32 0 0x80000001 5 42)) (v128.const i32 0 2 47 47)) -(assert_return (invoke "i32x4.sub" (v128.const i32 0 2 47 47) (v128.const i32 0 0x80000001 42 5)) (v128.const i32 0 0x80000001 5 42)) -(assert_return (invoke "i32x4.mul" (v128.const i32 0 0x80000001 42 5) (v128.const i32 0 0x80000001 42 5)) (v128.const i32 0 1 1764 25)) +(assert_return (invoke "i32x4.neg" (v128.const i32x4 0 1 0x80000000 0x7fffffff)) (v128.const i32x4 0 -1 0x80000000 0x80000001)) +(assert_return (invoke "i32x4.any_true" (v128.const i32x4 0 0 0 0)) (i32.const 0)) +(assert_return (invoke "i32x4.any_true" (v128.const i32x4 0 0 1 0)) (i32.const 1)) +(assert_return (invoke "i32x4.any_true" (v128.const i32x4 1 0 1 1)) (i32.const 1)) +(assert_return (invoke "i32x4.any_true" (v128.const i32x4 1 1 1 1)) (i32.const 1)) +(assert_return (invoke "i32x4.all_true" (v128.const i32x4 0 0 0 0)) (i32.const 0)) +(assert_return (invoke "i32x4.all_true" (v128.const i32x4 0 0 1 0)) (i32.const 0)) +(assert_return (invoke "i32x4.all_true" (v128.const i32x4 1 0 1 1)) (i32.const 0)) +(assert_return (invoke "i32x4.all_true" (v128.const i32x4 1 1 1 1)) (i32.const 1)) +(assert_return (invoke "i32x4.shl" (v128.const i32x4 1 0x40000000 0x80000000 -1) (i32.const 1)) (v128.const i32x4 2 0x80000000 0 -2)) +(assert_return (invoke "i32x4.shl" (v128.const i32x4 1 0x40000000 0x80000000 -1) (i32.const 32)) (v128.const i32x4 1 0x40000000 0x80000000 -1)) +(assert_return (invoke "i32x4.shr_s" (v128.const i32x4 1 0x40000000 0x80000000 -1) (i32.const 1)) (v128.const i32x4 0 0x20000000 0xc0000000 -1)) +(assert_return (invoke "i32x4.shr_s" (v128.const i32x4 1 0x40000000 0x80000000 -1) (i32.const 32)) (v128.const i32x4 1 0x40000000 0x80000000 -1)) +(assert_return (invoke "i32x4.shr_u" (v128.const i32x4 1 0x40000000 0x80000000 -1) (i32.const 1)) (v128.const i32x4 0 0x20000000 0x40000000 0x7fffffff)) +(assert_return (invoke "i32x4.shr_u" (v128.const i32x4 1 0x40000000 0x80000000 -1) (i32.const 32)) (v128.const i32x4 1 0x40000000 0x80000000 -1)) +(assert_return (invoke "i32x4.add" (v128.const i32x4 0 0x80000001 42 5) (v128.const i32x4 0 0x80000001 5 42)) (v128.const i32x4 0 2 47 47)) +(assert_return (invoke "i32x4.sub" (v128.const i32x4 0 2 47 47) (v128.const i32x4 0 0x80000001 42 5)) (v128.const i32x4 0 0x80000001 5 42)) +(assert_return (invoke "i32x4.mul" (v128.const i32x4 0 0x80000001 42 5) (v128.const i32x4 0 0x80000001 42 5)) (v128.const i32x4 0 1 1764 25)) ;; i64x2 arithmetic -(assert_return (invoke "i64x2.neg" (v128.const i64 0x8000000000000000 42)) (v128.const i64 0x8000000000000000 -42)) -(assert_return (invoke "i64x2.any_true" (v128.const i64 0 0)) (i32.const 0)) -(assert_return (invoke "i64x2.any_true" (v128.const i64 1 0)) (i32.const 1)) -(assert_return (invoke "i64x2.any_true" (v128.const i64 1 1)) (i32.const 1)) -(assert_return (invoke "i64x2.all_true" (v128.const i64 0 0)) (i32.const 0)) -(assert_return (invoke "i64x2.all_true" (v128.const i64 1 0)) (i32.const 0)) -(assert_return (invoke "i64x2.all_true" (v128.const i64 1 1)) (i32.const 1)) -(assert_return (invoke "i64x2.shl" (v128.const i64 1 0x8000000000000000) (i32.const 1)) (v128.const i64 2 0)) -(assert_return (invoke "i64x2.shl" (v128.const i64 1 0x8000000000000000) (i32.const 64)) (v128.const i64 1 0x8000000000000000)) -(assert_return (invoke "i64x2.shr_s" (v128.const i64 1 0x8000000000000000) (i32.const 1)) (v128.const i64 0 0xc000000000000000)) -(assert_return (invoke "i64x2.shr_s" (v128.const i64 1 0x8000000000000000) (i32.const 64)) (v128.const i64 1 0x8000000000000000)) -(assert_return (invoke "i64x2.shr_u" (v128.const i64 1 0x8000000000000000) (i32.const 1)) (v128.const i64 0 0x4000000000000000)) -(assert_return (invoke "i64x2.shr_u" (v128.const i64 1 0x8000000000000000) (i32.const 64)) (v128.const i64 1 0x8000000000000000)) -(assert_return (invoke "i64x2.add" (v128.const i64 0x8000000000000001 42) (v128.const i64 0x8000000000000001 0)) (v128.const i64 2 42)) -(assert_return (invoke "i64x2.sub" (v128.const i64 2 42) (v128.const i64 0x8000000000000001 0)) (v128.const i64 0x8000000000000001 42)) +(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)) +(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)) +(assert_return (invoke "i64x2.shr_s" (v128.const i64x2 1 0x8000000000000000) (i32.const 1)) (v128.const i64x2 0 0xc000000000000000)) +(assert_return (invoke "i64x2.shr_s" (v128.const i64x2 1 0x8000000000000000) (i32.const 64)) (v128.const i64x2 1 0x8000000000000000)) +(assert_return (invoke "i64x2.shr_u" (v128.const i64x2 1 0x8000000000000000) (i32.const 1)) (v128.const i64x2 0 0x4000000000000000)) +(assert_return (invoke "i64x2.shr_u" (v128.const i64x2 1 0x8000000000000000) (i32.const 64)) (v128.const i64x2 1 0x8000000000000000)) +(assert_return (invoke "i64x2.add" (v128.const i64x2 0x8000000000000001 42) (v128.const i64x2 0x8000000000000001 0)) (v128.const i64x2 2 42)) +(assert_return (invoke "i64x2.sub" (v128.const i64x2 2 42) (v128.const i64x2 0x8000000000000001 0)) (v128.const i64x2 0x8000000000000001 42)) ;; f32x4 arithmetic -(assert_return (invoke "f32x4.abs" (v128.const f32 -0 nan -infinity 5)) (v128.const f32 0 nan infinity 5)) -(assert_return (invoke "f32x4.neg" (v128.const f32 -0 nan -infinity 5)) (v128.const f32 0 -nan infinity -5)) -(assert_return (invoke "f32x4.sqrt" (v128.const f32 -0 nan infinity 4)) (v128.const f32 -0 nan infinity 2)) -(assert_return (invoke "f32x4.add" (v128.const f32 nan -nan infinity 42) (v128.const f32 42 infinity infinity 1)) (v128.const f32 nan -nan infinity 43)) -(assert_return (invoke "f32x4.sub" (v128.const f32 nan -nan infinity 42) (v128.const f32 42 infinity -infinity 1)) (v128.const f32 nan -nan infinity 41)) -(assert_return (invoke "f32x4.mul" (v128.const f32 nan -nan infinity 42) (v128.const f32 42 infinity infinity 2)) (v128.const f32 nan -nan infinity 84)) -(assert_return (invoke "f32x4.div" (v128.const f32 nan -nan infinity 42) (v128.const f32 42 infinity 2 2)) (v128.const f32 nan -nan infinity 21)) -(assert_return (invoke "f32x4.min" (v128.const f32 -0 0 nan 5) (v128.const f32 0 -0 5 nan)) (v128.const f32 -0 -0 nan nan)) -(assert_return (invoke "f32x4.max" (v128.const f32 -0 0 nan 5) (v128.const f32 0 -0 5 nan)) (v128.const f32 0 0 nan nan)) +(assert_return (invoke "f32x4.abs" (v128.const f32x4 -0 nan -infinity 5)) (v128.const f32x4 0 nan infinity 5)) +(assert_return (invoke "f32x4.neg" (v128.const f32x4 -0 nan -infinity 5)) (v128.const f32x4 0 -nan infinity -5)) +(assert_return (invoke "f32x4.sqrt" (v128.const f32x4 -0 nan infinity 4)) (v128.const f32x4 -0 nan infinity 2)) +(assert_return (invoke "f32x4.add" (v128.const f32x4 nan -nan infinity 42) (v128.const f32x4 42 infinity infinity 1)) (v128.const f32x4 nan -nan infinity 43)) +(assert_return (invoke "f32x4.sub" (v128.const f32x4 nan -nan infinity 42) (v128.const f32x4 42 infinity -infinity 1)) (v128.const f32x4 nan -nan infinity 41)) +(assert_return (invoke "f32x4.mul" (v128.const f32x4 nan -nan infinity 42) (v128.const f32x4 42 infinity infinity 2)) (v128.const f32x4 nan -nan infinity 84)) +(assert_return (invoke "f32x4.div" (v128.const f32x4 nan -nan infinity 42) (v128.const f32x4 42 infinity 2 2)) (v128.const f32x4 nan -nan infinity 21)) +(assert_return (invoke "f32x4.min" (v128.const f32x4 -0 0 nan 5) (v128.const f32x4 0 -0 5 nan)) (v128.const f32x4 -0 -0 nan nan)) +(assert_return (invoke "f32x4.max" (v128.const f32x4 -0 0 nan 5) (v128.const f32x4 0 -0 5 nan)) (v128.const f32x4 0 0 nan nan)) ;; f64x2 arithmetic -(assert_return (invoke "f64x2.abs" (v128.const f64 -0 nan)) (v128.const f64 0 nan)) -(assert_return (invoke "f64x2.abs" (v128.const f64 -infinity 5)) (v128.const f64 infinity 5)) -(assert_return (invoke "f64x2.neg" (v128.const f64 -0 nan)) (v128.const f64 0 -nan)) -(assert_return (invoke "f64x2.neg" (v128.const f64 -infinity 5)) (v128.const f64 infinity -5)) -(assert_return (invoke "f64x2.sqrt" (v128.const f64 -0 nan)) (v128.const f64 -0 nan)) -(assert_return (invoke "f64x2.sqrt" (v128.const f64 infinity 4)) (v128.const f64 infinity 2)) -(assert_return (invoke "f64x2.add" (v128.const f64 nan -nan) (v128.const f64 42 infinity)) (v128.const f64 nan -nan)) -(assert_return (invoke "f64x2.add" (v128.const f64 infinity 42) (v128.const f64 infinity 1)) (v128.const f64 infinity 43)) -(assert_return (invoke "f64x2.sub" (v128.const f64 nan -nan) (v128.const f64 42 infinity)) (v128.const f64 nan -nan)) -(assert_return (invoke "f64x2.sub" (v128.const f64 infinity 42) (v128.const f64 -infinity 1)) (v128.const f64 infinity 41)) -(assert_return (invoke "f64x2.mul" (v128.const f64 nan -nan) (v128.const f64 42 infinity)) (v128.const f64 nan -nan)) -(assert_return (invoke "f64x2.mul" (v128.const f64 infinity 42) (v128.const f64 infinity 2)) (v128.const f64 infinity 84)) -(assert_return (invoke "f64x2.div" (v128.const f64 nan -nan) (v128.const f64 42 infinity)) (v128.const f64 nan -nan)) -(assert_return (invoke "f64x2.div" (v128.const f64 infinity 42) (v128.const f64 2 2)) (v128.const f64 infinity 21)) -(assert_return (invoke "f64x2.min" (v128.const f64 -0 0) (v128.const f64 0 -0)) (v128.const f64 -0 -0)) -(assert_return (invoke "f64x2.min" (v128.const f64 nan 5) (v128.const f64 5 nan)) (v128.const f64 nan nan)) -(assert_return (invoke "f64x2.max" (v128.const f64 -0 0) (v128.const f64 0 -0)) (v128.const f64 0 0)) -(assert_return (invoke "f64x2.max" (v128.const f64 nan 5) (v128.const f64 5 nan)) (v128.const f64 nan nan)) +(assert_return (invoke "f64x2.abs" (v128.const f64x2 -0 nan)) (v128.const f64x2 0 nan)) +(assert_return (invoke "f64x2.abs" (v128.const f64x2 -infinity 5)) (v128.const f64x2 infinity 5)) +(assert_return (invoke "f64x2.neg" (v128.const f64x2 -0 nan)) (v128.const f64x2 0 -nan)) +(assert_return (invoke "f64x2.neg" (v128.const f64x2 -infinity 5)) (v128.const f64x2 infinity -5)) +(assert_return (invoke "f64x2.sqrt" (v128.const f64x2 -0 nan)) (v128.const f64x2 -0 nan)) +(assert_return (invoke "f64x2.sqrt" (v128.const f64x2 infinity 4)) (v128.const f64x2 infinity 2)) +(assert_return (invoke "f64x2.add" (v128.const f64x2 nan -nan) (v128.const f64x2 42 infinity)) (v128.const f64x2 nan -nan)) +(assert_return (invoke "f64x2.add" (v128.const f64x2 infinity 42) (v128.const f64x2 infinity 1)) (v128.const f64x2 infinity 43)) +(assert_return (invoke "f64x2.sub" (v128.const f64x2 nan -nan) (v128.const f64x2 42 infinity)) (v128.const f64x2 nan -nan)) +(assert_return (invoke "f64x2.sub" (v128.const f64x2 infinity 42) (v128.const f64x2 -infinity 1)) (v128.const f64x2 infinity 41)) +(assert_return (invoke "f64x2.mul" (v128.const f64x2 nan -nan) (v128.const f64x2 42 infinity)) (v128.const f64x2 nan -nan)) +(assert_return (invoke "f64x2.mul" (v128.const f64x2 infinity 42) (v128.const f64x2 infinity 2)) (v128.const f64x2 infinity 84)) +(assert_return (invoke "f64x2.div" (v128.const f64x2 nan -nan) (v128.const f64x2 42 infinity)) (v128.const f64x2 nan -nan)) +(assert_return (invoke "f64x2.div" (v128.const f64x2 infinity 42) (v128.const f64x2 2 2)) (v128.const f64x2 infinity 21)) +(assert_return (invoke "f64x2.min" (v128.const f64x2 -0 0) (v128.const f64x2 0 -0)) (v128.const f64x2 -0 -0)) +(assert_return (invoke "f64x2.min" (v128.const f64x2 nan 5) (v128.const f64x2 5 nan)) (v128.const f64x2 nan nan)) +(assert_return (invoke "f64x2.max" (v128.const f64x2 -0 0) (v128.const f64x2 0 -0)) (v128.const f64x2 0 0)) +(assert_return (invoke "f64x2.max" (v128.const f64x2 nan 5) (v128.const f64x2 5 nan)) (v128.const f64x2 nan nan)) ;; conversions -(assert_return (invoke "i32x4.trunc_sat_f32x4_s" (v128.const f32 42 nan infinity -infinity)) (v128.const i32 42 0 2147483647 -2147483648)) -(assert_return (invoke "i32x4.trunc_sat_f32x4_u" (v128.const f32 42 nan infinity -infinity)) (v128.const i32 42 0 4294967295 0)) -(assert_return (invoke "i64x2.trunc_sat_f64x2_s" (v128.const f64 42 nan)) (v128.const i64 42 0)) -(assert_return (invoke "i64x2.trunc_sat_f64x2_s" (v128.const f64 infinity -infinity)) (v128.const i64 9223372036854775807 -9223372036854775808)) -(assert_return (invoke "i64x2.trunc_sat_f64x2_u" (v128.const f64 42 nan)) (v128.const i64 42 0)) -(assert_return (invoke "i64x2.trunc_sat_f64x2_u" (v128.const f64 infinity -infinity)) (v128.const i64 18446744073709551615 0)) -(assert_return (invoke "f32x4.convert_i32x4_s" (v128.const i32 0 -1 2147483647 -2147483648)) (v128.const f32 0 -1 2147483648 -2147483648)) -(assert_return (invoke "f32x4.convert_i32x4_u" (v128.const i32 0 -1 2147483647 -2147483648)) (v128.const f32 0 4294967296 2147483648 2147483648)) -(assert_return (invoke "f64x2.convert_i64x2_s" (v128.const i64 0 -1)) (v128.const f64 0 -1)) -(assert_return (invoke "f64x2.convert_i64x2_s" (v128.const i64 9223372036854775807 -9223372036854775808)) (v128.const f64 9223372036854775807 -9223372036854775808)) -(assert_return (invoke "f64x2.convert_i64x2_u" (v128.const i64 0 -1)) (v128.const f64 0 18446744073709551616)) -(assert_return (invoke "f64x2.convert_i64x2_u" (v128.const i64 9223372036854775807 -9223372036854775808)) (v128.const f64 9223372036854775807 9223372036854775808)) +(assert_return (invoke "i32x4.trunc_sat_f32x4_s" (v128.const f32x4 42 nan infinity -infinity)) (v128.const i32x4 42 0 2147483647 -2147483648)) +(assert_return (invoke "i32x4.trunc_sat_f32x4_u" (v128.const f32x4 42 nan infinity -infinity)) (v128.const i32x4 42 0 4294967295 0)) +(assert_return (invoke "i64x2.trunc_sat_f64x2_s" (v128.const f64x2 42 nan)) (v128.const i64x2 42 0)) +(assert_return (invoke "i64x2.trunc_sat_f64x2_s" (v128.const f64x2 infinity -infinity)) (v128.const i64x2 9223372036854775807 -9223372036854775808)) +(assert_return (invoke "i64x2.trunc_sat_f64x2_u" (v128.const f64x2 42 nan)) (v128.const i64x2 42 0)) +(assert_return (invoke "i64x2.trunc_sat_f64x2_u" (v128.const f64x2 infinity -infinity)) (v128.const i64x2 18446744073709551615 0)) +(assert_return (invoke "f32x4.convert_i32x4_s" (v128.const i32x4 0 -1 2147483647 -2147483648)) (v128.const f32x4 0 -1 2147483648 -2147483648)) +(assert_return (invoke "f32x4.convert_i32x4_u" (v128.const i32x4 0 -1 2147483647 -2147483648)) (v128.const f32x4 0 4294967296 2147483648 2147483648)) +(assert_return (invoke "f64x2.convert_i64x2_s" (v128.const i64x2 0 -1)) (v128.const f64x2 0 -1)) +(assert_return (invoke "f64x2.convert_i64x2_s" (v128.const i64x2 9223372036854775807 -9223372036854775808)) (v128.const f64x2 9223372036854775807 -9223372036854775808)) +(assert_return (invoke "f64x2.convert_i64x2_u" (v128.const i64x2 0 -1)) (v128.const f64x2 0 18446744073709551616)) +(assert_return (invoke "f64x2.convert_i64x2_u" (v128.const i64x2 9223372036854775807 -9223372036854775808)) (v128.const f64x2 9223372036854775807 9223372036854775808)) |