From e027bf2e2725137678c1e3a606ffe314ed79df66 Mon Sep 17 00:00:00 2001 From: dcode Date: Tue, 23 Feb 2021 23:05:58 +0100 Subject: [PATCH 01/24] Update Binaryen --- package-lock.json | 4443 ++++++++++++++--- package.json | 2 +- src/builtins.ts | 72 +- src/common.ts | 8 +- src/compiler.ts | 61 +- src/definitions.ts | 4 +- src/flow.ts | 28 +- src/glue/binaryen.d.ts | 77 +- src/module.ts | 464 +- src/passes/pass.ts | 97 +- src/program.ts | 14 +- src/types.ts | 40 +- std/assembly/builtins.ts | 8 - std/assembly/index.d.ts | 12 +- std/assembly/reference.ts | 12 +- tests/compiler/assert-nonnull.optimized.wat | 10 +- tests/compiler/assert-nonnull.untouched.wat | 10 +- tests/compiler/builtins.optimized.wat | 4 +- tests/compiler/builtins.untouched.wat | 4 +- tests/compiler/call-optional.optimized.wat | 6 +- tests/compiler/call-optional.untouched.wat | 6 +- .../class-static-function.optimized.wat | 2 +- .../class-static-function.untouched.wat | 2 +- tests/compiler/features/reference-types.ts | 13 - .../features/reference-types.untouched.wat | 121 +- tests/compiler/features/simd.optimized.wat | 50 +- tests/compiler/features/simd.ts | 2 - tests/compiler/features/simd.untouched.wat | 147 +- tests/compiler/function-call.optimized.wat | 16 +- tests/compiler/function-call.untouched.wat | 16 +- .../function-expression.optimized.wat | 32 +- .../function-expression.untouched.wat | 28 +- tests/compiler/function-types.optimized.wat | 10 +- tests/compiler/function-types.untouched.wat | 12 +- tests/compiler/getter-call.optimized.wat | 2 +- tests/compiler/getter-call.untouched.wat | 2 +- tests/compiler/infer-generic.optimized.wat | 2 +- tests/compiler/infer-generic.untouched.wat | 2 +- tests/compiler/inlining.optimized.wat | 2 +- tests/compiler/inlining.untouched.wat | 2 +- .../resolve-function-expression.optimized.wat | 6 +- .../resolve-function-expression.untouched.wat | 6 +- tests/compiler/resolve-ternary.optimized.wat | 6 +- tests/compiler/resolve-ternary.untouched.wat | 6 +- tests/compiler/std/array.optimized.wat | 98 +- tests/compiler/std/array.untouched.wat | 118 +- tests/compiler/std/typedarray.optimized.wat | 172 +- tests/compiler/std/typedarray.untouched.wat | 184 +- tests/features.json | 3 +- 49 files changed, 4671 insertions(+), 1773 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6eb1880e0a..54f95a2d26 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,39 +1,3131 @@ { "name": "assemblyscript", "version": "0.0.0", - "lockfileVersion": 1, + "lockfileVersion": 2, "requires": true, + "packages": { + "": { + "version": "0.0.0", + "license": "Apache-2.0", + "dependencies": { + "binaryen": "99.0.0-nightly.20210220", + "long": "^4.0.0", + "source-map-support": "^0.5.19", + "ts-node": "^6.2.0" + }, + "bin": { + "asc": "bin/asc", + "asinit": "bin/asinit" + }, + "devDependencies": { + "@types/node": "^14.14.12", + "@typescript-eslint/eslint-plugin": "^4.9.1", + "@typescript-eslint/parser": "^4.9.1", + "diff": "^5.0.0", + "eslint": "^7.15.0", + "glob": "^7.1.6", + "physical-cpu-count": "^2.0.0", + "source-map-support": "^0.5.19", + "ts-loader": "^8.0.12", + "ts-node": "^6.2.0", + "typescript": "^4.1.2", + "webpack": "^5.10.0", + "webpack-cli": "^4.2.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/assemblyscript" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", + "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.10.4" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", + "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", + "dev": true + }, + "node_modules/@babel/highlight": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.12.13.tgz", + "integrity": "sha512-kocDQvIbgMKlWxXe9fof3TQ+gkIPOUSEYhJjqUjvKMez3krV7vbzYCDq39Oj11UAVK7JqPVGQPlgE85dPNlQww==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.12.11", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "node_modules/@babel/highlight/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/highlight/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/@babel/highlight/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@discoveryjs/json-ext": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.2.tgz", + "integrity": "sha512-HyYEUDeIj5rRQU2Hk5HTB2uHsbRQpF70nvMhVzi+VJR0X+xNEhjPui4/kBf3VeH/wqD28PT4sVOm8qqLjBrSZg==", + "dev": true, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.3.0.tgz", + "integrity": "sha512-1JTKgrOKAHVivSvOYw+sJOunkBjUOvjqWk1DPja7ZFhIS2mX/4EgTT8M7eTK9jrKhL/FvXXEbQwIs3pg1xp3dg==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.1.1", + "espree": "^7.3.0", + "globals": "^12.1.0", + "ignore": "^4.0.6", + "import-fresh": "^3.2.1", + "js-yaml": "^3.13.1", + "lodash": "^4.17.20", + "minimatch": "^3.0.4", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.4.tgz", + "integrity": "sha512-33g3pMJk3bg5nXbL/+CY6I2eJDzZAni49PfJnL5fghPTggPvBd/pFNSgJsdAgWptuFu7qq/ERvOYFlhvsLTCKA==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.4", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.4.tgz", + "integrity": "sha512-IYlHJA0clt2+Vg7bccq+TzRdJvv19c2INqBSsoOLp1je7xjtr7J26+WXR72MCdvU9q1qTzIWDfhMf+DRvQJK4Q==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.6.tgz", + "integrity": "sha512-8Broas6vTtW4GIXTAHDoE32hnN2M5ykgCpWGbuXHQ15vEMqr23pB76e/GZcYsZCHALv50ktd24qhEyKr6wBtow==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.4", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@types/eslint": { + "version": "7.2.6", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.2.6.tgz", + "integrity": "sha512-I+1sYH+NPQ3/tVqCeUSBwTE/0heyvtXqpIopUUArlBm0Kpocb8FbMa3AZ/ASKIFpN3rnEx932TTXDbt9OXsNDw==", + "dev": true, + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.0.tgz", + "integrity": "sha512-O/ql2+rrCUe2W2rs7wMR+GqPRcgB6UiqN5RhrR5xruFlY7l9YLMn0ZkDzjoHLeiFkR8MCQZVudUuuvQ2BLC9Qw==", + "dev": true, + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "node_modules/@types/estree": { + "version": "0.0.46", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.46.tgz", + "integrity": "sha512-laIjwTQaD+5DukBZaygQ79K1Z0jb1bPEMRrkXSLjtCcZm+abyp5YbrqpSLzD42FwWW6gK/aS4NYpJ804nG2brg==", + "dev": true + }, + "node_modules/@types/json-schema": { + "version": "7.0.7", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.7.tgz", + "integrity": "sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA==", + "dev": true + }, + "node_modules/@types/node": { + "version": "14.14.31", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.31.tgz", + "integrity": "sha512-vFHy/ezP5qI0rFgJ7aQnjDXwAMrG0KqqIH7tQG5PPv3BWBayOPIQNBjVc/P6hhdZfMx51REc6tfDNXHUio893g==", + "dev": true + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "4.15.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.15.2.tgz", + "integrity": "sha512-uiQQeu9tWl3f1+oK0yoAv9lt/KXO24iafxgQTkIYO/kitruILGx3uH+QtIAHqxFV+yIsdnJH+alel9KuE3J15Q==", + "dev": true, + "dependencies": { + "@typescript-eslint/experimental-utils": "4.15.2", + "@typescript-eslint/scope-manager": "4.15.2", + "debug": "^4.1.1", + "functional-red-black-tree": "^1.0.1", + "lodash": "^4.17.15", + "regexpp": "^3.0.0", + "semver": "^7.3.2", + "tsutils": "^3.17.1" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^4.0.0", + "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/experimental-utils": { + "version": "4.15.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.15.2.tgz", + "integrity": "sha512-Fxoshw8+R5X3/Vmqwsjc8nRO/7iTysRtDqx6rlfLZ7HbT8TZhPeQqbPjTyk2RheH3L8afumecTQnUc9EeXxohQ==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.3", + "@typescript-eslint/scope-manager": "4.15.2", + "@typescript-eslint/types": "4.15.2", + "@typescript-eslint/typescript-estree": "4.15.2", + "eslint-scope": "^5.0.0", + "eslint-utils": "^2.0.0" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "*" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "4.15.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.15.2.tgz", + "integrity": "sha512-SHeF8xbsC6z2FKXsaTb1tBCf0QZsjJ94H6Bo51Y1aVEZ4XAefaw5ZAilMoDPlGghe+qtq7XdTiDlGfVTOmvA+Q==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "4.15.2", + "@typescript-eslint/types": "4.15.2", + "@typescript-eslint/typescript-estree": "4.15.2", + "debug": "^4.1.1" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "4.15.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.15.2.tgz", + "integrity": "sha512-Zm0tf/MSKuX6aeJmuXexgdVyxT9/oJJhaCkijv0DvJVT3ui4zY6XYd6iwIo/8GEZGy43cd7w1rFMiCLHbRzAPQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "4.15.2", + "@typescript-eslint/visitor-keys": "4.15.2" + }, + "engines": { + "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/types": { + "version": "4.15.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.15.2.tgz", + "integrity": "sha512-r7lW7HFkAarfUylJ2tKndyO9njwSyoy6cpfDKWPX6/ctZA+QyaYscAHXVAfJqtnY6aaTwDYrOhp+ginlbc7HfQ==", + "dev": true, + "engines": { + "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "4.15.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.15.2.tgz", + "integrity": "sha512-cGR8C2g5SPtHTQvAymEODeqx90pJHadWsgTtx6GbnTWKqsg7yp6Eaya9nFzUd4KrKhxdYTTFBiYeTPQaz/l8bw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "4.15.2", + "@typescript-eslint/visitor-keys": "4.15.2", + "debug": "^4.1.1", + "globby": "^11.0.1", + "is-glob": "^4.0.1", + "semver": "^7.3.2", + "tsutils": "^3.17.1" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "4.15.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.15.2.tgz", + "integrity": "sha512-TME1VgSb7wTwgENN5KVj4Nqg25hP8DisXxNBojM4Nn31rYaNDIocNm5cmjOFfh42n7NVERxWrDFoETO/76ePyg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "4.15.2", + "eslint-visitor-keys": "^2.0.0" + }, + "engines": { + "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.0.tgz", + "integrity": "sha512-kX2W49LWsbthrmIRMbQZuQDhGtjyqXfEmmHyEi4XWnSZtPmxY0+3anPIzsnRb45VH/J55zlOfWvZuY47aJZTJg==", + "dev": true, + "dependencies": { + "@webassemblyjs/helper-numbers": "1.11.0", + "@webassemblyjs/helper-wasm-bytecode": "1.11.0" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.0.tgz", + "integrity": "sha512-Q/aVYs/VnPDVYvsCBL/gSgwmfjeCb4LW8+TMrO3cSzJImgv8lxxEPM2JA5jMrivE7LSz3V+PFqtMbls3m1exDA==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.0.tgz", + "integrity": "sha512-baT/va95eXiXb2QflSx95QGT5ClzWpGaa8L7JnJbgzoYeaA27FCvuBXU758l+KXWRndEmUXjP0Q5fibhavIn8w==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.0.tgz", + "integrity": "sha512-u9HPBEl4DS+vA8qLQdEQ6N/eJQ7gT7aNvMIo8AAWvAl/xMrcOSiI2M0MAnMCy3jIFke7bEee/JwdX1nUpCtdyA==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.0.tgz", + "integrity": "sha512-DhRQKelIj01s5IgdsOJMKLppI+4zpmcMQ3XboFPLwCpSNH6Hqo1ritgHgD0nqHeSYqofA6aBN/NmXuGjM1jEfQ==", + "dev": true, + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.11.0", + "@webassemblyjs/helper-api-error": "1.11.0", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.0.tgz", + "integrity": "sha512-MbmhvxXExm542tWREgSFnOVo07fDpsBJg3sIl6fSp9xuu75eGz5lz31q7wTLffwL3Za7XNRCMZy210+tnsUSEA==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.0.tgz", + "integrity": "sha512-3Eb88hcbfY/FCukrg6i3EH8H2UsD7x8Vy47iVJrP967A9JGqgBVL9aH71SETPx1JrGsOUVLo0c7vMCN22ytJew==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.0", + "@webassemblyjs/helper-buffer": "1.11.0", + "@webassemblyjs/helper-wasm-bytecode": "1.11.0", + "@webassemblyjs/wasm-gen": "1.11.0" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.0.tgz", + "integrity": "sha512-KXzOqpcYQwAfeQ6WbF6HXo+0udBNmw0iXDmEK5sFlmQdmND+tr773Ti8/5T/M6Tl/413ArSJErATd8In3B+WBA==", + "dev": true, + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.0.tgz", + "integrity": "sha512-aqbsHa1mSQAbeeNcl38un6qVY++hh8OpCOzxhixSYgbRfNWcxJNJQwe2rezK9XEcssJbbWIkblaJRwGMS9zp+g==", + "dev": true, + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.0.tgz", + "integrity": "sha512-A/lclGxH6SpSLSyFowMzO/+aDEPU4hvEiooCMXQPcQFPPJaYcPQNKGOCLUySJsYJ4trbpr+Fs08n4jelkVTGVw==", + "dev": true + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.0.tgz", + "integrity": "sha512-JHQ0damXy0G6J9ucyKVXO2j08JVJ2ntkdJlq1UTiUrIgfGMmA7Ik5VdC/L8hBK46kVJgujkBIoMtT8yVr+yVOQ==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.0", + "@webassemblyjs/helper-buffer": "1.11.0", + "@webassemblyjs/helper-wasm-bytecode": "1.11.0", + "@webassemblyjs/helper-wasm-section": "1.11.0", + "@webassemblyjs/wasm-gen": "1.11.0", + "@webassemblyjs/wasm-opt": "1.11.0", + "@webassemblyjs/wasm-parser": "1.11.0", + "@webassemblyjs/wast-printer": "1.11.0" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.0.tgz", + "integrity": "sha512-BEUv1aj0WptCZ9kIS30th5ILASUnAPEvE3tVMTrItnZRT9tXCLW2LEXT8ezLw59rqPP9klh9LPmpU+WmRQmCPQ==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.0", + "@webassemblyjs/helper-wasm-bytecode": "1.11.0", + "@webassemblyjs/ieee754": "1.11.0", + "@webassemblyjs/leb128": "1.11.0", + "@webassemblyjs/utf8": "1.11.0" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.0.tgz", + "integrity": "sha512-tHUSP5F4ywyh3hZ0+fDQuWxKx3mJiPeFufg+9gwTpYp324mPCQgnuVKwzLTZVqj0duRDovnPaZqDwoyhIO8kYg==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.0", + "@webassemblyjs/helper-buffer": "1.11.0", + "@webassemblyjs/wasm-gen": "1.11.0", + "@webassemblyjs/wasm-parser": "1.11.0" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.0.tgz", + "integrity": "sha512-6L285Sgu9gphrcpDXINvm0M9BskznnzJTE7gYkjDbxET28shDqp27wpruyx3C2S/dvEwiigBwLA1cz7lNUi0kw==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.0", + "@webassemblyjs/helper-api-error": "1.11.0", + "@webassemblyjs/helper-wasm-bytecode": "1.11.0", + "@webassemblyjs/ieee754": "1.11.0", + "@webassemblyjs/leb128": "1.11.0", + "@webassemblyjs/utf8": "1.11.0" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.0.tgz", + "integrity": "sha512-Fg5OX46pRdTgB7rKIUojkh9vXaVN6sGYCnEiJN1GYkb0RPwShZXp6KTDqmoMdQPKhcroOXh3fEzmkWmCYaKYhQ==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.0", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webpack-cli/configtest": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.0.1.tgz", + "integrity": "sha512-B+4uBUYhpzDXmwuo3V9yBH6cISwxEI4J+NO5ggDaGEEHb0osY/R7MzeKc0bHURXQuZjMM4qD+bSJCKIuI3eNBQ==", + "dev": true, + "peerDependencies": { + "webpack": "4.x.x || 5.x.x", + "webpack-cli": "4.x.x" + } + }, + "node_modules/@webpack-cli/info": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.2.2.tgz", + "integrity": "sha512-5U9kUJHnwU+FhKH4PWGZuBC1hTEPYyxGSL5jjoBI96Gx8qcYJGOikpiIpFoTq8mmgX3im2zAo2wanv/alD74KQ==", + "dev": true, + "dependencies": { + "envinfo": "^7.7.3" + }, + "peerDependencies": { + "webpack-cli": "4.x.x" + } + }, + "node_modules/@webpack-cli/serve": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.3.0.tgz", + "integrity": "sha512-k2p2VrONcYVX1wRRrf0f3X2VGltLWcv+JzXRBDmvCxGlCeESx4OXw91TsWeKOkp784uNoVQo313vxJFHXPPwfw==", + "dev": true, + "peerDependencies": { + "webpack-cli": "4.x.x" + }, + "peerDependenciesMeta": { + "webpack-dev-server": { + "optional": true + } + } + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true + }, + "node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz", + "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "node_modules/big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/binaryen": { + "version": "99.0.0-nightly.20210220", + "resolved": "https://registry.npmjs.org/binaryen/-/binaryen-99.0.0-nightly.20210220.tgz", + "integrity": "sha512-fQfDEZVgQQa3E0cxJx8I6nDN2zIB1WrrURtAyJoP6iyF40nTAwb5bFAC38fPT0PwCnxqziEgJ0MF36j79/BtYw==", + "bin": { + "wasm-opt": "bin/wasm-opt" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.16.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.3.tgz", + "integrity": "sha512-vIyhWmIkULaq04Gt93txdh+j02yX/JzlyhLYbV3YQCn/zvES3JnY7TifHHvvr1w5hTDluNKMkV05cs4vy8Q7sw==", + "dev": true, + "dependencies": { + "caniuse-lite": "^1.0.30001181", + "colorette": "^1.2.1", + "electron-to-chromium": "^1.3.649", + "escalade": "^3.1.1", + "node-releases": "^1.1.70" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + } + }, + "node_modules/buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001191", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001191.tgz", + "integrity": "sha512-xJJqzyd+7GCJXkcoBiQ1GuxEiOBCLQ0aVW9HMekifZsAVGdj5eJ4mFB9fEhSHipq9IOk/QXFJUiIr9lZT+EsGw==", + "dev": true + }, + "node_modules/chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chrome-trace-event": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz", + "integrity": "sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==", + "dev": true, + "dependencies": { + "tslib": "^1.9.0" + }, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/colorette": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.1.tgz", + "integrity": "sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw==", + "dev": true + }, + "node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "node_modules/core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, + "node_modules/diff": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", + "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.3.672", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.672.tgz", + "integrity": "sha512-gFQe7HBb0lbOMqK2GAS5/1F+B0IMdYiAgB9OT/w1F4M7lgJK2aNOMNOM622aEax+nS1cTMytkiT0uMOkbtFmHw==", + "dev": true + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/enhanced-resolve": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz", + "integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.5.0", + "tapable": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "dev": true, + "dependencies": { + "ansi-colors": "^4.1.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/envinfo": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.7.4.tgz", + "integrity": "sha512-TQXTYFVVwwluWSFis6K2XKxgrD22jEv0FTuLCQI+OjH7rn93+iY0fSSFM5lrSxFY+H1+B0/cvvlamr3UsBivdQ==", + "dev": true, + "bin": { + "envinfo": "dist/cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/errno": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", + "dev": true, + "dependencies": { + "prr": "~1.0.1" + }, + "bin": { + "errno": "cli.js" + } + }, + "node_modules/es-module-lexer": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.4.0.tgz", + "integrity": "sha512-iuEGihqqhKWFgh72Q/Jtch7V2t/ft8w8IPP2aEN8ArYKO+IWyo6hsi96hCdgyeEDQIV3InhYQ9BlwUFPGXrbEQ==", + "dev": true + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/eslint": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.20.0.tgz", + "integrity": "sha512-qGi0CTcOGP2OtCQBgWZlQjcTuP0XkIpYFj25XtRTQSHC+umNnp7UMshr2G8SLsRFYDdAPFeHOsiteadmMH02Yw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "7.12.11", + "@eslint/eslintrc": "^0.3.0", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "enquirer": "^2.3.5", + "eslint-scope": "^5.1.1", + "eslint-utils": "^2.1.0", + "eslint-visitor-keys": "^2.0.0", + "espree": "^7.3.1", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "file-entry-cache": "^6.0.0", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.0.0", + "globals": "^12.1.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash": "^4.17.20", + "minimatch": "^3.0.4", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "progress": "^2.0.0", + "regexpp": "^3.1.0", + "semver": "^7.2.1", + "strip-ansi": "^6.0.0", + "strip-json-comments": "^3.1.0", + "table": "^6.0.4", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^1.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz", + "integrity": "sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/espree": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", + "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", + "dev": true, + "dependencies": { + "acorn": "^7.4.0", + "acorn-jsx": "^5.3.1", + "eslint-visitor-keys": "^1.3.0" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/espree/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esquery/node_modules/estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/events": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.2.0.tgz", + "integrity": "sha512-/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg==", + "dev": true, + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/execa": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.0.0.tgz", + "integrity": "sha512-ov6w/2LCiuyO4RLYGdpFGjkcs0wMTgGE8PrkTHikeUy5iJekXyPIKUjifk5CsE0pt7sMCrMZ3YNqoCj6idQOnQ==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.5.tgz", + "integrity": "sha512-2DtFcgT68wiTTiwZ2hNdJfcHNke9XOfnwmBRWXhmeKM8rF0TGwmC/Qto3S7RoZKp5cilZbxzO5iTNTQsJ+EeDg==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.0", + "merge2": "^1.3.0", + "micromatch": "^4.0.2", + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "node_modules/fastest-levenshtein": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz", + "integrity": "sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.10.1.tgz", + "integrity": "sha512-AWuv6Ery3pM+dY7LYS8YIaCiQvUaos9OB1RyNgaOWnaX+Tik7Onvcsf8x8c+YtDeT0maYLniBip2hox5KtEXXA==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "dependencies": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.1.1.tgz", + "integrity": "sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA==", + "dev": true + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "node_modules/functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, + "node_modules/get-stream": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.0.tgz", + "integrity": "sha512-A1B3Bh1UmL0bidM/YX2NsCOTnGJePL9rO/M+Mw3m9f2gUpfokS0hi5Eah0WSUEWZdZhIZtMjkIYS7mDfOqNHbg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", + "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true + }, + "node_modules/globals": { + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", + "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "dev": true, + "dependencies": { + "type-fest": "^0.8.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globby": { + "version": "11.0.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.2.tgz", + "integrity": "sha512-2ZThXDvvV8fYFRVIxnrMQBipZQDr7MxKAmQK1vujaj9/7eF0efG7BPUKJ7jP7G5SLF37xKDXvO4S/KKLj/Z0og==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.1.1", + "ignore": "^5.1.4", + "merge2": "^1.3.0", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globby/node_modules/ignore": { + "version": "5.1.8", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", + "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.6", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", + "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==", + "dev": true + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-local": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.2.tgz", + "integrity": "sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA==", + "dev": true, + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/interpret": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", + "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-core-module": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz", + "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", + "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jest-worker": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", + "dev": true, + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, + "node_modules/json5": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", + "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/loader-runner": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz", + "integrity": "sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==", + "dev": true, + "engines": { + "node": ">=6.11.5" + } + }, + "node_modules/loader-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", + "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/long": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", + "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==" + }, + "node_modules/memory-fs": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", + "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", + "dev": true, + "dependencies": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + }, + "engines": { + "node": ">=4.3.0 <5.0.0 || >=5.10" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "dependencies": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/mime-db": { + "version": "1.46.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.46.0.tgz", + "integrity": "sha512-svXaP8UQRZ5K7or+ZmfNhg2xX3yKDMUzqadsSqi4NCH/KomcH75MAMYAGVlvXn4+b/xOPhS3I2uHKRUzvjY7BQ==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.29", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.29.tgz", + "integrity": "sha512-Y/jMt/S5sR9OaqteJtslsFZKWOIIqMACsJSiHghlCAyhf7jfVYjKBmLiX8OgpWeW+fjJ2b+Az69aPFPkUOY6xQ==", + "dev": true, + "dependencies": { + "mime-db": "1.46.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + }, + "node_modules/mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, + "node_modules/node-releases": { + "version": "1.1.71", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.71.tgz", + "integrity": "sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg==", + "dev": true + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-locate/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/physical-cpu-count": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/physical-cpu-count/-/physical-cpu-count-2.0.0.tgz", + "integrity": "sha1-GN4vl+S/epVRrXURlCtUlverpmA=", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "node_modules/progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", + "dev": true + }, + "node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.2.tgz", + "integrity": "sha512-dB15eXv3p2jDlbOiNLyMabYg1/sXvppd8DP2J3EOCQ0AkuSXCW2tP7mnVouVLJKgUMY6yP0kcQDVpLCN13h4Xg==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/rechoir": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.0.tgz", + "integrity": "sha512-ADsDEH2bvbjltXEP+hTIAmeFekTFK0V2BTxMkok6qILyAJEXV0AFfoWcAq4yfll5VdIMd/RVXq0lR+wQi5ZU3Q==", + "dev": true, + "dependencies": { + "resolve": "^1.9.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/regexpp": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", + "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "dev": true, + "dependencies": { + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-cwd/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/schema-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", + "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.6", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/semver": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", + "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/serialize-javascript": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz", + "integrity": "sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/signal-exit": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", + "dev": true + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/source-list-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", + "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", + "dev": true + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/table": { + "version": "6.0.7", + "resolved": "https://registry.npmjs.org/table/-/table-6.0.7.tgz", + "integrity": "sha512-rxZevLGTUzWna/qBLObOe16kB2RTnnbhciwgPbMMlazz1yZGVEgnZK762xyVdVznhqxrfCeBMmMkgOOaPwjH7g==", + "dev": true, + "dependencies": { + "ajv": "^7.0.2", + "lodash": "^4.17.20", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/table/node_modules/ajv": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-7.1.1.tgz", + "integrity": "sha512-ga/aqDYnUy/o7vbsRTFhhTsNeXiYb5JWDIcRIeZfwRNCefwjNTVYCGdGSUrEmiu3yDK3vFvNbgJxvrQW4JXrYQ==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/table/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/tapable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", + "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/terser": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.6.0.tgz", + "integrity": "sha512-vyqLMoqadC1uR0vywqOZzriDYzgEkNJFK4q9GeyOBHIbiECHiWLKcWfbQWAUaPfxkjDhapSlZB9f7fkMrvkVjA==", + "dev": true, + "dependencies": { + "commander": "^2.20.0", + "source-map": "~0.7.2", + "source-map-support": "~0.5.19" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser-webpack-plugin": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.1.1.tgz", + "integrity": "sha512-5XNNXZiR8YO6X6KhSGXfY0QrGrCRlSwAEjIIrlRQR4W8nP69TaJUlh3bkuac6zzgspiGPfKEHcY295MMVExl5Q==", + "dev": true, + "dependencies": { + "jest-worker": "^26.6.2", + "p-limit": "^3.1.0", + "schema-utils": "^3.0.0", + "serialize-javascript": "^5.0.1", + "source-map": "^0.6.1", + "terser": "^5.5.1" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + } + }, + "node_modules/terser/node_modules/source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/ts-loader": { + "version": "8.0.17", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-8.0.17.tgz", + "integrity": "sha512-OeVfSshx6ot/TCxRwpBHQ/4lRzfgyTkvi7ghDVrLXOHzTbSK413ROgu/xNqM72i3AFeAIJgQy78FwSMKmOW68w==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "enhanced-resolve": "^4.0.0", + "loader-utils": "^2.0.0", + "micromatch": "^4.0.0", + "semver": "^7.3.4" + }, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "typescript": "*", + "webpack": "*" + } + }, + "node_modules/ts-node": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-6.2.0.tgz", + "integrity": "sha512-ZNT+OEGfUNVMGkpIaDJJ44Zq3Yr0bkU/ugN1PHbU+/01Z7UV1fsELRiTx1KuQNvQ1A3pGh3y25iYF6jXgxV21A==", + "dependencies": { + "arrify": "^1.0.0", + "buffer-from": "^1.1.0", + "diff": "^3.1.0", + "make-error": "^1.1.1", + "minimist": "^1.2.0", + "mkdirp": "^0.5.1", + "source-map-support": "^0.5.6", + "yn": "^2.0.0" + }, + "bin": { + "ts-node": "dist/bin.js" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/ts-node/node_modules/diff": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/tsutils": { + "version": "3.20.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.20.0.tgz", + "integrity": "sha512-RYbuQuvkhuqVeXweWT3tJLKOEJ/UUw9GjNEZGWdrLLlM+611o1gwLHBpxoFJKKl25fLprp2eVthtKs5JOrNeXg==", + "dev": true, + "dependencies": { + "tslib": "^1.8.1" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + } + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/typescript": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.2.2.tgz", + "integrity": "sha512-tbb+NVrLfnsJy3M59lsDgrzWIflR4d4TIUjz+heUnHZwdF7YsrMTKoRERiIvI2lvBG95dfpLxB21WZhys1bgaQ==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "node_modules/v8-compile-cache": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.2.0.tgz", + "integrity": "sha512-gTpR5XQNKFwOd4clxfnhaqvfqMpqEwr4tOtCyz4MtYZX2JYhfr1JvBFKdS+7K/9rfpZR3VLX+YWBbKoxCgS43Q==", + "dev": true + }, + "node_modules/watchpack": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.1.1.tgz", + "integrity": "sha512-Oo7LXCmc1eE1AjyuSBmtC3+Wy4HcV8PxWh2kP6fOl8yTlNS7r0K9l1ao2lrrUza7V39Y3D/BbJgY8VeSlc5JKw==", + "dev": true, + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack": { + "version": "5.24.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.24.1.tgz", + "integrity": "sha512-eg+6OIt6npUSwbhRQY6XffAixEUSARBf+WAWOxrZwOB4jRbbpMXlridFy/Yt7N0U20Ry1vp/nnDbtN7l1rUdIA==", + "dev": true, + "dependencies": { + "@types/eslint-scope": "^3.7.0", + "@types/estree": "^0.0.46", + "@webassemblyjs/ast": "1.11.0", + "@webassemblyjs/wasm-edit": "1.11.0", + "@webassemblyjs/wasm-parser": "1.11.0", + "acorn": "^8.0.4", + "browserslist": "^4.14.5", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.7.0", + "es-module-lexer": "^0.4.0", + "eslint-scope": "^5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.4", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.0.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.1.1", + "watchpack": "^2.0.0", + "webpack-sources": "^2.1.1" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-cli": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.5.0.tgz", + "integrity": "sha512-wXg/ef6Ibstl2f50mnkcHblRPN/P9J4Nlod5Hg9HGFgSeF8rsqDGHJeVe4aR26q9l62TUJi6vmvC2Qz96YJw1Q==", + "dev": true, + "dependencies": { + "@discoveryjs/json-ext": "^0.5.0", + "@webpack-cli/configtest": "^1.0.1", + "@webpack-cli/info": "^1.2.2", + "@webpack-cli/serve": "^1.3.0", + "colorette": "^1.2.1", + "commander": "^7.0.0", + "enquirer": "^2.3.6", + "execa": "^5.0.0", + "fastest-levenshtein": "^1.0.12", + "import-local": "^3.0.2", + "interpret": "^2.2.0", + "rechoir": "^0.7.0", + "v8-compile-cache": "^2.2.0", + "webpack-merge": "^5.7.3" + }, + "bin": { + "webpack-cli": "bin/cli.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "peerDependencies": { + "webpack": "4.x.x || 5.x.x" + }, + "peerDependenciesMeta": { + "@webpack-cli/generators": { + "optional": true + }, + "@webpack-cli/init": { + "optional": true + }, + "@webpack-cli/migrate": { + "optional": true + }, + "webpack-bundle-analyzer": { + "optional": true + }, + "webpack-dev-server": { + "optional": true + } + } + }, + "node_modules/webpack-cli/node_modules/commander": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.1.0.tgz", + "integrity": "sha512-pRxBna3MJe6HKnBGsDyMv8ETbptw3axEdYHoqNh7gu5oDcew8fs0xnivZGm06Ogk8zGAJ9VX+OPEr2GXEQK4dg==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/webpack-merge": { + "version": "5.7.3", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.7.3.tgz", + "integrity": "sha512-6/JUQv0ELQ1igjGDzHkXbVDRxkfA57Zw7PfiupdLFJYrgFqY5ZP8xxbpp2lU3EPwYx89ht5Z/aDkD40hFCm5AA==", + "dev": true, + "dependencies": { + "clone-deep": "^4.0.1", + "wildcard": "^2.0.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/webpack-sources": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-2.2.0.tgz", + "integrity": "sha512-bQsA24JLwcnWGArOKUxYKhX3Mz/nK1Xf6hxullKERyktjNMC4x8koOeaDNTA2fEJ09BdWLbM/iTW0ithREUP0w==", + "dev": true, + "dependencies": { + "source-list-map": "^2.0.1", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack/node_modules/acorn": { + "version": "8.0.5", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.0.5.tgz", + "integrity": "sha512-v+DieK/HJkJOpFBETDJioequtc3PfxsWMaxIdIwujtF7FEV/MAyDQLlm6/zPvr7Mix07mLh6ccVwIsloceodlg==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/webpack/node_modules/enhanced-resolve": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.7.0.tgz", + "integrity": "sha512-6njwt/NsZFUKhM6j9U8hzVyD4E4r0x7NQzhTCbcWOJ0IQjNSAoalWmb0AE51Wn+fwan5qVESWi7t2ToBxs9vrw==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack/node_modules/tapable": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.0.tgz", + "integrity": "sha512-FBk4IesMV1rBxX2tfiK8RAmogtWn53puLOQlvO8XuwlgxcYbP4mVPS9Ph4aeamSyyVjOl24aYWAuc8U5kCVwMw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/wildcard": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", + "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", + "dev": true + }, + "node_modules/word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/yn": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yn/-/yn-2.0.0.tgz", + "integrity": "sha1-5a2ryKz0CPY4X8dklWhMiOavaJo=", + "engines": { + "node": ">=4" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + }, "dependencies": { "@babel/code-frame": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", - "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", + "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", "dev": true, "requires": { "@babel/highlight": "^7.10.4" } }, "@babel/helper-validator-identifier": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", - "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", + "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", "dev": true }, "@babel/highlight": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", - "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.12.13.tgz", + "integrity": "sha512-kocDQvIbgMKlWxXe9fof3TQ+gkIPOUSEYhJjqUjvKMez3krV7vbzYCDq39Oj11UAVK7JqPVGQPlgE85dPNlQww==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.10.4", + "@babel/helper-validator-identifier": "^7.12.11", "chalk": "^2.0.0", "js-tokens": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } } }, + "@discoveryjs/json-ext": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.2.tgz", + "integrity": "sha512-HyYEUDeIj5rRQU2Hk5HTB2uHsbRQpF70nvMhVzi+VJR0X+xNEhjPui4/kBf3VeH/wqD28PT4sVOm8qqLjBrSZg==", + "dev": true + }, "@eslint/eslintrc": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.2.2.tgz", - "integrity": "sha512-EfB5OHNYp1F4px/LI/FEnGylop7nOqkQ1LRzCM0KccA2U8tvV8w01KBv37LbO7nW4H+YhKyo2LcJhRwjjV17QQ==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.3.0.tgz", + "integrity": "sha512-1JTKgrOKAHVivSvOYw+sJOunkBjUOvjqWk1DPja7ZFhIS2mX/4EgTT8M7eTK9jrKhL/FvXXEbQwIs3pg1xp3dg==", "dev": true, "requires": { "ajv": "^6.12.4", @@ -43,57 +3135,34 @@ "ignore": "^4.0.6", "import-fresh": "^3.2.1", "js-yaml": "^3.13.1", - "lodash": "^4.17.19", + "lodash": "^4.17.20", "minimatch": "^3.0.4", "strip-json-comments": "^3.1.1" - }, - "dependencies": { - "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } } }, "@nodelib/fs.scandir": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz", - "integrity": "sha512-eGmwYQn3gxo4r7jdQnkrrN6bY478C3P+a/y72IJukF8LjB6ZHeB3c+Ehacj3sYeSmUXGlnA67/PmbM9CVwL7Dw==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.4.tgz", + "integrity": "sha512-33g3pMJk3bg5nXbL/+CY6I2eJDzZAni49PfJnL5fghPTggPvBd/pFNSgJsdAgWptuFu7qq/ERvOYFlhvsLTCKA==", "dev": true, "requires": { - "@nodelib/fs.stat": "2.0.3", + "@nodelib/fs.stat": "2.0.4", "run-parallel": "^1.1.9" } }, "@nodelib/fs.stat": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz", - "integrity": "sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.4.tgz", + "integrity": "sha512-IYlHJA0clt2+Vg7bccq+TzRdJvv19c2INqBSsoOLp1je7xjtr7J26+WXR72MCdvU9q1qTzIWDfhMf+DRvQJK4Q==", "dev": true }, "@nodelib/fs.walk": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.4.tgz", - "integrity": "sha512-1V9XOY4rDW0rehzbrcqAmHnz8e7SKvX27gh8Gt2WgB0+pdzdiLV83p72kZPU+jvMbS1qU5mauP2iOvO8rhmurQ==", + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.6.tgz", + "integrity": "sha512-8Broas6vTtW4GIXTAHDoE32hnN2M5ykgCpWGbuXHQ15vEMqr23pB76e/GZcYsZCHALv50ktd24qhEyKr6wBtow==", "dev": true, "requires": { - "@nodelib/fs.scandir": "2.1.3", + "@nodelib/fs.scandir": "2.1.4", "fastq": "^1.6.0" } }, @@ -118,364 +3187,274 @@ } }, "@types/estree": { - "version": "0.0.45", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.45.tgz", - "integrity": "sha512-jnqIUKDUqJbDIUxm0Uj7bnlMnRm1T/eZ9N+AVMqhPgzrba2GhGG5o/jCTwmdPK709nEZsGoMzXEDUjcXHa3W0g==", + "version": "0.0.46", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.46.tgz", + "integrity": "sha512-laIjwTQaD+5DukBZaygQ79K1Z0jb1bPEMRrkXSLjtCcZm+abyp5YbrqpSLzD42FwWW6gK/aS4NYpJ804nG2brg==", "dev": true }, "@types/json-schema": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.6.tgz", - "integrity": "sha512-3c+yGKvVP5Y9TYBEibGNR+kLtijnj7mYrXRg+WpFb2X9xm04g/DXYkfg4hmzJQosc9snFNUPkbYIhu+KAm6jJw==", + "version": "7.0.7", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.7.tgz", + "integrity": "sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA==", "dev": true }, "@types/node": { - "version": "14.14.12", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.12.tgz", - "integrity": "sha512-ASH8OPHMNlkdjrEdmoILmzFfsJICvhBsFfAum4aKZ/9U4B6M6tTmTPh+f3ttWdD74CEGV5XvXWkbyfSdXaTd7g==", + "version": "14.14.31", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.31.tgz", + "integrity": "sha512-vFHy/ezP5qI0rFgJ7aQnjDXwAMrG0KqqIH7tQG5PPv3BWBayOPIQNBjVc/P6hhdZfMx51REc6tfDNXHUio893g==", "dev": true }, "@typescript-eslint/eslint-plugin": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.9.1.tgz", - "integrity": "sha512-QRLDSvIPeI1pz5tVuurD+cStNR4sle4avtHhxA+2uyixWGFjKzJ+EaFVRW6dA/jOgjV5DTAjOxboQkRDE8cRlQ==", + "version": "4.15.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.15.2.tgz", + "integrity": "sha512-uiQQeu9tWl3f1+oK0yoAv9lt/KXO24iafxgQTkIYO/kitruILGx3uH+QtIAHqxFV+yIsdnJH+alel9KuE3J15Q==", "dev": true, "requires": { - "@typescript-eslint/experimental-utils": "4.9.1", - "@typescript-eslint/scope-manager": "4.9.1", + "@typescript-eslint/experimental-utils": "4.15.2", + "@typescript-eslint/scope-manager": "4.15.2", "debug": "^4.1.1", "functional-red-black-tree": "^1.0.1", + "lodash": "^4.17.15", "regexpp": "^3.0.0", "semver": "^7.3.2", "tsutils": "^3.17.1" - }, - "dependencies": { - "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "semver": { - "version": "7.3.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", - "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - } } }, "@typescript-eslint/experimental-utils": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.9.1.tgz", - "integrity": "sha512-c3k/xJqk0exLFs+cWSJxIjqLYwdHCuLWhnpnikmPQD2+NGAx9KjLYlBDcSI81EArh9FDYSL6dslAUSwILeWOxg==", + "version": "4.15.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.15.2.tgz", + "integrity": "sha512-Fxoshw8+R5X3/Vmqwsjc8nRO/7iTysRtDqx6rlfLZ7HbT8TZhPeQqbPjTyk2RheH3L8afumecTQnUc9EeXxohQ==", "dev": true, "requires": { "@types/json-schema": "^7.0.3", - "@typescript-eslint/scope-manager": "4.9.1", - "@typescript-eslint/types": "4.9.1", - "@typescript-eslint/typescript-estree": "4.9.1", + "@typescript-eslint/scope-manager": "4.15.2", + "@typescript-eslint/types": "4.15.2", + "@typescript-eslint/typescript-estree": "4.15.2", "eslint-scope": "^5.0.0", "eslint-utils": "^2.0.0" } }, "@typescript-eslint/parser": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.9.1.tgz", - "integrity": "sha512-Gv2VpqiomvQ2v4UL+dXlQcZ8zCX4eTkoIW+1aGVWT6yTO+6jbxsw7yQl2z2pPl/4B9qa5JXeIbhJpONKjXIy3g==", + "version": "4.15.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.15.2.tgz", + "integrity": "sha512-SHeF8xbsC6z2FKXsaTb1tBCf0QZsjJ94H6Bo51Y1aVEZ4XAefaw5ZAilMoDPlGghe+qtq7XdTiDlGfVTOmvA+Q==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "4.9.1", - "@typescript-eslint/types": "4.9.1", - "@typescript-eslint/typescript-estree": "4.9.1", + "@typescript-eslint/scope-manager": "4.15.2", + "@typescript-eslint/types": "4.15.2", + "@typescript-eslint/typescript-estree": "4.15.2", "debug": "^4.1.1" - }, - "dependencies": { - "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } } }, "@typescript-eslint/scope-manager": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.9.1.tgz", - "integrity": "sha512-sa4L9yUfD/1sg9Kl8OxPxvpUcqxKXRjBeZxBuZSSV1v13hjfEJkn84n0An2hN8oLQ1PmEl2uA6FkI07idXeFgQ==", + "version": "4.15.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.15.2.tgz", + "integrity": "sha512-Zm0tf/MSKuX6aeJmuXexgdVyxT9/oJJhaCkijv0DvJVT3ui4zY6XYd6iwIo/8GEZGy43cd7w1rFMiCLHbRzAPQ==", "dev": true, "requires": { - "@typescript-eslint/types": "4.9.1", - "@typescript-eslint/visitor-keys": "4.9.1" + "@typescript-eslint/types": "4.15.2", + "@typescript-eslint/visitor-keys": "4.15.2" } }, "@typescript-eslint/types": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.9.1.tgz", - "integrity": "sha512-fjkT+tXR13ks6Le7JiEdagnwEFc49IkOyys7ueWQ4O8k4quKPwPJudrwlVOJCUQhXo45PrfIvIarcrEjFTNwUA==", + "version": "4.15.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.15.2.tgz", + "integrity": "sha512-r7lW7HFkAarfUylJ2tKndyO9njwSyoy6cpfDKWPX6/ctZA+QyaYscAHXVAfJqtnY6aaTwDYrOhp+ginlbc7HfQ==", "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.9.1.tgz", - "integrity": "sha512-bzP8vqwX6Vgmvs81bPtCkLtM/Skh36NE6unu6tsDeU/ZFoYthlTXbBmpIrvosgiDKlWTfb2ZpPELHH89aQjeQw==", + "version": "4.15.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.15.2.tgz", + "integrity": "sha512-cGR8C2g5SPtHTQvAymEODeqx90pJHadWsgTtx6GbnTWKqsg7yp6Eaya9nFzUd4KrKhxdYTTFBiYeTPQaz/l8bw==", "dev": true, "requires": { - "@typescript-eslint/types": "4.9.1", - "@typescript-eslint/visitor-keys": "4.9.1", + "@typescript-eslint/types": "4.15.2", + "@typescript-eslint/visitor-keys": "4.15.2", "debug": "^4.1.1", "globby": "^11.0.1", "is-glob": "^4.0.1", - "lodash": "^4.17.15", "semver": "^7.3.2", "tsutils": "^3.17.1" - }, - "dependencies": { - "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "semver": { - "version": "7.3.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", - "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - } } }, "@typescript-eslint/visitor-keys": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.9.1.tgz", - "integrity": "sha512-9gspzc6UqLQHd7lXQS7oWs+hrYggspv/rk6zzEMhCbYwPE/sF7oxo7GAjkS35Tdlt7wguIG+ViWCPtVZHz/ybQ==", + "version": "4.15.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.15.2.tgz", + "integrity": "sha512-TME1VgSb7wTwgENN5KVj4Nqg25hP8DisXxNBojM4Nn31rYaNDIocNm5cmjOFfh42n7NVERxWrDFoETO/76ePyg==", "dev": true, "requires": { - "@typescript-eslint/types": "4.9.1", + "@typescript-eslint/types": "4.15.2", "eslint-visitor-keys": "^2.0.0" } }, "@webassemblyjs/ast": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz", - "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.0.tgz", + "integrity": "sha512-kX2W49LWsbthrmIRMbQZuQDhGtjyqXfEmmHyEi4XWnSZtPmxY0+3anPIzsnRb45VH/J55zlOfWvZuY47aJZTJg==", "dev": true, "requires": { - "@webassemblyjs/helper-module-context": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/wast-parser": "1.9.0" + "@webassemblyjs/helper-numbers": "1.11.0", + "@webassemblyjs/helper-wasm-bytecode": "1.11.0" } }, "@webassemblyjs/floating-point-hex-parser": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz", - "integrity": "sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.0.tgz", + "integrity": "sha512-Q/aVYs/VnPDVYvsCBL/gSgwmfjeCb4LW8+TMrO3cSzJImgv8lxxEPM2JA5jMrivE7LSz3V+PFqtMbls3m1exDA==", "dev": true }, "@webassemblyjs/helper-api-error": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz", - "integrity": "sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.0.tgz", + "integrity": "sha512-baT/va95eXiXb2QflSx95QGT5ClzWpGaa8L7JnJbgzoYeaA27FCvuBXU758l+KXWRndEmUXjP0Q5fibhavIn8w==", "dev": true }, "@webassemblyjs/helper-buffer": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz", - "integrity": "sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==", - "dev": true - }, - "@webassemblyjs/helper-code-frame": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz", - "integrity": "sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==", - "dev": true, - "requires": { - "@webassemblyjs/wast-printer": "1.9.0" - } - }, - "@webassemblyjs/helper-fsm": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz", - "integrity": "sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.0.tgz", + "integrity": "sha512-u9HPBEl4DS+vA8qLQdEQ6N/eJQ7gT7aNvMIo8AAWvAl/xMrcOSiI2M0MAnMCy3jIFke7bEee/JwdX1nUpCtdyA==", "dev": true }, - "@webassemblyjs/helper-module-context": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz", - "integrity": "sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==", + "@webassemblyjs/helper-numbers": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.0.tgz", + "integrity": "sha512-DhRQKelIj01s5IgdsOJMKLppI+4zpmcMQ3XboFPLwCpSNH6Hqo1ritgHgD0nqHeSYqofA6aBN/NmXuGjM1jEfQ==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.9.0" + "@webassemblyjs/floating-point-hex-parser": "1.11.0", + "@webassemblyjs/helper-api-error": "1.11.0", + "@xtuc/long": "4.2.2" } }, "@webassemblyjs/helper-wasm-bytecode": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz", - "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.0.tgz", + "integrity": "sha512-MbmhvxXExm542tWREgSFnOVo07fDpsBJg3sIl6fSp9xuu75eGz5lz31q7wTLffwL3Za7XNRCMZy210+tnsUSEA==", "dev": true }, "@webassemblyjs/helper-wasm-section": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz", - "integrity": "sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.0.tgz", + "integrity": "sha512-3Eb88hcbfY/FCukrg6i3EH8H2UsD7x8Vy47iVJrP967A9JGqgBVL9aH71SETPx1JrGsOUVLo0c7vMCN22ytJew==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-buffer": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/wasm-gen": "1.9.0" + "@webassemblyjs/ast": "1.11.0", + "@webassemblyjs/helper-buffer": "1.11.0", + "@webassemblyjs/helper-wasm-bytecode": "1.11.0", + "@webassemblyjs/wasm-gen": "1.11.0" } }, "@webassemblyjs/ieee754": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz", - "integrity": "sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.0.tgz", + "integrity": "sha512-KXzOqpcYQwAfeQ6WbF6HXo+0udBNmw0iXDmEK5sFlmQdmND+tr773Ti8/5T/M6Tl/413ArSJErATd8In3B+WBA==", "dev": true, "requires": { "@xtuc/ieee754": "^1.2.0" } }, "@webassemblyjs/leb128": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.9.0.tgz", - "integrity": "sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.0.tgz", + "integrity": "sha512-aqbsHa1mSQAbeeNcl38un6qVY++hh8OpCOzxhixSYgbRfNWcxJNJQwe2rezK9XEcssJbbWIkblaJRwGMS9zp+g==", "dev": true, "requires": { "@xtuc/long": "4.2.2" } }, "@webassemblyjs/utf8": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.9.0.tgz", - "integrity": "sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.0.tgz", + "integrity": "sha512-A/lclGxH6SpSLSyFowMzO/+aDEPU4hvEiooCMXQPcQFPPJaYcPQNKGOCLUySJsYJ4trbpr+Fs08n4jelkVTGVw==", "dev": true }, "@webassemblyjs/wasm-edit": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz", - "integrity": "sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.0.tgz", + "integrity": "sha512-JHQ0damXy0G6J9ucyKVXO2j08JVJ2ntkdJlq1UTiUrIgfGMmA7Ik5VdC/L8hBK46kVJgujkBIoMtT8yVr+yVOQ==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-buffer": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/helper-wasm-section": "1.9.0", - "@webassemblyjs/wasm-gen": "1.9.0", - "@webassemblyjs/wasm-opt": "1.9.0", - "@webassemblyjs/wasm-parser": "1.9.0", - "@webassemblyjs/wast-printer": "1.9.0" + "@webassemblyjs/ast": "1.11.0", + "@webassemblyjs/helper-buffer": "1.11.0", + "@webassemblyjs/helper-wasm-bytecode": "1.11.0", + "@webassemblyjs/helper-wasm-section": "1.11.0", + "@webassemblyjs/wasm-gen": "1.11.0", + "@webassemblyjs/wasm-opt": "1.11.0", + "@webassemblyjs/wasm-parser": "1.11.0", + "@webassemblyjs/wast-printer": "1.11.0" } }, "@webassemblyjs/wasm-gen": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz", - "integrity": "sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.0.tgz", + "integrity": "sha512-BEUv1aj0WptCZ9kIS30th5ILASUnAPEvE3tVMTrItnZRT9tXCLW2LEXT8ezLw59rqPP9klh9LPmpU+WmRQmCPQ==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/ieee754": "1.9.0", - "@webassemblyjs/leb128": "1.9.0", - "@webassemblyjs/utf8": "1.9.0" + "@webassemblyjs/ast": "1.11.0", + "@webassemblyjs/helper-wasm-bytecode": "1.11.0", + "@webassemblyjs/ieee754": "1.11.0", + "@webassemblyjs/leb128": "1.11.0", + "@webassemblyjs/utf8": "1.11.0" } }, "@webassemblyjs/wasm-opt": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz", - "integrity": "sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.0.tgz", + "integrity": "sha512-tHUSP5F4ywyh3hZ0+fDQuWxKx3mJiPeFufg+9gwTpYp324mPCQgnuVKwzLTZVqj0duRDovnPaZqDwoyhIO8kYg==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-buffer": "1.9.0", - "@webassemblyjs/wasm-gen": "1.9.0", - "@webassemblyjs/wasm-parser": "1.9.0" + "@webassemblyjs/ast": "1.11.0", + "@webassemblyjs/helper-buffer": "1.11.0", + "@webassemblyjs/wasm-gen": "1.11.0", + "@webassemblyjs/wasm-parser": "1.11.0" } }, "@webassemblyjs/wasm-parser": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz", - "integrity": "sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.0.tgz", + "integrity": "sha512-6L285Sgu9gphrcpDXINvm0M9BskznnzJTE7gYkjDbxET28shDqp27wpruyx3C2S/dvEwiigBwLA1cz7lNUi0kw==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-api-error": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/ieee754": "1.9.0", - "@webassemblyjs/leb128": "1.9.0", - "@webassemblyjs/utf8": "1.9.0" + "@webassemblyjs/ast": "1.11.0", + "@webassemblyjs/helper-api-error": "1.11.0", + "@webassemblyjs/helper-wasm-bytecode": "1.11.0", + "@webassemblyjs/ieee754": "1.11.0", + "@webassemblyjs/leb128": "1.11.0", + "@webassemblyjs/utf8": "1.11.0" } }, - "@webassemblyjs/wast-parser": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz", - "integrity": "sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==", + "@webassemblyjs/wast-printer": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.0.tgz", + "integrity": "sha512-Fg5OX46pRdTgB7rKIUojkh9vXaVN6sGYCnEiJN1GYkb0RPwShZXp6KTDqmoMdQPKhcroOXh3fEzmkWmCYaKYhQ==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/floating-point-hex-parser": "1.9.0", - "@webassemblyjs/helper-api-error": "1.9.0", - "@webassemblyjs/helper-code-frame": "1.9.0", - "@webassemblyjs/helper-fsm": "1.9.0", + "@webassemblyjs/ast": "1.11.0", "@xtuc/long": "4.2.2" } }, - "@webassemblyjs/wast-printer": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz", - "integrity": "sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==", + "@webpack-cli/configtest": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.0.1.tgz", + "integrity": "sha512-B+4uBUYhpzDXmwuo3V9yBH6cISwxEI4J+NO5ggDaGEEHb0osY/R7MzeKc0bHURXQuZjMM4qD+bSJCKIuI3eNBQ==", "dev": true, - "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/wast-parser": "1.9.0", - "@xtuc/long": "4.2.2" - } + "requires": {} }, "@webpack-cli/info": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.1.0.tgz", - "integrity": "sha512-uNWSdaYHc+f3LdIZNwhdhkjjLDDl3jP2+XBqAq9H8DjrJUvlOKdP8TNruy1yEaDfgpAIgbSAN7pye4FEHg9tYQ==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.2.2.tgz", + "integrity": "sha512-5U9kUJHnwU+FhKH4PWGZuBC1hTEPYyxGSL5jjoBI96Gx8qcYJGOikpiIpFoTq8mmgX3im2zAo2wanv/alD74KQ==", "dev": true, "requires": { "envinfo": "^7.7.3" } }, "@webpack-cli/serve": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.1.0.tgz", - "integrity": "sha512-7RfnMXCpJ/NThrhq4gYQYILB18xWyoQcBey81oIyVbmgbc6m5ZHHyFK+DyH7pLHJf0p14MxL4mTsoPAgBSTpIg==", - "dev": true + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.3.0.tgz", + "integrity": "sha512-k2p2VrONcYVX1wRRrf0f3X2VGltLWcv+JzXRBDmvCxGlCeESx4OXw91TsWeKOkp784uNoVQo313vxJFHXPPwfw==", + "dev": true, + "requires": {} }, "@xtuc/ieee754": { "version": "1.2.0", @@ -499,7 +3478,8 @@ "version": "5.3.1", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz", "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==", - "dev": true + "dev": true, + "requires": {} }, "ajv": { "version": "6.12.6", @@ -517,7 +3497,8 @@ "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true + "dev": true, + "requires": {} }, "ansi-colors": { "version": "4.1.1", @@ -532,12 +3513,12 @@ "dev": true }, "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "requires": { - "color-convert": "^1.9.0" + "color-convert": "^2.0.1" } }, "argparse": { @@ -549,12 +3530,6 @@ "sprintf-js": "~1.0.2" } }, - "array-back": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.1.tgz", - "integrity": "sha512-Z/JnaVEXv+A9xabHzN43FiiiWEE7gPCRXMrVmRm00tWbjZRul1iHm7ECzlyNq1p4a4ATXz+G9FJ3GqGOkOV3fg==", - "dev": true - }, "array-union": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", @@ -567,9 +3542,9 @@ "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=" }, "astral-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", - "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", "dev": true }, "balanced-match": { @@ -585,9 +3560,9 @@ "dev": true }, "binaryen": { - "version": "98.0.0-nightly.20210106", - "resolved": "https://registry.npmjs.org/binaryen/-/binaryen-98.0.0-nightly.20210106.tgz", - "integrity": "sha512-iunAgesqT9PXVYCc72FA4h0sCCKLifruT6NuUH63xqlFJGpChhZLgOtyIb/fIgTibN5Pd692cxfBViyCWFsJ9Q==" + "version": "99.0.0-nightly.20210220", + "resolved": "https://registry.npmjs.org/binaryen/-/binaryen-99.0.0-nightly.20210220.tgz", + "integrity": "sha512-fQfDEZVgQQa3E0cxJx8I6nDN2zIB1WrrURtAyJoP6iyF40nTAwb5bFAC38fPT0PwCnxqziEgJ0MF36j79/BtYw==" }, "brace-expansion": { "version": "1.1.11", @@ -609,16 +3584,16 @@ } }, "browserslist": { - "version": "4.16.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.0.tgz", - "integrity": "sha512-/j6k8R0p3nxOC6kx5JGAxsnhc9ixaWJfYc+TNTzxg6+ARaESAvQGV7h0uNOB4t+pLQJZWzcrMxXOxjgsCj3dqQ==", + "version": "4.16.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.3.tgz", + "integrity": "sha512-vIyhWmIkULaq04Gt93txdh+j02yX/JzlyhLYbV3YQCn/zvES3JnY7TifHHvvr1w5hTDluNKMkV05cs4vy8Q7sw==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001165", + "caniuse-lite": "^1.0.30001181", "colorette": "^1.2.1", - "electron-to-chromium": "^1.3.621", + "electron-to-chromium": "^1.3.649", "escalade": "^3.1.1", - "node-releases": "^1.1.67" + "node-releases": "^1.1.70" } }, "buffer-from": { @@ -633,20 +3608,19 @@ "dev": true }, "caniuse-lite": { - "version": "1.0.30001165", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001165.tgz", - "integrity": "sha512-8cEsSMwXfx7lWSUMA2s08z9dIgsnR5NAqjXP23stdsU3AUWkCr/rr4s4OFtHXn5XXr6+7kam3QFVoYyXNPdJPA==", + "version": "1.0.30001191", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001191.tgz", + "integrity": "sha512-xJJqzyd+7GCJXkcoBiQ1GuxEiOBCLQ0aVW9HMekifZsAVGdj5eJ4mFB9fEhSHipq9IOk/QXFJUiIr9lZT+EsGw==", "dev": true }, "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", "dev": true, "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" } }, "chrome-trace-event": { @@ -658,19 +3632,30 @@ "tslib": "^1.9.0" } }, + "clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + } + }, "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "requires": { - "color-name": "1.1.3" + "color-name": "~1.1.4" } }, "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, "colorette": { @@ -679,18 +3664,6 @@ "integrity": "sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw==", "dev": true }, - "command-line-usage": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/command-line-usage/-/command-line-usage-6.1.1.tgz", - "integrity": "sha512-F59pEuAR9o1SF/bD0dQBDluhpT4jJQNWUHEuVBqpDmCUo6gPjCi+m9fCWnWZVR/oG6cMTUms4h+3NPl74wGXvA==", - "dev": true, - "requires": { - "array-back": "^4.0.1", - "chalk": "^2.4.2", - "table-layout": "^1.0.1", - "typical": "^5.2.0" - } - }, "commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", @@ -720,11 +3693,14 @@ "which": "^2.0.1" } }, - "deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "dev": true + "debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } }, "deep-is": { "version": "0.1.3", @@ -757,15 +3733,15 @@ } }, "electron-to-chromium": { - "version": "1.3.622", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.622.tgz", - "integrity": "sha512-AJT0Fm1W0uZlMVVkkJrcCVvczDuF8tPm3bwzQf5WO8AaASB2hwTRP7B8pU5rqjireH+ib6am8+hH5/QkXzzYKw==", + "version": "1.3.672", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.672.tgz", + "integrity": "sha512-gFQe7HBb0lbOMqK2GAS5/1F+B0IMdYiAgB9OT/w1F4M7lgJK2aNOMNOM622aEax+nS1cTMytkiT0uMOkbtFmHw==", "dev": true }, "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true }, "emojis-list": { @@ -774,19 +3750,10 @@ "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", "dev": true }, - "end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dev": true, - "requires": { - "once": "^1.4.0" - } - }, "enhanced-resolve": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.3.0.tgz", - "integrity": "sha512-3e87LvavsdxyoCfGusJnrZ5G8SLPOFeHSNpZI/ATL9a5leXo2k0w6MKnbqhdBad9qTobSfB20Ld7UmgoNbAZkQ==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz", + "integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==", "dev": true, "requires": { "graceful-fs": "^4.1.2", @@ -804,20 +3771,26 @@ } }, "envinfo": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.7.3.tgz", - "integrity": "sha512-46+j5QxbPWza0PB1i15nZx0xQ4I/EfQxg9J8Had3b408SV63nEtor2e+oiY63amTo9KTuh2a3XLObNwduxYwwA==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.7.4.tgz", + "integrity": "sha512-TQXTYFVVwwluWSFis6K2XKxgrD22jEv0FTuLCQI+OjH7rn93+iY0fSSFM5lrSxFY+H1+B0/cvvlamr3UsBivdQ==", "dev": true }, "errno": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", - "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", "dev": true, "requires": { "prr": "~1.0.1" } }, + "es-module-lexer": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.4.0.tgz", + "integrity": "sha512-iuEGihqqhKWFgh72Q/Jtch7V2t/ft8w8IPP2aEN8ArYKO+IWyo6hsi96hCdgyeEDQIV3InhYQ9BlwUFPGXrbEQ==", + "dev": true + }, "escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", @@ -831,13 +3804,13 @@ "dev": true }, "eslint": { - "version": "7.15.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.15.0.tgz", - "integrity": "sha512-Vr64xFDT8w30wFll643e7cGrIkPEU50yIiI36OdSIDoSGguIeaLzBo0vpGvzo9RECUqq7htURfwEtKqwytkqzA==", + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.20.0.tgz", + "integrity": "sha512-qGi0CTcOGP2OtCQBgWZlQjcTuP0XkIpYFj25XtRTQSHC+umNnp7UMshr2G8SLsRFYDdAPFeHOsiteadmMH02Yw==", "dev": true, "requires": { - "@babel/code-frame": "^7.0.0", - "@eslint/eslintrc": "^0.2.2", + "@babel/code-frame": "7.12.11", + "@eslint/eslintrc": "^0.3.0", "ajv": "^6.10.0", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", @@ -848,7 +3821,7 @@ "eslint-utils": "^2.1.0", "eslint-visitor-keys": "^2.0.0", "espree": "^7.3.1", - "esquery": "^1.2.0", + "esquery": "^1.4.0", "esutils": "^2.0.2", "file-entry-cache": "^6.0.0", "functional-red-black-tree": "^1.0.1", @@ -861,7 +3834,7 @@ "js-yaml": "^3.13.1", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", - "lodash": "^4.17.19", + "lodash": "^4.17.20", "minimatch": "^3.0.4", "natural-compare": "^1.4.0", "optionator": "^0.9.1", @@ -870,90 +3843,9 @@ "semver": "^7.2.1", "strip-ansi": "^6.0.0", "strip-json-comments": "^3.1.0", - "table": "^5.2.3", + "table": "^6.0.4", "text-table": "^0.2.0", "v8-compile-cache": "^2.0.3" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "semver": { - "version": "7.3.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", - "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } } }, "eslint-scope": { @@ -1015,9 +3907,9 @@ "dev": true }, "esquery": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.3.1.tgz", - "integrity": "sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", "dev": true, "requires": { "estraverse": "^5.1.0" @@ -1067,19 +3959,19 @@ "dev": true }, "execa": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", - "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.0.0.tgz", + "integrity": "sha512-ov6w/2LCiuyO4RLYGdpFGjkcs0wMTgGE8PrkTHikeUy5iJekXyPIKUjifk5CsE0pt7sMCrMZ3YNqoCj6idQOnQ==", "dev": true, "requires": { - "cross-spawn": "^7.0.0", - "get-stream": "^5.0.0", - "human-signals": "^1.1.1", + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", "is-stream": "^2.0.0", "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.0", - "onetime": "^5.1.0", - "signal-exit": "^3.0.2", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", "strip-final-newline": "^2.0.0" } }, @@ -1090,9 +3982,9 @@ "dev": true }, "fast-glob": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.4.tgz", - "integrity": "sha512-kr/Oo6PX51265qeuCYsyGypiO5uJFgBS0jksyG7FUeCyQzNwYnzrNIMR1NXfkZXsMYXYLRAHgISHBz8gQcxKHQ==", + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.5.tgz", + "integrity": "sha512-2DtFcgT68wiTTiwZ2hNdJfcHNke9XOfnwmBRWXhmeKM8rF0TGwmC/Qto3S7RoZKp5cilZbxzO5iTNTQsJ+EeDg==", "dev": true, "requires": { "@nodelib/fs.stat": "^2.0.2", @@ -1115,19 +4007,25 @@ "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", "dev": true }, + "fastest-levenshtein": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz", + "integrity": "sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==", + "dev": true + }, "fastq": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.9.0.tgz", - "integrity": "sha512-i7FVWL8HhVY+CTkwFxkN2mk3h+787ixS5S63eb78diVRc1MCssarHq3W5cj0av7YDSwmaV928RNag+U1etRQ7w==", + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.10.1.tgz", + "integrity": "sha512-AWuv6Ery3pM+dY7LYS8YIaCiQvUaos9OB1RyNgaOWnaX+Tik7Onvcsf8x8c+YtDeT0maYLniBip2hox5KtEXXA==", "dev": true, "requires": { "reusify": "^1.0.4" } }, "file-entry-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.0.tgz", - "integrity": "sha512-fqoO76jZ3ZnYrXLDRxBR1YvOvc0k844kcOg40bgsPrE25LAb/PDqTY+ho64Xh2c8ZXgIKldchCFHczG2UVRcWA==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "dev": true, "requires": { "flat-cache": "^3.0.4" @@ -1143,12 +4041,12 @@ } }, "find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, "requires": { - "locate-path": "^6.0.0", + "locate-path": "^5.0.0", "path-exists": "^4.0.0" } }, @@ -1160,23 +4058,12 @@ "requires": { "flatted": "^3.1.0", "rimraf": "^3.0.2" - }, - "dependencies": { - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - } } }, "flatted": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.1.0.tgz", - "integrity": "sha512-tW+UkmtNg/jv9CSofAKvgVcO7c2URjhTdW1ZTkcAritblu8tajiYy7YisnIflEwtKssCtOxpnBRoCB7iap0/TA==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.1.1.tgz", + "integrity": "sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA==", "dev": true }, "fs.realpath": { @@ -1198,13 +4085,10 @@ "dev": true }, "get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "dev": true, - "requires": { - "pump": "^3.0.0" - } + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.0.tgz", + "integrity": "sha512-A1B3Bh1UmL0bidM/YX2NsCOTnGJePL9rO/M+Mw3m9f2gUpfokS0hi5Eah0WSUEWZdZhIZtMjkIYS7mDfOqNHbg==", + "dev": true }, "glob": { "version": "7.1.6", @@ -1245,9 +4129,9 @@ } }, "globby": { - "version": "11.0.1", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.1.tgz", - "integrity": "sha512-iH9RmgwCmUJHi2z5o2l3eTtGBtXek1OYlHrbcxOYugyHLmAsZrPj43OtHThd62Buh/Vv6VyCBD2bdyWcGNQqoQ==", + "version": "11.0.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.2.tgz", + "integrity": "sha512-2ZThXDvvV8fYFRVIxnrMQBipZQDr7MxKAmQK1vujaj9/7eF0efG7BPUKJ7jP7G5SLF37xKDXvO4S/KKLj/Z0og==", "dev": true, "requires": { "array-union": "^2.1.0", @@ -1256,12 +4140,20 @@ "ignore": "^5.1.4", "merge2": "^1.3.0", "slash": "^3.0.0" + }, + "dependencies": { + "ignore": { + "version": "5.1.8", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", + "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", + "dev": true + } } }, "graceful-fs": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", - "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==", + "version": "4.2.6", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", + "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==", "dev": true }, "has": { @@ -1274,27 +4166,27 @@ } }, "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, "human-signals": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", - "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", "dev": true }, "ignore": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", "dev": true }, "import-fresh": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.2.tgz", - "integrity": "sha512-cTPNrlvJT6twpYy+YmKUKrTSjWFs3bjYjAhCwm+z4EOCubZxAuO+hHpRN64TqjEaYSHs7tJAE0w1CKMGmsG/lw==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", "dev": true, "requires": { "parent-module": "^1.0.0", @@ -1309,54 +4201,6 @@ "requires": { "pkg-dir": "^4.2.0", "resolve-cwd": "^3.0.0" - }, - "dependencies": { - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - } - }, - "pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "requires": { - "find-up": "^4.0.0" - } - } } }, "imurmurhash": { @@ -1403,9 +4247,9 @@ "dev": true }, "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true }, "is-glob": { @@ -1423,6 +4267,15 @@ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, "is-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", @@ -1441,6 +4294,12 @@ "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", "dev": true }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, "jest-worker": { "version": "26.6.2", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", @@ -1450,23 +4309,6 @@ "@types/node": "*", "merge-stream": "^2.0.0", "supports-color": "^7.0.0" - }, - "dependencies": { - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } } }, "js-tokens": { @@ -1504,18 +4346,18 @@ "dev": true }, "json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", + "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", "dev": true, "requires": { - "minimist": "^1.2.0" + "minimist": "^1.2.5" } }, - "leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true }, "levn": { @@ -1529,35 +4371,35 @@ } }, "loader-runner": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.1.0.tgz", - "integrity": "sha512-oR4lB4WvwFoC70ocraKhn5nkKSs23t57h9udUgw8o0iH8hMXeEoRuUgfcvgUwAJ1ZpRqBvcou4N2SMvM1DwMrA==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz", + "integrity": "sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==", "dev": true }, "loader-utils": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", - "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", + "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", "dev": true, "requires": { "big.js": "^5.2.2", "emojis-list": "^3.0.0", - "json5": "^1.0.1" + "json5": "^2.1.2" } }, "locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, "requires": { - "p-locate": "^5.0.0" + "p-locate": "^4.1.0" } }, "lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true }, "long": { @@ -1612,18 +4454,18 @@ } }, "mime-db": { - "version": "1.44.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", - "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==", + "version": "1.46.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.46.0.tgz", + "integrity": "sha512-svXaP8UQRZ5K7or+ZmfNhg2xX3yKDMUzqadsSqi4NCH/KomcH75MAMYAGVlvXn4+b/xOPhS3I2uHKRUzvjY7BQ==", "dev": true }, "mime-types": { - "version": "2.1.27", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", - "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", + "version": "2.1.29", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.29.tgz", + "integrity": "sha512-Y/jMt/S5sR9OaqteJtslsFZKWOIIqMACsJSiHghlCAyhf7jfVYjKBmLiX8OgpWeW+fjJ2b+Az69aPFPkUOY6xQ==", "dev": true, "requires": { - "mime-db": "1.44.0" + "mime-db": "1.46.0" } }, "mimic-fn": { @@ -1654,6 +4496,12 @@ "minimist": "^1.2.5" } }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, "natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", @@ -1667,9 +4515,9 @@ "dev": true }, "node-releases": { - "version": "1.1.67", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.67.tgz", - "integrity": "sha512-V5QF9noGFl3EymEwUYzO+3NTDpGfQB4ve6Qfnzf3UNydMhjQRVPR1DZTuvWiLzaFJYw2fmDwAfnRNEVb64hSIg==", + "version": "1.1.71", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.71.tgz", + "integrity": "sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg==", "dev": true }, "npm-run-path": { @@ -1723,12 +4571,23 @@ } }, "p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, "requires": { - "p-limit": "^3.0.2" + "p-limit": "^2.2.0" + }, + "dependencies": { + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + } } }, "p-try": { @@ -1789,12 +4648,12 @@ "dev": true }, "pkg-dir": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-5.0.0.tgz", - "integrity": "sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "dev": true, "requires": { - "find-up": "^5.0.0" + "find-up": "^4.0.0" } }, "prelude-ls": { @@ -1821,22 +4680,18 @@ "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", "dev": true }, - "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, "punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", "dev": true }, + "queue-microtask": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.2.tgz", + "integrity": "sha512-dB15eXv3p2jDlbOiNLyMabYg1/sXvppd8DP2J3EOCQ0AkuSXCW2tP7mnVouVLJKgUMY6yP0kcQDVpLCN13h4Xg==", + "dev": true + }, "randombytes": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", @@ -1870,25 +4725,25 @@ "resolve": "^1.9.0" } }, - "reduce-flatten": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-2.0.0.tgz", - "integrity": "sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w==", - "dev": true - }, "regexpp": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", "dev": true }, + "require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true + }, "resolve": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz", - "integrity": "sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==", + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", "dev": true, "requires": { - "is-core-module": "^2.1.0", + "is-core-module": "^2.2.0", "path-parse": "^1.0.6" } }, @@ -1921,11 +4776,23 @@ "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", "dev": true }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, "run-parallel": { - "version": "1.1.10", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.10.tgz", - "integrity": "sha512-zb/1OuZ6flOlH6tQyMPUrE3x3Ulxjlo9WIVXR4yVYi4H9UXQaeIsPbLn2R3O3vQCnDKkAl2qHiuocKKX4Tz/Sw==", - "dev": true + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "requires": { + "queue-microtask": "^1.2.2" + } }, "safe-buffer": { "version": "5.1.2", @@ -1945,10 +4812,13 @@ } }, "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", + "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } }, "serialize-javascript": { "version": "5.0.1", @@ -1959,6 +4829,15 @@ "randombytes": "^2.1.0" } }, + "shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "requires": { + "kind-of": "^6.0.2" + } + }, "shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -1987,14 +4866,14 @@ "dev": true }, "slice-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", - "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", "dev": true, "requires": { - "ansi-styles": "^3.2.0", - "astral-regex": "^1.0.0", - "is-fullwidth-code-point": "^2.0.0" + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" } }, "source-list-map": { @@ -2023,34 +4902,6 @@ "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", "dev": true }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - } - } - }, "string_decoder": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", @@ -2060,6 +4911,17 @@ "safe-buffer": "~5.1.0" } }, + "string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, "strip-ansi": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", @@ -2082,36 +4944,44 @@ "dev": true }, "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "requires": { - "has-flag": "^3.0.0" + "has-flag": "^4.0.0" } }, "table": { - "version": "5.4.6", - "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", - "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", - "dev": true, - "requires": { - "ajv": "^6.10.2", - "lodash": "^4.17.14", - "slice-ansi": "^2.1.0", - "string-width": "^3.0.0" - } - }, - "table-layout": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/table-layout/-/table-layout-1.0.1.tgz", - "integrity": "sha512-dEquqYNJiGwY7iPfZ3wbXDI944iqanTSchrACLL2nOB+1r+h1Nzu2eH+DuPPvWvm5Ry7iAPeFlgEtP5bIp5U7Q==", + "version": "6.0.7", + "resolved": "https://registry.npmjs.org/table/-/table-6.0.7.tgz", + "integrity": "sha512-rxZevLGTUzWna/qBLObOe16kB2RTnnbhciwgPbMMlazz1yZGVEgnZK762xyVdVznhqxrfCeBMmMkgOOaPwjH7g==", "dev": true, "requires": { - "array-back": "^4.0.1", - "deep-extend": "~0.6.0", - "typical": "^5.2.0", - "wordwrapjs": "^4.0.0" + "ajv": "^7.0.2", + "lodash": "^4.17.20", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.0" + }, + "dependencies": { + "ajv": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-7.1.1.tgz", + "integrity": "sha512-ga/aqDYnUy/o7vbsRTFhhTsNeXiYb5JWDIcRIeZfwRNCefwjNTVYCGdGSUrEmiu3yDK3vFvNbgJxvrQW4JXrYQ==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + } } }, "tapable": { @@ -2121,9 +4991,9 @@ "dev": true }, "terser": { - "version": "5.5.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.5.1.tgz", - "integrity": "sha512-6VGWZNVP2KTUcltUQJ25TtNjx/XgdDsBDKGt8nN0MpydU36LmbPPcMBd2kmtZNNGVVDLg44k7GKeHHj+4zPIBQ==", + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.6.0.tgz", + "integrity": "sha512-vyqLMoqadC1uR0vywqOZzriDYzgEkNJFK4q9GeyOBHIbiECHiWLKcWfbQWAUaPfxkjDhapSlZB9f7fkMrvkVjA==", "dev": true, "requires": { "commander": "^2.20.0", @@ -2140,17 +5010,17 @@ } }, "terser-webpack-plugin": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.0.3.tgz", - "integrity": "sha512-zFdGk8Lh9ZJGPxxPE6jwysOlATWB8GMW8HcfGULWA/nPal+3VdATflQvSBSLQJRCmYZnfFJl6vkRTiwJGNgPiQ==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.1.1.tgz", + "integrity": "sha512-5XNNXZiR8YO6X6KhSGXfY0QrGrCRlSwAEjIIrlRQR4W8nP69TaJUlh3bkuac6zzgspiGPfKEHcY295MMVExl5Q==", "dev": true, "requires": { - "jest-worker": "^26.6.1", - "p-limit": "^3.0.2", + "jest-worker": "^26.6.2", + "p-limit": "^3.1.0", "schema-utils": "^3.0.0", "serialize-javascript": "^5.0.1", "source-map": "^0.6.1", - "terser": "^5.3.8" + "terser": "^5.5.1" } }, "text-table": { @@ -2169,16 +5039,16 @@ } }, "ts-loader": { - "version": "8.0.12", - "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-8.0.12.tgz", - "integrity": "sha512-UIivVfGVJDdwwjgSrbtcL9Nf10c1BWnL1mxAQUVcnhNIn/P9W3nP5v60Z0aBMtc7ZrE11lMmU6+5jSgAXmGaYw==", + "version": "8.0.17", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-8.0.17.tgz", + "integrity": "sha512-OeVfSshx6ot/TCxRwpBHQ/4lRzfgyTkvi7ghDVrLXOHzTbSK413ROgu/xNqM72i3AFeAIJgQy78FwSMKmOW68w==", "dev": true, "requires": { - "chalk": "^2.3.0", + "chalk": "^4.1.0", "enhanced-resolve": "^4.0.0", - "loader-utils": "^1.0.2", + "loader-utils": "^2.0.0", "micromatch": "^4.0.0", - "semver": "^6.0.0" + "semver": "^7.3.4" } }, "ts-node": { @@ -2210,9 +5080,9 @@ "dev": true }, "tsutils": { - "version": "3.17.1", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.17.1.tgz", - "integrity": "sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g==", + "version": "3.20.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.20.0.tgz", + "integrity": "sha512-RYbuQuvkhuqVeXweWT3tJLKOEJ/UUw9GjNEZGWdrLLlM+611o1gwLHBpxoFJKKl25fLprp2eVthtKs5JOrNeXg==", "dev": true, "requires": { "tslib": "^1.8.1" @@ -2234,21 +5104,15 @@ "dev": true }, "typescript": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.1.2.tgz", - "integrity": "sha512-thGloWsGH3SOxv1SoY7QojKi0tc+8FnOmiarEGMbd/lar7QOEd3hvlx3Fp5y6FlDUGl9L+pd4n2e+oToGMmhRQ==", - "dev": true - }, - "typical": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", - "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.2.2.tgz", + "integrity": "sha512-tbb+NVrLfnsJy3M59lsDgrzWIflR4d4TIUjz+heUnHZwdF7YsrMTKoRERiIvI2lvBG95dfpLxB21WZhys1bgaQ==", "dev": true }, "uri-js": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.0.tgz", - "integrity": "sha512-B0yRTzYdUCCn9n+F4+Gh4yIDtMQcaJsmYBDsTSG8g/OejKBodLQ2IHfN3bM7jUsRXndopT7OIXWdYqc1fjmV6g==", + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "dev": true, "requires": { "punycode": "^2.1.0" @@ -2261,15 +5125,15 @@ "dev": true }, "v8-compile-cache": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz", - "integrity": "sha512-8OQ9CL+VWyt3JStj7HX7/ciTL2V3Rl1Wf5OL+SNTm0yK1KvtReVulksyeRnCANHHuUxHlQig+JJDlUhBt1NQDQ==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.2.0.tgz", + "integrity": "sha512-gTpR5XQNKFwOd4clxfnhaqvfqMpqEwr4tOtCyz4MtYZX2JYhfr1JvBFKdS+7K/9rfpZR3VLX+YWBbKoxCgS43Q==", "dev": true }, "watchpack": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.1.0.tgz", - "integrity": "sha512-UjgD1mqjkG99+3lgG36at4wPnUXNvis2v1utwTgQ43C22c4LD71LsYMExdWXh4HZ+RmW+B0t1Vrg2GpXAkTOQw==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.1.1.tgz", + "integrity": "sha512-Oo7LXCmc1eE1AjyuSBmtC3+Wy4HcV8PxWh2kP6fOl8yTlNS7r0K9l1ao2lrrUza7V39Y3D/BbJgY8VeSlc5JKw==", "dev": true, "requires": { "glob-to-regexp": "^0.4.1", @@ -2277,59 +5141,52 @@ } }, "webpack": { - "version": "5.10.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.10.0.tgz", - "integrity": "sha512-P0bHAXmIz0zsNcHNLqFmLY1ZtrT+jtBr7FqpuDtA2o7GiHC+zBsfhgK7SmJ1HG7BAEb3G9JoMdSVi7mEDvG3Zg==", + "version": "5.24.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.24.1.tgz", + "integrity": "sha512-eg+6OIt6npUSwbhRQY6XffAixEUSARBf+WAWOxrZwOB4jRbbpMXlridFy/Yt7N0U20Ry1vp/nnDbtN7l1rUdIA==", "dev": true, "requires": { "@types/eslint-scope": "^3.7.0", - "@types/estree": "^0.0.45", - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-module-context": "1.9.0", - "@webassemblyjs/wasm-edit": "1.9.0", - "@webassemblyjs/wasm-parser": "1.9.0", + "@types/estree": "^0.0.46", + "@webassemblyjs/ast": "1.11.0", + "@webassemblyjs/wasm-edit": "1.11.0", + "@webassemblyjs/wasm-parser": "1.11.0", "acorn": "^8.0.4", "browserslist": "^4.14.5", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.3.1", + "enhanced-resolve": "^5.7.0", + "es-module-lexer": "^0.4.0", "eslint-scope": "^5.1.1", "events": "^3.2.0", "glob-to-regexp": "^0.4.1", "graceful-fs": "^4.2.4", "json-parse-better-errors": "^1.0.2", - "loader-runner": "^4.1.0", + "loader-runner": "^4.2.0", "mime-types": "^2.1.27", "neo-async": "^2.6.2", - "pkg-dir": "^5.0.0", "schema-utils": "^3.0.0", "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.0.3", + "terser-webpack-plugin": "^5.1.1", "watchpack": "^2.0.0", "webpack-sources": "^2.1.1" }, "dependencies": { "acorn": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.0.4.tgz", - "integrity": "sha512-XNP0PqF1XD19ZlLKvB7cMmnZswW4C/03pRHgirB30uSJTaS3A3V1/P4sS3HPvFmjoriPCJQs+JDSbm4bL1TxGQ==", + "version": "8.0.5", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.0.5.tgz", + "integrity": "sha512-v+DieK/HJkJOpFBETDJioequtc3PfxsWMaxIdIwujtF7FEV/MAyDQLlm6/zPvr7Mix07mLh6ccVwIsloceodlg==", "dev": true }, "enhanced-resolve": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.4.0.tgz", - "integrity": "sha512-ZmqfWURB2lConOBM1JdCVfPyMRv5RdKWktLXO6123p97ovVm2CLBgw9t5MBj3jJWA6eHyOeIws9iJQoGFR4euQ==", + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.7.0.tgz", + "integrity": "sha512-6njwt/NsZFUKhM6j9U8hzVyD4E4r0x7NQzhTCbcWOJ0IQjNSAoalWmb0AE51Wn+fwan5qVESWi7t2ToBxs9vrw==", "dev": true, "requires": { "graceful-fs": "^4.2.4", - "tapable": "^2.0.0" + "tapable": "^2.2.0" } }, - "graceful-fs": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", - "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", - "dev": true - }, "tapable": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.0.tgz", @@ -2339,47 +5196,43 @@ } }, "webpack-cli": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.2.0.tgz", - "integrity": "sha512-EIl3k88vaF4fSxWSgtAQR+VwicfLMTZ9amQtqS4o+TDPW9HGaEpbFBbAZ4A3ZOT5SOnMxNOzROsSTPiE8tBJPA==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.5.0.tgz", + "integrity": "sha512-wXg/ef6Ibstl2f50mnkcHblRPN/P9J4Nlod5Hg9HGFgSeF8rsqDGHJeVe4aR26q9l62TUJi6vmvC2Qz96YJw1Q==", "dev": true, "requires": { - "@webpack-cli/info": "^1.1.0", - "@webpack-cli/serve": "^1.1.0", + "@discoveryjs/json-ext": "^0.5.0", + "@webpack-cli/configtest": "^1.0.1", + "@webpack-cli/info": "^1.2.2", + "@webpack-cli/serve": "^1.3.0", "colorette": "^1.2.1", - "command-line-usage": "^6.1.0", - "commander": "^6.2.0", + "commander": "^7.0.0", "enquirer": "^2.3.6", - "execa": "^4.1.0", + "execa": "^5.0.0", + "fastest-levenshtein": "^1.0.12", "import-local": "^3.0.2", "interpret": "^2.2.0", - "leven": "^3.1.0", "rechoir": "^0.7.0", "v8-compile-cache": "^2.2.0", - "webpack-merge": "^4.2.2" + "webpack-merge": "^5.7.3" }, "dependencies": { "commander": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.0.tgz", - "integrity": "sha512-zP4jEKbe8SHzKJYQmq8Y9gYjtO/POJLgIdKgV7B9qNmABVFVc+ctqSX6iXh4mCpJfRBOabiZ2YKPg8ciDw6C+Q==", - "dev": true - }, - "v8-compile-cache": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.2.0.tgz", - "integrity": "sha512-gTpR5XQNKFwOd4clxfnhaqvfqMpqEwr4tOtCyz4MtYZX2JYhfr1JvBFKdS+7K/9rfpZR3VLX+YWBbKoxCgS43Q==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.1.0.tgz", + "integrity": "sha512-pRxBna3MJe6HKnBGsDyMv8ETbptw3axEdYHoqNh7gu5oDcew8fs0xnivZGm06Ogk8zGAJ9VX+OPEr2GXEQK4dg==", "dev": true } } }, "webpack-merge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.2.2.tgz", - "integrity": "sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g==", + "version": "5.7.3", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.7.3.tgz", + "integrity": "sha512-6/JUQv0ELQ1igjGDzHkXbVDRxkfA57Zw7PfiupdLFJYrgFqY5ZP8xxbpp2lU3EPwYx89ht5Z/aDkD40hFCm5AA==", "dev": true, "requires": { - "lodash": "^4.17.15" + "clone-deep": "^4.0.1", + "wildcard": "^2.0.0" } }, "webpack-sources": { @@ -2401,22 +5254,18 @@ "isexe": "^2.0.0" } }, + "wildcard": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", + "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", + "dev": true + }, "word-wrap": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", "dev": true }, - "wordwrapjs": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-4.0.0.tgz", - "integrity": "sha512-Svqw723a3R34KvsMgpjFBYCgNOSdcW3mQFK4wIfhGQhtaFVOJmdYoXgi63ne3dTlWgatVcUc7t4HtQ/+bUVIzQ==", - "dev": true, - "requires": { - "reduce-flatten": "^2.0.0", - "typical": "^5.0.0" - } - }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", diff --git a/package.json b/package.json index 01f1d81b6d..d23ffaf5c6 100644 --- a/package.json +++ b/package.json @@ -21,7 +21,7 @@ "url": "https://github.com/AssemblyScript/assemblyscript/issues" }, "dependencies": { - "binaryen": "98.0.0-nightly.20210106", + "binaryen": "99.0.0-nightly.20210220", "long": "^4.0.0", "source-map-support": "^0.5.19", "ts-node": "^6.2.0" diff --git a/src/builtins.ts b/src/builtins.ts index 8d1a765dd5..d11feeb4ab 100644 --- a/src/builtins.ts +++ b/src/builtins.ts @@ -58,6 +58,7 @@ import { SIMDReplaceOp, SIMDShiftOp, SIMDTernaryOp, + RefIsOp, NativeType, ExpressionRef, ExpressionId, @@ -532,8 +533,6 @@ export namespace BuiltinNames { export const i64x2_shl = "~lib/builtins/i64x2.shl"; export const i64x2_shr_s = "~lib/builtins/i64x2.shr_s"; export const i64x2_shr_u = "~lib/builtins/i64x2.shr_u"; - export const i64x2_any_true = "~lib/builtins/i64x2.any_true"; - export const i64x2_all_true = "~lib/builtins/i64x2.all_true"; // i64x2 has no .eq etc. export const i64x2_trunc_sat_f64x2_s = "~lib/builtins/i64x2.trunc_sat_f64x2_s"; export const i64x2_trunc_sat_f64x2_u = "~lib/builtins/i64x2.trunc_sat_f64x2_u"; export const i64x2_load32x2_s = "~lib/builtins/i64x2.load32x2_s"; @@ -3037,8 +3036,10 @@ function builtin_assert(ctx: BuiltinContext): ExpressionRef { case TypeKind.F64: return module.if(module.binary(BinaryOp.EqF64, arg0, module.f64(0)), abort); case TypeKind.FUNCREF: case TypeKind.EXTERNREF: - case TypeKind.EXNREF: - case TypeKind.ANYREF: return module.if(module.ref_is_null(arg0), abort); + case TypeKind.ANYREF: + case TypeKind.EQREF: + case TypeKind.DATAREF: return module.if(module.ref_is(RefIsOp.RefIsNull, arg0), abort); + case TypeKind.I31REF: return module.if(module.unary(UnaryOp.EqzI32, module.i31_get(arg0)), abort); } } else { @@ -3119,11 +3120,12 @@ function builtin_assert(ctx: BuiltinContext): ExpressionRef { } case TypeKind.FUNCREF: case TypeKind.EXTERNREF: - case TypeKind.EXNREF: - case TypeKind.ANYREF: { + case TypeKind.ANYREF: + case TypeKind.EQREF: + case TypeKind.DATAREF: { let temp = flow.getTempLocal(type); let ret = module.if( - module.ref_is_null( + module.ref_is(RefIsOp.RefIsNull, module.local_tee(temp.index, arg0, false) // ref ), abort, @@ -3132,6 +3134,20 @@ function builtin_assert(ctx: BuiltinContext): ExpressionRef { flow.freeTempLocal(temp); return ret; } + case TypeKind.I31REF: { + let temp = flow.getTempLocal(type); + let ret = module.if( + module.unary(UnaryOp.EqzI32, + module.i31_get( + module.local_tee(temp.index, arg0, false) // ref + ) + ), + abort, + module.local_get(temp.index, NativeType.F64) + ); + flow.freeTempLocal(temp); + return ret; + } } } compiler.error( @@ -5364,16 +5380,12 @@ function builtin_v128_any_true(ctx: BuiltinContext): ExpressionRef { case TypeKind.U16: return module.unary(UnaryOp.AnyTrueI16x8, arg0); case TypeKind.I32: case TypeKind.U32: return module.unary(UnaryOp.AnyTrueI32x4, arg0); - case TypeKind.I64: - case TypeKind.U64: return module.unary(UnaryOp.AnyTrueI64x2, arg0); case TypeKind.ISIZE: case TypeKind.USIZE: { - return module.unary( - compiler.options.isWasm64 - ? UnaryOp.AnyTrueI64x2 - : UnaryOp.AnyTrueI32x4, - arg0 - ); + if (!compiler.options.isWasm64) { + return module.unary(UnaryOp.AnyTrueI32x4, arg0); + } + break; } } } @@ -5409,16 +5421,12 @@ function builtin_v128_all_true(ctx: BuiltinContext): ExpressionRef { case TypeKind.U16: return module.unary(UnaryOp.AllTrueI16x8, arg0); case TypeKind.I32: case TypeKind.U32: return module.unary(UnaryOp.AllTrueI32x4, arg0); - case TypeKind.I64: - case TypeKind.U64: return module.unary(UnaryOp.AllTrueI64x2, arg0); case TypeKind.ISIZE: case TypeKind.USIZE: { - return module.unary( - compiler.options.isWasm64 - ? UnaryOp.AllTrueI64x2 - : UnaryOp.AllTrueI32x4, - arg0 - ); + if (!compiler.options.isWasm64) { + return module.unary(UnaryOp.AllTrueI32x4, arg0); + } + break; } } } @@ -8020,24 +8028,6 @@ function builtin_i64x2_shr_u(ctx: BuiltinContext): ExpressionRef { } builtins.set(BuiltinNames.i64x2_shr_u, builtin_i64x2_shr_u); -// i64x2.any_true -> v128.any_true -function builtin_i64x2_any_true(ctx: BuiltinContext): ExpressionRef { - checkTypeAbsent(ctx); - ctx.typeArguments = [ Type.i64 ]; - ctx.contextualType = Type.i32; - return builtin_v128_any_true(ctx); -} -builtins.set(BuiltinNames.i64x2_any_true, builtin_i64x2_any_true); - -// i64x2.all_true -> v128.all_true -function builtin_i64x2_all_true(ctx: BuiltinContext): ExpressionRef { - checkTypeAbsent(ctx); - ctx.typeArguments = [ Type.i64 ]; - ctx.contextualType = Type.i32; - return builtin_v128_all_true(ctx); -} -builtins.set(BuiltinNames.i64x2_all_true, builtin_i64x2_all_true); - // i64x2.trunc_sat_f64x2_s -> v128.trunc_sat function builtin_i64x2_trunc_sat_f64x2_s(ctx: BuiltinContext): ExpressionRef { checkTypeAbsent(ctx); diff --git a/src/common.ts b/src/common.ts index 9ca1591fb9..55ad0eee06 100644 --- a/src/common.ts +++ b/src/common.ts @@ -125,8 +125,10 @@ export namespace CommonNames { export const v128 = "v128"; export const funcref = "funcref"; export const externref = "externref"; - export const exnref = "exnref"; export const anyref = "anyref"; + export const eqref = "eqref"; + export const i31ref = "i31ref"; + export const dataref = "dataref"; export const i8x16 = "i8x16"; export const u8x16 = "u8x16"; export const i16x8 = "i16x8"; @@ -193,8 +195,10 @@ export namespace CommonNames { export const V128 = "V128"; export const Funcref = "Funcref"; export const Externref = "Externref"; - export const Exnref = "Exnref"; export const Anyref = "Anyref"; + export const Eqref = "Eqref"; + export const I31ref = "I31ref"; + export const Dataref = "Dataref"; export const String = "String"; export const Array = "Array"; export const StaticArray = "StaticArray"; diff --git a/src/compiler.ts b/src/compiler.ts index 8ffd265ccb..5ff74f7aa2 100644 --- a/src/compiler.ts +++ b/src/compiler.ts @@ -25,6 +25,7 @@ import { ExpressionRef, UnaryOp, BinaryOp, + RefIsOp, NativeType, FunctionRef, ExpressionId, @@ -668,15 +669,6 @@ export class Compiler extends DiagnosticEmitter { // import memory if requested (default memory is named '0' by Binaryen) if (options.importMemory) module.addMemoryImport("0", "env", "memory", isSharedMemory); - // set up function table (first elem is blank) - var tableBase = this.options.tableBase; - if (!tableBase) tableBase = 1; // leave first elem blank - var functionTableNames = new Array(functionTable.length); - for (let i = 0, k = functionTable.length; i < k; ++i) { - functionTableNames[i] = functionTable[i].internalName; - } - module.setFunctionTable(tableBase + functionTable.length, Module.UNLIMITED_TABLE, functionTableNames, module.i32(tableBase)); - // import and/or export table if requested (default table is named '0' by Binaryen) if (options.importTable) { module.addTableImport("0", "env", "table"); @@ -697,6 +689,15 @@ export class Compiler extends DiagnosticEmitter { } } + // set up function table (first elem is blank) + var tableBase = this.options.tableBase; + if (!tableBase) tableBase = 1; // leave first elem blank + var functionTableNames = new Array(functionTable.length); + for (let i = 0, k = functionTable.length; i < k; ++i) { + functionTableNames[i] = functionTable[i].internalName; + } + module.setFunctionTable(tableBase + functionTable.length, Module.UNLIMITED_TABLE, functionTableNames, module.i32(tableBase)); + // expose the arguments length helper if there are varargs exports if (this.runtimeFeatures & RuntimeFeatures.setArgumentsLength) { module.addFunction(BuiltinNames.setArgumentsLength, NativeType.I32, NativeType.None, null, @@ -4932,9 +4933,13 @@ export class Compiler extends DiagnosticEmitter { module.binary(BinaryOp.EqI8x16, leftExpr, rightExpr) ); } + case TypeKind.EQREF: + case TypeKind.I31REF: + case TypeKind.DATAREF: { + return module.ref_eq(leftExpr, rightExpr); + } case TypeKind.FUNCREF: case TypeKind.EXTERNREF: - case TypeKind.EXNREF: case TypeKind.ANYREF: { this.error( DiagnosticCode.Operation_0_cannot_be_applied_to_type_1, @@ -4991,9 +4996,15 @@ export class Compiler extends DiagnosticEmitter { module.binary(BinaryOp.NeI8x16, leftExpr, rightExpr) ); } + case TypeKind.EQREF: + case TypeKind.I31REF: + case TypeKind.DATAREF: { + return module.unary(UnaryOp.EqzI32, + module.ref_eq(leftExpr, rightExpr) + ); + } case TypeKind.FUNCREF: case TypeKind.EXTERNREF: - case TypeKind.EXNREF: case TypeKind.ANYREF: { this.error( DiagnosticCode.Operation_0_cannot_be_applied_to_type_1, @@ -9711,11 +9722,10 @@ export class Compiler extends DiagnosticEmitter { case TypeKind.FUNCREF: case TypeKind.EXTERNREF: return this.checkFeatureEnabled(Feature.REFERENCE_TYPES, reportNode); - case TypeKind.EXNREF: { - return this.checkFeatureEnabled(Feature.REFERENCE_TYPES, reportNode) - && this.checkFeatureEnabled(Feature.EXCEPTION_HANDLING, reportNode); - } - case TypeKind.ANYREF: { + case TypeKind.ANYREF: + case TypeKind.EQREF: + case TypeKind.I31REF: + case TypeKind.DATAREF: { return this.checkFeatureEnabled(Feature.REFERENCE_TYPES, reportNode) && this.checkFeatureEnabled(Feature.GC, reportNode); } @@ -9817,9 +9827,10 @@ export class Compiler extends DiagnosticEmitter { case TypeKind.V128: return module.v128(v128_zero); case TypeKind.FUNCREF: case TypeKind.EXTERNREF: - case TypeKind.EXNREF: case TypeKind.ANYREF: - return module.ref_null(type.toNativeType()); + case TypeKind.EQREF: + case TypeKind.DATAREF: return module.ref_null(type.toNativeType()); + case TypeKind.I31REF: return module.i31_new(module.i32(0)); } } @@ -9841,6 +9852,7 @@ export class Compiler extends DiagnosticEmitter { case TypeKind.U64: return module.i64(1); case TypeKind.F32: return module.f32(1); case TypeKind.F64: return module.f64(1); + case TypeKind.I31REF: return module.i31_new(module.i32(1)); } } @@ -9926,9 +9938,16 @@ export class Compiler extends DiagnosticEmitter { } case TypeKind.FUNCREF: case TypeKind.EXTERNREF: - case TypeKind.EXNREF: - case TypeKind.ANYREF:{ - return module.ref_is_null(expr); + case TypeKind.ANYREF: + case TypeKind.EQREF: + case TypeKind.DATAREF: { + return module.ref_is(RefIsOp.RefIsNull, expr); + } + case TypeKind.I31REF: { + return module.binary(BinaryOp.NeI32, + module.i31_get(expr), + module.i32(0) + ); } default: { assert(false); diff --git a/src/definitions.ts b/src/definitions.ts index 62b80efbf6..474fc8a567 100644 --- a/src/definitions.ts +++ b/src/definitions.ts @@ -592,8 +592,10 @@ export class TSDBuilder extends ExportsWalker { case TypeKind.VOID: return "void"; case TypeKind.FUNCREF: return "funcref"; case TypeKind.EXTERNREF: return "externref"; - case TypeKind.EXNREF: return "exnref"; case TypeKind.ANYREF: return "anyref"; + case TypeKind.EQREF: return "eqref"; + case TypeKind.I31REF: return "i31ref"; + case TypeKind.DATAREF: return "dataref"; default: { assert(false); return "any"; diff --git a/src/flow.ts b/src/flow.ts index 7c9549aee1..7e1547b26a 100644 --- a/src/flow.ts +++ b/src/flow.ts @@ -305,8 +305,10 @@ export class Flow { case NativeType.V128: { temps = parentFunction.tempV128s; break; } case NativeType.Funcref: { temps = parentFunction.tempFuncrefs; break; } case NativeType.Externref: { temps = parentFunction.tempExternrefs; break; } - case NativeType.Exnref: { temps = parentFunction.tempExnrefs; break; } case NativeType.Anyref: { temps = parentFunction.tempAnyrefs; break; } + case NativeType.Eqref: { temps = parentFunction.tempEqrefs; break; } + case NativeType.I31ref: { temps = parentFunction.tempI31refs; break; } + case NativeType.Dataref: { temps = parentFunction.tempDatarefs; break; } default: throw new Error("concrete type expected"); } var local: Local; @@ -390,18 +392,30 @@ export class Flow { else parentFunction.tempExternrefs = temps = []; break; } - case NativeType.Exnref: { - let tempExnrefs = parentFunction.tempExnrefs; - if (tempExnrefs) temps = tempExnrefs; - else parentFunction.tempExnrefs = temps = []; - break; - } case NativeType.Anyref: { let tempAnyrefs = parentFunction.tempAnyrefs; if (tempAnyrefs) temps = tempAnyrefs; else parentFunction.tempAnyrefs = temps = []; break; } + case NativeType.Eqref: { + let tempEqrefs = parentFunction.tempEqrefs; + if (tempEqrefs) temps = tempEqrefs; + else parentFunction.tempEqrefs = temps = []; + break; + } + case NativeType.I31ref: { + let tempI31refs = parentFunction.tempI31refs; + if (tempI31refs) temps = tempI31refs; + else parentFunction.tempI31refs = temps = []; + break; + } + case NativeType.Dataref: { + let tempDatarefs = parentFunction.tempDatarefs; + if (tempDatarefs) temps = tempDatarefs; + else parentFunction.tempDatarefs = temps = []; + break; + } default: throw new Error("concrete type expected"); } assert(local.index >= 0); diff --git a/src/glue/binaryen.d.ts b/src/glue/binaryen.d.ts index 8e5980b139..ba2bcc7d47 100644 --- a/src/glue/binaryen.d.ts +++ b/src/glue/binaryen.d.ts @@ -36,8 +36,10 @@ export declare function _BinaryenTypeFloat64(): BinaryenType; export declare function _BinaryenTypeVec128(): BinaryenType; export declare function _BinaryenTypeFuncref(): BinaryenType; export declare function _BinaryenTypeExternref(): BinaryenType; -export declare function _BinaryenTypeNullref(): BinaryenType; -export declare function _BinaryenTypeExnref(): BinaryenType; +export declare function _BinaryenTypeAnyref(): BinaryenType; +export declare function _BinaryenTypeEqref(): BinaryenType; +export declare function _BinaryenTypeI31ref(): BinaryenType; +export declare function _BinaryenTypeDataref(): BinaryenType; export declare function _BinaryenTypeUnreachable(): BinaryenType; export declare function _BinaryenTypeAuto(): BinaryenType; @@ -103,13 +105,13 @@ export declare function _BinaryenDataDropId(): BinaryenExpressionId; export declare function _BinaryenMemoryCopyId(): BinaryenExpressionId; export declare function _BinaryenMemoryFillId(): BinaryenExpressionId; export declare function _BinaryenRefNullId(): BinaryenExpressionId; -export declare function _BinaryenRefIsNullId(): BinaryenExpressionId; +export declare function _BinaryenRefIsId(): BinaryenExpressionId; export declare function _BinaryenRefFuncId(): BinaryenExpressionId; export declare function _BinaryenRefEqId(): BinaryenExpressionId; export declare function _BinaryenTryId(): BinaryenExpressionId; export declare function _BinaryenThrowId(): BinaryenExpressionId; export declare function _BinaryenRethrowId(): BinaryenExpressionId; -export declare function _BinaryenBrOnExnId(): BinaryenExpressionId; +export declare function _BinaryenBrOnId(): BinaryenExpressionId; export declare function _BinaryenTupleMakeId(): BinaryenExpressionId; export declare function _BinaryenTupleExtractId(): BinaryenExpressionId; export declare function _BinaryenPopId(): BinaryenExpressionId; @@ -462,6 +464,11 @@ export declare function _BinaryenWidenLowUVecI16x8ToVecI32x4(): BinaryenOp; export declare function _BinaryenWidenHighUVecI16x8ToVecI32x4(): BinaryenOp; export declare function _BinaryenSwizzleVec8x16(): BinaryenOp; +export declare function _BinaryenRefIsNull(): BinaryenOp; +export declare function _BinaryenRefIsFunc(): BinaryenOp; +export declare function _BinaryenRefIsData(): BinaryenOp; +export declare function _BinaryenRefIsI31(): BinaryenOp; + type BinaryenExpressionRef = usize; export declare function _BinaryenExpressionGetId(expr: BinaryenExpressionRef): BinaryenExpressionId; @@ -531,7 +538,9 @@ export declare function _BinaryenCallSetReturn(expr: BinaryenExpressionRef, isRe // ^ with return = true export declare function _BinaryenReturnCall(module: BinaryenModuleRef, targetName: BinaryenString, operandExprs: BinaryenArray, numOperands: BinaryenIndex, returnType: BinaryenType): BinaryenExpressionRef; -export declare function _BinaryenCallIndirect(module: BinaryenModuleRef, targetExpr: BinaryenExpressionRef, operandExprs: BinaryenArray, numOperands: BinaryenIndex, params: BinaryenType, results: BinaryenType): BinaryenExpressionRef; +export declare function _BinaryenCallIndirect(module: BinaryenModuleRef, table: BinaryenString, targetExpr: BinaryenExpressionRef, operandExprs: BinaryenArray, numOperands: BinaryenIndex, params: BinaryenType, results: BinaryenType): BinaryenExpressionRef; +export declare function _BinaryenCallIndirectGetTable(expr: BinaryenExpressionRef): BinaryenString; +export declare function _BinaryenCallIndirectSetTable(expr: BinaryenExpressionRef, table: BinaryenString): void; export declare function _BinaryenCallIndirectGetTarget(expr: BinaryenExpressionRef): BinaryenExpressionRef; export declare function _BinaryenCallIndirectSetTarget(expr: BinaryenExpressionRef, targetExpr: BinaryenExpressionRef): void; export declare function _BinaryenCallIndirectGetNumOperands(expr: BinaryenExpressionRef): BinaryenIndex; @@ -543,7 +552,7 @@ export declare function _BinaryenCallIndirectRemoveOperandAt(expr: BinaryenExpre export declare function _BinaryenCallIndirectIsReturn(expr: BinaryenExpressionRef): bool; export declare function _BinaryenCallIndirectSetReturn(expr: BinaryenExpressionRef, isReturn: bool): void; // ^ with return = true -export declare function _BinaryenReturnCallIndirect(module: BinaryenModuleRef, targetExpr: BinaryenExpressionRef, operandExprs: BinaryenArray, numOperands: BinaryenIndex, params: BinaryenType, results: BinaryenType): BinaryenExpressionRef; +export declare function _BinaryenReturnCallIndirect(module: BinaryenModuleRef, table: BinaryenString, targetExpr: BinaryenExpressionRef, operandExprs: BinaryenArray, numOperands: BinaryenIndex, params: BinaryenType, results: BinaryenType): BinaryenExpressionRef; export declare function _BinaryenLocalGet(module: BinaryenModuleRef, index: BinaryenIndex, type: BinaryenType): BinaryenExpressionRef; export declare function _BinaryenLocalGetGetIndex(expr: BinaryenExpressionRef): BinaryenIndex; @@ -786,9 +795,11 @@ export declare function _BinaryenMemoryFillSetSize(expr: BinaryenExpressionRef, export declare function _BinaryenRefNull(module: BinaryenModuleRef, type: BinaryenType): BinaryenExpressionRef; -export declare function _BinaryenRefIsNull(module: BinaryenModuleRef, valueExpr: BinaryenExpressionRef): BinaryenExpressionRef; -export declare function _BinaryenRefIsNullGetValue(expr: BinaryenExpressionRef): BinaryenExpressionRef; -export declare function _BinaryenRefIsNullSetValue(expr: BinaryenExpressionRef, valueExpr: BinaryenExpressionRef): void; +export declare function _BinaryenRefIs(module: BinaryenModuleRef, op: BinaryenOp, valueExpr: BinaryenExpressionRef): BinaryenExpressionRef; +export declare function _BinaryenRefIsGetOp(expr: BinaryenExpressionRef): BinaryenOp; +export declare function _BinaryenRefIsSetOp(expr: BinaryenExpressionRef, op: BinaryenOp): void; +export declare function _BinaryenRefIsGetValue(expr: BinaryenExpressionRef): BinaryenExpressionRef; +export declare function _BinaryenRefIsSetValue(expr: BinaryenExpressionRef, valueExpr: BinaryenExpressionRef): void; export declare function _BinaryenRefFunc(module: BinaryenModuleRef, funcName: BinaryenString, type: BinaryenType): BinaryenExpressionRef; export declare function _BinaryenRefFuncGetFunc(expr: BinaryenExpressionRef): BinaryenString; @@ -800,11 +811,27 @@ export declare function _BinaryenRefEqSetLeft(expr: BinaryenExpressionRef, leftE export declare function _BinaryenRefEqGetRight(expr: BinaryenExpressionRef): BinaryenExpressionRef; export declare function _BinaryenRefEqSetRight(expr: BinaryenExpressionRef, rightExpr: BinaryenExpressionRef): void; -export declare function _BinaryenTry(module: BinaryenModuleRef, bodyExpr: BinaryenExpressionRef, catchBodyExpr: BinaryenExpressionRef): BinaryenExpressionRef; +export declare function _BinaryenTry(module: BinaryenModuleRef, name: BinaryenString, bodyExpr: BinaryenExpressionRef, catchEvents: BinaryenArray, numCatchEvents: BinaryenIndex, catchBodies: BinaryenArray, numCatchBodies: BinaryenIndex, delegateTarget: BinaryenString): BinaryenExpressionRef; +export declare function _BinaryenTryGetName(expr: BinaryenExpressionRef): BinaryenString; +export declare function _BinaryenTrySetName(expr: BinaryenExpressionRef, name: BinaryenString): void; export declare function _BinaryenTryGetBody(expr: BinaryenExpressionRef): BinaryenExpressionRef; export declare function _BinaryenTrySetBody(expr: BinaryenExpressionRef, bodyExpr: BinaryenExpressionRef): void; -export declare function _BinaryenTryGetCatchBody(expr: BinaryenExpressionRef): BinaryenExpressionRef; -export declare function _BinaryenTrySetCatchBody(expr: BinaryenExpressionRef, catchBodyExpr: BinaryenExpressionRef): void; +export declare function _BinaryenTryGetNumCatchEvents(expr: BinaryenExpressionRef): BinaryenIndex; +export declare function _BinaryenTryGetNumCatchBodies(expr: BinaryenExpressionRef): BinaryenIndex; +export declare function _BinaryenTryGetCatchEventAt(expr: BinaryenExpressionRef, index: BinaryenIndex): BinaryenString; +export declare function _BinaryenTrySetCatchEventAt(expr: BinaryenExpressionRef, index: BinaryenIndex, catchEvent: BinaryenString): void; +export declare function _BinaryenTryAppendCatchEvent(expr: BinaryenExpressionRef, catchEvent: BinaryenString): BinaryenIndex; +export declare function _BinaryenTryInsertCatchEventAt(expr: BinaryenExpressionRef, index: BinaryenIndex, catchEvent: BinaryenString): void; +export declare function _BinaryenTryRemoveCatchEventAt(expr: BinaryenExpressionRef, index: BinaryenIndex): BinaryenString; +export declare function _BinaryenTryGetCatchBodyAt(expr: BinaryenExpressionRef, index: BinaryenIndex): BinaryenExpressionRef; +export declare function _BinaryenTrySetCatchBodyAt(expr: BinaryenExpressionRef, index: BinaryenIndex, catchExpr: BinaryenExpressionRef): void; +export declare function _BinaryenTryAppendCatchBody(expr: BinaryenExpressionRef, catchExpr: BinaryenExpressionRef): BinaryenIndex; +export declare function _BinaryenTryInsertCatchBodyAt(expr: BinaryenExpressionRef, index: BinaryenIndex, catchExpr: BinaryenExpressionRef): void; +export declare function _BinaryenTryRemoveCatchBodyAt(expr: BinaryenExpressionRef, index: BinaryenIndex): BinaryenExpressionRef; +export declare function _BinaryenTryHasCatchAll(expr: BinaryenExpressionRef): bool; +export declare function _BinaryenTryGetDelegateTarget(expr: BinaryenExpressionRef): BinaryenString; +export declare function _BinaryenTrySetDelegateTarget(expr: BinaryenExpressionRef, delegateTarget: BinaryenString): void; +export declare function _BinaryenTryIsDelegate(expr: BinaryenExpressionRef): bool; export declare function _BinaryenThrow(module: BinaryenModuleRef, eventName: BinaryenString, operands: BinaryenArray, numOperands: BinaryenIndex): BinaryenExpressionRef; export declare function _BinaryenThrowGetEvent(expr: BinaryenExpressionRef): BinaryenString; @@ -816,17 +843,9 @@ export declare function _BinaryenThrowAppendOperand(expr: BinaryenExpressionRef, export declare function _BinaryenThrowInsertOperandAt(expr: BinaryenExpressionRef, index: BinaryenIndex, operandExpr: BinaryenExpressionRef): void; export declare function _BinaryenThrowRemoveOperandAt(expr: BinaryenExpressionRef, index: BinaryenIndex): BinaryenExpressionRef; -export declare function _BinaryenRethrow(module: BinaryenModuleRef, exnrefExpr: BinaryenExpressionRef): BinaryenExpressionRef; -export declare function _BinaryenRethrowGetExnref(expr: BinaryenExpressionRef): BinaryenExpressionRef; -export declare function _BinaryenRethrowSetExnref(expr: BinaryenExpressionRef, exnrefExpr: BinaryenExpressionRef): void; - -export declare function _BinaryenBrOnExn(module: BinaryenModuleRef, name: BinaryenString, eventName: BinaryenString, exnrefExpr: BinaryenExpressionRef): BinaryenExpressionRef; -export declare function _BinaryenBrOnExnGetEvent(expr: BinaryenExpressionRef): BinaryenString; -export declare function _BinaryenBrOnExnSetEvent(expr: BinaryenExpressionRef, eventName: BinaryenString): void; -export declare function _BinaryenBrOnExnGetName(expr: BinaryenExpressionRef): BinaryenString; -export declare function _BinaryenBrOnExnSetName(expr: BinaryenExpressionRef, name: BinaryenString): void; -export declare function _BinaryenBrOnExnGetExnref(expr: BinaryenExpressionRef): BinaryenExpressionRef; -export declare function _BinaryenBrOnExnSetExnref(expr: BinaryenExpressionRef, exnrefExpr: BinaryenExpressionRef): void; +export declare function _BinaryenRethrow(module: BinaryenModuleRef, target: BinaryenString): BinaryenExpressionRef; +export declare function _BinaryenRethrowGetTarget(expr: BinaryenExpressionRef): BinaryenString; +export declare function _BinaryenRethrowSetDepth(expr: BinaryenExpressionRef, target: BinaryenString): void; export declare function _BinaryenTupleMake(module: BinaryenModuleRef, operandExprs: BinaryenArray, numOperands: BinaryenIndex): BinaryenExpressionRef; export declare function _BinaryenTupleMakeGetNumOperands(expr: BinaryenExpressionRef): BinaryenIndex; @@ -915,7 +934,19 @@ export declare function _BinaryenEventGetAttribute(event: BinaryenEventRef): u32 export declare function _BinaryenEventGetParams(event: BinaryenEventRef): BinaryenType; export declare function _BinaryenEventGetResults(event: BinaryenEventRef): BinaryenType; +type BinaryenTableRef = usize; + export declare function _BinaryenSetFunctionTable(module: BinaryenModuleRef, initial: BinaryenIndex, maximum: BinaryenIndex, funcs: BinaryenArray, numFuncs: BinaryenIndex, offset: BinaryenExpressionRef): void; +export declare function _BinaryenAddTable(module: BinaryenModuleRef, name: BinaryenString, initial: BinaryenIndex, maximum: BinaryenIndex, funcNames: BinaryenArray, numFunctNames: BinaryenIndex, offset: BinaryenExpressionRef): BinaryenTableRef; +export declare function _BinaryenRemoveTable(module: BinaryenModuleRef, table: BinaryenString): void; +export declare function _BinaryenGetNumTables(module: BinaryenModuleRef): BinaryenIndex; +export declare function _BinaryenGetTable(module: BinaryenModuleRef, name: BinaryenString): BinaryenTableRef; +export declare function _BinaryenGetTableByIndex(module: BinaryenModuleRef, index: BinaryenIndex): BinaryenTableRef; + +export declare function _BinaryenTableGetName(table: BinaryenTableRef): BinaryenString; +export declare function _BinaryenTableGetInitial(table: BinaryenTableRef): BinaryenIndex; +export declare function _BinaryenTableHasMax(table: BinaryenTableRef): bool; +export declare function _BinaryenTableGetMax(table: BinaryenTableRef): BinaryenIndex; export declare function _BinaryenSetMemory(module: BinaryenModuleRef, initial: BinaryenIndex, maximum: BinaryenIndex, exportName: BinaryenString, segments: BinaryenArray>, segmentPassive: BinaryenArray, segmentOffsets: BinaryenArray, segmentSizes: BinaryenArray, numSegments: BinaryenIndex, shared: bool): void; export declare function _BinaryenGetNumMemorySegments(module: BinaryenModuleRef): BinaryenIndex; diff --git a/src/module.ts b/src/module.ts index 203afc707d..0b4e15896a 100644 --- a/src/module.ts +++ b/src/module.ts @@ -41,8 +41,10 @@ export namespace NativeType { export const V128: NativeType = 6 /* _BinaryenTypeVec128 */; export const Funcref: NativeType = 7 /* _BinaryenTypeFuncref */; export const Externref: NativeType = 8 /* _BinaryenTypeExternref */; - export const Exnref: NativeType = 9 /* _BinaryenTypeExnref */; - export const Anyref: NativeType = 10 /* _BinaryenTypeAnyref */; + export const Anyref: NativeType = 9 /* _BinaryenTypeAnyref */; + export const Eqref: NativeType = 10 /* _BinaryenTypeEqref */; + export const I31ref: NativeType = 11 /* _BinaryenTypeI31ref */; + export const Dataref: NativeType = 12 /* _BinaryenTypeDataref */; export const Auto: NativeType = -1 /* _BinaryenTypeAuto */; } @@ -59,8 +61,9 @@ export enum FeatureFlags { ReferenceTypes = 256 /* _BinaryenFeatureReferenceTypes */, MultiValue = 512 /* _BinaryenFeatureMultivalue */, GC = 1024 /* _BinaryenFeatureGC */, - Memory64 = 2048, // TODO: missing in Binaryen API - All = 4095 /* _BinaryenFeatureAll */ + Memory64 = 2048 /* _BinaryenFeatureMemory64 */, + TypedFunctionReferences = 4096, /* TODO_BinaryenTypedFunctionReferences */ + All = 8191 /* _BinaryenFeatureAll */ } export enum ExpressionId { @@ -87,49 +90,51 @@ export enum ExpressionId { MemorySize = 20 /* _BinaryenMemorySizeId */, MemoryGrow = 21 /* _BinaryenMemoryGrowId */, Nop = 22 /* _BinaryenNopId */, - Unreachable = 23 /* _BinaryenUnreachableId */, - AtomicRMW = 24 /* _BinaryenAtomicRMWId */, - AtomicCmpxchg = 25 /* _BinaryenAtomicCmpxchgId */, - AtomicWait = 26 /* _BinaryenAtomicWaitId */, - AtomicNotify = 27 /* _BinaryenAtomicNotifyId */, - AtomicFence = 28 /* _BinaryenAtomicFenceId */, - SIMDExtract = 29 /* _BinaryenSIMDExtractId */, - SIMDReplace = 30 /* _BinaryenSIMDReplaceId */, - SIMDShuffle = 31 /* _BinaryenSIMDShuffleId */, - SIMDTernary = 32 /* _BinaryenSIMDTernaryId */, - SIMDShift = 33 /* _BinaryenSIMDShiftId */, - SIMDLoad = 34 /* _BinaryenSIMDLoadId */, - // SIMDLoadStoreLane = 35, - MemoryInit = 36 /* _BinaryenMemoryInitId */, - DataDrop = 37 /* _BinaryenDataDropId */, - MemoryCopy = 38 /* _BinaryenMemoryCopyId */, - MemoryFill = 39 /* _BinaryenMemoryFillId */, - Pop = 40 /* _BinaryenPopId */, - RefNull = 41 /* _BinaryenRefNullId */, - RefIsNull = 42 /* _BinaryenRefIsNullId */, - RefFunc = 43 /* _BinaryenRefFuncId */, - RefEq = 44 /* _BinaryenRefEqId */, - Try = 45 /* _BinaryenTryId */, - Throw = 46 /* _BinaryenThrowId */, - Rethrow = 47 /* _BinaryenRethrowId */, - BrOnExn = 48 /* _BinaryenBrOnExnId */, - TupleMake = 49 /* _BinaryenTupleMakeId */, - TupleExtract = 50, /* _BinaryenTupleExtractId */ - I31New = 51, /* _BinaryenI32NewId */ - I31Get = 52, /* _BinaryenI31GetId */ - CallRef = 53, /* _BinaryenCallRefId */ - RefTest = 54, /* _BinaryenRefTestId */ - RefCast = 55, /* _BinaryenRefCastId */ - BrOnCast = 56, /* _BinaryenBrOnCastId */ - RttCanon = 57, /* _BinaryenRttCanonId */ - RttSub = 58, /* _BinaryenRttSubId */ - StructNew = 59, /* _BinaryenStructNewId */ - StructGet = 60, /* _BinaryenStructGetId */ - StructSet = 61, /* _BinaryenStructSetId */ - ArrayNew = 62, /* _BinaryenArrayNewId */ - ArrayGet = 63, /* _BinaryenArrayGetId */ - ArraySet = 64, /* _BinaryenArraySetId */ - ArrayLen = 64 /* _BinaryenArrayLenId */ + Prefetch = 23 /* _BinaryenPrefetchId */, + Unreachable = 24 /* _BinaryenUnreachableId */, + AtomicRMW = 25 /* _BinaryenAtomicRMWId */, + AtomicCmpxchg = 26 /* _BinaryenAtomicCmpxchgId */, + AtomicWait = 27 /* _BinaryenAtomicWaitId */, + AtomicNotify = 28 /* _BinaryenAtomicNotifyId */, + AtomicFence = 29 /* _BinaryenAtomicFenceId */, + SIMDExtract = 30 /* _BinaryenSIMDExtractId */, + SIMDReplace = 31 /* _BinaryenSIMDReplaceId */, + SIMDShuffle = 32 /* _BinaryenSIMDShuffleId */, + SIMDTernary = 33 /* _BinaryenSIMDTernaryId */, + SIMDShift = 34 /* _BinaryenSIMDShiftId */, + SIMDLoad = 35 /* _BinaryenSIMDLoadId */, + SIMDLoadStoreLane = 36 /* _BinaryenSIMDLoadStoreLaneId */, + SIMDWiden = 37 /* _BinaryenSIMDWidenId */, + MemoryInit = 38 /* _BinaryenMemoryInitId */, + DataDrop = 39 /* _BinaryenDataDropId */, + MemoryCopy = 40 /* _BinaryenMemoryCopyId */, + MemoryFill = 41 /* _BinaryenMemoryFillId */, + Pop = 42 /* _BinaryenPopId */, + RefNull = 43 /* _BinaryenRefNullId */, + RefIs = 44 /* _BinaryenRefIsId */, + RefFunc = 45 /* _BinaryenRefFuncId */, + RefEq = 46 /* _BinaryenRefEqId */, + Try = 47 /* _BinaryenTryId */, + Throw = 48 /* _BinaryenThrowId */, + Rethrow = 49 /* _BinaryenRethrowId */, + TupleMake = 50 /* _BinaryenTupleMakeId */, + TupleExtract = 51 /* _BinaryenTupleExtractId */, + I31New = 52 /* _BinaryenI31NewId */, + I31Get = 53 /* _BinaryenI31GetId */, + CallRef = 54 /* _BinaryenCallRefId */, + RefTest = 55 /* _BinaryenRefTestId */, + RefCast = 56 /* _BinaryenRefCastId */, + BrOn = 57 /* _BinaryenBrOnId */, + RttCanon = 58 /* _BinaryenRttCanonId */, + RttSub = 59 /* _BinaryenRttSubId */, + StructNew = 60 /* _BinaryenStructNewId */, + StructGet = 61 /* _BinaryenStructGetId */, + StructSet = 62 /* _BinaryenStructSetId */, + ArrayNew = 63 /* _BinaryenArrayNewId */, + ArrayGet = 64 /* _BinaryenArrayGetId */, + ArraySet = 65 /* _BinaryenArraySetId */, + ArrayLen = 66 /* _BinaryenArrayLenId */, + RefAs = 67 /* _BinaryenRefAsId */ } export enum ExternalKind { @@ -214,13 +219,13 @@ export enum UnaryOp { SplatF32x4 = 64 /* _BinaryenSplatVecF32x4 */, SplatF64x2 = 65 /* _BinaryenSplatVecF64x2 */, NotV128 = 66 /* _BinaryenNotVec128 */, - AbsI8x16 = 67 /* __BinaryenAbsVecI8x16 */, + AbsI8x16 = 67 /* _BinaryenAbsVecI8x16 */, NegI8x16 = 68 /* _BinaryenNegVecI8x16 */, AnyTrueI8x16 = 69 /* _BinaryenAnyTrueVecI8x16 */, AllTrueI8x16 = 70 /* _BinaryenAllTrueVecI8x16 */, - BitmaskI8x16 = 71 /* __BinaryenBitmaskVecI8x16 */, - AbsI16x8 = 72 /* __BinaryenAbsVecI16x8 */, - // PopcntVecI8x16 + BitmaskI8x16 = 71 /* _BinaryenBitmaskVecI8x16 */, + PopcntVecI8x16 = 72 /* TODO_BinaryenPopcntVecI8x16 */, + AbsI16x8 = 73 /* _BinaryenAbsVecI16x8 */, NegI16x8 = 74 /* _BinaryenNegVecI16x8 */, AnyTrueI16x8 = 75 /* _BinaryenAnyTrueVecI16x8 */, AllTrueI16x8 = 76 /* _BinaryenAllTrueVecI16x8 */, @@ -231,38 +236,51 @@ export enum UnaryOp { AllTrueI32x4 = 81 /* _BinaryenAllTrueVecI32x4 */, BitmaskI32x4 = 82 /* _BinaryenBitmaskVecI32x4 */, NegI64x2 = 83 /* _BinaryenNegVecI64x2 */, - AnyTrueI64x2 = 84 /* _BinaryenAnyTrueVecI64x2 */, - AllTrueI64x2 = 85 /* _BinaryenAllTrueVecI64x2 */, - AbsF32x4 = 86 /* _BinaryenAbsVecF32x4 */, - NegF32x4 = 87 /* _BinaryenNegVecF32x4 */, - SqrtF32x4 = 88 /* _BinaryenSqrtVecF32x4 */, - CeilF32x4 = 89 /* _BinaryenCeilVecF32x4 */, - FloorF32x4 = 90 /* _BinaryenFloorVecF32x4 */, + BitmaskI64x2 = 84 /* TODO_BinaryenBitmaskVecI64x2 */, + AbsF32x4 = 85 /* _BinaryenAbsVecF32x4 */, + NegF32x4 = 86 /* _BinaryenNegVecF32x4 */, + SqrtF32x4 = 87 /* _BinaryenSqrtVecF32x4 */, + CeilF32x4 = 88 /* _BinaryenCeilVecF32x4 */, + FloorF32x4 = 89 /* _BinaryenFloorVecF32x4 */, TruncF32x4 = 90 /* BinaryenTruncVecF32x4 */, NearestF32x4 = 91 /* BinaryenNearestVecF32x4 */, - AbsF64x2 = 93 /* _BinaryenAbsVecF64x2 */, - NegF64x2 = 94 /* _BinaryenNegVecF64x2 */, - SqrtF64x2 = 95 /* _BinaryenSqrtVecF64x2 */, - CeilF64x2 = 96 /* _BinaryenCeilVecF64x2 */, - FloorF64x2 = 97 /* _BinaryenFloorVecF64x2 */, - TruncF64x2 = 97 /* BinaryenTruncVecF64x2 */, - NearestF64x2 = 98 /* BinaryenNearestVecF64x2 */, - TruncSatF32x4ToI32x4 = 100 /* _BinaryenTruncSatSVecF32x4ToVecI32x4 */, - TruncSatF32x4ToU32x4 = 101 /* _BinaryenTruncSatUVecF32x4ToVecI32x4 */, - TruncSatF64x2ToI64x2 = 102 /* _BinaryenTruncSatSVecF64x2ToVecI64x2 */, - TruncSatF64x2ToU64x2 = 103 /* _BinaryenTruncSatUVecF64x2ToVecI64x2 */, - ConvertI32x4ToF32x4 = 104 /* _BinaryenConvertSVecI32x4ToVecF32x4 */, - ConvertU32x4ToF32x4 = 105 /* _BinaryenConvertUVecI32x4ToVecF32x4 */, - ConvertI64x2ToF64x2 = 106 /* _BinaryenConvertSVecI64x2ToVecF64x2 */, - ConvertU64x2ToF64x2 = 107 /* _BinaryenConvertUVecI64x2ToVecF64x2 */, - WidenLowI8x16ToI16x8 = 108 /* _BinaryenWidenLowSVecI8x16ToVecI16x8 */, - WidenHighI8x16ToI16x8 = 109 /* _BinaryenWidenHighSVecI8x16ToVecI16x8 */, - WidenLowU8x16ToU16x8 = 110 /* _BinaryenWidenLowUVecI8x16ToVecI16x8 */, - WidenHighU8x16ToU16x8 = 111 /* _BinaryenWidenHighUVecI8x16ToVecI16x8 */, - WidenLowI16x8ToI32x4 = 112 /* _BinaryenWidenLowSVecI16x8ToVecI32x4 */, - WidenHighI16x8ToI32x4 = 113 /* _BinaryenWidenHighSVecI16x8ToVecI32x4 */, - WidenLowU16x8ToU32x4 = 114 /* _BinaryenWidenLowUVecI16x8ToVecI32x4 */, - WidenHighU16x8ToU32x4 = 115 /* _BinaryenWidenHighUVecI16x8ToVecI32x4 */ + AbsF64x2 = 92 /* _BinaryenAbsVecF64x2 */, + NegF64x2 = 93 /* _BinaryenNegVecF64x2 */, + SqrtF64x2 = 94 /* _BinaryenSqrtVecF64x2 */, + CeilF64x2 = 95 /* _BinaryenCeilVecF64x2 */, + FloorF64x2 = 96 /* _BinaryenFloorVecF64x2 */, + TruncF64x2 = 97 /* _BinaryenTruncVecF64x2 */, + NearestF64x2 = 98 /* _BinaryenNearestVecF64x2 */, + ExtAddPairwiseI8x16ToI16x8 = 99 /* TODO_BinaryenExtAddPairwiseSVecI8x16ToI16x8 */, + ExtAddPairwiseU8x16ToU16x8 = 100 /* TODO_BinaryenExtAddPairwiseUVecI8x16ToI16x8 */, + ExtAddPairwiseI16x8ToI32x4 = 101 /* TODO_BinaryenExtAddPairwiseSVecI16x8ToI32x4 */, + ExtAddPairwiseU16x8ToU32x4 = 102 /* TODO_BinaryenExtAddPairwiseUVecI16x8ToI32x4 */, + TruncSatF32x4ToI32x4 = 103 /* _BinaryenTruncSatSVecF32x4ToVecI32x4 */, + TruncSatF32x4ToU32x4 = 104 /* _BinaryenTruncSatUVecF32x4ToVecI32x4 */, + TruncSatF64x2ToI64x2 = 105 /* _BinaryenTruncSatSVecF64x2ToVecI64x2 */, + TruncSatF64x2ToU64x2 = 106 /* _BinaryenTruncSatUVecF64x2ToVecI64x2 */, + ConvertI32x4ToF32x4 = 107 /* _BinaryenConvertSVecI32x4ToVecF32x4 */, + ConvertU32x4ToF32x4 = 108 /* _BinaryenConvertUVecI32x4ToVecF32x4 */, + ConvertI64x2ToF64x2 = 109 /* _BinaryenConvertSVecI64x2ToVecF64x2 */, + ConvertU64x2ToF64x2 = 110 /* _BinaryenConvertUVecI64x2ToVecF64x2 */, + WidenLowI8x16ToI16x8 = 111 /* _BinaryenWidenLowSVecI8x16ToVecI16x8 */, + WidenHighI8x16ToI16x8 = 112 /* _BinaryenWidenHighSVecI8x16ToVecI16x8 */, + WidenLowU8x16ToU16x8 = 113 /* _BinaryenWidenLowUVecI8x16ToVecI16x8 */, + WidenHighU8x16ToU16x8 = 114 /* _BinaryenWidenHighUVecI8x16ToVecI16x8 */, + WidenLowI16x8ToI32x4 = 115 /* _BinaryenWidenLowSVecI16x8ToVecI32x4 */, + WidenHighI16x8ToI32x4 = 116 /* _BinaryenWidenHighSVecI16x8ToVecI32x4 */, + WidenLowU16x8ToU32x4 = 117 /* _BinaryenWidenLowUVecI16x8ToVecI32x4 */, + WidenHighU16x8ToU32x4 = 118 /* _BinaryenWidenHighUVecI16x8ToVecI32x4 */, + WidenLowI32x4ToI64x2 = 119 /* TODO_BinaryenWidenLowSVecI32x4ToVecI64x2 */, + WidenHighI32x4ToI64x2 = 120 /* TODO_BinaryenWidenHighSVecI32x4ToVecI64x2 */, + WidenLowU32x4ToU64x2 = 121 /* TODO_BinaryenWidenLowUVecI32x4ToVecI64x2 */, + WidenHighU32x4ToU64x2 = 122 /* TODO_BinaryenWidenHighUVecI32x4ToVecI64x2 */, + ConvertLowI32x4ToF64x2 = 123 /* TODO_BinaryenConvertLowSVecI32x4ToVecF64x2 */, + ConvertLowU32x4ToF64x2 = 124 /* TODO_BinaryenConvertLowUVecI32x4ToVecF64x2 */, + TruncSatZeroF64x2ToI32x4 = 125 /* TODO_BinaryenTruncSatZeroSVecF64x2ToVecI32x4 */, + TruncSatZeroF64x2ToU32x4 = 126 /* TODO_BinaryenTruncSatZeroUVecF64x2ToVecI32x4 */, + DemoteZeroF64x2ToF32x4 = 127 /* TODO_BinaryenDemoteZeroVecF64x2ToVecF32x4 */, + PromoteLowF32x4ToF64x2 = 128 /* TODO_BinaryenPromoteLowVecF32x4ToVecF64x2 */ } export enum BinaryOp { @@ -374,86 +392,87 @@ export enum BinaryOp { LeU32x4 = 103 /* _BinaryenLeUVecI32x4 */, GeI32x4 = 104 /* _BinaryenGeSVecI32x4 */, GeU32x4 = 105 /* _BinaryenGeUVecI32x4 */, - EqF32x4 = 106 /* _BinaryenEqVecF32x4 */, - NeF32x4 = 107 /* _BinaryenNeVecF32x4 */, - LtF32x4 = 108 /* _BinaryenLtVecF32x4 */, - GtF32x4 = 109 /* _BinaryenGtVecF32x4 */, - LeF32x4 = 110 /* _BinaryenLeVecF32x4 */, - GeF32x4 = 111 /* _BinaryenGeVecF32x4 */, - EqF64x2 = 112 /* _BinaryenEqVecF64x2 */, - NeF64x2 = 113 /* _BinaryenNeVecF64x2 */, - LtF64x2 = 114 /* _BinaryenLtVecF64x2 */, - GtF64x2 = 115 /* _BinaryenGtVecF64x2 */, - LeF64x2 = 116 /* _BinaryenLeVecF64x2 */, - GeF64x2 = 117 /* _BinaryenGeVecF64x2 */, - AndV128 = 118 /* _BinaryenAndVec128 */, - OrV128 = 119 /* _BinaryenOrVec128 */, - XorV128 = 120 /* _BinaryenXorVec128 */, - AndNotV128 = 121 /* _BinaryenAndNotVec128 */, - AddI8x16 = 122 /* _BinaryenAddVecI8x16 */, - AddSatI8x16 = 123 /* _BinaryenAddSatSVecI8x16 */, - AddSatU8x16 = 124 /* _BinaryenAddSatUVecI8x16 */, - SubI8x16 = 125 /* _BinaryenSubVecI8x16 */, - SubSatI8x16 = 126 /* _BinaryenSubSatSVecI8x16 */, - SubSatU8x16 = 127 /* _BinaryenSubSatUVecI8x16 */, - MulI8x16 = 128 /* _BinaryenMulVecI8x16 */, - MinI8x16 = 129 /* _BinaryenMinSVecI8x16 */, - MinU8x16 = 130 /* _BinaryenMinUVecI8x16 */, - MaxI8x16 = 131 /* _BinaryenMaxSVecI8x16 */, - MaxU8x16 = 132 /* _BinaryenMaxUVecI8x16 */, - AvgrU8x16 = 133 /* _BinaryenAvgrUVecI8x16 */, - AddI16x8 = 134 /* _BinaryenAddVecI16x8 */, - AddSatI16x8 = 135 /* _BinaryenAddSatSVecI16x8 */, - AddSatU16x8 = 136 /* _BinaryenAddSatUVecI16x8 */, - SubI16x8 = 137 /* _BinaryenSubVecI16x8 */, - SubSatI16x8 = 138 /* _BinaryenSubSatSVecI16x8 */, - SubSatU16x8 = 139 /* _BinaryenSubSatUVecI16x8 */, - MulI16x8 = 140 /* _BinaryenMulVecI16x8 */, - MinI16x8 = 141 /* _BinaryenMinSVecI16x8 */, - MinU16x8 = 142 /* _BinaryenMinUVecI16x8 */, - MaxI16x8 = 143 /* _BinaryenMaxSVecI16x8 */, - MaxU16x8 = 144 /* _BinaryenMaxUVecI16x8 */, - AvgrU16x8 = 145 /* _BinaryenAvgrUVecI16x8 */, - // Q15MulrSatSVecI16x8, - // ExtMulLowSVecI16x8, - // ExtMulHighSVecI16x8, - // ExtMulLowUVecI16x8, - // ExtMulHighUVecI16x8, - AddI32x4 = 151 /* _BinaryenAddVecI32x4 */, - SubI32x4 = 152 /* _BinaryenSubVecI32x4 */, - MulI32x4 = 153 /* _BinaryenMulVecI32x4 */, - MinI32x4 = 154 /* _BinaryenMinSVecI32x4 */, - MinU32x4 = 155 /* _BinaryenMinUVecI32x4 */, - MaxI32x4 = 156 /* _BinaryenMaxSVecI32x4 */, - MaxU32x4 = 157 /* _BinaryenMaxUVecI32x4 */, - DotI16x8 = 158 /* _BinaryenDotSVecI16x8ToVecI32x4 */, - AddI64x2 = 163 /* _BinaryenAddVecI64x2 */, - SubI64x2 = 164 /* _BinaryenSubVecI64x2 */, - // ExtMulLowSVecI64x2 - // ExtMulHighSVecI64x2 - // ExtMulLowUVecI64x2 - // ExtMulHighUVecI64x2 - AddF32x4 = 170 /* _BinaryenAddVecF32x4 */, - SubF32x4 = 171 /* _BinaryenSubVecF32x4 */, - MulF32x4 = 172 /* _BinaryenMulVecF32x4 */, - DivF32x4 = 173 /* _BinaryenDivVecF32x4 */, - MinF32x4 = 174 /* _BinaryenMinVecF32x4 */, - MaxF32x4 = 175 /* _BinaryenMaxVecF32x4 */, - PminF32x4 = 176 /* _BinaryenPMinVecF32x4 */, - PmaxF32x4 = 177 /* _BinaryenPMaxVecF32x4 */, - AddF64x2 = 178 /* _BinaryenAddVecF64x2 */, - SubF64x2 = 179 /* _BinaryenSubVecF64x2 */, - MulF64x2 = 180 /* _BinaryenMulVecF64x2 */, - DivF64x2 = 181 /* _BinaryenDivVecF64x2 */, - MinF64x2 = 182 /* _BinaryenMinVecF64x2 */, - MaxF64x2 = 183 /* _BinaryenMaxVecF64x2 */, - PminF64x2 = 184 /* _BinaryenPMinVecF64x2 */, - PmaxF64x2 = 185 /* _BinaryenPMaxVecF64x2 */, - NarrowI16x8ToI8x16 = 186 /* _BinaryenNarrowSVecI16x8ToVecI8x16 */, - NarrowU16x8ToU8x16 = 187 /* _BinaryenNarrowUVecI16x8ToVecI8x16 */, - NarrowI32x4ToI16x8 = 188 /* _BinaryenNarrowSVecI32x4ToVecI16x8 */, - NarrowU32x4ToU16x8 = 189 /* _BinaryenNarrowUVecI32x4ToVecI16x8 */, - SwizzleV8x16 = 190 /* _BinaryenSwizzleVec8x16 */ + EqF32x4 = 107 /* _BinaryenEqVecF32x4 */, + NeF32x4 = 108 /* _BinaryenNeVecF32x4 */, + LtF32x4 = 109 /* _BinaryenLtVecF32x4 */, + GtF32x4 = 110 /* _BinaryenGtVecF32x4 */, + LeF32x4 = 111 /* _BinaryenLeVecF32x4 */, + GeF32x4 = 112 /* _BinaryenGeVecF32x4 */, + EqF64x2 = 113 /* _BinaryenEqVecF64x2 */, + NeF64x2 = 114 /* _BinaryenNeVecF64x2 */, + LtF64x2 = 115 /* _BinaryenLtVecF64x2 */, + GtF64x2 = 116 /* _BinaryenGtVecF64x2 */, + LeF64x2 = 117 /* _BinaryenLeVecF64x2 */, + GeF64x2 = 118 /* _BinaryenGeVecF64x2 */, + AndV128 = 119 /* _BinaryenAndVec128 */, + OrV128 = 120 /* _BinaryenOrVec128 */, + XorV128 = 121 /* _BinaryenXorVec128 */, + AndNotV128 = 122 /* _BinaryenAndNotVec128 */, + AddI8x16 = 123 /* _BinaryenAddVecI8x16 */, + AddSatI8x16 = 124 /* _BinaryenAddSatSVecI8x16 */, + AddSatU8x16 = 125 /* _BinaryenAddSatUVecI8x16 */, + SubI8x16 = 126 /* _BinaryenSubVecI8x16 */, + SubSatI8x16 = 127 /* _BinaryenSubSatSVecI8x16 */, + SubSatU8x16 = 128 /* _BinaryenSubSatUVecI8x16 */, + MulI8x16 = 129 /* _BinaryenMulVecI8x16 */, + MinI8x16 = 130 /* _BinaryenMinSVecI8x16 */, + MinU8x16 = 131 /* _BinaryenMinUVecI8x16 */, + MaxI8x16 = 132 /* _BinaryenMaxSVecI8x16 */, + MaxU8x16 = 133 /* _BinaryenMaxUVecI8x16 */, + AvgrU8x16 = 134 /* _BinaryenAvgrUVecI8x16 */, + AddI16x8 = 135 /* _BinaryenAddVecI16x8 */, + AddSatI16x8 = 136 /* _BinaryenAddSatSVecI16x8 */, + AddSatU16x8 = 137 /* _BinaryenAddSatUVecI16x8 */, + SubI16x8 = 138 /* _BinaryenSubVecI16x8 */, + SubSatI16x8 = 139 /* _BinaryenSubSatSVecI16x8 */, + SubSatU16x8 = 140 /* _BinaryenSubSatUVecI16x8 */, + MulI16x8 = 141 /* _BinaryenMulVecI16x8 */, + MinI16x8 = 142 /* _BinaryenMinSVecI16x8 */, + MinU16x8 = 143 /* _BinaryenMinUVecI16x8 */, + MaxI16x8 = 144 /* _BinaryenMaxSVecI16x8 */, + MaxU16x8 = 145 /* _BinaryenMaxUVecI16x8 */, + AvgrU16x8 = 146 /* _BinaryenAvgrUVecI16x8 */, + Q15MulrSatI16x8 = 147 /* TODO_BinaryenQ15MulrSatSVecI16x8 */, + ExtMulLowI16x8 = 148 /* TODO_BinaryenExtMulLowSVecI16x8 */, + ExtMulHighI16x8 = 149 /* TODO_BinaryenExtMulHighSVecI16x8 */, + ExtMulLowU16x8 = 150 /* TODO_BinaryenExtMulLowUVecI16x8 */, + ExtMulHighU16x8 = 151 /* TODO_BinaryenExtMulHighUVecI16x8 */, + AddI32x4 = 152 /* _BinaryenAddVecI32x4 */, + SubI32x4 = 153 /* _BinaryenSubVecI32x4 */, + MulI32x4 = 154 /* _BinaryenMulVecI32x4 */, + MinI32x4 = 155 /* _BinaryenMinSVecI32x4 */, + MinU32x4 = 156 /* _BinaryenMinUVecI32x4 */, + MaxI32x4 = 157 /* _BinaryenMaxSVecI32x4 */, + MaxU32x4 = 158 /* _BinaryenMaxUVecI32x4 */, + DotI16x8 = 159 /* _BinaryenDotSVecI16x8ToVecI32x4 */, + AddI64x2 = 164 /* _BinaryenAddVecI64x2 */, + SubI64x2 = 165 /* _BinaryenSubVecI64x2 */, + MulI64x2 = 166 /* _BinaryenMulVecI64x2 */, + ExtMulLowI64x2 = 167 /* TODO_BinaryenExtMulLowSVecI64x2 */, + ExtMulHighI64x2 = 168 /* TODO_BinaryenExtMulHighSVecI64x2 */, + ExtMulLowU64x2 = 169 /* TODO_BinaryenExtMulLowUVecI64x2 */, + ExtMulHighU64x2 = 170 /* TODO_BinaryenExtMulHighUVecI64x2 */, + AddF32x4 = 171 /* _BinaryenAddVecF32x4 */, + SubF32x4 = 172 /* _BinaryenSubVecF32x4 */, + MulF32x4 = 173 /* _BinaryenMulVecF32x4 */, + DivF32x4 = 174 /* _BinaryenDivVecF32x4 */, + MinF32x4 = 175 /* _BinaryenMinVecF32x4 */, + MaxF32x4 = 176 /* _BinaryenMaxVecF32x4 */, + PminF32x4 = 177 /* _BinaryenPMinVecF32x4 */, + PmaxF32x4 = 178 /* _BinaryenPMaxVecF32x4 */, + AddF64x2 = 179 /* _BinaryenAddVecF64x2 */, + SubF64x2 = 180 /* _BinaryenSubVecF64x2 */, + MulF64x2 = 181 /* _BinaryenMulVecF64x2 */, + DivF64x2 = 182 /* _BinaryenDivVecF64x2 */, + MinF64x2 = 183 /* _BinaryenMinVecF64x2 */, + MaxF64x2 = 184 /* _BinaryenMaxVecF64x2 */, + PminF64x2 = 185 /* _BinaryenPMinVecF64x2 */, + PmaxF64x2 = 186 /* _BinaryenPMaxVecF64x2 */, + NarrowI16x8ToI8x16 = 187 /* _BinaryenNarrowSVecI16x8ToVecI8x16 */, + NarrowU16x8ToU8x16 = 188 /* _BinaryenNarrowUVecI16x8ToVecI8x16 */, + NarrowI32x4ToI16x8 = 189 /* _BinaryenNarrowSVecI32x4ToVecI16x8 */, + NarrowU32x4ToU16x8 = 190 /* _BinaryenNarrowUVecI32x4ToVecI16x8 */, + SwizzleV8x16 = 191 /* _BinaryenSwizzleVec8x16 */ } export enum AtomicRMWOp { @@ -505,7 +524,11 @@ export enum SIMDTernaryOp { QFMAF32x4 = 1 /* _BinaryenQFMAVecF32x4 */, QFMSF32x4 = 2 /* _BinaryenQFMSVecF32x4 */, QFMAF64x2 = 3 /* _BinaryenQFMAVecF64x2 */, - QFMSF64x2 = 4 /* _BinaryenQFMSVecF64x2 */ + QFMSF64x2 = 4 /* _BinaryenQFMSVecF64x2 */, + SignSelectV8x16 = 5 /* TODO_BinaryenSignSelectVec8x16 */, + SignSelectV16x8 = 6 /* TODO_BinaryenSignSelectVec16x8 */, + SignSelectV32x4 = 7 /* TODO_BinaryenSignSelectVec32x4 */, + SignSelectV64x2 = 8 /* TODO_BinaryenSignSelectVec64x2 */ } export enum SIMDLoadOp { @@ -518,7 +541,52 @@ export enum SIMDLoadOp { LoadI16ToI32x4 = 6 /* _BinaryenLoadExtSVec16x4ToVecI32x4 */, LoadU16ToU32x4 = 7 /* _BinaryenLoadExtUVec16x4ToVecI32x4 */, LoadI32ToI64x2 = 8 /* _BinaryenLoadExtSVec32x2ToVecI64x2 */, - LoadU32ToU64x2 = 9 /* _BinaryenLoadExtUVec32x2ToVecI64x2 */ + LoadU32ToU64x2 = 9 /* _BinaryenLoadExtUVec32x2ToVecI64x2 */, + Load32Zero = 10 /* TODO_BinaryenLoad32Zero */, + Load64Zero = 11 /* TODO_BinaryenLoad64Zero */ +} + +export enum SIMDLoadStoreLaneOp { + LoadLaneV8x16 = 0 /* TODO_BinaryenLoadLaneVec8x16 */, + LoadLaneV16x8 = 1 /* TODO_BinaryenLoadLaneVec16x8 */, + LoadLaneV32x4 = 2 /* TODO_BinaryenLoadLaneVec32x4 */, + LoadLaneV64x2 = 3 /* TODO_BinaryenLoadLaneVec64x2 */, + StoreLaneV8x16 = 4 /* TODO_BinaryenStoreLaneVec8x16 */, + StoreLaneV16x8 = 5 /* TODO_BinaryenStoreLaneVec16x8 */, + StoreLaneV32x4 = 6 /* TODO_BinaryenStoreLaneVec32x4 */, + StoreLaneV64x2 = 7 /* TODO_BinaryenStoreLaneVec64x2 */ +} + +export enum SIMDWidenOp { + WidenSVecI8x16ToVecI32x4 = 0 /* TODO_BinaryenWidenSVecI8x16ToVecI32x4 */, + WidenUVecI8x16ToVecI32x4 = 1 /* TODO_BinaryenWidenUVecI8x16ToVecI32x4 */ +} + +export enum PrefetchOp { + PrefetchTemporal = 0 /* TODO_BinaryenPrefetchTemporal */, + PrefetchNontemporal = 1 /* TODO_BinaryenPrefetchNontemporal */ +} + +export enum RefIsOp { + RefIsNull = 0 /* _BinaryenRefIsNull */, + RefIsFunc = 1 /* _BinaryenRefIsFunc */, + RefIsData = 2 /* _BinaryenRefIsData */, + RefIsI31 = 3 /* _BinaryenRefIsI31 */ +} + +export enum RefAsOp { + RefAsNonNull = 0 /* TODO_BinaryenRefAsNonNull */, + RefAsFunc = 1 /* TODO_BinaryenRefAsFunc */, + RefAsData = 2 /* TODO_BinaryenRefAsData */, + RefAsI31 = 3 /* TODO_BinaryenRefAsI31 */ +} + +export enum BrOnOp { + BrOnNull = 0 /* TODO_BinaryenBrOnNull */, + BrOnCast = 1 /* TODO_BinaryenBrOnCast */, + BrOnFunc = 2 /* TODO_BinaryenBrOnFunc */, + BrOnData = 3 /* TODO_BinaryenBrOnData */, + BrOnI31 = 4 /* TODO_BinaryenBrOnI31 */ } export enum ExpressionRunnerFlags { @@ -599,6 +667,10 @@ export class Module { return binaryen._BinaryenRefNull(this.ref, type); } + ref_eq(left: ExpressionRef, right: ExpressionRef): ExpressionRef { + return binaryen._BinaryenRefEq(this.ref, left, right); + } + // expressions unary( @@ -921,13 +993,14 @@ export class Module { results: NativeType, isReturn: bool = false ): ExpressionRef { + var cStr = this.allocStringCached("0"); // TODO: multiple tables var cArr = allocPtrArray(operands); var ret = isReturn ? binaryen._BinaryenReturnCallIndirect( - this.ref, index, cArr, operands ? operands.length : 0, params, results + this.ref, cStr, index, cArr, operands ? operands.length : 0, params, results ) : binaryen._BinaryenCallIndirect( - this.ref, index, cArr, operands ? operands.length : 0, params, results + this.ref, cStr, index, cArr, operands ? operands.length : 0, params, results ); binaryen._free(cArr); return ret; @@ -966,12 +1039,23 @@ export class Module { // exception handling - try( - body: ExpressionRef, - catchBody: ExpressionRef - ): ExpressionRef { - return binaryen._BinaryenTry(this.ref, body, catchBody); - } + // try( + // body: ExpressionRef, + // catchEvents: string[], + // catchBodies: ExpressionRef[] + // ): ExpressionRef { + // var numCatchEvents = catchEvents.length; + // var strs = new Array(numCatchEvents); + // for (let i = 0; i < numCatchEvents; ++i) { + // strs[i] = this.allocStringCached(catchEvents[i]); + // } + // var cArr1 = allocPtrArray(strs); + // var cArr2 = allocPtrArray(catchBodies); + // var ret = binaryen._BinaryenTry(this.ref, body, cArr1, numCatchEvents, cArr2, catchBodies.length); + // binaryen._free(cArr2); + // binaryen._free(cArr1); + // return ret; + // } throw( eventName: string, @@ -985,19 +1069,10 @@ export class Module { } rethrow( - exnref: ExpressionRef + target: string ): ExpressionRef { - return binaryen._BinaryenRethrow(this.ref, exnref); - } - - br_on_exn( - name: string, - eventName: string, - exnref: ExpressionRef - ): ExpressionRef { - var cStr1 = this.allocStringCached(name); - var cStr2 = this.allocStringCached(eventName); - return binaryen._BinaryenBrOnExn(this.ref, cStr1, cStr2, exnref); + var cStr = this.allocStringCached(target); + return binaryen._BinaryenRethrow(this.ref, cStr); } // multi value (pseudo instructions) @@ -1078,10 +1153,11 @@ export class Module { // reference types - ref_is_null( + ref_is( + op: RefIsOp, expr: ExpressionRef ): ExpressionRef { - return binaryen._BinaryenRefIsNull(this.ref, expr); + return binaryen._BinaryenRefIs(this.ref, op, expr); } ref_func( @@ -1092,6 +1168,24 @@ export class Module { return binaryen._BinaryenRefFunc(this.ref, cStr, type); } + // gc + + i31_new( + expr: ExpressionRef + ): ExpressionRef { + assert(false); + return this.unreachable(); + // return binaryen._BinaryenI31New(this.ref, expr); + } + + i31_get( + expr: ExpressionRef + ): ExpressionRef { + assert(false); + return this.unreachable(); + // return binaryen._BinaryenI31Get(this.ref, expr); + } + // globals addGlobal( diff --git a/src/passes/pass.ts b/src/passes/pass.ts index 3dfe15ee32..b8ab254605 100644 --- a/src/passes/pass.ts +++ b/src/passes/pass.ts @@ -80,13 +80,12 @@ import { _BinaryenMemoryFillGetDest, _BinaryenMemoryFillGetValue, _BinaryenMemoryFillGetSize, - _BinaryenRefIsNullGetValue, + _BinaryenRefIsGetValue, _BinaryenTryGetBody, - _BinaryenTryGetCatchBody, + _BinaryenTryGetNumCatchBodies, + _BinaryenTryGetCatchBodyAt, _BinaryenThrowGetNumOperands, _BinaryenThrowGetOperandAt, - _BinaryenRethrowGetExnref, - _BinaryenBrOnExnGetExnref, _BinaryenTupleMakeGetOperandAt, _BinaryenTupleMakeGetNumOperands, _BinaryenIfSetCondition, @@ -144,12 +143,10 @@ import { _BinaryenMemoryFillSetDest, _BinaryenMemoryFillSetValue, _BinaryenMemoryFillSetSize, - _BinaryenRefIsNullSetValue, + _BinaryenRefIsSetValue, _BinaryenTrySetBody, - _BinaryenTrySetCatchBody, + _BinaryenTrySetCatchBodyAt, _BinaryenThrowSetOperandAt, - _BinaryenRethrowSetExnref, - _BinaryenBrOnExnSetExnref, _BinaryenTupleMakeSetOperandAt, _BinaryenBlockGetName, _BinaryenLoopGetName, @@ -166,8 +163,6 @@ import { _BinaryenAtomicNotifySetNotifyCount, _BinaryenRefFuncGetFunc, _BinaryenThrowGetEvent, - _BinaryenBrOnExnGetEvent, - _BinaryenBrOnExnGetName, _BinaryenTupleExtractGetTuple, _BinaryenTupleExtractSetTuple, _BinaryenRefEqGetLeft, @@ -367,7 +362,7 @@ export abstract class Visitor { // unimp } - visitRefIsNull(expr: ExpressionRef): void { + visitRefIs(expr: ExpressionRef): void { // unimp } @@ -391,10 +386,6 @@ export abstract class Visitor { // unimp } - visitBrOnExn(expr: ExpressionRef): void { - // unimp - } - visitTupleMake(expr: ExpressionRef): void { // unimp } @@ -423,7 +414,7 @@ export abstract class Visitor { // unimp } - visitBrOnCast(expr: ExpressionRef): void { + visitBrOn(expr: ExpressionRef): void { // unimp } @@ -463,6 +454,10 @@ export abstract class Visitor { // unimp } + visitRefAs(expr: ExpressionRef): void { + // unimp + } + // Immediates visitName(name: CString): void { @@ -801,11 +796,11 @@ export abstract class Visitor { this.visitRefNull(expr); break; } - case ExpressionId.RefIsNull: { + case ExpressionId.RefIs: { this.stack.push(expr); - this.visit(_BinaryenRefIsNullGetValue(expr)); + this.visit(_BinaryenRefIsGetValue(expr)); assert(this.stack.pop() == expr); - this.visitRefIsNull(expr); + this.visitRefIs(expr); break; } case ExpressionId.RefFunc: { @@ -826,7 +821,10 @@ export abstract class Visitor { case ExpressionId.Try: { this.stack.push(expr); this.visit(_BinaryenTryGetBody(expr)); - this.visit(_BinaryenTryGetCatchBody(expr)); + let numCatchBodies = _BinaryenTryGetNumCatchBodies(expr); + for (let i: Index = 0; i < numCatchBodies; ++i) { + this.visit(_BinaryenTryGetCatchBodyAt(expr, i)); + } assert(this.stack.pop() == expr); this.visitTry(expr); break; @@ -843,21 +841,9 @@ export abstract class Visitor { break; } case ExpressionId.Rethrow: { - this.stack.push(expr); - this.visit(_BinaryenRethrowGetExnref(expr)); - assert(this.stack.pop() == expr); this.visitRethrow(expr); break; } - case ExpressionId.BrOnExn: { - this.stack.push(expr); - this.visitEvent(_BinaryenBrOnExnGetEvent(expr)); - this.visitLabel(_BinaryenBrOnExnGetName(expr)); - this.visit(_BinaryenBrOnExnGetExnref(expr)); - assert(this.stack.pop() == expr); - this.visitBrOnExn(expr); - break; - } case ExpressionId.TupleMake: { let numOperands = _BinaryenTupleMakeGetNumOperands(expr); if (numOperands) { @@ -912,11 +898,11 @@ export abstract class Visitor { this.visitRefCast(expr); break; } - case ExpressionId.BrOnCast: { + case ExpressionId.BrOn: { this.stack.push(expr); assert(false); // TODO assert(this.stack.pop() == expr); - this.visitBrOnCast(expr); + this.visitBrOn(expr); break; } case ExpressionId.RttCanon: { @@ -982,6 +968,13 @@ export abstract class Visitor { this.visitArrayLen(expr); break; } + case ExpressionId.RefAs: { + this.stack.push(expr); + assert(false); // TODO + assert(this.stack.pop() == expr); + this.visitRefAs(expr); + break; + } default: throw new Error("unexpected expression kind"); } this._currentExpression = previousExpression; @@ -1492,10 +1485,10 @@ export function replaceChild( case ExpressionId.RefNull: { break; } - case ExpressionId.RefIsNull: { - let value = _BinaryenRefIsNullGetValue(parent); + case ExpressionId.RefIs: { + let value = _BinaryenRefIsGetValue(parent); if (value == search) { - _BinaryenRefIsNullSetValue(parent, replacement); + _BinaryenRefIsSetValue(parent, replacement); return value; } break; @@ -1522,10 +1515,13 @@ export function replaceChild( _BinaryenTrySetBody(parent, replacement); return body; } - let catchBody = _BinaryenTryGetCatchBody(parent); - if (catchBody == search) { - _BinaryenTrySetCatchBody(parent, replacement); - return catchBody; + let numCatchBodies = _BinaryenTryGetNumCatchBodies(parent); + for (let i: Index = 0; i < numCatchBodies; ++i) { + let catchBody = _BinaryenTryGetCatchBodyAt(parent, i); + if (catchBody == search) { + _BinaryenTrySetCatchBodyAt(parent, i, replacement); + return catchBody; + } } break; } @@ -1541,19 +1537,6 @@ export function replaceChild( break; } case ExpressionId.Rethrow: { - let exnref = _BinaryenRethrowGetExnref(parent); - if (exnref == search) { - _BinaryenRethrowSetExnref(parent, replacement); - return exnref; - } - break; - } - case ExpressionId.BrOnExn: { - let exnref = _BinaryenBrOnExnGetExnref(parent); - if (exnref == search) { - _BinaryenBrOnExnSetExnref(parent, replacement); - return exnref; - } break; } case ExpressionId.TupleMake: { @@ -1595,7 +1578,7 @@ export function replaceChild( assert(false); // TODO break; } - case ExpressionId.BrOnCast: { + case ExpressionId.BrOn: { assert(false); // TODO break; } @@ -1635,6 +1618,10 @@ export function replaceChild( assert(false); // TODO break; } + case ExpressionId.RefAs: { + assert(false); // TODO + break; + } default: throw new Error("unexpected expression id"); } return 0; diff --git a/src/program.ts b/src/program.ts index 335d79c812..c8b7c73484 100644 --- a/src/program.ts +++ b/src/program.ts @@ -981,8 +981,10 @@ export class Program extends DiagnosticEmitter { this.registerNativeType(CommonNames.v128, Type.v128); this.registerNativeType(CommonNames.funcref, Type.funcref); this.registerNativeType(CommonNames.externref, Type.externref); - this.registerNativeType(CommonNames.exnref, Type.exnref); this.registerNativeType(CommonNames.anyref, Type.anyref); + this.registerNativeType(CommonNames.eqref, Type.eqref); + this.registerNativeType(CommonNames.i31ref, Type.i31ref); + this.registerNativeType(CommonNames.dataref, Type.dataref); // register compiler hints this.registerConstantInteger(CommonNames.ASC_TARGET, Type.i32, @@ -1241,11 +1243,11 @@ export class Program extends DiagnosticEmitter { if (options.hasFeature(Feature.REFERENCE_TYPES)) { this.registerWrapperClass(Type.funcref, CommonNames.Funcref); this.registerWrapperClass(Type.externref, CommonNames.Externref); - if (options.hasFeature(Feature.EXCEPTION_HANDLING)) { - this.registerWrapperClass(Type.exnref, CommonNames.Exnref); - } if (options.hasFeature(Feature.GC)) { this.registerWrapperClass(Type.anyref, CommonNames.Anyref); + this.registerWrapperClass(Type.eqref, CommonNames.Eqref); + this.registerWrapperClass(Type.i31ref, CommonNames.I31ref); + this.registerWrapperClass(Type.dataref, CommonNames.Dataref); } } @@ -3681,8 +3683,10 @@ export class Function extends TypedElement { tempV128s: Local[] | null = null; tempFuncrefs: Local[] | null = null; tempExternrefs: Local[] | null = null; - tempExnrefs: Local[] | null = null; tempAnyrefs: Local[] | null = null; + tempEqrefs: Local[] | null = null; + tempI31refs: Local[] | null = null; + tempDatarefs: Local[] | null = null; // used by flows to keep track of break labels nextBreakId: i32 = 0; diff --git a/src/types.ts b/src/types.ts index 50b942c330..935d2733e5 100644 --- a/src/types.ts +++ b/src/types.ts @@ -63,10 +63,14 @@ export const enum TypeKind { FUNCREF, /** External reference. */ EXTERNREF, - /** Exception reference. */ - EXNREF, /** Any reference. */ ANYREF, + /** Equatable reference. */ + EQREF, + /** 31-bit integer reference. */ + I31REF, + /** Data reference. */ + DATAREF, // other @@ -396,7 +400,7 @@ export class Type { if (targetFunction = target.getSignature()) { return currentFunction.isAssignableTo(targetFunction); } - } else if (this.isExternalReference && (this.kind == target.kind || target.kind == TypeKind.ANYREF)) { + } else if (this.isExternalReference && (this.kind == target.kind || (target.kind == TypeKind.ANYREF && this.kind != TypeKind.EXTERNREF))) { return true; } } @@ -497,8 +501,10 @@ export class Type { case TypeKind.V128: return "v128"; case TypeKind.FUNCREF: return "funcref"; case TypeKind.EXTERNREF: return "externref"; - case TypeKind.EXNREF: return "exnref"; case TypeKind.ANYREF: return "anyref"; + case TypeKind.EQREF: return "eqref"; + case TypeKind.I31REF: return "i31ref"; + case TypeKind.DATAREF: return "dataref"; default: assert(false); case TypeKind.VOID: return "void"; } @@ -524,10 +530,13 @@ export class Type { case TypeKind.F32: return NativeType.F32; case TypeKind.F64: return NativeType.F64; case TypeKind.V128: return NativeType.V128; + // TODO: nullable/non-nullable refs have different native types case TypeKind.FUNCREF: return NativeType.Funcref; case TypeKind.EXTERNREF: return NativeType.Externref; - case TypeKind.EXNREF: return NativeType.Exnref; case TypeKind.ANYREF: return NativeType.Anyref; + case TypeKind.EQREF: return NativeType.Eqref; + case TypeKind.I31REF: return NativeType.I31ref; + case TypeKind.DATAREF: return NativeType.Dataref; case TypeKind.VOID: return NativeType.None; } } @@ -673,15 +682,28 @@ export class Type { TypeFlags.REFERENCE, 0 ); - /** Exception reference. */ - static readonly exnref: Type = new Type(TypeKind.EXNREF, + /** Any reference. */ + static readonly anyref: Type = new Type(TypeKind.ANYREF, TypeFlags.EXTERNAL | TypeFlags.NULLABLE | TypeFlags.REFERENCE, 0 ); - /** Any reference. */ - static readonly anyref: Type = new Type(TypeKind.ANYREF, + /** Equatable reference. */ + static readonly eqref: Type = new Type(TypeKind.EQREF, + TypeFlags.EXTERNAL | + TypeFlags.NULLABLE | + TypeFlags.REFERENCE, 0 + ); + + /** 31-bit integer reference. */ + static readonly i31ref: Type = new Type(TypeKind.I31REF, + TypeFlags.EXTERNAL | + TypeFlags.REFERENCE, 0 + ); + + /** Data reference. */ + static readonly dataref: Type = new Type(TypeKind.DATAREF, TypeFlags.EXTERNAL | TypeFlags.NULLABLE | TypeFlags.REFERENCE, 0 diff --git a/std/assembly/builtins.ts b/std/assembly/builtins.ts index da8c88c33f..b108665185 100644 --- a/std/assembly/builtins.ts +++ b/std/assembly/builtins.ts @@ -1834,14 +1834,6 @@ export namespace i64x2 { @builtin export declare function shr_u(a: v128, b: i32): v128; - // @ts-ignore: decorator - @builtin - export declare function any_true(a: v128): bool; - - // @ts-ignore: decorator - @builtin - export declare function all_true(a: v128): bool; - // @ts-ignore: decorator @builtin export declare function trunc_sat_f64x2_s(a: v128): v128; diff --git a/std/assembly/index.d.ts b/std/assembly/index.d.ts index 618fbc59c0..5e1c0a5501 100644 --- a/std/assembly/index.d.ts +++ b/std/assembly/index.d.ts @@ -39,10 +39,14 @@ declare type v128 = object; declare type funcref = object | null; /** External reference. */ declare type externref = object | null; -/** Exception reference. */ -declare type exnref = object | null; /** Any reference. */ declare type anyref = object | null; +/** Equatable reference. */ +declare type eqref = object | null; +/** 31-bit integer reference. */ +declare type i31ref = object | null; +/** Data reference. */ +declare type dataref = object | null; // Compiler hints @@ -1047,10 +1051,6 @@ declare namespace i64x2 { export function shr_s(a: v128, b: i32): v128; /** Performs a bitwise logical right shift on each 64-bit integer lane by a scalar. */ export function shr_u(a: v128, b: i32): v128; - /** Reduces a vector to a scalar indicating whether any 64-bit integer lane is considered `true`. */ - export function any_true(a: v128): bool; - /** Reduces a vector to a scalar indicating whether all 64-bit integer lanes are considered `true`. */ - export function all_true(a: v128): bool; /** Truncates each 64-bit float lane to a signed integer with saturation. */ export function trunc_sat_f64x2_s(a: v128): v128; /** Truncates each 64-bit float lane to an unsigned integer with saturation. */ diff --git a/std/assembly/reference.ts b/std/assembly/reference.ts index 314ed5da09..234c52650e 100644 --- a/std/assembly/reference.ts +++ b/std/assembly/reference.ts @@ -11,9 +11,17 @@ export abstract class Externref extends Ref { } @final @unmanaged -export abstract class Exnref extends Ref { +export abstract class Anyref extends Ref { } @final @unmanaged -export abstract class Anyref extends Ref { +export abstract class Eqref extends Ref { +} + +@final @unmanaged +export abstract class I31ref extends Ref { +} + +@final @unmanaged +export abstract class Dataref extends Ref { } diff --git a/tests/compiler/assert-nonnull.optimized.wat b/tests/compiler/assert-nonnull.optimized.wat index 26d5ec0a02..130dcf08ea 100644 --- a/tests/compiler/assert-nonnull.optimized.wat +++ b/tests/compiler/assert-nonnull.optimized.wat @@ -432,7 +432,7 @@ i32.store local.get $0 i32.load - call_indirect (type $none_=>_i32) + call_indirect $0 (type $none_=>_i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -471,7 +471,7 @@ i32.store local.get $0 i32.load - call_indirect (type $none_=>_i32) + call_indirect $0 (type $none_=>_i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -501,7 +501,7 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.load - call_indirect (type $none_=>_i32) + call_indirect $0 (type $none_=>_i32) local.tee $0 i32.store local.get $0 @@ -536,7 +536,7 @@ local.get $0 i32.load offset=4 i32.load - call_indirect (type $none_=>_i32) + call_indirect $0 (type $none_=>_i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -563,7 +563,7 @@ local.get $0 i32.load offset=4 i32.load - call_indirect (type $none_=>_i32) + call_indirect $0 (type $none_=>_i32) local.tee $0 i32.store local.get $0 diff --git a/tests/compiler/assert-nonnull.untouched.wat b/tests/compiler/assert-nonnull.untouched.wat index 63d2c59d6c..b5db17329c 100644 --- a/tests/compiler/assert-nonnull.untouched.wat +++ b/tests/compiler/assert-nonnull.untouched.wat @@ -65,7 +65,7 @@ global.set $~argumentsLength local.get $0 i32.load - call_indirect (type $none_=>_i32) + call_indirect $0 (type $none_=>_i32) ) (func $assert-nonnull/testObjFn (param $0 i32) (result i32) i32.const 0 @@ -73,7 +73,7 @@ local.get $0 i32.load offset=4 i32.load - call_indirect (type $none_=>_i32) + call_indirect $0 (type $none_=>_i32) ) (func $~stack_check global.get $~lib/memory/__stack_pointer @@ -459,7 +459,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $none_=>_i32) + call_indirect $0 (type $none_=>_i32) local.set $3 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -483,7 +483,7 @@ global.set $~argumentsLength local.get $0 i32.load - call_indirect (type $none_=>_i32) + call_indirect $0 (type $none_=>_i32) local.tee $1 i32.store local.get $1 @@ -521,7 +521,7 @@ local.get $0 i32.load offset=4 i32.load - call_indirect (type $none_=>_i32) + call_indirect $0 (type $none_=>_i32) local.tee $1 i32.store local.get $1 diff --git a/tests/compiler/builtins.optimized.wat b/tests/compiler/builtins.optimized.wat index 040a28b9f0..d4de8d6298 100644 --- a/tests/compiler/builtins.optimized.wat +++ b/tests/compiler/builtins.optimized.wat @@ -560,7 +560,7 @@ i32.const 2 i32.const 1168 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 3 i32.ne if @@ -578,7 +578,7 @@ i32.const 3 i32.const 1168 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 5 i32.ne if diff --git a/tests/compiler/builtins.untouched.wat b/tests/compiler/builtins.untouched.wat index f1745736f0..3fd66b192b 100644 --- a/tests/compiler/builtins.untouched.wat +++ b/tests/compiler/builtins.untouched.wat @@ -1779,7 +1779,7 @@ global.set $~argumentsLength global.get $builtins/fn i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 3 i32.eq i32.eqz @@ -1801,7 +1801,7 @@ i32.store local.get $9 call $~lib/function/Function<%28i32%2Ci32%29=>i32>#get:index - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.eq i32.eqz if diff --git a/tests/compiler/call-optional.optimized.wat b/tests/compiler/call-optional.optimized.wat index d3b4c09d21..977485b460 100644 --- a/tests/compiler/call-optional.optimized.wat +++ b/tests/compiler/call-optional.optimized.wat @@ -75,7 +75,7 @@ i32.const 0 i32.const 1120 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) if i32.const 0 i32.const 1056 @@ -91,7 +91,7 @@ i32.const 0 i32.const 1120 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) i32.const 5 i32.ne if @@ -109,7 +109,7 @@ i32.const 5 i32.const 1120 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) i32.const 12 i32.ne if diff --git a/tests/compiler/call-optional.untouched.wat b/tests/compiler/call-optional.untouched.wat index 963228927d..c3df82c92f 100644 --- a/tests/compiler/call-optional.untouched.wat +++ b/tests/compiler/call-optional.untouched.wat @@ -102,7 +102,7 @@ global.set $~argumentsLength global.get $call-optional/optIndirect i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) i32.const 0 i32.eq i32.eqz @@ -121,7 +121,7 @@ global.set $~argumentsLength global.get $call-optional/optIndirect i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) i32.const 5 i32.eq i32.eqz @@ -140,7 +140,7 @@ global.set $~argumentsLength global.get $call-optional/optIndirect i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) i32.const 12 i32.eq i32.eqz diff --git a/tests/compiler/class-static-function.optimized.wat b/tests/compiler/class-static-function.optimized.wat index 9f1aa2907c..7558c6d1d1 100644 --- a/tests/compiler/class-static-function.optimized.wat +++ b/tests/compiler/class-static-function.optimized.wat @@ -40,7 +40,7 @@ i32.store i32.const 1056 i32.load - call_indirect (type $none_=>_i32) + call_indirect $0 (type $none_=>_i32) i32.const 42 i32.ne if diff --git a/tests/compiler/class-static-function.untouched.wat b/tests/compiler/class-static-function.untouched.wat index 9fc86ddec2..ea89a85195 100644 --- a/tests/compiler/class-static-function.untouched.wat +++ b/tests/compiler/class-static-function.untouched.wat @@ -23,7 +23,7 @@ global.set $~argumentsLength local.get $0 i32.load - call_indirect (type $none_=>_i32) + call_indirect $0 (type $none_=>_i32) ) (func $~start call $start:class-static-function diff --git a/tests/compiler/features/reference-types.ts b/tests/compiler/features/reference-types.ts index 9077879553..d0b3e8d208 100644 --- a/tests/compiler/features/reference-types.ts +++ b/tests/compiler/features/reference-types.ts @@ -42,13 +42,6 @@ assert(!externGlobal); var externGlobalInit: externref = null; assert(!externGlobalInit); -var exnGlobal: exnref; -assert(!exnGlobal); -exnGlobal = null; -assert(!exnGlobal); -var exnGlobalInit: exnref = null; -assert(!exnGlobalInit); - var anyGlobal: anyref; assert(!anyGlobal); anyGlobal = null; @@ -66,7 +59,6 @@ function testLocal(): void { } testLocal(); testLocal(); -testLocal(); testLocal(); // funcref can represent function references @@ -84,8 +76,3 @@ assert(otherFuncGlobal); // can assign any reference type to anyref anyGlobal = funcGlobal; -anyGlobal = externGlobal; -anyGlobal = exnGlobal; - -// TODO: Not implemented: ref.cast -// exnGlobal = anyGlobal; diff --git a/tests/compiler/features/reference-types.untouched.wat b/tests/compiler/features/reference-types.untouched.wat index b2fe65ab3b..b4212781f2 100644 --- a/tests/compiler/features/reference-types.untouched.wat +++ b/tests/compiler/features/reference-types.untouched.wat @@ -19,8 +19,6 @@ (global $features/reference-types/funcGlobalInit (mut funcref) (ref.null func)) (global $features/reference-types/externGlobal (mut externref) (ref.null extern)) (global $features/reference-types/externGlobalInit (mut externref) (ref.null extern)) - (global $features/reference-types/exnGlobal (mut exnref) (ref.null exn)) - (global $features/reference-types/exnGlobalInit (mut exnref) (ref.null exn)) (global $features/reference-types/anyGlobal (mut anyref) (ref.null any)) (global $features/reference-types/anyGlobalInit (mut anyref) (ref.null any)) (global $features/reference-types/otherFuncGlobal (mut funcref) (ref.null func)) @@ -41,7 +39,7 @@ if i32.const 0 i32.const 32 - i32.const 61 + i32.const 54 i32.const 3 call $~lib/builtins/abort unreachable @@ -55,7 +53,7 @@ if i32.const 0 i32.const 32 - i32.const 63 + i32.const 56 i32.const 3 call $~lib/builtins/abort unreachable @@ -69,7 +67,7 @@ if i32.const 0 i32.const 32 - i32.const 65 + i32.const 58 i32.const 3 call $~lib/builtins/abort unreachable @@ -85,7 +83,7 @@ if i32.const 0 i32.const 32 - i32.const 61 + i32.const 54 i32.const 3 call $~lib/builtins/abort unreachable @@ -99,7 +97,7 @@ if i32.const 0 i32.const 32 - i32.const 63 + i32.const 56 i32.const 3 call $~lib/builtins/abort unreachable @@ -113,51 +111,7 @@ if i32.const 0 i32.const 32 - i32.const 65 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - ) - (func $features/reference-types/testLocal - (local $0 exnref) - (local $1 exnref) - local.get $0 - ref.is_null - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 61 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - ref.null exn - local.set $0 - local.get $0 - ref.is_null - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 63 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - ref.null exn - local.set $1 - local.get $1 - ref.is_null - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 65 + i32.const 58 i32.const 3 call $~lib/builtins/abort unreachable @@ -173,7 +127,7 @@ if i32.const 0 i32.const 32 - i32.const 61 + i32.const 54 i32.const 3 call $~lib/builtins/abort unreachable @@ -187,7 +141,7 @@ if i32.const 0 i32.const 32 - i32.const 63 + i32.const 56 i32.const 3 call $~lib/builtins/abort unreachable @@ -201,7 +155,7 @@ if i32.const 0 i32.const 32 - i32.const 65 + i32.const 58 i32.const 3 call $~lib/builtins/abort unreachable @@ -314,46 +268,6 @@ call $~lib/builtins/abort unreachable end - global.get $features/reference-types/exnGlobal - ref.is_null - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 46 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ref.null exn - global.set $features/reference-types/exnGlobal - global.get $features/reference-types/exnGlobal - ref.is_null - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 48 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ref.null exn - global.set $features/reference-types/exnGlobalInit - global.get $features/reference-types/exnGlobalInit - ref.is_null - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 50 - i32.const 1 - call $~lib/builtins/abort - unreachable - end global.get $features/reference-types/anyGlobal ref.is_null i32.eqz @@ -361,7 +275,7 @@ if i32.const 0 i32.const 32 - i32.const 53 + i32.const 46 i32.const 1 call $~lib/builtins/abort unreachable @@ -375,7 +289,7 @@ if i32.const 0 i32.const 32 - i32.const 55 + i32.const 48 i32.const 1 call $~lib/builtins/abort unreachable @@ -389,14 +303,13 @@ if i32.const 0 i32.const 32 - i32.const 57 + i32.const 50 i32.const 1 call $~lib/builtins/abort unreachable end call $features/reference-types/testLocal call $features/reference-types/testLocal - call $features/reference-types/testLocal call $features/reference-types/testLocal ref.func $features/reference-types/someFunc global.set $features/reference-types/funcGlobal @@ -405,7 +318,7 @@ if i32.const 0 i32.const 32 - i32.const 76 + i32.const 68 i32.const 1 call $~lib/builtins/abort unreachable @@ -417,7 +330,7 @@ if i32.const 0 i32.const 32 - i32.const 78 + i32.const 70 i32.const 1 call $~lib/builtins/abort unreachable @@ -429,17 +342,13 @@ if i32.const 0 i32.const 32 - i32.const 81 + i32.const 73 i32.const 3 call $~lib/builtins/abort unreachable end global.get $features/reference-types/funcGlobal global.set $features/reference-types/anyGlobal - global.get $features/reference-types/externGlobal - global.set $features/reference-types/anyGlobal - global.get $features/reference-types/exnGlobal - global.set $features/reference-types/anyGlobal ) (func $features/reference-types/internal (param $0 externref) (result externref) (local $1 externref) diff --git a/tests/compiler/features/simd.optimized.wat b/tests/compiler/features/simd.optimized.wat index daf784b7f3..9bb7fd2c29 100644 --- a/tests/compiler/features/simd.optimized.wat +++ b/tests/compiler/features/simd.optimized.wat @@ -9,7 +9,7 @@ (data (i32.const 1036) "<") (data (i32.const 1048) "\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") (data (i32.const 1100) "<") - (data (i32.const 1112) "\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data (i32.const 1112) "\01\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") (data (i32.const 1164) "<") (data (i32.const 1176) "\01\00\00\00 \00\00\00f\00e\00a\00t\00u\00r\00e\00s\00/\00s\00i\00m\00d\00.\00t\00s") (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) @@ -29,7 +29,7 @@ if i32.const 0 i32.const 1056 - i32.const 272 + i32.const 273 i32.const 14 call $~lib/builtins/abort unreachable @@ -49,7 +49,7 @@ if i32.const 0 i32.const 1056 - i32.const 274 + i32.const 275 i32.const 14 call $~lib/builtins/abort unreachable @@ -92,7 +92,7 @@ if i32.const 0 i32.const 1056 - i32.const 287 + i32.const 288 i32.const 14 call $~lib/builtins/abort unreachable @@ -184,7 +184,7 @@ if i32.const 0 i32.const 1056 - i32.const 200 + i32.const 201 i32.const 14 call $~lib/builtins/abort unreachable @@ -198,7 +198,7 @@ if i32.const 0 i32.const 1056 - i32.const 202 + i32.const 203 i32.const 14 call $~lib/builtins/abort unreachable @@ -271,7 +271,7 @@ if i32.const 0 i32.const 1056 - i32.const 223 + i32.const 224 i32.const 16 call $~lib/builtins/abort unreachable @@ -326,7 +326,7 @@ if i32.const 0 i32.const 1056 - i32.const 238 + i32.const 239 i32.const 14 call $~lib/builtins/abort unreachable @@ -341,7 +341,7 @@ if i32.const 0 i32.const 1056 - i32.const 239 + i32.const 240 i32.const 14 call $~lib/builtins/abort unreachable @@ -389,7 +389,7 @@ if i32.const 0 i32.const 1056 - i32.const 255 + i32.const 256 i32.const 14 call $~lib/builtins/abort unreachable @@ -459,7 +459,7 @@ if i32.const 0 i32.const 1056 - i32.const 380 + i32.const 381 i32.const 14 call $~lib/builtins/abort unreachable @@ -487,7 +487,7 @@ if i32.const 0 i32.const 1056 - i32.const 387 + i32.const 388 i32.const 16 call $~lib/builtins/abort unreachable @@ -515,7 +515,7 @@ if i32.const 0 i32.const 1056 - i32.const 400 + i32.const 401 i32.const 5 call $~lib/builtins/abort unreachable @@ -582,10 +582,10 @@ if unreachable end - i32.const 1232 + i32.const 17616 i32.const 0 i32.store - i32.const 2800 + i32.const 19184 i32.const 0 i32.store loop $for-loop|0 @@ -596,7 +596,7 @@ local.get $1 i32.const 2 i32.shl - i32.const 1232 + i32.const 17616 i32.add i32.const 0 i32.store offset=4 @@ -614,7 +614,7 @@ i32.add i32.const 2 i32.shl - i32.const 1232 + i32.const 17616 i32.add i32.const 0 i32.store offset=96 @@ -632,13 +632,13 @@ br $for-loop|0 end end - i32.const 1232 - i32.const 2804 + i32.const 17616 + i32.const 19188 memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - i32.const 1232 + i32.const 17616 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) @@ -677,7 +677,7 @@ if i32.const 0 i32.const 1056 - i32.const 346 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -758,7 +758,7 @@ if i32.const 0 i32.const 1056 - i32.const 499 + i32.const 500 i32.const 16 call $~lib/builtins/abort unreachable @@ -773,7 +773,7 @@ if i32.const 0 i32.const 1056 - i32.const 501 + i32.const 502 i32.const 14 call $~lib/builtins/abort unreachable @@ -858,7 +858,7 @@ v128.load offset=16 v128.store offset=32 local.get $0 - i32.const 1228 + i32.const 17612 i32.ge_u if global.get $~lib/rt/tlsf/ROOT @@ -891,7 +891,7 @@ if i32.const 0 i32.const 1056 - i32.const 564 + i32.const 565 i32.const 3 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/features/simd.ts b/tests/compiler/features/simd.ts index 2290765256..8a0038acc9 100644 --- a/tests/compiler/features/simd.ts +++ b/tests/compiler/features/simd.ts @@ -459,8 +459,6 @@ function test_i64x2(): void { assert(i64x2.shl(i64x2.splat(1), 1) == i64x2.splat(2)); assert(i64x2.shr_s(i64x2.splat(-2), 1) == i64x2.splat(-1)); assert(i64x2.shr_u(i64x2.splat(-1), 1) == i64x2.splat(9223372036854775807)); - assert(i64x2.any_true(i64x2(1, 0)) == true); - assert(i64x2.all_true(i64x2.splat(1)) == true); assert( i64x2.trunc_sat_f64x2_s(f64x2.splat(-1.5)) == diff --git a/tests/compiler/features/simd.untouched.wat b/tests/compiler/features/simd.untouched.wat index 20a6df39c2..63cd14523f 100644 --- a/tests/compiler/features/simd.untouched.wat +++ b/tests/compiler/features/simd.untouched.wat @@ -11,7 +11,7 @@ (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) (data (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 76) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") + (data (i32.const 76) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00") (data (i32.const 140) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00 \00\00\00f\00e\00a\00t\00u\00r\00e\00s\00/\00s\00i\00m\00d\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") (table $0 1 funcref) (global $~lib/ASC_FEATURE_SIMD i32 (i32.const 1)) @@ -22,7 +22,9 @@ (global $~lib/builtins/u8.MAX_VALUE i32 (i32.const 255)) (global $~lib/builtins/i32.MAX_VALUE i32 (i32.const 2147483647)) (global $~lib/builtins/u16.MAX_VALUE i32 (i32.const 65535)) - (global $~lib/memory/__heap_base i32 (i32.const 204)) + (global $~lib/memory/__data_end i32 (i32.const 204)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 16588)) + (global $~lib/memory/__heap_base i32 (i32.const 16588)) (export "memory" (memory $0)) (start $~start) (func $~lib/rt/tlsf/Root#set:flMap (param $0 i32) (param $1 i32) @@ -68,7 +70,7 @@ if i32.const 0 i32.const 32 - i32.const 272 + i32.const 273 i32.const 14 call $~lib/builtins/abort unreachable @@ -95,7 +97,7 @@ if i32.const 0 i32.const 32 - i32.const 274 + i32.const 275 i32.const 14 call $~lib/builtins/abort unreachable @@ -149,7 +151,7 @@ if i32.const 0 i32.const 32 - i32.const 287 + i32.const 288 i32.const 14 call $~lib/builtins/abort unreachable @@ -281,7 +283,7 @@ if i32.const 0 i32.const 32 - i32.const 200 + i32.const 201 i32.const 14 call $~lib/builtins/abort unreachable @@ -298,7 +300,7 @@ if i32.const 0 i32.const 32 - i32.const 202 + i32.const 203 i32.const 14 call $~lib/builtins/abort unreachable @@ -393,7 +395,7 @@ if i32.const 0 i32.const 32 - i32.const 223 + i32.const 224 i32.const 16 call $~lib/builtins/abort unreachable @@ -458,7 +460,7 @@ if i32.const 0 i32.const 32 - i32.const 238 + i32.const 239 i32.const 14 call $~lib/builtins/abort unreachable @@ -476,7 +478,7 @@ if i32.const 0 i32.const 32 - i32.const 239 + i32.const 240 i32.const 14 call $~lib/builtins/abort unreachable @@ -535,7 +537,7 @@ if i32.const 0 i32.const 32 - i32.const 255 + i32.const 256 i32.const 14 call $~lib/builtins/abort unreachable @@ -640,7 +642,7 @@ if i32.const 0 i32.const 32 - i32.const 380 + i32.const 381 i32.const 14 call $~lib/builtins/abort unreachable @@ -683,7 +685,7 @@ if i32.const 0 i32.const 32 - i32.const 387 + i32.const 388 i32.const 16 call $~lib/builtins/abort unreachable @@ -716,7 +718,7 @@ if i32.const 0 i32.const 32 - i32.const 400 + i32.const 401 i32.const 5 call $~lib/builtins/abort unreachable @@ -956,7 +958,7 @@ if i32.const 96 i32.const 32 - i32.const 461 + i32.const 462 i32.const 30 call $~lib/builtins/abort unreachable @@ -1040,7 +1042,7 @@ if i32.const 0 i32.const 32 - i32.const 333 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1105,7 +1107,7 @@ if i32.const 0 i32.const 32 - i32.const 346 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1256,7 +1258,7 @@ if i32.const 0 i32.const 32 - i32.const 360 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable @@ -1365,7 +1367,7 @@ if i32.const 0 i32.const 32 - i32.const 499 + i32.const 500 i32.const 16 call $~lib/builtins/abort unreachable @@ -1385,7 +1387,7 @@ if i32.const 0 i32.const 32 - i32.const 501 + i32.const 502 i32.const 14 call $~lib/builtins/abort unreachable @@ -1443,7 +1445,7 @@ if i32.const 0 i32.const 32 - i32.const 564 + i32.const 565 i32.const 3 call $~lib/builtins/abort unreachable @@ -3386,21 +3388,6 @@ i32.const 0 i32.ne drop - v128.const i32x4 0x00000001 0x00000000 0x00000000 0x00000000 - i64x2.any_true - i32.const 0 - i32.ne - i32.const 1 - i32.eq - drop - i64.const 1 - i64x2.splat - i64x2.all_true - i32.const 0 - i32.ne - i32.const 1 - i32.eq - drop f64.const -1.5 f64x2.splat i64x2.trunc_sat_f64x2_s @@ -3443,7 +3430,7 @@ if i32.const 0 i32.const 160 - i32.const 495 + i32.const 493 i32.const 3 call $~lib/builtins/abort unreachable @@ -3461,7 +3448,7 @@ if i32.const 0 i32.const 160 - i32.const 497 + i32.const 495 i32.const 3 call $~lib/builtins/abort unreachable @@ -3480,7 +3467,7 @@ if i32.const 0 i32.const 160 - i32.const 499 + i32.const 497 i32.const 3 call $~lib/builtins/abort unreachable @@ -3497,7 +3484,7 @@ if i32.const 0 i32.const 160 - i32.const 500 + i32.const 498 i32.const 3 call $~lib/builtins/abort unreachable @@ -3514,7 +3501,7 @@ if i32.const 0 i32.const 160 - i32.const 501 + i32.const 499 i32.const 3 call $~lib/builtins/abort unreachable @@ -3535,7 +3522,7 @@ if i32.const 0 i32.const 160 - i32.const 503 + i32.const 501 i32.const 3 call $~lib/builtins/abort unreachable @@ -3552,7 +3539,7 @@ if i32.const 0 i32.const 160 - i32.const 504 + i32.const 502 i32.const 3 call $~lib/builtins/abort unreachable @@ -3568,7 +3555,7 @@ if i32.const 0 i32.const 160 - i32.const 505 + i32.const 503 i32.const 3 call $~lib/builtins/abort unreachable @@ -3581,7 +3568,7 @@ if i32.const 0 i32.const 160 - i32.const 506 + i32.const 504 i32.const 3 call $~lib/builtins/abort unreachable @@ -3594,7 +3581,7 @@ if i32.const 0 i32.const 160 - i32.const 507 + i32.const 505 i32.const 3 call $~lib/builtins/abort unreachable @@ -3611,7 +3598,7 @@ if i32.const 0 i32.const 160 - i32.const 508 + i32.const 506 i32.const 3 call $~lib/builtins/abort unreachable @@ -3628,7 +3615,7 @@ if i32.const 0 i32.const 160 - i32.const 513 + i32.const 511 i32.const 3 call $~lib/builtins/abort unreachable @@ -3659,7 +3646,7 @@ if i32.const 0 i32.const 160 - i32.const 522 + i32.const 520 i32.const 3 call $~lib/builtins/abort unreachable @@ -3676,7 +3663,7 @@ if i32.const 0 i32.const 160 - i32.const 523 + i32.const 521 i32.const 3 call $~lib/builtins/abort unreachable @@ -3693,7 +3680,7 @@ if i32.const 0 i32.const 160 - i32.const 524 + i32.const 522 i32.const 3 call $~lib/builtins/abort unreachable @@ -3710,7 +3697,7 @@ if i32.const 0 i32.const 160 - i32.const 525 + i32.const 523 i32.const 3 call $~lib/builtins/abort unreachable @@ -3727,7 +3714,7 @@ if i32.const 0 i32.const 160 - i32.const 526 + i32.const 524 i32.const 3 call $~lib/builtins/abort unreachable @@ -3744,7 +3731,7 @@ if i32.const 0 i32.const 160 - i32.const 527 + i32.const 525 i32.const 3 call $~lib/builtins/abort unreachable @@ -3761,7 +3748,7 @@ if i32.const 0 i32.const 160 - i32.const 528 + i32.const 526 i32.const 3 call $~lib/builtins/abort unreachable @@ -3778,7 +3765,7 @@ if i32.const 0 i32.const 160 - i32.const 529 + i32.const 527 i32.const 3 call $~lib/builtins/abort unreachable @@ -3794,7 +3781,7 @@ if i32.const 0 i32.const 160 - i32.const 530 + i32.const 528 i32.const 3 call $~lib/builtins/abort unreachable @@ -3849,7 +3836,7 @@ if i32.const 0 i32.const 160 - i32.const 557 + i32.const 555 i32.const 3 call $~lib/builtins/abort unreachable @@ -3867,7 +3854,7 @@ if i32.const 0 i32.const 160 - i32.const 559 + i32.const 557 i32.const 3 call $~lib/builtins/abort unreachable @@ -3886,7 +3873,7 @@ if i32.const 0 i32.const 160 - i32.const 561 + i32.const 559 i32.const 3 call $~lib/builtins/abort unreachable @@ -3903,7 +3890,7 @@ if i32.const 0 i32.const 160 - i32.const 562 + i32.const 560 i32.const 3 call $~lib/builtins/abort unreachable @@ -3920,7 +3907,7 @@ if i32.const 0 i32.const 160 - i32.const 563 + i32.const 561 i32.const 3 call $~lib/builtins/abort unreachable @@ -3941,7 +3928,7 @@ if i32.const 0 i32.const 160 - i32.const 565 + i32.const 563 i32.const 3 call $~lib/builtins/abort unreachable @@ -3958,7 +3945,7 @@ if i32.const 0 i32.const 160 - i32.const 566 + i32.const 564 i32.const 3 call $~lib/builtins/abort unreachable @@ -3974,7 +3961,7 @@ if i32.const 0 i32.const 160 - i32.const 567 + i32.const 565 i32.const 3 call $~lib/builtins/abort unreachable @@ -3987,7 +3974,7 @@ if i32.const 0 i32.const 160 - i32.const 568 + i32.const 566 i32.const 3 call $~lib/builtins/abort unreachable @@ -4000,7 +3987,7 @@ if i32.const 0 i32.const 160 - i32.const 569 + i32.const 567 i32.const 3 call $~lib/builtins/abort unreachable @@ -4017,7 +4004,7 @@ if i32.const 0 i32.const 160 - i32.const 570 + i32.const 568 i32.const 3 call $~lib/builtins/abort unreachable @@ -4034,7 +4021,7 @@ if i32.const 0 i32.const 160 - i32.const 575 + i32.const 573 i32.const 3 call $~lib/builtins/abort unreachable @@ -4065,7 +4052,7 @@ if i32.const 0 i32.const 160 - i32.const 584 + i32.const 582 i32.const 3 call $~lib/builtins/abort unreachable @@ -4082,7 +4069,7 @@ if i32.const 0 i32.const 160 - i32.const 585 + i32.const 583 i32.const 3 call $~lib/builtins/abort unreachable @@ -4099,7 +4086,7 @@ if i32.const 0 i32.const 160 - i32.const 586 + i32.const 584 i32.const 3 call $~lib/builtins/abort unreachable @@ -4116,7 +4103,7 @@ if i32.const 0 i32.const 160 - i32.const 587 + i32.const 585 i32.const 3 call $~lib/builtins/abort unreachable @@ -4133,7 +4120,7 @@ if i32.const 0 i32.const 160 - i32.const 588 + i32.const 586 i32.const 3 call $~lib/builtins/abort unreachable @@ -4150,7 +4137,7 @@ if i32.const 0 i32.const 160 - i32.const 589 + i32.const 587 i32.const 3 call $~lib/builtins/abort unreachable @@ -4167,7 +4154,7 @@ if i32.const 0 i32.const 160 - i32.const 590 + i32.const 588 i32.const 3 call $~lib/builtins/abort unreachable @@ -4184,7 +4171,7 @@ if i32.const 0 i32.const 160 - i32.const 591 + i32.const 589 i32.const 3 call $~lib/builtins/abort unreachable @@ -4200,7 +4187,7 @@ if i32.const 0 i32.const 160 - i32.const 592 + i32.const 590 i32.const 3 call $~lib/builtins/abort unreachable @@ -4254,7 +4241,7 @@ if i32.const 0 i32.const 160 - i32.const 620 + i32.const 618 i32.const 3 call $~lib/builtins/abort unreachable @@ -4273,7 +4260,7 @@ if i32.const 0 i32.const 160 - i32.const 626 + i32.const 624 i32.const 3 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/function-call.optimized.wat b/tests/compiler/function-call.optimized.wat index 7b23d6c921..9da69712cd 100644 --- a/tests/compiler/function-call.optimized.wat +++ b/tests/compiler/function-call.optimized.wat @@ -1447,15 +1447,15 @@ i32.store i32.const 1056 i32.load - call_indirect (type $none_=>_none) + call_indirect $0 (type $none_=>_none) i32.const 1088 i32.load - call_indirect (type $none_=>_none) + call_indirect $0 (type $none_=>_none) i32.const 1 i32.const 2 i32.const 1120 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 3 i32.ne if @@ -1470,7 +1470,7 @@ i32.const 3 i32.const 1216 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 5 i32.ne if @@ -1484,7 +1484,7 @@ i32.const 1 i32.const 1248 i32.load - call_indirect (type $i32_=>_i32) + call_indirect $0 (type $i32_=>_i32) i32.const 1 i32.ne if @@ -1609,11 +1609,11 @@ local.get $0 i32.const 1680 i32.load - call_indirect (type $i32_=>_none) + call_indirect $0 (type $i32_=>_none) i32.const 1 i32.const 1712 i32.load - call_indirect (type $i32_=>_i32) + call_indirect $0 (type $i32_=>_i32) i32.const 1 i32.ne if @@ -1633,7 +1633,7 @@ i32.const 2 i32.const 1744 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) i32.const 3 i32.ne if diff --git a/tests/compiler/function-call.untouched.wat b/tests/compiler/function-call.untouched.wat index ef3c975395..547f6c35a4 100644 --- a/tests/compiler/function-call.untouched.wat +++ b/tests/compiler/function-call.untouched.wat @@ -2565,19 +2565,19 @@ global.set $~argumentsLength global.get $function-call/fnVoid i32.load - call_indirect (type $none_=>_none) + call_indirect $0 (type $none_=>_none) i32.const 0 global.set $~argumentsLength global.get $function-call/faVoid i32.load - call_indirect (type $none_=>_none) + call_indirect $0 (type $none_=>_none) i32.const 1 i32.const 2 i32.const 2 global.set $~argumentsLength global.get $function-call/fnRet i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 3 i32.eq i32.eqz @@ -2595,7 +2595,7 @@ global.set $~argumentsLength global.get $function-call/faRet i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 5 i32.eq i32.eqz @@ -2612,7 +2612,7 @@ global.set $~argumentsLength global.get $function-call/fnThis i32.load - call_indirect (type $i32_=>_i32) + call_indirect $0 (type $i32_=>_i32) i32.const 1 i32.eq i32.eqz @@ -2654,13 +2654,13 @@ global.set $~argumentsLength i32.const 656 i32.load - call_indirect (type $i32_=>_none) + call_indirect $0 (type $i32_=>_none) i32.const 1 i32.const 0 global.set $~argumentsLength i32.const 688 i32.load - call_indirect (type $i32_=>_i32) + call_indirect $0 (type $i32_=>_i32) i32.const 1 i32.eq i32.eqz @@ -2684,7 +2684,7 @@ global.set $~argumentsLength i32.const 720 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) i32.const 3 i32.eq i32.eqz diff --git a/tests/compiler/function-expression.optimized.wat b/tests/compiler/function-expression.optimized.wat index 0aa9400422..364af50f36 100644 --- a/tests/compiler/function-expression.optimized.wat +++ b/tests/compiler/function-expression.optimized.wat @@ -1583,7 +1583,7 @@ i32.const 1 i32.const 1056 i32.load - call_indirect (type $i32_=>_i32) + call_indirect $0 (type $i32_=>_i32) i32.const 1 i32.ne if @@ -1597,7 +1597,7 @@ i32.const 2 i32.const 1152 i32.load - call_indirect (type $i32_=>_i32) + call_indirect $0 (type $i32_=>_i32) i32.const 2 i32.ne if @@ -1610,10 +1610,10 @@ end i32.const 1184 i32.load - call_indirect (type $none_=>_none) + call_indirect $0 (type $none_=>_none) i32.const 1216 i32.load - call_indirect (type $none_=>_i32) + call_indirect $0 (type $none_=>_i32) i32.const 1 i32.ne if @@ -1631,7 +1631,7 @@ i32.const 2 i32.const 1248 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 3 i32.ne if @@ -1649,7 +1649,7 @@ i32.const 2 i32.const 1280 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 1 i32.ne if @@ -1667,7 +1667,7 @@ i32.const 2 i32.const 1312 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 42 i32.ne if @@ -1682,7 +1682,7 @@ i32.const 2 i32.const 1344 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 3 i32.ne if @@ -1697,7 +1697,7 @@ i32.const 2 i32.const 1376 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 1 i32.ne if @@ -1712,7 +1712,7 @@ i32.const 2 i32.const 1408 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 42 i32.ne if @@ -1734,13 +1734,13 @@ global.get $~lib/memory/__stack_pointer i32.const 1504 i32.load - call_indirect (type $none_=>_i32) + call_indirect $0 (type $none_=>_i32) local.tee $0 i32.store i32.const 1 local.get $0 i32.load - call_indirect (type $i32_=>_i32) + call_indirect $0 (type $i32_=>_i32) i32.const 25 i32.ne if @@ -1769,13 +1769,13 @@ global.get $~lib/memory/__stack_pointer i32.const 1568 i32.load - call_indirect (type $none_=>_i32) + call_indirect $0 (type $none_=>_i32) local.tee $0 i32.store offset=4 i32.const 1 local.get $0 i32.load - call_indirect (type $i32_=>_i32) + call_indirect $0 (type $i32_=>_i32) i32.const 25 i32.ne if @@ -1894,13 +1894,13 @@ local.get $0 i32.load i32.load - call_indirect (type $none_=>_i32) + call_indirect $0 (type $none_=>_i32) local.tee $0 i32.store offset=8 i32.const 1 local.get $0 i32.load - call_indirect (type $i32_=>_i32) + call_indirect $0 (type $i32_=>_i32) i32.const 25 i32.ne if diff --git a/tests/compiler/function-expression.untouched.wat b/tests/compiler/function-expression.untouched.wat index 2e78cc447a..347bb22919 100644 --- a/tests/compiler/function-expression.untouched.wat +++ b/tests/compiler/function-expression.untouched.wat @@ -91,7 +91,7 @@ global.set $~argumentsLength local.get $0 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) ) (func $start:function-expression~anonymous|5 (param $0 i32) (param $1 i32) (result i32) local.get $0 @@ -156,14 +156,14 @@ global.set $~argumentsLength global.get $function-expression/globalFunc i32.load - call_indirect (type $none_=>_i32) + call_indirect $0 (type $none_=>_i32) local.tee $0 i32.store i32.const 1 global.set $~argumentsLength local.get $0 i32.load - call_indirect (type $i32_=>_i32) + call_indirect $0 (type $i32_=>_i32) i32.const 25 i32.eq i32.eqz @@ -206,14 +206,14 @@ global.set $~argumentsLength local.get $0 i32.load - call_indirect (type $none_=>_i32) + call_indirect $0 (type $none_=>_i32) local.tee $1 i32.store offset=4 i32.const 1 global.set $~argumentsLength local.get $1 i32.load - call_indirect (type $i32_=>_i32) + call_indirect $0 (type $i32_=>_i32) i32.const 25 i32.eq i32.eqz @@ -2874,14 +2874,14 @@ local.get $0 i32.load i32.load - call_indirect (type $none_=>_i32) + call_indirect $0 (type $none_=>_i32) local.tee $1 i32.store offset=8 i32.const 1 global.set $~argumentsLength local.get $1 i32.load - call_indirect (type $i32_=>_i32) + call_indirect $0 (type $i32_=>_i32) i32.const 25 i32.eq i32.eqz @@ -2913,7 +2913,7 @@ global.set $~argumentsLength global.get $function-expression/f1 i32.load - call_indirect (type $i32_=>_i32) + call_indirect $0 (type $i32_=>_i32) i32.const 1 i32.eq i32.eqz @@ -2930,7 +2930,7 @@ global.set $~argumentsLength global.get $function-expression/f2 i32.load - call_indirect (type $i32_=>_i32) + call_indirect $0 (type $i32_=>_i32) i32.const 2 i32.eq i32.eqz @@ -2946,12 +2946,12 @@ global.set $~argumentsLength global.get $function-expression/f3 i32.load - call_indirect (type $none_=>_none) + call_indirect $0 (type $none_=>_none) i32.const 0 global.set $~argumentsLength global.get $function-expression/f4 i32.load - call_indirect (type $none_=>_i32) + call_indirect $0 (type $none_=>_i32) i32.const 1 i32.eq i32.eqz @@ -3023,7 +3023,7 @@ global.set $~argumentsLength call $function-expression/testOmittedReturn1 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 3 i32.eq i32.eqz @@ -3041,7 +3041,7 @@ global.set $~argumentsLength call $function-expression/testOmittedReturn2 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 1 i32.eq i32.eqz @@ -3059,7 +3059,7 @@ global.set $~argumentsLength call $function-expression/testOmittedReturn3 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 42 i32.eq i32.eqz diff --git a/tests/compiler/function-types.optimized.wat b/tests/compiler/function-types.optimized.wat index 0f5d8a8c8b..72cb6c6da9 100644 --- a/tests/compiler/function-types.optimized.wat +++ b/tests/compiler/function-types.optimized.wat @@ -46,7 +46,7 @@ local.get $1 local.get $2 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) ) (func $~start call $start:function-types @@ -82,7 +82,7 @@ i32.const 2 i32.const 1056 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 3 i32.ne if @@ -99,7 +99,7 @@ i64.const 20 i32.const 1152 i32.load - call_indirect (type $i64_i64_=>_i64) + call_indirect $0 (type $i64_i64_=>_i64) i64.const 30 i64.ne if @@ -116,7 +116,7 @@ f64.const 2.5 i32.const 1184 i32.load - call_indirect (type $f64_f64_=>_f64) + call_indirect $0 (type $f64_f64_=>_f64) f64.const 4 f64.ne if @@ -151,7 +151,7 @@ i32.const 4 i32.const 1056 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 7 i32.ne if diff --git a/tests/compiler/function-types.untouched.wat b/tests/compiler/function-types.untouched.wat index f26ce47c8b..d24950a348 100644 --- a/tests/compiler/function-types.untouched.wat +++ b/tests/compiler/function-types.untouched.wat @@ -54,7 +54,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) ) (func $function-types/doAdd (param $0 i32) (param $1 i32) (result i32) local.get $0 @@ -63,7 +63,7 @@ global.set $~argumentsLength call $function-types/makeAdder i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) ) (func $function-types/addI32 (param $0 i32) (param $1 i32) (result i32) local.get $0 @@ -77,7 +77,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) ) (func $~start call $start:function-types @@ -113,7 +113,7 @@ global.set $~argumentsLength global.get $function-types/i32Adder i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 3 i32.eq i32.eqz @@ -133,7 +133,7 @@ global.set $~argumentsLength global.get $function-types/i64Adder i32.load - call_indirect (type $i64_i64_=>_i64) + call_indirect $0 (type $i64_i64_=>_i64) i64.const 30 i64.eq i32.eqz @@ -151,7 +151,7 @@ global.set $~argumentsLength call $function-types/makeAdder i32.load - call_indirect (type $f64_f64_=>_f64) + call_indirect $0 (type $f64_f64_=>_f64) f64.const 4 f64.eq i32.eqz diff --git a/tests/compiler/getter-call.optimized.wat b/tests/compiler/getter-call.optimized.wat index 3d79a8151b..84fd405f36 100644 --- a/tests/compiler/getter-call.optimized.wat +++ b/tests/compiler/getter-call.optimized.wat @@ -1516,7 +1516,7 @@ i32.store i32.const 1456 i32.load - call_indirect (type $none_=>_i32) + call_indirect $0 (type $none_=>_i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.add diff --git a/tests/compiler/getter-call.untouched.wat b/tests/compiler/getter-call.untouched.wat index a02d3aeddd..043c10875d 100644 --- a/tests/compiler/getter-call.untouched.wat +++ b/tests/compiler/getter-call.untouched.wat @@ -2504,7 +2504,7 @@ local.get $0 call $getter-call/C#get:x i32.load - call_indirect (type $none_=>_i32) + call_indirect $0 (type $none_=>_i32) local.set $1 global.get $~lib/memory/__stack_pointer i32.const 4 diff --git a/tests/compiler/infer-generic.optimized.wat b/tests/compiler/infer-generic.optimized.wat index e84415fad3..66ce9513b7 100644 --- a/tests/compiler/infer-generic.optimized.wat +++ b/tests/compiler/infer-generic.optimized.wat @@ -80,7 +80,7 @@ i32.const 1152 i32.const 1200 i32.load - call_indirect (type $i32_f32_i32_i32_=>_i32) + call_indirect $0 (type $i32_f32_i32_i32_=>_i32) local.set $1 local.get $0 i32.const 1 diff --git a/tests/compiler/infer-generic.untouched.wat b/tests/compiler/infer-generic.untouched.wat index 3629c037c4..6c1ed71c5d 100644 --- a/tests/compiler/infer-generic.untouched.wat +++ b/tests/compiler/infer-generic.untouched.wat @@ -82,7 +82,7 @@ global.set $~argumentsLength local.get $1 i32.load - call_indirect (type $i32_f32_i32_i32_=>_i32) + call_indirect $0 (type $i32_f32_i32_i32_=>_i32) local.set $3 local.get $4 i32.const 1 diff --git a/tests/compiler/inlining.optimized.wat b/tests/compiler/inlining.optimized.wat index 57932b0813..82a052f5e1 100644 --- a/tests/compiler/inlining.optimized.wat +++ b/tests/compiler/inlining.optimized.wat @@ -1894,7 +1894,7 @@ i32.const 2 i32.const 1104 i32.load - call_indirect (type $i32_=>_i32) + call_indirect $0 (type $i32_=>_i32) i32.const 2 i32.ne if diff --git a/tests/compiler/inlining.untouched.wat b/tests/compiler/inlining.untouched.wat index 70eeba686f..9cc05286f1 100644 --- a/tests/compiler/inlining.untouched.wat +++ b/tests/compiler/inlining.untouched.wat @@ -194,7 +194,7 @@ global.set $~argumentsLength i32.const 80 i32.load - call_indirect (type $i32_=>_i32) + call_indirect $0 (type $i32_=>_i32) i32.const 2 i32.eq i32.eqz diff --git a/tests/compiler/resolve-function-expression.optimized.wat b/tests/compiler/resolve-function-expression.optimized.wat index 4351ef364f..362612b299 100644 --- a/tests/compiler/resolve-function-expression.optimized.wat +++ b/tests/compiler/resolve-function-expression.optimized.wat @@ -1821,7 +1821,7 @@ i32.const 2 i32.const 1056 i32.load - call_indirect (type $i32_=>_i32) + call_indirect $0 (type $i32_=>_i32) i32.const 42 i32.ne if @@ -1835,7 +1835,7 @@ i32.const 1 i32.const 1168 i32.load - call_indirect (type $i32_=>_i32) + call_indirect $0 (type $i32_=>_i32) i32.const 42 i32.ne if @@ -1866,7 +1866,7 @@ i32.const 0 i32.const 1200 i32.load - call_indirect (type $i32_=>_i32) + call_indirect $0 (type $i32_=>_i32) local.set $0 global.get $~lib/memory/__stack_pointer i32.const 4 diff --git a/tests/compiler/resolve-function-expression.untouched.wat b/tests/compiler/resolve-function-expression.untouched.wat index da3605074d..efdbd5097e 100644 --- a/tests/compiler/resolve-function-expression.untouched.wat +++ b/tests/compiler/resolve-function-expression.untouched.wat @@ -3058,7 +3058,7 @@ global.set $~argumentsLength i32.const 32 i32.load - call_indirect (type $i32_=>_i32) + call_indirect $0 (type $i32_=>_i32) i32.const 42 i32.eq i32.eqz @@ -3075,7 +3075,7 @@ global.set $~argumentsLength i32.const 144 i32.load - call_indirect (type $i32_=>_i32) + call_indirect $0 (type $i32_=>_i32) i32.const 42 i32.eq i32.eqz @@ -3109,7 +3109,7 @@ global.set $~argumentsLength i32.const 176 i32.load - call_indirect (type $i32_=>_i32) + call_indirect $0 (type $i32_=>_i32) i32.const 10 call $~lib/number/I32#toString local.set $0 diff --git a/tests/compiler/resolve-ternary.optimized.wat b/tests/compiler/resolve-ternary.optimized.wat index 643d13154e..041027649e 100644 --- a/tests/compiler/resolve-ternary.optimized.wat +++ b/tests/compiler/resolve-ternary.optimized.wat @@ -3034,7 +3034,7 @@ i32.const 1 i32.const 3040 i32.load - call_indirect (type $i32_=>_i32) + call_indirect $0 (type $i32_=>_i32) i32.const 2 i32.ne if @@ -3048,7 +3048,7 @@ i32.const 1 i32.const 3104 i32.load - call_indirect (type $i32_=>_i32) + call_indirect $0 (type $i32_=>_i32) i32.const 4 i32.ne if @@ -3062,7 +3062,7 @@ i32.const 1 i32.const 3072 i32.load - call_indirect (type $i32_=>_i32) + call_indirect $0 (type $i32_=>_i32) i32.const 3 i32.ne if diff --git a/tests/compiler/resolve-ternary.untouched.wat b/tests/compiler/resolve-ternary.untouched.wat index 236ec1958e..1e63d91110 100644 --- a/tests/compiler/resolve-ternary.untouched.wat +++ b/tests/compiler/resolve-ternary.untouched.wat @@ -5674,7 +5674,7 @@ global.get $resolve-ternary/f2 end i32.load - call_indirect (type $i32_=>_i32) + call_indirect $0 (type $i32_=>_i32) i32.const 2 i32.eq i32.eqz @@ -5696,7 +5696,7 @@ i32.const 3568 end i32.load - call_indirect (type $i32_=>_i32) + call_indirect $0 (type $i32_=>_i32) i32.const 4 i32.eq i32.eqz @@ -5718,7 +5718,7 @@ i32.const 3568 end i32.load - call_indirect (type $i32_=>_i32) + call_indirect $0 (type $i32_=>_i32) i32.const 3 i32.eq i32.eqz diff --git a/tests/compiler/std/array.optimized.wat b/tests/compiler/std/array.optimized.wat index e58a208889..a38056cf4e 100644 --- a/tests/compiler/std/array.optimized.wat +++ b/tests/compiler/std/array.optimized.wat @@ -3538,7 +3538,7 @@ local.get $0 local.get $1 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) if local.get $2 return @@ -3616,7 +3616,7 @@ local.get $0 local.get $1 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) i32.eqz if i32.const 0 @@ -3695,7 +3695,7 @@ local.get $0 local.get $1 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) if i32.const 1 return @@ -3774,7 +3774,7 @@ local.get $0 local.get $1 i32.load - call_indirect (type $i32_i32_i32_=>_none) + call_indirect $0 (type $i32_i32_i32_=>_none) local.get $2 i32.const 1 i32.add @@ -4029,7 +4029,7 @@ local.get $0 local.get $1 i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_i32_=>_i32) local.set $2 local.get $3 i32.const 1 @@ -4102,7 +4102,7 @@ local.get $0 local.get $1 i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_i32_=>_i32) local.set $2 local.get $3 i32.const 1 @@ -4291,7 +4291,7 @@ local.get $7 local.get $2 i32.load - call_indirect (type $f32_f32_=>_i32) + call_indirect $0 (type $f32_f32_=>_i32) i32.const 0 i32.lt_s if @@ -4405,7 +4405,7 @@ local.get $7 local.get $2 i32.load - call_indirect (type $f32_f32_=>_i32) + call_indirect $0 (type $f32_f32_=>_i32) i32.const 0 i32.lt_s if @@ -4496,7 +4496,7 @@ local.get $5 local.get $1 i32.load - call_indirect (type $f32_f32_=>_i32) + call_indirect $0 (type $f32_f32_=>_i32) i32.const 0 i32.lt_s if @@ -4550,7 +4550,7 @@ local.get $5 local.get $2 i32.load - call_indirect (type $f32_f32_=>_i32) + call_indirect $0 (type $f32_f32_=>_i32) i32.const 0 i32.ge_s br_if $while-break|1 @@ -4705,7 +4705,7 @@ local.get $7 local.get $2 i32.load - call_indirect (type $f64_f64_=>_i32) + call_indirect $0 (type $f64_f64_=>_i32) i32.const 0 i32.lt_s if @@ -4819,7 +4819,7 @@ local.get $7 local.get $2 i32.load - call_indirect (type $f64_f64_=>_i32) + call_indirect $0 (type $f64_f64_=>_i32) i32.const 0 i32.lt_s if @@ -4910,7 +4910,7 @@ local.get $5 local.get $1 i32.load - call_indirect (type $f64_f64_=>_i32) + call_indirect $0 (type $f64_f64_=>_i32) i32.const 0 i32.lt_s if @@ -4964,7 +4964,7 @@ local.get $5 local.get $2 i32.load - call_indirect (type $f64_f64_=>_i32) + call_indirect $0 (type $f64_f64_=>_i32) i32.const 0 i32.ge_s br_if $while-break|1 @@ -5140,7 +5140,7 @@ local.get $6 local.get $2 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.lt_s if @@ -5254,7 +5254,7 @@ local.get $6 local.get $2 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.lt_s if @@ -5347,7 +5347,7 @@ local.get $3 local.get $1 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.lt_s if @@ -5404,7 +5404,7 @@ local.get $8 local.get $4 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.ge_s br_if $while-break|1 @@ -5536,7 +5536,7 @@ local.get $6 local.get $2 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.lt_s if @@ -5650,7 +5650,7 @@ local.get $6 local.get $2 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.lt_s if @@ -5743,7 +5743,7 @@ local.get $3 local.get $1 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.lt_s if @@ -5800,7 +5800,7 @@ local.get $8 local.get $4 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.ge_s br_if $while-break|1 @@ -5997,7 +5997,7 @@ local.get $7 local.get $2 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.ge_s br_if $while-break|1 @@ -6275,7 +6275,7 @@ local.get $4 local.get $2 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s if @@ -8071,7 +8071,7 @@ local.get $6 local.get $2 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.lt_s if @@ -8177,7 +8177,7 @@ local.get $6 local.get $2 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.lt_s if @@ -8268,7 +8268,7 @@ local.get $3 local.get $1 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.lt_s if @@ -8321,7 +8321,7 @@ local.get $8 local.get $4 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.ge_s br_if $while-break|1 @@ -8796,7 +8796,7 @@ local.get $5 local.get $1 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s br_if $__inlined_func$std/array/isSorted @@ -8905,7 +8905,7 @@ local.get $4 local.get $1 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s if @@ -15562,7 +15562,7 @@ local.get $1 i32.const 6560 i32.load - call_indirect (type $i32_i32_i32_=>_f32) + call_indirect $0 (type $i32_i32_i32_=>_f32) f32.store local.get $0 i32.const 1 @@ -19333,7 +19333,7 @@ local.get $0 local.get $1 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) i32.store local.get $2 i32.const 1 @@ -19398,7 +19398,7 @@ local.get $0 local.get $1 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) if local.get $4 local.get $3 @@ -19575,7 +19575,7 @@ local.get $4 local.get $1 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.lt_s if @@ -22375,7 +22375,7 @@ local.get $0 local.get $1 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) i32.eqz br_if $__inlined_func$~lib/array/Array#every drop @@ -22441,7 +22441,7 @@ local.get $0 local.get $2 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $__inlined_func$~lib/array/Array#findIndex local.get $1 i32.const 1 @@ -22904,7 +22904,7 @@ local.get $0 local.get $1 i32.load - call_indirect (type $i32_i32_i32_=>_none) + call_indirect $0 (type $i32_i32_i32_=>_none) local.get $2 i32.const 1 i32.add @@ -22979,7 +22979,7 @@ local.get $0 local.get $1 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) if local.get $4 local.get $3 @@ -23105,7 +23105,7 @@ local.get $0 local.get $1 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $__inlined_func$~lib/array/Array#some drop local.get $2 @@ -23448,7 +23448,7 @@ local.get $0 local.get $1 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) i32.eqz br_if $__inlined_func$~lib/array/Array#every drop @@ -23512,7 +23512,7 @@ local.get $0 local.get $2 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $__inlined_func$~lib/array/Array#findIndex local.get $1 i32.const 1 @@ -23964,7 +23964,7 @@ local.get $0 local.get $1 i32.load - call_indirect (type $i32_i32_i32_=>_none) + call_indirect $0 (type $i32_i32_i32_=>_none) local.get $2 i32.const 1 i32.add @@ -24037,7 +24037,7 @@ local.get $0 local.get $1 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) if local.get $4 local.get $3 @@ -24157,7 +24157,7 @@ local.get $0 local.get $1 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $__inlined_func$~lib/array/Array#some drop local.get $2 @@ -24639,7 +24639,7 @@ local.get $0 local.get $1 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) i32.eqz if global.get $~lib/memory/__stack_pointer @@ -24727,7 +24727,7 @@ local.get $0 local.get $2 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) if global.get $~lib/memory/__stack_pointer i32.const 4 @@ -25272,7 +25272,7 @@ local.get $0 local.get $1 i32.load - call_indirect (type $i32_i32_i32_=>_none) + call_indirect $0 (type $i32_i32_i32_=>_none) local.get $2 i32.const 1 i32.add @@ -25353,7 +25353,7 @@ local.get $0 local.get $1 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) if local.get $4 local.get $3 @@ -25504,7 +25504,7 @@ local.get $0 local.get $1 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) if global.get $~lib/memory/__stack_pointer i32.const 4 diff --git a/tests/compiler/std/array.untouched.wat b/tests/compiler/std/array.untouched.wat index b24ba6456c..a6fa4cd7a6 100644 --- a/tests/compiler/std/array.untouched.wat +++ b/tests/compiler/std/array.untouched.wat @@ -5715,7 +5715,7 @@ global.set $~argumentsLength local.get $1 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) if local.get $2 return @@ -5804,7 +5804,7 @@ global.set $~argumentsLength local.get $1 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) i32.eqz if i32.const 0 @@ -5889,7 +5889,7 @@ global.set $~argumentsLength local.get $1 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) if i32.const 1 return @@ -5974,7 +5974,7 @@ global.set $~argumentsLength local.get $1 i32.load - call_indirect (type $i32_i32_i32_=>_none) + call_indirect $0 (type $i32_i32_i32_=>_none) local.get $2 i32.const 1 i32.add @@ -6264,7 +6264,7 @@ global.set $~argumentsLength local.get $1 i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_i32_=>_i32) local.set $3 local.get $4 i32.const 1 @@ -6332,7 +6332,7 @@ global.set $~argumentsLength local.get $1 i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_i32_=>_i32) local.set $3 local.get $4 i32.const 1 @@ -6412,7 +6412,7 @@ global.set $~argumentsLength local.get $1 i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_i32_=>_i32) local.set $3 local.get $4 i32.const 1 @@ -6470,7 +6470,7 @@ global.set $~argumentsLength local.get $1 i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_i32_=>_i32) local.set $3 local.get $4 i32.const 1 @@ -6678,7 +6678,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $f32_f32_=>_i32) + call_indirect $0 (type $f32_f32_=>_i32) i32.const 0 i32.lt_s if @@ -6814,7 +6814,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $f32_f32_=>_i32) + call_indirect $0 (type $f32_f32_=>_i32) i32.const 0 i32.lt_s if @@ -6946,7 +6946,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $f32_f32_=>_i32) + call_indirect $0 (type $f32_f32_=>_i32) i32.const 0 i32.lt_s if @@ -7047,7 +7047,7 @@ global.set $~argumentsLength local.get $1 i32.load - call_indirect (type $f32_f32_=>_i32) + call_indirect $0 (type $f32_f32_=>_i32) i32.const 0 i32.lt_s if @@ -7245,7 +7245,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $f64_f64_=>_i32) + call_indirect $0 (type $f64_f64_=>_i32) i32.const 0 i32.lt_s if @@ -7381,7 +7381,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $f64_f64_=>_i32) + call_indirect $0 (type $f64_f64_=>_i32) i32.const 0 i32.lt_s if @@ -7513,7 +7513,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $f64_f64_=>_i32) + call_indirect $0 (type $f64_f64_=>_i32) i32.const 0 i32.lt_s if @@ -7614,7 +7614,7 @@ global.set $~argumentsLength local.get $1 i32.load - call_indirect (type $f64_f64_=>_i32) + call_indirect $0 (type $f64_f64_=>_i32) i32.const 0 i32.lt_s if @@ -7842,7 +7842,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.lt_s if @@ -7978,7 +7978,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.lt_s if @@ -8110,7 +8110,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.lt_s if @@ -8209,7 +8209,7 @@ global.set $~argumentsLength local.get $1 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.lt_s if @@ -8301,7 +8301,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.lt_s if @@ -8437,7 +8437,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.lt_s if @@ -8569,7 +8569,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.lt_s if @@ -8668,7 +8668,7 @@ global.set $~argumentsLength local.get $1 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.lt_s if @@ -8800,7 +8800,7 @@ global.set $~argumentsLength local.get $1 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s if @@ -8980,7 +8980,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.lt_s if @@ -9177,7 +9177,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.lt_s if @@ -9288,7 +9288,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.lt_s if @@ -9752,7 +9752,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.lt_s if @@ -12976,7 +12976,7 @@ global.set $~argumentsLength local.get $1 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) i32.eqz if i32.const 0 @@ -13029,7 +13029,7 @@ global.set $~argumentsLength local.get $1 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) if local.get $2 return @@ -13508,7 +13508,7 @@ global.set $~argumentsLength local.get $1 i32.load - call_indirect (type $i32_i32_i32_=>_none) + call_indirect $0 (type $i32_i32_i32_=>_none) local.get $2 i32.const 1 i32.add @@ -13606,7 +13606,7 @@ global.set $~argumentsLength local.get $1 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) if i32.const 1 return @@ -13815,7 +13815,7 @@ global.set $~argumentsLength local.get $1 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) i32.eqz if i32.const 0 @@ -13868,7 +13868,7 @@ global.set $~argumentsLength local.get $1 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) if local.get $2 return @@ -14351,7 +14351,7 @@ global.set $~argumentsLength local.get $1 i32.load - call_indirect (type $i32_i32_i32_=>_none) + call_indirect $0 (type $i32_i32_i32_=>_none) local.get $2 i32.const 1 i32.add @@ -14449,7 +14449,7 @@ global.set $~argumentsLength local.get $1 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) if i32.const 1 return @@ -14601,7 +14601,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.lt_s if @@ -14737,7 +14737,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.lt_s if @@ -14869,7 +14869,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.lt_s if @@ -14968,7 +14968,7 @@ global.set $~argumentsLength local.get $1 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.lt_s if @@ -17221,7 +17221,7 @@ global.set $~argumentsLength local.get $1 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s if @@ -17388,7 +17388,7 @@ global.set $~argumentsLength local.get $1 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s if @@ -17497,7 +17497,7 @@ global.set $~argumentsLength local.get $1 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s if @@ -17867,7 +17867,7 @@ global.set $~argumentsLength local.get $1 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s if @@ -27321,7 +27321,7 @@ global.set $~argumentsLength local.get $1 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) i32.eqz if i32.const 0 @@ -27400,7 +27400,7 @@ global.set $~argumentsLength local.get $1 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) if local.get $2 local.set $6 @@ -27675,7 +27675,7 @@ global.set $~argumentsLength local.get $1 i32.load - call_indirect (type $i32_i32_i32_=>_none) + call_indirect $0 (type $i32_i32_i32_=>_none) local.get $2 i32.const 1 i32.add @@ -27740,7 +27740,7 @@ global.set $~argumentsLength local.get $1 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) if i32.const 1 local.set $6 @@ -28822,7 +28822,7 @@ global.set $~argumentsLength local.get $1 i32.load - call_indirect (type $i32_i32_i32_=>_f32) + call_indirect $0 (type $i32_i32_i32_=>_f32) local.set $8 local.get $4 local.get $5 @@ -28908,7 +28908,7 @@ global.set $~argumentsLength local.get $1 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) local.set $7 local.get $4 local.get $5 @@ -28992,7 +28992,7 @@ global.set $~argumentsLength local.get $1 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) if local.get $2 local.get $6 @@ -29495,7 +29495,7 @@ global.set $~argumentsLength local.get $1 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.lt_s if @@ -29757,7 +29757,7 @@ global.set $~argumentsLength local.get $1 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.lt_s if @@ -29907,7 +29907,7 @@ global.set $~argumentsLength local.get $1 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.lt_s if @@ -30249,7 +30249,7 @@ global.set $~argumentsLength local.get $1 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.lt_s if @@ -33601,7 +33601,7 @@ global.set $~argumentsLength local.get $1 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) if local.get $2 local.get $6 @@ -34117,7 +34117,7 @@ global.set $~argumentsLength local.get $1 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) if local.get $2 local.get $6 @@ -34738,7 +34738,7 @@ global.set $~argumentsLength local.get $1 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) if local.get $2 local.get $6 diff --git a/tests/compiler/std/typedarray.optimized.wat b/tests/compiler/std/typedarray.optimized.wat index f99e20ca91..e7fe914fe7 100644 --- a/tests/compiler/std/typedarray.optimized.wat +++ b/tests/compiler/std/typedarray.optimized.wat @@ -3064,7 +3064,7 @@ local.get $7 local.get $2 i32.load - call_indirect (type $f64_f64_=>_i32) + call_indirect $0 (type $f64_f64_=>_i32) i32.const 0 i32.lt_s if @@ -3178,7 +3178,7 @@ local.get $7 local.get $2 i32.load - call_indirect (type $f64_f64_=>_i32) + call_indirect $0 (type $f64_f64_=>_i32) i32.const 0 i32.lt_s if @@ -3270,7 +3270,7 @@ local.get $5 local.get $1 i32.load - call_indirect (type $f64_f64_=>_i32) + call_indirect $0 (type $f64_f64_=>_i32) i32.const 0 i32.lt_s if @@ -3324,7 +3324,7 @@ local.get $5 local.get $2 i32.load - call_indirect (type $f64_f64_=>_i32) + call_indirect $0 (type $f64_f64_=>_i32) i32.const 0 i32.ge_s br_if $while-break|1 @@ -4109,7 +4109,7 @@ local.get $0 local.get $1 i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_i32_=>_i32) local.set $3 local.get $2 i32.const 1 @@ -4662,7 +4662,7 @@ local.get $2 local.get $1 i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_i32_=>_i32) local.set $3 local.get $0 i32.const 1 @@ -4987,7 +4987,7 @@ local.get $0 local.get $1 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/SOME<~lib/typedarray/Int8Array,i8>|inlined.0 drop local.get $2 @@ -5036,7 +5036,7 @@ local.get $0 local.get $1 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.0 drop local.get $2 @@ -5090,7 +5090,7 @@ local.get $0 local.get $1 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/SOME<~lib/typedarray/Int16Array,i16>|inlined.0 drop local.get $2 @@ -5143,7 +5143,7 @@ local.get $0 local.get $1 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/SOME<~lib/typedarray/Uint16Array,u16>|inlined.0 drop local.get $2 @@ -5195,7 +5195,7 @@ local.get $0 local.get $1 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/SOME<~lib/typedarray/Int32Array,i32>|inlined.0 drop local.get $2 @@ -5246,7 +5246,7 @@ local.get $0 local.get $1 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/SOME<~lib/typedarray/Uint32Array,u32>|inlined.0 drop local.get $2 @@ -5298,7 +5298,7 @@ local.get $0 local.get $1 i32.load - call_indirect (type $i64_i32_i32_=>_i32) + call_indirect $0 (type $i64_i32_i32_=>_i32) br_if $~lib/typedarray/SOME<~lib/typedarray/Int64Array,i64>|inlined.0 drop local.get $2 @@ -5349,7 +5349,7 @@ local.get $0 local.get $1 i32.load - call_indirect (type $i64_i32_i32_=>_i32) + call_indirect $0 (type $i64_i32_i32_=>_i32) br_if $~lib/typedarray/SOME<~lib/typedarray/Uint64Array,u64>|inlined.0 drop local.get $2 @@ -5401,7 +5401,7 @@ local.get $0 local.get $1 i32.load - call_indirect (type $f32_i32_i32_=>_i32) + call_indirect $0 (type $f32_i32_i32_=>_i32) br_if $~lib/typedarray/SOME<~lib/typedarray/Float32Array,f32>|inlined.0 drop local.get $2 @@ -5458,7 +5458,7 @@ local.get $0 local.get $1 i32.load - call_indirect (type $f64_i32_i32_=>_i32) + call_indirect $0 (type $f64_i32_i32_=>_i32) br_if $~lib/typedarray/SOME<~lib/typedarray/Float64Array,f64>|inlined.0 drop local.get $2 @@ -5503,7 +5503,7 @@ local.get $0 local.get $1 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int8Array,i8>|inlined.0 local.get $2 i32.const 1 @@ -5551,7 +5551,7 @@ local.get $0 local.get $1 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0 local.get $2 i32.const 1 @@ -5596,7 +5596,7 @@ local.get $0 local.get $1 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int16Array,i16>|inlined.0 local.get $2 i32.const 1 @@ -5648,7 +5648,7 @@ local.get $0 local.get $1 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.0 local.get $2 i32.const 1 @@ -5693,7 +5693,7 @@ local.get $0 local.get $1 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int32Array,i32>|inlined.0 local.get $2 i32.const 1 @@ -5743,7 +5743,7 @@ local.get $0 local.get $1 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint32Array,u32>|inlined.0 local.get $2 i32.const 1 @@ -5788,7 +5788,7 @@ local.get $0 local.get $1 i32.load - call_indirect (type $i64_i32_i32_=>_i32) + call_indirect $0 (type $i64_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int64Array,i64>|inlined.0 local.get $2 i32.const 1 @@ -5838,7 +5838,7 @@ local.get $0 local.get $1 i32.load - call_indirect (type $i64_i32_i32_=>_i32) + call_indirect $0 (type $i64_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.0 local.get $2 i32.const 1 @@ -5883,7 +5883,7 @@ local.get $0 local.get $1 i32.load - call_indirect (type $f32_i32_i32_=>_i32) + call_indirect $0 (type $f32_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float32Array,f32>|inlined.0 local.get $2 i32.const 1 @@ -5933,7 +5933,7 @@ local.get $0 local.get $1 i32.load - call_indirect (type $f64_i32_i32_=>_i32) + call_indirect $0 (type $f64_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float64Array,f64>|inlined.0 local.get $2 i32.const 1 @@ -5992,7 +5992,7 @@ local.get $0 local.get $1 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) i32.eqz br_if $~lib/typedarray/EVERY<~lib/typedarray/Int8Array,i8>|inlined.0 drop @@ -6042,7 +6042,7 @@ local.get $0 local.get $1 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) i32.eqz br_if $~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.0 drop @@ -6100,7 +6100,7 @@ local.get $0 local.get $1 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) i32.eqz br_if $~lib/typedarray/EVERY<~lib/typedarray/Int16Array,i16>|inlined.0 drop @@ -6148,7 +6148,7 @@ local.get $0 local.get $1 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) i32.eqz br_if $~lib/typedarray/EVERY<~lib/typedarray/Uint16Array,u16>|inlined.0 drop @@ -6196,7 +6196,7 @@ local.get $0 local.get $1 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) i32.eqz br_if $~lib/typedarray/EVERY<~lib/typedarray/Int32Array,i32>|inlined.0 drop @@ -6244,7 +6244,7 @@ local.get $0 local.get $1 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) i32.eqz br_if $~lib/typedarray/EVERY<~lib/typedarray/Uint32Array,u32>|inlined.0 drop @@ -6298,7 +6298,7 @@ local.get $0 local.get $1 i32.load - call_indirect (type $i64_i32_i32_=>_i32) + call_indirect $0 (type $i64_i32_i32_=>_i32) i32.eqz br_if $~lib/typedarray/EVERY<~lib/typedarray/Int64Array,i64>|inlined.0 drop @@ -6346,7 +6346,7 @@ local.get $0 local.get $1 i32.load - call_indirect (type $i64_i32_i32_=>_i32) + call_indirect $0 (type $i64_i32_i32_=>_i32) i32.eqz br_if $~lib/typedarray/EVERY<~lib/typedarray/Uint64Array,u64>|inlined.0 drop @@ -6545,7 +6545,7 @@ local.get $0 local.get $1 i32.load - call_indirect (type $f32_i32_i32_=>_i32) + call_indirect $0 (type $f32_i32_i32_=>_i32) i32.eqz br_if $~lib/typedarray/EVERY<~lib/typedarray/Float32Array,f32>|inlined.0 drop @@ -6747,7 +6747,7 @@ local.get $0 local.get $1 i32.load - call_indirect (type $f64_i32_i32_=>_i32) + call_indirect $0 (type $f64_i32_i32_=>_i32) i32.eqz br_if $~lib/typedarray/EVERY<~lib/typedarray/Float64Array,f64>|inlined.0 drop @@ -6787,7 +6787,7 @@ local.get $0 local.get $1 i32.load - call_indirect (type $i32_i32_i32_=>_none) + call_indirect $0 (type $i32_i32_i32_=>_none) local.get $2 i32.const 1 i32.add @@ -16259,7 +16259,7 @@ local.get $1 i32.const 3600 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) i32.store8 local.get $2 i32.const 1 @@ -16417,7 +16417,7 @@ local.get $1 i32.const 3632 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) i32.store8 local.get $2 i32.const 1 @@ -16575,7 +16575,7 @@ local.get $1 i32.const 3664 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) i32.store8 local.get $2 i32.const 1 @@ -16743,7 +16743,7 @@ local.get $1 i32.const 3696 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) i32.store16 local.get $3 i32.const 1 @@ -16911,7 +16911,7 @@ local.get $1 i32.const 3728 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) i32.store16 local.get $3 i32.const 1 @@ -17079,7 +17079,7 @@ local.get $1 i32.const 3760 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) i32.store local.get $3 i32.const 1 @@ -17247,7 +17247,7 @@ local.get $1 i32.const 3792 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) i32.store local.get $3 i32.const 1 @@ -17415,7 +17415,7 @@ local.get $1 i32.const 3824 i32.load - call_indirect (type $i64_i32_i32_=>_i64) + call_indirect $0 (type $i64_i32_i32_=>_i64) i64.store local.get $3 i32.const 1 @@ -17583,7 +17583,7 @@ local.get $1 i32.const 3856 i32.load - call_indirect (type $i64_i32_i32_=>_i64) + call_indirect $0 (type $i64_i32_i32_=>_i64) i64.store local.get $3 i32.const 1 @@ -17751,7 +17751,7 @@ local.get $1 i32.const 3888 i32.load - call_indirect (type $f32_i32_i32_=>_f32) + call_indirect $0 (type $f32_i32_i32_=>_f32) f32.store local.get $3 i32.const 1 @@ -17919,7 +17919,7 @@ local.get $1 i32.const 3920 i32.load - call_indirect (type $f64_i32_i32_=>_f64) + call_indirect $0 (type $f64_i32_i32_=>_f64) f64.store local.get $3 i32.const 1 @@ -19420,7 +19420,7 @@ local.get $0 i32.const 6496 i32.load - call_indirect (type $i32_i32_i32_=>_none) + call_indirect $0 (type $i32_i32_i32_=>_none) local.get $1 i32.const 1 i32.add @@ -19597,7 +19597,7 @@ local.get $0 i32.const 6592 i32.load - call_indirect (type $i32_i32_i32_=>_none) + call_indirect $0 (type $i32_i32_i32_=>_none) local.get $1 i32.const 1 i32.add @@ -19708,7 +19708,7 @@ local.get $0 i32.const 6624 i32.load - call_indirect (type $i32_i32_i32_=>_none) + call_indirect $0 (type $i32_i32_i32_=>_none) local.get $1 i32.const 1 i32.add @@ -19869,7 +19869,7 @@ local.get $0 i32.const 6656 i32.load - call_indirect (type $i32_i32_i32_=>_none) + call_indirect $0 (type $i32_i32_i32_=>_none) local.get $1 i32.const 1 i32.add @@ -19974,7 +19974,7 @@ local.get $0 i32.const 6688 i32.load - call_indirect (type $i32_i32_i32_=>_none) + call_indirect $0 (type $i32_i32_i32_=>_none) local.get $1 i32.const 1 i32.add @@ -20139,7 +20139,7 @@ local.get $0 i32.const 6720 i32.load - call_indirect (type $i64_i32_i32_=>_none) + call_indirect $0 (type $i64_i32_i32_=>_none) local.get $1 i32.const 1 i32.add @@ -20247,7 +20247,7 @@ local.get $0 i32.const 6752 i32.load - call_indirect (type $i64_i32_i32_=>_none) + call_indirect $0 (type $i64_i32_i32_=>_none) local.get $1 i32.const 1 i32.add @@ -20412,7 +20412,7 @@ local.get $0 i32.const 6784 i32.load - call_indirect (type $f32_i32_i32_=>_none) + call_indirect $0 (type $f32_i32_i32_=>_none) local.get $1 i32.const 1 i32.add @@ -20577,7 +20577,7 @@ local.get $0 i32.const 6816 i32.load - call_indirect (type $f64_i32_i32_=>_none) + call_indirect $0 (type $f64_i32_i32_=>_none) local.get $1 i32.const 1 i32.add @@ -31696,7 +31696,7 @@ local.get $0 i32.const 2896 i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_i32_=>_i32) local.set $2 local.get $1 i32.const 1 @@ -31868,7 +31868,7 @@ local.get $0 i32.const 2992 i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_i32_=>_i32) local.set $2 local.get $1 i32.const 1 @@ -31947,7 +31947,7 @@ local.get $0 i32.const 3024 i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_i32_=>_i32) local.set $2 local.get $1 i32.const 1 @@ -32026,7 +32026,7 @@ local.get $0 i32.const 3056 i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_i32_=>_i32) local.set $2 local.get $1 i32.const 1 @@ -32103,7 +32103,7 @@ local.get $0 i32.const 3088 i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_i32_=>_i32) local.set $2 local.get $1 i32.const 1 @@ -32178,7 +32178,7 @@ local.get $0 i32.const 3120 i32.load - call_indirect (type $i64_i64_i32_i32_=>_i64) + call_indirect $0 (type $i64_i64_i32_i32_=>_i64) local.set $6 local.get $1 i32.const 1 @@ -32255,7 +32255,7 @@ local.get $0 i32.const 3152 i32.load - call_indirect (type $i64_i64_i32_i32_=>_i64) + call_indirect $0 (type $i64_i64_i32_i32_=>_i64) local.set $6 local.get $1 i32.const 1 @@ -32330,7 +32330,7 @@ local.get $0 i32.const 3184 i32.load - call_indirect (type $f32_f32_i32_i32_=>_f32) + call_indirect $0 (type $f32_f32_i32_i32_=>_f32) local.set $7 local.get $1 i32.const 1 @@ -32405,7 +32405,7 @@ local.get $0 i32.const 3216 i32.load - call_indirect (type $f64_f64_i32_i32_=>_f64) + call_indirect $0 (type $f64_f64_i32_i32_=>_f64) local.set $8 local.get $1 i32.const 1 @@ -32995,7 +32995,7 @@ local.get $0 i32.const 3248 i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_i32_=>_i32) local.set $2 local.get $1 i32.const 1 @@ -33154,7 +33154,7 @@ local.get $0 i32.const 3344 i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_i32_=>_i32) local.set $2 local.get $1 i32.const 1 @@ -33233,7 +33233,7 @@ local.get $0 i32.const 3376 i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_i32_=>_i32) local.set $2 local.get $1 i32.const 1 @@ -33312,7 +33312,7 @@ local.get $0 i32.const 3408 i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_i32_=>_i32) local.set $2 local.get $1 i32.const 1 @@ -33389,7 +33389,7 @@ local.get $0 i32.const 3440 i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_i32_=>_i32) local.set $2 local.get $1 i32.const 1 @@ -33466,7 +33466,7 @@ local.get $0 i32.const 3472 i32.load - call_indirect (type $i64_i64_i32_i32_=>_i64) + call_indirect $0 (type $i64_i64_i32_i32_=>_i64) local.set $6 local.get $1 i32.const 1 @@ -33543,7 +33543,7 @@ local.get $0 i32.const 3504 i32.load - call_indirect (type $i64_i64_i32_i32_=>_i64) + call_indirect $0 (type $i64_i64_i32_i32_=>_i64) local.set $6 local.get $1 i32.const 1 @@ -33620,7 +33620,7 @@ local.get $0 i32.const 3536 i32.load - call_indirect (type $f32_f32_i32_i32_=>_f32) + call_indirect $0 (type $f32_f32_i32_i32_=>_f32) local.set $7 local.get $1 i32.const 1 @@ -33697,7 +33697,7 @@ local.get $0 i32.const 3568 i32.load - call_indirect (type $f64_f64_i32_i32_=>_f64) + call_indirect $0 (type $f64_f64_i32_i32_=>_f64) local.set $8 local.get $1 i32.const 1 @@ -36940,7 +36940,7 @@ local.get $0 i32.const 3952 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) if local.get $1 local.get $5 @@ -37031,7 +37031,7 @@ local.get $0 i32.const 3984 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) if local.get $1 local.get $5 @@ -37122,7 +37122,7 @@ local.get $0 i32.const 4016 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) if local.get $1 local.get $5 @@ -37219,7 +37219,7 @@ local.get $0 i32.const 4048 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) if local.get $5 local.get $1 @@ -37321,7 +37321,7 @@ local.get $0 i32.const 4080 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) if local.get $5 local.get $1 @@ -37423,7 +37423,7 @@ local.get $0 i32.const 4112 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) if local.get $5 local.get $1 @@ -37525,7 +37525,7 @@ local.get $0 i32.const 4144 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) if local.get $5 local.get $1 @@ -37627,7 +37627,7 @@ local.get $0 i32.const 4176 i32.load - call_indirect (type $i64_i32_i32_=>_i32) + call_indirect $0 (type $i64_i32_i32_=>_i32) if local.get $5 local.get $1 @@ -37729,7 +37729,7 @@ local.get $0 i32.const 4208 i32.load - call_indirect (type $i64_i32_i32_=>_i32) + call_indirect $0 (type $i64_i32_i32_=>_i32) if local.get $5 local.get $1 @@ -37831,7 +37831,7 @@ local.get $0 i32.const 4240 i32.load - call_indirect (type $f32_i32_i32_=>_i32) + call_indirect $0 (type $f32_i32_i32_=>_i32) if local.get $5 local.get $1 @@ -37933,7 +37933,7 @@ local.get $0 i32.const 4272 i32.load - call_indirect (type $f64_i32_i32_=>_i32) + call_indirect $0 (type $f64_i32_i32_=>_i32) if local.get $5 local.get $1 diff --git a/tests/compiler/std/typedarray.untouched.wat b/tests/compiler/std/typedarray.untouched.wat index 23e9a4bb19..1b0015411f 100644 --- a/tests/compiler/std/typedarray.untouched.wat +++ b/tests/compiler/std/typedarray.untouched.wat @@ -3505,7 +3505,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $f64_f64_=>_i32) + call_indirect $0 (type $f64_f64_=>_i32) i32.const 0 i32.lt_s if @@ -3641,7 +3641,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $f64_f64_=>_i32) + call_indirect $0 (type $f64_f64_=>_i32) i32.const 0 i32.lt_s if @@ -3773,7 +3773,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $f64_f64_=>_i32) + call_indirect $0 (type $f64_f64_=>_i32) i32.const 0 i32.lt_s if @@ -3881,7 +3881,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $f64_f64_=>_i32) + call_indirect $0 (type $f64_f64_=>_i32) i32.const 0 i32.lt_s if @@ -5862,7 +5862,7 @@ global.set $~argumentsLength local.get $4 i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_i32_=>_i32) local.set $3 local.get $7 i32.const 1 @@ -5940,7 +5940,7 @@ global.set $~argumentsLength local.get $4 i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_i32_=>_i32) local.set $3 local.get $7 i32.const 1 @@ -5998,7 +5998,7 @@ global.set $~argumentsLength local.get $4 i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_i32_=>_i32) local.set $3 local.get $7 i32.const 1 @@ -6080,7 +6080,7 @@ global.set $~argumentsLength local.get $4 i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_i32_=>_i32) local.set $3 local.get $7 i32.const 1 @@ -6162,7 +6162,7 @@ global.set $~argumentsLength local.get $4 i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_i32_=>_i32) local.set $3 local.get $7 i32.const 1 @@ -6220,7 +6220,7 @@ global.set $~argumentsLength local.get $4 i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_i32_=>_i32) local.set $3 local.get $7 i32.const 1 @@ -6302,7 +6302,7 @@ global.set $~argumentsLength local.get $4 i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_i32_=>_i32) local.set $3 local.get $7 i32.const 1 @@ -6384,7 +6384,7 @@ global.set $~argumentsLength local.get $4 i32.load - call_indirect (type $i64_i64_i32_i32_=>_i64) + call_indirect $0 (type $i64_i64_i32_i32_=>_i64) local.set $3 local.get $7 i32.const 1 @@ -6466,7 +6466,7 @@ global.set $~argumentsLength local.get $4 i32.load - call_indirect (type $i64_i64_i32_i32_=>_i64) + call_indirect $0 (type $i64_i64_i32_i32_=>_i64) local.set $3 local.get $7 i32.const 1 @@ -6548,7 +6548,7 @@ global.set $~argumentsLength local.get $4 i32.load - call_indirect (type $f32_f32_i32_i32_=>_f32) + call_indirect $0 (type $f32_f32_i32_i32_=>_f32) local.set $3 local.get $7 i32.const 1 @@ -6606,7 +6606,7 @@ global.set $~argumentsLength local.get $4 i32.load - call_indirect (type $f64_f64_i32_i32_=>_f64) + call_indirect $0 (type $f64_f64_i32_i32_=>_f64) local.set $3 local.get $7 i32.const 1 @@ -7861,7 +7861,7 @@ global.set $~argumentsLength local.get $4 i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_i32_=>_i32) local.set $3 local.get $7 i32.const 1 @@ -7918,7 +7918,7 @@ global.set $~argumentsLength local.get $4 i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_i32_=>_i32) local.set $3 local.get $7 i32.const 1 @@ -7975,7 +7975,7 @@ global.set $~argumentsLength local.get $4 i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_i32_=>_i32) local.set $3 local.get $7 i32.const 1 @@ -8032,7 +8032,7 @@ global.set $~argumentsLength local.get $4 i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_i32_=>_i32) local.set $3 local.get $7 i32.const 1 @@ -8089,7 +8089,7 @@ global.set $~argumentsLength local.get $4 i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_i32_=>_i32) local.set $3 local.get $7 i32.const 1 @@ -8146,7 +8146,7 @@ global.set $~argumentsLength local.get $4 i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_i32_=>_i32) local.set $3 local.get $7 i32.const 1 @@ -8203,7 +8203,7 @@ global.set $~argumentsLength local.get $4 i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_i32_=>_i32) local.set $3 local.get $7 i32.const 1 @@ -8260,7 +8260,7 @@ global.set $~argumentsLength local.get $4 i32.load - call_indirect (type $i64_i64_i32_i32_=>_i64) + call_indirect $0 (type $i64_i64_i32_i32_=>_i64) local.set $3 local.get $7 i32.const 1 @@ -8317,7 +8317,7 @@ global.set $~argumentsLength local.get $4 i32.load - call_indirect (type $i64_i64_i32_i32_=>_i64) + call_indirect $0 (type $i64_i64_i32_i32_=>_i64) local.set $3 local.get $7 i32.const 1 @@ -8374,7 +8374,7 @@ global.set $~argumentsLength local.get $4 i32.load - call_indirect (type $f32_f32_i32_i32_=>_f32) + call_indirect $0 (type $f32_f32_i32_i32_=>_f32) local.set $3 local.get $7 i32.const 1 @@ -8431,7 +8431,7 @@ global.set $~argumentsLength local.get $4 i32.load - call_indirect (type $f64_f64_i32_i32_=>_f64) + call_indirect $0 (type $f64_f64_i32_i32_=>_f64) local.set $3 local.get $7 i32.const 1 @@ -8816,7 +8816,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) if i32.const 1 br $~lib/typedarray/SOME<~lib/typedarray/Int8Array,i8>|inlined.0 @@ -8886,7 +8886,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) if i32.const 1 br $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.0 @@ -8954,7 +8954,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) if i32.const 1 br $~lib/typedarray/SOME<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0 @@ -9024,7 +9024,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) if i32.const 1 br $~lib/typedarray/SOME<~lib/typedarray/Int16Array,i16>|inlined.0 @@ -9094,7 +9094,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) if i32.const 1 br $~lib/typedarray/SOME<~lib/typedarray/Uint16Array,u16>|inlined.0 @@ -9160,7 +9160,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) if i32.const 1 br $~lib/typedarray/SOME<~lib/typedarray/Int32Array,i32>|inlined.0 @@ -9224,7 +9224,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) if i32.const 1 br $~lib/typedarray/SOME<~lib/typedarray/Uint32Array,u32>|inlined.0 @@ -9288,7 +9288,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i64_i32_i32_=>_i32) + call_indirect $0 (type $i64_i32_i32_=>_i32) if i32.const 1 br $~lib/typedarray/SOME<~lib/typedarray/Int64Array,i64>|inlined.0 @@ -9352,7 +9352,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i64_i32_i32_=>_i32) + call_indirect $0 (type $i64_i32_i32_=>_i32) if i32.const 1 br $~lib/typedarray/SOME<~lib/typedarray/Uint64Array,u64>|inlined.0 @@ -9416,7 +9416,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $f32_i32_i32_=>_i32) + call_indirect $0 (type $f32_i32_i32_=>_i32) if i32.const 1 br $~lib/typedarray/SOME<~lib/typedarray/Float32Array,f32>|inlined.0 @@ -9480,7 +9480,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $f64_i32_i32_=>_i32) + call_indirect $0 (type $f64_i32_i32_=>_i32) if i32.const 1 br $~lib/typedarray/SOME<~lib/typedarray/Float64Array,f64>|inlined.0 @@ -9548,7 +9548,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) if local.get $5 br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int8Array,i8>|inlined.0 @@ -9618,7 +9618,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) if local.get $5 br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0 @@ -9686,7 +9686,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) if local.get $5 br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0 @@ -9756,7 +9756,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) if local.get $5 br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int16Array,i16>|inlined.0 @@ -9826,7 +9826,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) if local.get $5 br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.0 @@ -9892,7 +9892,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) if local.get $5 br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int32Array,i32>|inlined.0 @@ -9956,7 +9956,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) if local.get $5 br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint32Array,u32>|inlined.0 @@ -10020,7 +10020,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i64_i32_i32_=>_i32) + call_indirect $0 (type $i64_i32_i32_=>_i32) if local.get $5 br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int64Array,i64>|inlined.0 @@ -10084,7 +10084,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i64_i32_i32_=>_i32) + call_indirect $0 (type $i64_i32_i32_=>_i32) if local.get $5 br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.0 @@ -10148,7 +10148,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $f32_i32_i32_=>_i32) + call_indirect $0 (type $f32_i32_i32_=>_i32) if local.get $5 br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float32Array,f32>|inlined.0 @@ -10212,7 +10212,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $f64_i32_i32_=>_i32) + call_indirect $0 (type $f64_i32_i32_=>_i32) if local.get $5 br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float64Array,f64>|inlined.0 @@ -10283,7 +10283,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) if br $for-continue|0 end @@ -10358,7 +10358,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) if br $for-continue|0 end @@ -10431,7 +10431,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) if br $for-continue|0 end @@ -10506,7 +10506,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) if br $for-continue|0 end @@ -10581,7 +10581,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) if br $for-continue|0 end @@ -10652,7 +10652,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) if br $for-continue|0 end @@ -10721,7 +10721,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) if br $for-continue|0 end @@ -10790,7 +10790,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i64_i32_i32_=>_i32) + call_indirect $0 (type $i64_i32_i32_=>_i32) if br $for-continue|0 end @@ -10859,7 +10859,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i64_i32_i32_=>_i32) + call_indirect $0 (type $i64_i32_i32_=>_i32) if br $for-continue|0 end @@ -11179,7 +11179,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $f32_i32_i32_=>_i32) + call_indirect $0 (type $f32_i32_i32_=>_i32) if br $for-continue|0 end @@ -11505,7 +11505,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $f64_i32_i32_=>_i32) + call_indirect $0 (type $f64_i32_i32_=>_i32) if br $for-continue|0 end @@ -11565,7 +11565,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i32_i32_i32_=>_none) + call_indirect $0 (type $i32_i32_i32_=>_none) local.get $5 i32.const 1 i32.add @@ -11612,7 +11612,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i32_i32_i32_=>_none) + call_indirect $0 (type $i32_i32_i32_=>_none) local.get $5 i32.const 1 i32.add @@ -11659,7 +11659,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i32_i32_i32_=>_none) + call_indirect $0 (type $i32_i32_i32_=>_none) local.get $5 i32.const 1 i32.add @@ -11706,7 +11706,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i32_i32_i32_=>_none) + call_indirect $0 (type $i32_i32_i32_=>_none) local.get $5 i32.const 1 i32.add @@ -11753,7 +11753,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i32_i32_i32_=>_none) + call_indirect $0 (type $i32_i32_i32_=>_none) local.get $5 i32.const 1 i32.add @@ -11800,7 +11800,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i32_i32_i32_=>_none) + call_indirect $0 (type $i32_i32_i32_=>_none) local.get $5 i32.const 1 i32.add @@ -11847,7 +11847,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i32_i32_i32_=>_none) + call_indirect $0 (type $i32_i32_i32_=>_none) local.get $5 i32.const 1 i32.add @@ -11894,7 +11894,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i64_i32_i32_=>_none) + call_indirect $0 (type $i64_i32_i32_=>_none) local.get $5 i32.const 1 i32.add @@ -11941,7 +11941,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i64_i32_i32_=>_none) + call_indirect $0 (type $i64_i32_i32_=>_none) local.get $5 i32.const 1 i32.add @@ -11988,7 +11988,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $f32_i32_i32_=>_none) + call_indirect $0 (type $f32_i32_i32_=>_none) local.get $5 i32.const 1 i32.add @@ -12035,7 +12035,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $f64_i32_i32_=>_none) + call_indirect $0 (type $f64_i32_i32_=>_none) local.get $5 i32.const 1 i32.add @@ -53588,7 +53588,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) i32.store8 local.get $9 i32.const 1 @@ -53689,7 +53689,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) i32.store8 local.get $9 i32.const 1 @@ -53790,7 +53790,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) i32.store8 local.get $9 i32.const 1 @@ -53891,7 +53891,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) i32.store16 local.get $9 i32.const 1 @@ -53992,7 +53992,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) i32.store16 local.get $9 i32.const 1 @@ -54093,7 +54093,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) i32.store local.get $9 i32.const 1 @@ -54194,7 +54194,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) i32.store local.get $9 i32.const 1 @@ -54295,7 +54295,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i64_i32_i32_=>_i64) + call_indirect $0 (type $i64_i32_i32_=>_i64) i64.store local.get $9 i32.const 1 @@ -54396,7 +54396,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i64_i32_i32_=>_i64) + call_indirect $0 (type $i64_i32_i32_=>_i64) i64.store local.get $9 i32.const 1 @@ -54497,7 +54497,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $f32_i32_i32_=>_f32) + call_indirect $0 (type $f32_i32_i32_=>_f32) f32.store local.get $9 i32.const 1 @@ -54598,7 +54598,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $f64_i32_i32_=>_f64) + call_indirect $0 (type $f64_i32_i32_=>_f64) f64.store local.get $9 i32.const 1 @@ -54698,7 +54698,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) if local.get $6 local.get $8 @@ -54819,7 +54819,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) if local.get $6 local.get $8 @@ -54940,7 +54940,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) if local.get $6 local.get $8 @@ -55061,7 +55061,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) if local.get $6 local.get $8 @@ -55182,7 +55182,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) if local.get $6 local.get $8 @@ -55303,7 +55303,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) if local.get $6 local.get $8 @@ -55424,7 +55424,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i32_i32_i32_=>_i32) if local.get $6 local.get $8 @@ -55545,7 +55545,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i64_i32_i32_=>_i32) + call_indirect $0 (type $i64_i32_i32_=>_i32) if local.get $6 local.get $8 @@ -55666,7 +55666,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i64_i32_i32_=>_i32) + call_indirect $0 (type $i64_i32_i32_=>_i32) if local.get $6 local.get $8 @@ -55787,7 +55787,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $f32_i32_i32_=>_i32) + call_indirect $0 (type $f32_i32_i32_=>_i32) if local.get $6 local.get $8 @@ -55908,7 +55908,7 @@ global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $f64_i32_i32_=>_i32) + call_indirect $0 (type $f64_i32_i32_=>_i32) if local.get $6 local.get $8 diff --git a/tests/features.json b/tests/features.json index b72f470bd9..35ee6029c8 100644 --- a/tests/features.json +++ b/tests/features.json @@ -27,6 +27,7 @@ "--enable reference-types" ], "v8_flags": [ + "--experimental-wasm-reftypes" ] }, "gc": { @@ -34,7 +35,7 @@ "--enable gc" ], "v8_flags": [ - "--experimental-wasm-anyref", + "--experimental-wasm-reftypes", "--experimental-wasm-gc" ] }, From 926ec1cecd653d62f5fbe64a1c986583ad911a67 Mon Sep 17 00:00:00 2001 From: dcode Date: Wed, 24 Feb 2021 15:53:07 +0100 Subject: [PATCH 02/24] remove obsolete Prefetch --- src/module.ts | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/src/module.ts b/src/module.ts index 0b4e15896a..7e26bbb90a 100644 --- a/src/module.ts +++ b/src/module.ts @@ -90,7 +90,7 @@ export enum ExpressionId { MemorySize = 20 /* _BinaryenMemorySizeId */, MemoryGrow = 21 /* _BinaryenMemoryGrowId */, Nop = 22 /* _BinaryenNopId */, - Prefetch = 23 /* _BinaryenPrefetchId */, + // Prefetch (obsolete) Unreachable = 24 /* _BinaryenUnreachableId */, AtomicRMW = 25 /* _BinaryenAtomicRMWId */, AtomicCmpxchg = 26 /* _BinaryenAtomicCmpxchgId */, @@ -224,7 +224,7 @@ export enum UnaryOp { AnyTrueI8x16 = 69 /* _BinaryenAnyTrueVecI8x16 */, AllTrueI8x16 = 70 /* _BinaryenAllTrueVecI8x16 */, BitmaskI8x16 = 71 /* _BinaryenBitmaskVecI8x16 */, - PopcntVecI8x16 = 72 /* TODO_BinaryenPopcntVecI8x16 */, + PopcntI8x16 = 72 /* TODO_BinaryenPopcntVecI8x16 */, AbsI16x8 = 73 /* _BinaryenAbsVecI16x8 */, NegI16x8 = 74 /* _BinaryenNegVecI16x8 */, AnyTrueI16x8 = 75 /* _BinaryenAnyTrueVecI16x8 */, @@ -562,11 +562,6 @@ export enum SIMDWidenOp { WidenUVecI8x16ToVecI32x4 = 1 /* TODO_BinaryenWidenUVecI8x16ToVecI32x4 */ } -export enum PrefetchOp { - PrefetchTemporal = 0 /* TODO_BinaryenPrefetchTemporal */, - PrefetchNontemporal = 1 /* TODO_BinaryenPrefetchNontemporal */ -} - export enum RefIsOp { RefIsNull = 0 /* _BinaryenRefIsNull */, RefIsFunc = 1 /* _BinaryenRefIsFunc */, From ed843e99c200e32fc128ec9eefa2239650754830 Mon Sep 17 00:00:00 2001 From: dcode Date: Wed, 24 Feb 2021 17:01:31 +0100 Subject: [PATCH 03/24] rename SIMD widening instructions to extend --- src/builtins.ts | 116 ++++++++++++++++---------------- src/module.ts | 25 +++---- std/assembly/builtins.ts | 20 +++--- std/assembly/index.d.ts | 40 +++++------ tests/compiler/features/simd.ts | 16 ++--- 5 files changed, 109 insertions(+), 108 deletions(-) diff --git a/src/builtins.ts b/src/builtins.ts index d11feeb4ab..66a9677188 100644 --- a/src/builtins.ts +++ b/src/builtins.ts @@ -394,8 +394,8 @@ export namespace BuiltinNames { export const v128_convert = "~lib/builtins/v128.convert"; export const v128_trunc_sat = "~lib/builtins/v128.trunc_sat"; export const v128_narrow = "~lib/builtins/v128.narrow"; - export const v128_widen_low = "~lib/builtins/v128.widen_low"; - export const v128_widen_high = "~lib/builtins/v128.widen_high"; + export const v128_extend_low = "~lib/builtins/v128.extend_low"; + export const v128_extend_high = "~lib/builtins/v128.extend_high"; export const v128_qfma = "~lib/builtins/v128.qfma"; export const v128_qfms = "~lib/builtins/v128.qfms"; @@ -479,10 +479,10 @@ export namespace BuiltinNames { export const i16x8_ge_u = "~lib/builtins/i16x8.ge_u"; export const i16x8_narrow_i32x4_s = "~lib/builtins/i16x8.narrow_i32x4_s"; export const i16x8_narrow_i32x4_u = "~lib/builtins/i16x8.narrow_i32x4_u"; - export const i16x8_widen_low_i8x16_s = "~lib/builtins/i16x8.widen_low_i8x16_s"; - export const i16x8_widen_low_i8x16_u = "~lib/builtins/i16x8.widen_low_i8x16_u"; - export const i16x8_widen_high_i8x16_s = "~lib/builtins/i16x8.widen_high_i8x16_s"; - export const i16x8_widen_high_i8x16_u = "~lib/builtins/i16x8.widen_high_i8x16_u"; + export const i16x8_extend_low_i8x16_s = "~lib/builtins/i16x8.extend_low_i8x16_s"; + export const i16x8_extend_low_i8x16_u = "~lib/builtins/i16x8.extend_low_i8x16_u"; + export const i16x8_extend_high_i8x16_s = "~lib/builtins/i16x8.extend_high_i8x16_s"; + export const i16x8_extend_high_i8x16_u = "~lib/builtins/i16x8.extend_high_i8x16_u"; export const i16x8_load8x8_s = "~lib/builtins/i16x8.load8x8_s"; export const i16x8_load8x8_u = "~lib/builtins/i16x8.load8x8_u"; @@ -517,10 +517,10 @@ export namespace BuiltinNames { export const i32x4_ge_u = "~lib/builtins/i32x4.ge_u"; export const i32x4_trunc_sat_f32x4_s = "~lib/builtins/i32x4.trunc_sat_f32x4_s"; export const i32x4_trunc_sat_f32x4_u = "~lib/builtins/i32x4.trunc_sat_f32x4_u"; - export const i32x4_widen_low_i16x8_s = "~lib/builtins/i32x4.widen_low_i16x8_s"; - export const i32x4_widen_low_i16x8_u = "~lib/builtins/i32x4.widen_low_i16x8_u"; - export const i32x4_widen_high_i16x8_s = "~lib/builtins/i32x4.widen_high_i16x8_s"; - export const i32x4_widen_high_i16x8_u = "~lib/builtins/i32x4.widen_high_i16x8_u"; + export const i32x4_extend_low_i16x8_s = "~lib/builtins/i32x4.extend_low_i16x8_s"; + export const i32x4_extend_low_i16x8_u = "~lib/builtins/i32x4.extend_low_i16x8_u"; + export const i32x4_extend_high_i16x8_s = "~lib/builtins/i32x4.extend_high_i16x8_s"; + export const i32x4_extend_high_i16x8_u = "~lib/builtins/i32x4.extend_high_i16x8_u"; export const i32x4_load16x4_s = "~lib/builtins/i32x4.load16x4_s"; export const i32x4_load16x4_u = "~lib/builtins/i32x4.load16x4_u"; @@ -5106,8 +5106,8 @@ function builtin_v128_trunc_sat(ctx: BuiltinContext): ExpressionRef { } builtins.set(BuiltinNames.v128_trunc_sat, builtin_v128_trunc_sat); -// v128.widen_low(a: v128) -> v128 -function builtin_v128_widen_low(ctx: BuiltinContext): ExpressionRef { +// v128.extend_low(a: v128) -> v128 +function builtin_v128_extend_low(ctx: BuiltinContext): ExpressionRef { var compiler = ctx.compiler; var module = compiler.module; if ( @@ -5124,22 +5124,22 @@ function builtin_v128_widen_low(ctx: BuiltinContext): ExpressionRef { var arg0 = compiler.compileExpression(operands[0], Type.v128, Constraints.CONV_IMPLICIT); if (type.isValue) { switch (type.kind) { - case TypeKind.I8: return module.unary(UnaryOp.WidenLowI8x16ToI16x8, arg0); - case TypeKind.U8: return module.unary(UnaryOp.WidenLowU8x16ToU16x8, arg0); - case TypeKind.I16: return module.unary(UnaryOp.WidenLowI16x8ToI32x4, arg0); - case TypeKind.U16: return module.unary(UnaryOp.WidenLowU16x8ToU32x4, arg0); + case TypeKind.I8: return module.unary(UnaryOp.ExtendLowI8x16ToI16x8, arg0); + case TypeKind.U8: return module.unary(UnaryOp.ExtendLowU8x16ToU16x8, arg0); + case TypeKind.I16: return module.unary(UnaryOp.ExtendLowI16x8ToI32x4, arg0); + case TypeKind.U16: return module.unary(UnaryOp.ExtendLowU16x8ToU32x4, arg0); } } compiler.error( DiagnosticCode.Operation_0_cannot_be_applied_to_type_1, - ctx.reportNode.typeArgumentsRange, "v128.widen_low", type.toString() + ctx.reportNode.typeArgumentsRange, "v128.extend_low", type.toString() ); return module.unreachable(); } -builtins.set(BuiltinNames.v128_widen_low, builtin_v128_widen_low); +builtins.set(BuiltinNames.v128_extend_low, builtin_v128_extend_low); -// v128.widen_high(a: v128) -> v128 -function builtin_v128_widen_high(ctx: BuiltinContext): ExpressionRef { +// v128.extend_high(a: v128) -> v128 +function builtin_v128_extend_high(ctx: BuiltinContext): ExpressionRef { var compiler = ctx.compiler; var module = compiler.module; if ( @@ -5156,19 +5156,19 @@ function builtin_v128_widen_high(ctx: BuiltinContext): ExpressionRef { var arg0 = compiler.compileExpression(operands[0], Type.v128, Constraints.CONV_IMPLICIT); if (type.isValue) { switch (type.kind) { - case TypeKind.I8: return module.unary(UnaryOp.WidenHighI8x16ToI16x8, arg0); - case TypeKind.U8: return module.unary(UnaryOp.WidenHighU8x16ToU16x8, arg0); - case TypeKind.I16: return module.unary(UnaryOp.WidenHighI16x8ToI32x4, arg0); - case TypeKind.U16: return module.unary(UnaryOp.WidenHighU16x8ToU32x4, arg0); + case TypeKind.I8: return module.unary(UnaryOp.ExtendHighI8x16ToI16x8, arg0); + case TypeKind.U8: return module.unary(UnaryOp.ExtendHighU8x16ToU16x8, arg0); + case TypeKind.I16: return module.unary(UnaryOp.ExtendHighI16x8ToI32x4, arg0); + case TypeKind.U16: return module.unary(UnaryOp.ExtendHighU16x8ToU32x4, arg0); } } compiler.error( DiagnosticCode.Operation_0_cannot_be_applied_to_type_1, - ctx.reportNode.typeArgumentsRange, "v128.widen_high", type.toString() + ctx.reportNode.typeArgumentsRange, "v128.extend_high", type.toString() ); return module.unreachable(); } -builtins.set(BuiltinNames.v128_widen_high, builtin_v128_widen_high); +builtins.set(BuiltinNames.v128_extend_high, builtin_v128_extend_high); // v128.shl(a: v128, b: i32) -> v128 function builtin_v128_shl(ctx: BuiltinContext): ExpressionRef { @@ -7560,41 +7560,41 @@ function builtin_i16x8_narrow_i32x4_u(ctx: BuiltinContext): ExpressionRef { } builtins.set(BuiltinNames.i16x8_narrow_i32x4_u, builtin_i16x8_narrow_i32x4_u); -// i16x8.widen_low_i8x16_s -> v128.widen_low -function builtin_i16x8_widen_low_i8x16_s(ctx: BuiltinContext): ExpressionRef { +// i16x8.extend_low_i8x16_s -> v128.extend_low +function builtin_i16x8_extend_low_i8x16_s(ctx: BuiltinContext): ExpressionRef { checkTypeAbsent(ctx); ctx.typeArguments = [ Type.i8 ]; ctx.contextualType = Type.v128; - return builtin_v128_widen_low(ctx); + return builtin_v128_extend_low(ctx); } -builtins.set(BuiltinNames.i16x8_widen_low_i8x16_s, builtin_i16x8_widen_low_i8x16_s); +builtins.set(BuiltinNames.i16x8_extend_low_i8x16_s, builtin_i16x8_extend_low_i8x16_s); -// i16x8.widen_low_i8x16_u -> v128.widen_low -function builtin_i16x8_widen_low_i8x16_u(ctx: BuiltinContext): ExpressionRef { +// i16x8.extend_low_i8x16_u -> v128.extend_low +function builtin_i16x8_extend_low_i8x16_u(ctx: BuiltinContext): ExpressionRef { checkTypeAbsent(ctx); ctx.typeArguments = [ Type.u8 ]; ctx.contextualType = Type.v128; - return builtin_v128_widen_low(ctx); + return builtin_v128_extend_low(ctx); } -builtins.set(BuiltinNames.i16x8_widen_low_i8x16_u, builtin_i16x8_widen_low_i8x16_u); +builtins.set(BuiltinNames.i16x8_extend_low_i8x16_u, builtin_i16x8_extend_low_i8x16_u); -// i16x8.widen_high_i8x16_s -> v128.widen_high -function builtin_i16x8_widen_high_i8x16_s(ctx: BuiltinContext): ExpressionRef { +// i16x8.extend_high_i8x16_s -> v128.extend_high +function builtin_i16x8_extend_high_i8x16_s(ctx: BuiltinContext): ExpressionRef { checkTypeAbsent(ctx); ctx.typeArguments = [ Type.i8 ]; ctx.contextualType = Type.v128; - return builtin_v128_widen_high(ctx); + return builtin_v128_extend_high(ctx); } -builtins.set(BuiltinNames.i16x8_widen_high_i8x16_s, builtin_i16x8_widen_high_i8x16_s); +builtins.set(BuiltinNames.i16x8_extend_high_i8x16_s, builtin_i16x8_extend_high_i8x16_s); -// i16x8.widen_high_i8x16_u -> v128.widen_high -function builtin_i16x8_widen_high_i8x16_u(ctx: BuiltinContext): ExpressionRef { +// i16x8.extend_high_i8x16_u -> v128.extend_high +function builtin_i16x8_extend_high_i8x16_u(ctx: BuiltinContext): ExpressionRef { checkTypeAbsent(ctx); ctx.typeArguments = [ Type.u8 ]; ctx.contextualType = Type.v128; - return builtin_v128_widen_high(ctx); + return builtin_v128_extend_high(ctx); } -builtins.set(BuiltinNames.i16x8_widen_high_i8x16_u, builtin_i16x8_widen_high_i8x16_u); +builtins.set(BuiltinNames.i16x8_extend_high_i8x16_u, builtin_i16x8_extend_high_i8x16_u); // i16x8.load8x8_s -> v128.load_ext function builtin_i16x8_load8x8_s(ctx: BuiltinContext): ExpressionRef { @@ -7893,41 +7893,41 @@ function builtin_i32x4_trunc_sat_f32x4_u(ctx: BuiltinContext): ExpressionRef { } builtins.set(BuiltinNames.i32x4_trunc_sat_f32x4_u, builtin_i32x4_trunc_sat_f32x4_u); -// i32x4.widen_low_i16x8_s -> // v128.widen_low -function builtin_i32x4_widen_low_i16x8_s(ctx: BuiltinContext): ExpressionRef { +// i32x4.extend_low_i16x8_s -> // v128.extend_low +function builtin_i32x4_extend_low_i16x8_s(ctx: BuiltinContext): ExpressionRef { checkTypeAbsent(ctx); ctx.typeArguments = [ Type.i16 ]; ctx.contextualType = Type.v128; - return builtin_v128_widen_low(ctx); + return builtin_v128_extend_low(ctx); } -builtins.set(BuiltinNames.i32x4_widen_low_i16x8_s, builtin_i32x4_widen_low_i16x8_s); +builtins.set(BuiltinNames.i32x4_extend_low_i16x8_s, builtin_i32x4_extend_low_i16x8_s); -// i32x4.widen_low_i16x8_u -> v128.widen_low -function builtin_i32x4_widen_low_i16x8_u(ctx: BuiltinContext): ExpressionRef { +// i32x4.extend_low_i16x8_u -> v128.extend_low +function builtin_i32x4_extend_low_i16x8_u(ctx: BuiltinContext): ExpressionRef { checkTypeAbsent(ctx); ctx.typeArguments = [ Type.u16 ]; ctx.contextualType = Type.v128; - return builtin_v128_widen_low(ctx); + return builtin_v128_extend_low(ctx); } -builtins.set(BuiltinNames.i32x4_widen_low_i16x8_u, builtin_i32x4_widen_low_i16x8_u); +builtins.set(BuiltinNames.i32x4_extend_low_i16x8_u, builtin_i32x4_extend_low_i16x8_u); -// i32x4.widen_high_i16x8_s -> v128.widen_high -function builtin_i32x4_widen_high_i16x8_s(ctx: BuiltinContext): ExpressionRef { +// i32x4.extend_high_i16x8_s -> v128.extend_high +function builtin_i32x4_extend_high_i16x8_s(ctx: BuiltinContext): ExpressionRef { checkTypeAbsent(ctx); ctx.typeArguments = [ Type.i16 ]; ctx.contextualType = Type.v128; - return builtin_v128_widen_high(ctx); + return builtin_v128_extend_high(ctx); } -builtins.set(BuiltinNames.i32x4_widen_high_i16x8_s, builtin_i32x4_widen_high_i16x8_s); +builtins.set(BuiltinNames.i32x4_extend_high_i16x8_s, builtin_i32x4_extend_high_i16x8_s); -// i32x4.widen_high_i16x8_u -> v128.widen_high -function builtin_i32x4_widen_high_i16x8_u(ctx: BuiltinContext): ExpressionRef { +// i32x4.extend_high_i16x8_u -> v128.extend_high +function builtin_i32x4_extend_high_i16x8_u(ctx: BuiltinContext): ExpressionRef { checkTypeAbsent(ctx); ctx.typeArguments = [ Type.u16 ]; ctx.contextualType = Type.v128; - return builtin_v128_widen_high(ctx); + return builtin_v128_extend_high(ctx); } -builtins.set(BuiltinNames.i32x4_widen_high_i16x8_u, builtin_i32x4_widen_high_i16x8_u); +builtins.set(BuiltinNames.i32x4_extend_high_i16x8_u, builtin_i32x4_extend_high_i16x8_u); // i32x4.load16x4_s -> v128.load_ext function builtin_i32x4_load16x4_s(ctx: BuiltinContext): ExpressionRef { diff --git a/src/module.ts b/src/module.ts index 7e26bbb90a..5315b3ee1c 100644 --- a/src/module.ts +++ b/src/module.ts @@ -263,18 +263,18 @@ export enum UnaryOp { ConvertU32x4ToF32x4 = 108 /* _BinaryenConvertUVecI32x4ToVecF32x4 */, ConvertI64x2ToF64x2 = 109 /* _BinaryenConvertSVecI64x2ToVecF64x2 */, ConvertU64x2ToF64x2 = 110 /* _BinaryenConvertUVecI64x2ToVecF64x2 */, - WidenLowI8x16ToI16x8 = 111 /* _BinaryenWidenLowSVecI8x16ToVecI16x8 */, - WidenHighI8x16ToI16x8 = 112 /* _BinaryenWidenHighSVecI8x16ToVecI16x8 */, - WidenLowU8x16ToU16x8 = 113 /* _BinaryenWidenLowUVecI8x16ToVecI16x8 */, - WidenHighU8x16ToU16x8 = 114 /* _BinaryenWidenHighUVecI8x16ToVecI16x8 */, - WidenLowI16x8ToI32x4 = 115 /* _BinaryenWidenLowSVecI16x8ToVecI32x4 */, - WidenHighI16x8ToI32x4 = 116 /* _BinaryenWidenHighSVecI16x8ToVecI32x4 */, - WidenLowU16x8ToU32x4 = 117 /* _BinaryenWidenLowUVecI16x8ToVecI32x4 */, - WidenHighU16x8ToU32x4 = 118 /* _BinaryenWidenHighUVecI16x8ToVecI32x4 */, - WidenLowI32x4ToI64x2 = 119 /* TODO_BinaryenWidenLowSVecI32x4ToVecI64x2 */, - WidenHighI32x4ToI64x2 = 120 /* TODO_BinaryenWidenHighSVecI32x4ToVecI64x2 */, - WidenLowU32x4ToU64x2 = 121 /* TODO_BinaryenWidenLowUVecI32x4ToVecI64x2 */, - WidenHighU32x4ToU64x2 = 122 /* TODO_BinaryenWidenHighUVecI32x4ToVecI64x2 */, + ExtendLowI8x16ToI16x8 = 111 /* _BinaryenWidenLowSVecI8x16ToVecI16x8 */, + ExtendHighI8x16ToI16x8 = 112 /* _BinaryenWidenHighSVecI8x16ToVecI16x8 */, + ExtendLowU8x16ToU16x8 = 113 /* _BinaryenWidenLowUVecI8x16ToVecI16x8 */, + ExtendHighU8x16ToU16x8 = 114 /* _BinaryenWidenHighUVecI8x16ToVecI16x8 */, + ExtendLowI16x8ToI32x4 = 115 /* _BinaryenWidenLowSVecI16x8ToVecI32x4 */, + ExtendHighI16x8ToI32x4 = 116 /* _BinaryenWidenHighSVecI16x8ToVecI32x4 */, + ExtendLowU16x8ToU32x4 = 117 /* _BinaryenWidenLowUVecI16x8ToVecI32x4 */, + ExtendHighU16x8ToU32x4 = 118 /* _BinaryenWidenHighUVecI16x8ToVecI32x4 */, + ExtendLowI32x4ToI64x2 = 119 /* TODO_BinaryenWidenLowSVecI32x4ToVecI64x2 */, + ExtendHighI32x4ToI64x2 = 120 /* TODO_BinaryenWidenHighSVecI32x4ToVecI64x2 */, + ExtendLowU32x4ToU64x2 = 121 /* TODO_BinaryenWidenLowUVecI32x4ToVecI64x2 */, + ExtendHighU32x4ToU64x2 = 122 /* TODO_BinaryenWidenHighUVecI32x4ToVecI64x2 */, ConvertLowI32x4ToF64x2 = 123 /* TODO_BinaryenConvertLowSVecI32x4ToVecF64x2 */, ConvertLowU32x4ToF64x2 = 124 /* TODO_BinaryenConvertLowUVecI32x4ToVecF64x2 */, TruncSatZeroF64x2ToI32x4 = 125 /* TODO_BinaryenTruncSatZeroSVecF64x2ToVecI32x4 */, @@ -557,6 +557,7 @@ export enum SIMDLoadStoreLaneOp { StoreLaneV64x2 = 7 /* TODO_BinaryenStoreLaneVec64x2 */ } +// TODO: Widen with lane immediate, did these make it? export enum SIMDWidenOp { WidenSVecI8x16ToVecI32x4 = 0 /* TODO_BinaryenWidenSVecI8x16ToVecI32x4 */, WidenUVecI8x16ToVecI32x4 = 1 /* TODO_BinaryenWidenUVecI8x16ToVecI32x4 */ diff --git a/std/assembly/builtins.ts b/std/assembly/builtins.ts index b108665185..e31557952e 100644 --- a/std/assembly/builtins.ts +++ b/std/assembly/builtins.ts @@ -1289,11 +1289,11 @@ export namespace v128 { // @ts-ignore: decorator @builtin - export declare function widen_low(a: v128): v128; + export declare function extend_low(a: v128): v128; // @ts-ignore: decorator @builtin - export declare function widen_high(a: v128): v128; + export declare function extend_high(a: v128): v128; // @ts-ignore: decorator @builtin @@ -1610,19 +1610,19 @@ export namespace i16x8 { // @ts-ignore: decorator @builtin - export declare function widen_low_i8x16_s(a: v128): v128; + export declare function extend_low_i8x16_s(a: v128): v128; // @ts-ignore: decorator @builtin - export declare function widen_low_i8x16_u(a: v128): v128; + export declare function extend_low_i8x16_u(a: v128): v128; // @ts-ignore: decorator @builtin - export declare function widen_high_i8x16_s(a: v128): v128; + export declare function extend_high_i8x16_s(a: v128): v128; // @ts-ignore: decorator @builtin - export declare function widen_high_i8x16_u(a: v128): v128; + export declare function extend_high_i8x16_u(a: v128): v128; // @ts-ignore: decorator @builtin @@ -1765,19 +1765,19 @@ export namespace i32x4 { // @ts-ignore: decorator @builtin - export declare function widen_low_i16x8_s(a: v128): v128; + export declare function extend_low_i16x8_s(a: v128): v128; // @ts-ignore: decorator @builtin - export declare function widen_low_i16x8_u(a: v128): v128; + export declare function extend_low_i16x8_u(a: v128): v128; // @ts-ignore: decorator @builtin - export declare function widen_high_i16x8_s(a: v128): v128; + export declare function extend_high_i16x8_s(a: v128): v128; // @ts-ignore: decorator @builtin - export declare function widen_high_i16x8_u(a: v128): v128; + export declare function extend_high_i16x8_u(a: v128): v128; // @ts-ignore: decorator @builtin diff --git a/std/assembly/index.d.ts b/std/assembly/index.d.ts index 5e1c0a5501..3fa2d51fdf 100644 --- a/std/assembly/index.d.ts +++ b/std/assembly/index.d.ts @@ -777,10 +777,10 @@ declare namespace v128 { export function trunc_sat(a: v128): v128; /** Narrows each lane to their respective narrower lanes. */ export function narrow(a: v128, b: v128): v128; - /** Widens the low lanes of a vector to their respective wider lanes. */ - export function widen_low(a: v128): v128; - /** Widens the high lanes of a vector to their respective wider lanes. */ - export function widen_high(a: v128): v128; + /** Extends the low lanes of a vector to their respective wider lanes. */ + export function extend_low(a: v128): v128; + /** Extends the high lanes of a vector to their respective wider lanes. */ + export function extend_high(a: v128): v128; /** Computes `(a * b) + c` for each lane. */ export function qfma(a: v128, b: v128, c: v128): v128; /** Computes `(a * b) - c` for each lane. */ @@ -937,14 +937,14 @@ declare namespace i16x8 { export function narrow_i32x4_s(a: v128, b: v128): v128; /** Narrows each 32-bit signed integer lane to 16-bit unsigned integer lanes. */ export function narrow_i32x4_u(a: v128, b: v128): v128; - /** Widens the low 8-bit signed integer lanes to 16-bit signed integer lanes. */ - export function widen_low_i8x16_s(a: v128): v128; - /** Widens the low 8-bit unsigned integer lanes to 16-bit unsigned integer lanes. */ - export function widen_low_i8x16_u(a: v128): v128; - /** Widens the high 8-bit signed integer lanes to 16-bit signed integer lanes. */ - export function widen_high_i8x16_s(a: v128): v128; - /** Widens the high 8-bit unsigned integer lanes to 16-bit unsigned integer lanes. */ - export function widen_high_i8x16_u(a: v128): v128; + /** Extends the low 8-bit signed integer lanes to 16-bit signed integer lanes. */ + export function extend_low_i8x16_s(a: v128): v128; + /** Extends the low 8-bit unsigned integer lanes to 16-bit unsigned integer lanes. */ + export function extend_low_i8x16_u(a: v128): v128; + /** Extends the high 8-bit signed integer lanes to 16-bit signed integer lanes. */ + export function extend_high_i8x16_s(a: v128): v128; + /** Extends the high 8-bit unsigned integer lanes to 16-bit unsigned integer lanes. */ + export function extend_high_i8x16_u(a: v128): v128; /** Creates a vector with eight 16-bit integer lanes by loading and sign extending eight 8-bit integers. */ export function load8x8_s(ptr: usize, immOffset?: u32, immAlign?: u32): v128; /** Creates a vector with eight 16-bit integer lanes by loading and zero extending eight 8-bit integers. */ @@ -1015,14 +1015,14 @@ declare namespace i32x4 { export function trunc_sat_f32x4_s(a: v128): v128; /** Truncates each 32-bit float lane to an unsigned integer with saturation. */ export function trunc_sat_f32x4_u(a: v128): v128; - /** Widens the low 16-bit signed integer lanes to 32-bit signed integer lanes. */ - export function widen_low_i16x8_s(a: v128): v128; - /** Widens the low 16-bit unsigned integer lane to 32-bit unsigned integer lanes. */ - export function widen_low_i16x8_u(a: v128): v128; - /** Widens the high 16-bit signed integer lanes to 32-bit signed integer lanes. */ - export function widen_high_i16x8_s(a: v128): v128; - /** Widens the high 16-bit unsigned integer lanes to 32-bit unsigned integer lanes. */ - export function widen_high_i16x8_u(a: v128): v128; + /** Extends the low 16-bit signed integer lanes to 32-bit signed integer lanes. */ + export function extend_low_i16x8_s(a: v128): v128; + /** Extends the low 16-bit unsigned integer lane to 32-bit unsigned integer lanes. */ + export function extend_low_i16x8_u(a: v128): v128; + /** Extends the high 16-bit signed integer lanes to 32-bit signed integer lanes. */ + export function extend_high_i16x8_s(a: v128): v128; + /** Extends the high 16-bit unsigned integer lanes to 32-bit unsigned integer lanes. */ + export function extend_high_i16x8_u(a: v128): v128; /** Creates a vector with four 32-bit integer lanes by loading and sign extending four 16-bit integers. */ export function load16x4_s(ptr: usize, immOffset?: u32, immAlign?: u32): v128; /** Creates a vector with four 32-bit integer lanes by loading and zero extending four 16-bit integers. */ diff --git a/tests/compiler/features/simd.ts b/tests/compiler/features/simd.ts index 8a0038acc9..ff6a61d136 100644 --- a/tests/compiler/features/simd.ts +++ b/tests/compiler/features/simd.ts @@ -282,10 +282,10 @@ function test_i16x8(): void { assert(i16x8.ge_u(one, negOne) == excl1st); assert(i16x8.narrow_i32x4_s(i32x4.splat(i32.MAX_VALUE), i32x4.splat(i32.MAX_VALUE)) == i16x8.splat(i16.MAX_VALUE)); assert(i16x8.narrow_i32x4_u(i32x4.splat(i32.MAX_VALUE), i32x4.splat(i32.MAX_VALUE)) == i16x8.splat(u16.MAX_VALUE)); - assert(i16x8.widen_low_i8x16_s(i8x16.replace_lane(i8x16.splat(-1), 8, 0)) == i16x8.splat(-1)); - assert(i16x8.widen_low_i8x16_u(i8x16.replace_lane(i8x16.splat(-1), 8, 0)) == i16x8.splat(255)); - assert(i16x8.widen_high_i8x16_s(i8x16.replace_lane(i8x16.splat(-1), 0, 0)) == i16x8.splat(-1)); - assert(i16x8.widen_high_i8x16_u(i8x16.replace_lane(i8x16.splat(-1), 0, 0)) == i16x8.splat(255)); + assert(i16x8.extend_low_i8x16_s(i8x16.replace_lane(i8x16.splat(-1), 8, 0)) == i16x8.splat(-1)); + assert(i16x8.extend_low_i8x16_u(i8x16.replace_lane(i8x16.splat(-1), 8, 0)) == i16x8.splat(255)); + assert(i16x8.extend_high_i8x16_s(i8x16.replace_lane(i8x16.splat(-1), 0, 0)) == i16x8.splat(-1)); + assert(i16x8.extend_high_i8x16_u(i8x16.replace_lane(i8x16.splat(-1), 0, 0)) == i16x8.splat(255)); // TODO: not yet implemented in binaryen/src/wasm-interpreter.h // { // let ptr = __alloc(16, 0); @@ -406,10 +406,10 @@ function test_i32x4(): void { == i32x4.splat(0) ); - assert(i32x4.widen_low_i16x8_s(i16x8.replace_lane(i16x8.splat(-1), 4, 0)) == i32x4.splat(-1)); - assert(i32x4.widen_low_i16x8_u(i16x8.replace_lane(i16x8.splat(-1), 4, 0)) == i32x4.splat(65535)); - assert(i32x4.widen_high_i16x8_s(i16x8.replace_lane(i16x8.splat(-1), 0, 0)) == i32x4.splat(-1)); - assert(i32x4.widen_high_i16x8_u(i16x8.replace_lane(i16x8.splat(-1), 0, 0)) == i32x4.splat(65535)); + assert(i32x4.extend_low_i16x8_s(i16x8.replace_lane(i16x8.splat(-1), 4, 0)) == i32x4.splat(-1)); + assert(i32x4.extend_low_i16x8_u(i16x8.replace_lane(i16x8.splat(-1), 4, 0)) == i32x4.splat(65535)); + assert(i32x4.extend_high_i16x8_s(i16x8.replace_lane(i16x8.splat(-1), 0, 0)) == i32x4.splat(-1)); + assert(i32x4.extend_high_i16x8_u(i16x8.replace_lane(i16x8.splat(-1), 0, 0)) == i32x4.splat(65535)); // TODO: not yet implemented in binaryen/src/wasm-interpreter.h // { // let ptr = __alloc(16, 0); From b927265845077a04d5fdf7d87e6949badf65ef2a Mon Sep 17 00:00:00 2001 From: dcode Date: Thu, 25 Feb 2021 13:25:54 +0100 Subject: [PATCH 04/24] add i64x2.extend_* instructions --- src/builtins.ts | 60 ++++++++++++++++++++++++++++++++++++++++ std/assembly/builtins.ts | 16 +++++++++++ std/assembly/index.d.ts | 12 ++++++-- 3 files changed, 86 insertions(+), 2 deletions(-) diff --git a/src/builtins.ts b/src/builtins.ts index 66a9677188..a9ce8bac35 100644 --- a/src/builtins.ts +++ b/src/builtins.ts @@ -535,6 +535,10 @@ export namespace BuiltinNames { export const i64x2_shr_u = "~lib/builtins/i64x2.shr_u"; export const i64x2_trunc_sat_f64x2_s = "~lib/builtins/i64x2.trunc_sat_f64x2_s"; export const i64x2_trunc_sat_f64x2_u = "~lib/builtins/i64x2.trunc_sat_f64x2_u"; + export const i64x2_extend_low_i32x4_s = "~lib/builtins/i64x2.extend_low_i32x4_s"; + export const i64x2_extend_low_i32x4_u = "~lib/builtins/i64x2.extend_low_i32x4_u"; + export const i64x2_extend_high_i32x4_s = "~lib/builtins/i64x2.extend_high_i32x4_s"; + export const i64x2_extend_high_i32x4_u = "~lib/builtins/i64x2.extend_high_i32x4_u"; export const i64x2_load32x2_s = "~lib/builtins/i64x2.load32x2_s"; export const i64x2_load32x2_u = "~lib/builtins/i64x2.load32x2_u"; @@ -5128,6 +5132,16 @@ function builtin_v128_extend_low(ctx: BuiltinContext): ExpressionRef { case TypeKind.U8: return module.unary(UnaryOp.ExtendLowU8x16ToU16x8, arg0); case TypeKind.I16: return module.unary(UnaryOp.ExtendLowI16x8ToI32x4, arg0); case TypeKind.U16: return module.unary(UnaryOp.ExtendLowU16x8ToU32x4, arg0); + case TypeKind.ISIZE: { + if (compiler.options.isWasm64) break; + // fall-through + } + case TypeKind.I32: return module.unary(UnaryOp.ExtendLowI32x4ToI64x2, arg0); + case TypeKind.USIZE: { + if (compiler.options.isWasm64) break; + // fall-through + } + case TypeKind.U32: return module.unary(UnaryOp.ExtendLowU32x4ToU64x2, arg0); } } compiler.error( @@ -5160,6 +5174,16 @@ function builtin_v128_extend_high(ctx: BuiltinContext): ExpressionRef { case TypeKind.U8: return module.unary(UnaryOp.ExtendHighU8x16ToU16x8, arg0); case TypeKind.I16: return module.unary(UnaryOp.ExtendHighI16x8ToI32x4, arg0); case TypeKind.U16: return module.unary(UnaryOp.ExtendHighU16x8ToU32x4, arg0); + case TypeKind.ISIZE: { + if (compiler.options.isWasm64) break; + // fall-through + } + case TypeKind.I32: return module.unary(UnaryOp.ExtendHighI32x4ToI64x2, arg0); + case TypeKind.USIZE: { + if (compiler.options.isWasm64) break; + // fall-through + } + case TypeKind.U32: return module.unary(UnaryOp.ExtendHighU32x4ToU64x2, arg0); } } compiler.error( @@ -8046,6 +8070,42 @@ function builtin_i64x2_trunc_sat_f64x2_u(ctx: BuiltinContext): ExpressionRef { } builtins.set(BuiltinNames.i64x2_trunc_sat_f64x2_u, builtin_i64x2_trunc_sat_f64x2_u); +// i64x2.extend_low_i32x4_s -> // v128.extend_low +function builtin_i64x2_extend_low_i32x4_s(ctx: BuiltinContext): ExpressionRef { + checkTypeAbsent(ctx); + ctx.typeArguments = [ Type.i32 ]; + ctx.contextualType = Type.v128; + return builtin_v128_extend_low(ctx); +} +builtins.set(BuiltinNames.i64x2_extend_low_i32x4_s, builtin_i64x2_extend_low_i32x4_s); + +// i64x2.extend_low_i32x4_u -> v128.extend_low +function builtin_i64x2_extend_low_i32x4_u(ctx: BuiltinContext): ExpressionRef { + checkTypeAbsent(ctx); + ctx.typeArguments = [ Type.u32 ]; + ctx.contextualType = Type.v128; + return builtin_v128_extend_low(ctx); +} +builtins.set(BuiltinNames.i64x2_extend_low_i32x4_u, builtin_i64x2_extend_low_i32x4_u); + +// i64x2.extend_high_i32x4_s -> v128.extend_high +function builtin_i64x2_extend_high_i32x4_s(ctx: BuiltinContext): ExpressionRef { + checkTypeAbsent(ctx); + ctx.typeArguments = [ Type.i32 ]; + ctx.contextualType = Type.v128; + return builtin_v128_extend_high(ctx); +} +builtins.set(BuiltinNames.i64x2_extend_high_i32x4_s, builtin_i64x2_extend_high_i32x4_s); + +// i64x2.extend_high_i32x4_u -> v128.extend_high +function builtin_i64x2_extend_high_i32x4_u(ctx: BuiltinContext): ExpressionRef { + checkTypeAbsent(ctx); + ctx.typeArguments = [ Type.u32 ]; + ctx.contextualType = Type.v128; + return builtin_v128_extend_high(ctx); +} +builtins.set(BuiltinNames.i64x2_extend_high_i32x4_u, builtin_i64x2_extend_high_i32x4_u); + // i64x2.load32x2_s -> v128.load_ext function builtin_i64x2_load32x2_s(ctx: BuiltinContext): ExpressionRef { checkTypeAbsent(ctx); diff --git a/std/assembly/builtins.ts b/std/assembly/builtins.ts index e31557952e..c822fb3e3b 100644 --- a/std/assembly/builtins.ts +++ b/std/assembly/builtins.ts @@ -1842,6 +1842,22 @@ export namespace i64x2 { @builtin export declare function trunc_sat_f64x2_u(a: v128): v128; + // @ts-ignore: decorator + @builtin + export declare function extend_low_i32x4_s(a: v128): v128; + + // @ts-ignore: decorator + @builtin + export declare function extend_low_i32x4_u(a: v128): v128; + + // @ts-ignore: decorator + @builtin + export declare function extend_high_i32x4_s(a: v128): v128; + + // @ts-ignore: decorator + @builtin + export declare function extend_high_i32x4_u(a: v128): v128; + // @ts-ignore: decorator @builtin export declare function load32x2_s(ptr: usize, immOffset?: u32, immAlign?: u32): v128; diff --git a/std/assembly/index.d.ts b/std/assembly/index.d.ts index 3fa2d51fdf..bfa3e038f8 100644 --- a/std/assembly/index.d.ts +++ b/std/assembly/index.d.ts @@ -778,9 +778,9 @@ declare namespace v128 { /** Narrows each lane to their respective narrower lanes. */ export function narrow(a: v128, b: v128): v128; /** Extends the low lanes of a vector to their respective wider lanes. */ - export function extend_low(a: v128): v128; + export function extend_low(a: v128): v128; /** Extends the high lanes of a vector to their respective wider lanes. */ - export function extend_high(a: v128): v128; + export function extend_high(a: v128): v128; /** Computes `(a * b) + c` for each lane. */ export function qfma(a: v128, b: v128, c: v128): v128; /** Computes `(a * b) - c` for each lane. */ @@ -1055,6 +1055,14 @@ declare namespace i64x2 { export function trunc_sat_f64x2_s(a: v128): v128; /** Truncates each 64-bit float lane to an unsigned integer with saturation. */ export function trunc_sat_f64x2_u(a: v128): v128; + /** Extends the low 32-bit signed integer lanes to 64-bit signed integer lanes. */ + export function extend_low_i32x4_s(a: v128): v128; + /** Extends the low 32-bit unsigned integer lane to 64-bit unsigned integer lanes. */ + export function extend_low_i32x4_u(a: v128): v128; + /** Extends the high 32-bit signed integer lanes to 64-bit signed integer lanes. */ + export function extend_high_i32x4_s(a: v128): v128; + /** Extends the high 32-bit unsigned integer lanes to 64-bit unsigned integer lanes. */ + export function extend_high_i32x4_u(a: v128): v128; /** Creates a vector with two 64-bit integer lanes by loading and sign extending two 32-bit integers. */ export function load32x2_s(ptr: usize, immOffset?: u32, immAlign?: u32): v128; /** Creates a vector with two 64-bit integer lanes by loading and zero extending two 32-bit integers. */ From 4ba5cf6ab35b79c2b534cb3f88c14a0646a0af8d Mon Sep 17 00:00:00 2001 From: dcode Date: Thu, 25 Feb 2021 14:38:48 +0100 Subject: [PATCH 05/24] rename SIMD load extend instructions --- src/builtins.ts | 120 +++--- std/assembly/builtins.ts | 54 +-- std/assembly/index.d.ts | 32 +- tests/compiler/features/simd.optimized.wat | 430 +++++++++++++++++---- tests/compiler/features/simd.ts | 115 +++--- tests/compiler/features/simd.untouched.wat | 302 +++++++++++---- 6 files changed, 744 insertions(+), 309 deletions(-) diff --git a/src/builtins.ts b/src/builtins.ts index a9ce8bac35..bba0345002 100644 --- a/src/builtins.ts +++ b/src/builtins.ts @@ -354,6 +354,12 @@ export namespace BuiltinNames { export const v128_load_splat = "~lib/builtins/v128.load_splat"; export const v128_load_ext = "~lib/builtins/v128.load_ext"; export const v128_load = "~lib/builtins/v128.load"; + export const v128_load8x8_s = "~lib/builtins/v128.load8x8_s"; + export const v128_load8x8_u = "~lib/builtins/v128.load8x8_u"; + export const v128_load16x4_s = "~lib/builtins/v128.load16x4_s"; + export const v128_load16x4_u = "~lib/builtins/v128.load16x4_u"; + export const v128_load32x2_s = "~lib/builtins/v128.load32x2_s"; + export const v128_load32x2_u = "~lib/builtins/v128.load32x2_u"; export const v128_store = "~lib/builtins/v128.store"; export const v128_add = "~lib/builtins/v128.add"; export const v128_sub = "~lib/builtins/v128.sub"; @@ -483,8 +489,6 @@ export namespace BuiltinNames { export const i16x8_extend_low_i8x16_u = "~lib/builtins/i16x8.extend_low_i8x16_u"; export const i16x8_extend_high_i8x16_s = "~lib/builtins/i16x8.extend_high_i8x16_s"; export const i16x8_extend_high_i8x16_u = "~lib/builtins/i16x8.extend_high_i8x16_u"; - export const i16x8_load8x8_s = "~lib/builtins/i16x8.load8x8_s"; - export const i16x8_load8x8_u = "~lib/builtins/i16x8.load8x8_u"; export const i32x4_splat = "~lib/builtins/i32x4.splat"; export const i32x4_extract_lane = "~lib/builtins/i32x4.extract_lane"; @@ -521,8 +525,6 @@ export namespace BuiltinNames { export const i32x4_extend_low_i16x8_u = "~lib/builtins/i32x4.extend_low_i16x8_u"; export const i32x4_extend_high_i16x8_s = "~lib/builtins/i32x4.extend_high_i16x8_s"; export const i32x4_extend_high_i16x8_u = "~lib/builtins/i32x4.extend_high_i16x8_u"; - export const i32x4_load16x4_s = "~lib/builtins/i32x4.load16x4_s"; - export const i32x4_load16x4_u = "~lib/builtins/i32x4.load16x4_u"; export const i64x2_splat = "~lib/builtins/i64x2.splat"; export const i64x2_extract_lane = "~lib/builtins/i64x2.extract_lane"; @@ -539,8 +541,6 @@ export namespace BuiltinNames { export const i64x2_extend_low_i32x4_u = "~lib/builtins/i64x2.extend_low_i32x4_u"; export const i64x2_extend_high_i32x4_s = "~lib/builtins/i64x2.extend_high_i32x4_s"; export const i64x2_extend_high_i32x4_u = "~lib/builtins/i64x2.extend_high_i32x4_u"; - export const i64x2_load32x2_s = "~lib/builtins/i64x2.load32x2_s"; - export const i64x2_load32x2_u = "~lib/builtins/i64x2.load32x2_u"; export const f32x4_splat = "~lib/builtins/f32x4.splat"; export const f32x4_extract_lane = "~lib/builtins/f32x4.extract_lane"; @@ -6926,6 +6926,60 @@ function builtin_v128_load(ctx: BuiltinContext): ExpressionRef { } builtins.set(BuiltinNames.v128_load, builtin_v128_load); +// v128.load8x8_s -> v128.load_ext +function builtin_v128_load8x8_s(ctx: BuiltinContext): ExpressionRef { + checkTypeAbsent(ctx); + ctx.typeArguments = [ Type.i8 ]; + ctx.contextualType = Type.v128; + return builtin_v128_load_ext(ctx); +} +builtins.set(BuiltinNames.v128_load8x8_s, builtin_v128_load8x8_s); + +// v128.load8x8_u -> v128.load_ext +function builtin_v128_load8x8_u(ctx: BuiltinContext): ExpressionRef { + checkTypeAbsent(ctx); + ctx.typeArguments = [ Type.u8 ]; + ctx.contextualType = Type.v128; + return builtin_v128_load_ext(ctx); +} +builtins.set(BuiltinNames.v128_load8x8_u, builtin_v128_load8x8_u); + +// v128.load16x4_s -> v128.load_ext +function builtin_v128_load16x4_s(ctx: BuiltinContext): ExpressionRef { + checkTypeAbsent(ctx); + ctx.typeArguments = [ Type.i16 ]; + ctx.contextualType = Type.v128; + return builtin_v128_load_ext(ctx); +} +builtins.set(BuiltinNames.v128_load16x4_s, builtin_v128_load16x4_s); + +// v128.load16x4_u -> v128.load_ext +function builtin_v128_load16x4_u(ctx: BuiltinContext): ExpressionRef { + checkTypeAbsent(ctx); + ctx.typeArguments = [ Type.u16 ]; + ctx.contextualType = Type.v128; + return builtin_v128_load_ext(ctx); +} +builtins.set(BuiltinNames.v128_load16x4_u, builtin_v128_load16x4_u); + +// v128.load32x2_s -> v128.load_ext +function builtin_v128_load32x2_s(ctx: BuiltinContext): ExpressionRef { + checkTypeAbsent(ctx); + ctx.typeArguments = [ Type.i32 ]; + ctx.contextualType = Type.v128; + return builtin_v128_load_ext(ctx); +} +builtins.set(BuiltinNames.v128_load32x2_s, builtin_v128_load32x2_s); + +// v128.load32x2_u -> v128.load_ext +function builtin_v128_load32x2_u(ctx: BuiltinContext): ExpressionRef { + checkTypeAbsent(ctx); + ctx.typeArguments = [ Type.u32 ]; + ctx.contextualType = Type.v128; + return builtin_v128_load_ext(ctx); +} +builtins.set(BuiltinNames.v128_load32x2_u, builtin_v128_load32x2_u); + // v128.store -> store function builtin_v128_store(ctx: BuiltinContext): ExpressionRef { checkTypeAbsent(ctx); @@ -7620,24 +7674,6 @@ function builtin_i16x8_extend_high_i8x16_u(ctx: BuiltinContext): ExpressionRef { } builtins.set(BuiltinNames.i16x8_extend_high_i8x16_u, builtin_i16x8_extend_high_i8x16_u); -// i16x8.load8x8_s -> v128.load_ext -function builtin_i16x8_load8x8_s(ctx: BuiltinContext): ExpressionRef { - checkTypeAbsent(ctx); - ctx.typeArguments = [ Type.i8 ]; - ctx.contextualType = Type.v128; - return builtin_v128_load_ext(ctx); -} -builtins.set(BuiltinNames.i16x8_load8x8_s, builtin_i16x8_load8x8_s); - -// i16x8.load8x8_u -> v128.load_ext -function builtin_i16x8_load8x8_u(ctx: BuiltinContext): ExpressionRef { - checkTypeAbsent(ctx); - ctx.typeArguments = [ Type.u8 ]; - ctx.contextualType = Type.v128; - return builtin_v128_load_ext(ctx); -} -builtins.set(BuiltinNames.i16x8_load8x8_u, builtin_i16x8_load8x8_u); - // i32x4.splat -> v128.splat function builtin_i32x4_splat(ctx: BuiltinContext): ExpressionRef { checkTypeAbsent(ctx); @@ -7953,24 +7989,6 @@ function builtin_i32x4_extend_high_i16x8_u(ctx: BuiltinContext): ExpressionRef { } builtins.set(BuiltinNames.i32x4_extend_high_i16x8_u, builtin_i32x4_extend_high_i16x8_u); -// i32x4.load16x4_s -> v128.load_ext -function builtin_i32x4_load16x4_s(ctx: BuiltinContext): ExpressionRef { - checkTypeAbsent(ctx); - ctx.typeArguments = [ Type.i16 ]; - ctx.contextualType = Type.v128; - return builtin_v128_load_ext(ctx); -} -builtins.set(BuiltinNames.i32x4_load16x4_s, builtin_i32x4_load16x4_s); - -// i32x4.load16x4_u -> v128.load_ext -function builtin_i32x4_load16x4_u(ctx: BuiltinContext): ExpressionRef { - checkTypeAbsent(ctx); - ctx.typeArguments = [ Type.u16 ]; - ctx.contextualType = Type.v128; - return builtin_v128_load_ext(ctx); -} -builtins.set(BuiltinNames.i32x4_load16x4_u, builtin_i32x4_load16x4_u); - // i64x2.splat -> v128.splat function builtin_i64x2_splat(ctx: BuiltinContext): ExpressionRef { checkTypeAbsent(ctx); @@ -8106,24 +8124,6 @@ function builtin_i64x2_extend_high_i32x4_u(ctx: BuiltinContext): ExpressionRef { } builtins.set(BuiltinNames.i64x2_extend_high_i32x4_u, builtin_i64x2_extend_high_i32x4_u); -// i64x2.load32x2_s -> v128.load_ext -function builtin_i64x2_load32x2_s(ctx: BuiltinContext): ExpressionRef { - checkTypeAbsent(ctx); - ctx.typeArguments = [ Type.i32 ]; - ctx.contextualType = Type.v128; - return builtin_v128_load_ext(ctx); -} -builtins.set(BuiltinNames.i64x2_load32x2_s, builtin_i64x2_load32x2_s); - -// i64x2.load32x2_u -> v128.load_ext -function builtin_i64x2_load32x2_u(ctx: BuiltinContext): ExpressionRef { - checkTypeAbsent(ctx); - ctx.typeArguments = [ Type.u32 ]; - ctx.contextualType = Type.v128; - return builtin_v128_load_ext(ctx); -} -builtins.set(BuiltinNames.i64x2_load32x2_u, builtin_i64x2_load32x2_u); - // f32x4.splat -> v128.splat function builtin_f32x4_splat(ctx: BuiltinContext): ExpressionRef { checkTypeAbsent(ctx); diff --git a/std/assembly/builtins.ts b/std/assembly/builtins.ts index c822fb3e3b..25685931c1 100644 --- a/std/assembly/builtins.ts +++ b/std/assembly/builtins.ts @@ -1117,15 +1117,39 @@ export namespace v128 { // @ts-ignore: decorator @unsafe @builtin - export declare function load(ptr: usize, immOffset?: usize, immAlign?: usize): v128; + export declare function load_splat(ptr: usize, immOffset?: usize, immAlign?: usize): v128; // @ts-ignore: decorator @unsafe @builtin - export declare function load_splat(ptr: usize, immOffset?: usize, immAlign?: usize): v128; + export declare function load_ext(ptr: usize, immOffset?: usize, immAlign?: usize): v128; // @ts-ignore: decorator @unsafe @builtin - export declare function load_ext(ptr: usize, immOffset?: usize, immAlign?: usize): v128; + export declare function load(ptr: usize, immOffset?: usize, immAlign?: usize): v128; + + // @ts-ignore: decorator + @builtin + export declare function load8x8_s(ptr: usize, immOffset?: u32, immAlign?: u32): v128; + + // @ts-ignore: decorator + @builtin + export declare function load8x8_u(ptr: usize, immOffset?: u32, immAlign?: u32): v128; + + // @ts-ignore: decorator + @builtin + export declare function load16x4_s(ptr: usize, immOffset?: u32, immAlign?: u32): v128; + + // @ts-ignore: decorator + @builtin + export declare function load16x4_u(ptr: usize, immOffset?: u32, immAlign?: u32): v128; + + // @ts-ignore: decorator + @builtin + export declare function load32x2_s(ptr: usize, immOffset?: u32, immAlign?: u32): v128; + + // @ts-ignore: decorator + @builtin + export declare function load32x2_u(ptr: usize, immOffset?: u32, immAlign?: u32): v128; // @ts-ignore: decorator @unsafe @builtin @@ -1623,14 +1647,6 @@ export namespace i16x8 { // @ts-ignore: decorator @builtin export declare function extend_high_i8x16_u(a: v128): v128; - - // @ts-ignore: decorator - @builtin - export declare function load8x8_s(ptr: usize, immOffset?: u32, immAlign?: u32): v128; - - // @ts-ignore: decorator - @builtin - export declare function load8x8_u(ptr: usize, immOffset?: u32, immAlign?: u32): v128; } // @ts-ignore: decorator @@ -1778,14 +1794,6 @@ export namespace i32x4 { // @ts-ignore: decorator @builtin export declare function extend_high_i16x8_u(a: v128): v128; - - // @ts-ignore: decorator - @builtin - export declare function load16x4_s(ptr: usize, immOffset?: u32, immAlign?: u32): v128; - - // @ts-ignore: decorator - @builtin - export declare function load16x4_u(ptr: usize, immOffset?: u32, immAlign?: u32): v128; } // @ts-ignore: decorator @@ -1857,14 +1865,6 @@ export namespace i64x2 { // @ts-ignore: decorator @builtin export declare function extend_high_i32x4_u(a: v128): v128; - - // @ts-ignore: decorator - @builtin - export declare function load32x2_s(ptr: usize, immOffset?: u32, immAlign?: u32): v128; - - // @ts-ignore: decorator - @builtin - export declare function load32x2_u(ptr: usize, immOffset?: u32, immAlign?: u32): v128; } // @ts-ignore: decorator diff --git a/std/assembly/index.d.ts b/std/assembly/index.d.ts index bfa3e038f8..e4a817e133 100644 --- a/std/assembly/index.d.ts +++ b/std/assembly/index.d.ts @@ -691,12 +691,24 @@ declare namespace v128 { export function shuffle(a: v128, b: v128, ...lanes: u8[]): v128; /** Selects 8-bit lanes from the first vector according to the indexes [0-15] specified by the 8-bit lanes of the second vector. */ export function swizzle(a: v128, s: v128): v128; - /** Loads a vector from memory. */ - export function load(ptr: usize, immOffset?: usize, immAlign?: usize): v128; /** Creates a vector with identical lanes by loading the splatted value. */ - export function load_splat(ptr: usize, immOffset?: usize, immAlign?: usize): v128 + export function load_splat(ptr: usize, immOffset?: usize, immAlign?: usize): v128; /** Creates a vector by loading the lanes of the specified type and extending each to the next larger type. */ - export function load_ext(ptr: usize, immOffset?: usize, immAlign?: usize): v128 + export function load_ext(ptr: usize, immOffset?: usize, immAlign?: usize): v128; + /** Loads a vector from memory. */ + export function load(ptr: usize, immOffset?: usize, immAlign?: usize): v128; + /** Creates a vector with eight 16-bit integer lanes by loading and sign extending eight 8-bit integers. */ + export function load8x8_s(ptr: usize, immOffset?: u32, immAlign?: u32): v128; + /** Creates a vector with eight 16-bit integer lanes by loading and zero extending eight 8-bit integers. */ + export function load8x8_u(ptr: usize, immOffset?: u32, immAlign?: u32): v128; + /** Creates a vector with four 32-bit integer lanes by loading and sign extending four 16-bit integers. */ + export function load16x4_s(ptr: usize, immOffset?: u32, immAlign?: u32): v128; + /** Creates a vector with four 32-bit integer lanes by loading and zero extending four 16-bit integers. */ + export function load16x4_u(ptr: usize, immOffset?: u32, immAlign?: u32): v128; + /** Creates a vector with two 64-bit integer lanes by loading and sign extending two 32-bit integers. */ + export function load32x2_s(ptr: usize, immOffset?: u32, immAlign?: u32): v128; + /** Creates a vector with two 64-bit integer lanes by loading and zero extending two 32-bit integers. */ + export function load32x2_u(ptr: usize, immOffset?: u32, immAlign?: u32): v128; /** Stores a vector to memory. */ export function store(ptr: usize, value: v128, immOffset?: usize, immAlign?: usize): void; /** Adds each lane. */ @@ -945,10 +957,6 @@ declare namespace i16x8 { export function extend_high_i8x16_s(a: v128): v128; /** Extends the high 8-bit unsigned integer lanes to 16-bit unsigned integer lanes. */ export function extend_high_i8x16_u(a: v128): v128; - /** Creates a vector with eight 16-bit integer lanes by loading and sign extending eight 8-bit integers. */ - export function load8x8_s(ptr: usize, immOffset?: u32, immAlign?: u32): v128; - /** Creates a vector with eight 16-bit integer lanes by loading and zero extending eight 8-bit integers. */ - export function load8x8_u(ptr: usize, immOffset?: u32, immAlign?: u32): v128; } /** Initializes a 128-bit vector from four 32-bit integer values. Arguments must be compile-time constants. */ declare function i32x4(a: i32, b: i32, c: i32, d: i32): v128; @@ -1023,10 +1031,6 @@ declare namespace i32x4 { export function extend_high_i16x8_s(a: v128): v128; /** Extends the high 16-bit unsigned integer lanes to 32-bit unsigned integer lanes. */ export function extend_high_i16x8_u(a: v128): v128; - /** Creates a vector with four 32-bit integer lanes by loading and sign extending four 16-bit integers. */ - export function load16x4_s(ptr: usize, immOffset?: u32, immAlign?: u32): v128; - /** Creates a vector with four 32-bit integer lanes by loading and zero extending four 16-bit integers. */ - export function load16x4_u(ptr: usize, immOffset?: u32, immAlign?: u32): v128; } /** Initializes a 128-bit vector from two 64-bit integer values. Arguments must be compile-time constants. */ declare function i64x2(a: i64, b: i64): v128; @@ -1063,10 +1067,6 @@ declare namespace i64x2 { export function extend_high_i32x4_s(a: v128): v128; /** Extends the high 32-bit unsigned integer lanes to 64-bit unsigned integer lanes. */ export function extend_high_i32x4_u(a: v128): v128; - /** Creates a vector with two 64-bit integer lanes by loading and sign extending two 32-bit integers. */ - export function load32x2_s(ptr: usize, immOffset?: u32, immAlign?: u32): v128; - /** Creates a vector with two 64-bit integer lanes by loading and zero extending two 32-bit integers. */ - export function load32x2_u(ptr: usize, immOffset?: u32, immAlign?: u32): v128; } /** Initializes a 128-bit vector from four 32-bit float values. Arguments must be compile-time constants. */ declare function f32x4(a: f32, b: f32, c: f32, d: f32): v128; diff --git a/tests/compiler/features/simd.optimized.wat b/tests/compiler/features/simd.optimized.wat index 9bb7fd2c29..aeb2fd2d9e 100644 --- a/tests/compiler/features/simd.optimized.wat +++ b/tests/compiler/features/simd.optimized.wat @@ -1,9 +1,11 @@ (module (type $none_=>_none (func)) (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) (data (i32.const 1036) "<") @@ -641,18 +643,86 @@ i32.const 17616 global.set $~lib/rt/tlsf/ROOT ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + i32.const 31 + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + local.get $1 + local.get $1 + i32.const 536870910 + i32.lt_u + select + local.tee $1 + i32.clz + i32.sub + local.set $2 + local.get $1 + local.get $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + i32.const 0 + local.get $2 + i32.const 23 + i32.lt_u + select + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add i32.load offset=4 - i32.const -16 + i32.const -1 + local.get $1 + i32.shl i32.and - local.tee $2 + local.tee $1 if (result i32) local.get $0 - local.get $2 + local.get $1 i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add i32.const 2 i32.shl i32.add @@ -660,7 +730,11 @@ else local.get $0 i32.load - i32.const -2 + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl i32.and local.tee $1 if (result i32) @@ -698,18 +772,42 @@ end end ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) + (local $4 i32) + local.get $1 + i32.const 1073741820 + i32.ge_u + if + i32.const 1120 + i32.const 1056 + i32.const 462 + i32.const 30 + call $~lib/builtins/abort + unreachable + end local.get $0 + i32.const 12 + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.get $1 + i32.const 12 + i32.le_u + select + local.tee $2 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz if i32.const 4 memory.size - local.tee $2 + local.tee $1 i32.const 16 i32.shl i32.const 4 @@ -718,24 +816,40 @@ i32.load offset=1568 i32.ne i32.shl - i32.const 65614 + local.get $2 + i32.const 1 + i32.const 27 + local.get $2 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + i32.add + local.get $2 + local.get $2 + i32.const 536870910 + i32.lt_u + select + i32.add + i32.const 65535 i32.add i32.const -65536 i32.and i32.const 16 i32.shr_u - local.set $1 - local.get $2 + local.set $3 local.get $1 + local.get $3 local.get $1 - local.get $2 - i32.lt_s + local.get $3 + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $1 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -744,7 +858,7 @@ end end local.get $0 - local.get $2 + local.get $1 i32.const 16 i32.shl memory.size @@ -752,6 +866,7 @@ i32.shl call $~lib/rt/tlsf/addMemory local.get $0 + local.get $2 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz @@ -764,12 +879,12 @@ unreachable end end + local.get $2 local.get $1 i32.load i32.const -4 i32.and - i32.const 76 - i32.lt_u + i32.gt_u if i32.const 0 i32.const 1056 @@ -783,27 +898,43 @@ call $~lib/rt/tlsf/removeBlock local.get $1 i32.load - local.tee $2 + local.set $3 + local.get $2 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1056 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 i32.const -4 i32.and - i32.const 76 + local.get $2 i32.sub - local.tee $3 + local.tee $4 i32.const 16 i32.ge_u if local.get $1 local.get $2 + local.get $3 i32.const 2 i32.and - i32.const 76 i32.or i32.store + local.get $2 local.get $1 - i32.const 80 + i32.const 4 + i32.add i32.add local.tee $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.const 1 @@ -814,7 +945,7 @@ call $~lib/rt/tlsf/insertBlock else local.get $1 - local.get $2 + local.get $3 i32.const -2 i32.and i32.store @@ -840,70 +971,221 @@ end local.get $1 ) - (func $~start - (local $0 i32) - (local $1 i32) - (local $2 i32) + (func $~lib/rt/tlsf/__alloc (param $0 i32) (result i32) global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT + local.get $0 call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add + ) + (func $~lib/rt/tlsf/__free (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.const 17612 + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.const 15 + i32.and + i32.eqz + i32.const 0 + local.get $0 + select + if (result i32) + local.get $1 + i32.load + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1056 + i32.const 565 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $1 + i32.load + i32.const 1 + i32.or + i32.store + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $start:features/simd + (local $0 i32) + i32.const 64 + call $~lib/rt/tlsf/__alloc local.tee $0 local.get $0 v128.load offset=16 v128.store offset=32 local.get $0 - i32.const 17612 - i32.ge_u + call $~lib/rt/tlsf/__free + i32.const 16 + call $~lib/rt/tlsf/__alloc + local.tee $0 + i32.const 1 + i32.store8 + local.get $0 + i32.const 2 + i32.store8 offset=1 + local.get $0 + i32.const 3 + i32.store8 offset=2 + local.get $0 + i32.const 4 + i32.store8 offset=3 + local.get $0 + i32.const 5 + i32.store8 offset=4 + local.get $0 + i32.const 6 + i32.store8 offset=5 + local.get $0 + i32.const 7 + i32.store8 offset=6 + local.get $0 + i32.const 255 + i32.store8 offset=7 + local.get $0 + i16x8.load8x8_s align=1 + v128.const i32x4 0x00020001 0x00040003 0x00060005 0xffff0007 + i8x16.eq + i8x16.all_true + i32.eqz if - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - i32.const 4 - i32.sub - local.set $1 - local.get $0 - i32.const 15 - i32.and - i32.eqz i32.const 0 - local.get $0 - select - if (result i32) - local.get $1 - i32.load - i32.const 1 - i32.and - i32.eqz - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 1056 - i32.const 565 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $1 - i32.load - i32.const 1 - i32.or - i32.store - local.get $1 - call $~lib/rt/tlsf/insertBlock + i32.const 1184 + i32.const 299 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i16x8.load8x8_u align=1 + v128.const i32x4 0x00020001 0x00040003 0x00060005 0x00ff0007 + i8x16.eq + i8x16.all_true + i32.eqz + if + i32.const 0 + i32.const 1184 + i32.const 304 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/tlsf/__free + i32.const 16 + call $~lib/rt/tlsf/__alloc + local.tee $0 + i32.const 1 + i32.store16 + local.get $0 + i32.const 2 + i32.store16 offset=2 + local.get $0 + i32.const 3 + i32.store16 offset=4 + local.get $0 + i32.const 65535 + i32.store16 offset=6 + local.get $0 + i32x4.load16x4_s align=2 + v128.const i32x4 0x00000001 0x00000002 0x00000003 0xffffffff + i8x16.eq + i8x16.all_true + i32.eqz + if + i32.const 0 + i32.const 1184 + i32.const 418 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32x4.load16x4_u align=2 + v128.const i32x4 0x00000001 0x00000002 0x00000003 0x0000ffff + i8x16.eq + i8x16.all_true + i32.eqz + if + i32.const 0 + i32.const 1184 + i32.const 423 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/tlsf/__free + i32.const 16 + call $~lib/rt/tlsf/__alloc + local.tee $0 + i32.const 1 + i32.store + local.get $0 + i32.const -1 + i32.store offset=4 + local.get $0 + i64x2.load32x2_s align=4 + v128.const i32x4 0x00000001 0x00000000 0xffffffff 0xffffffff + i8x16.eq + i8x16.all_true + i32.eqz + if + i32.const 0 + i32.const 1184 + i32.const 474 + i32.const 5 + call $~lib/builtins/abort + unreachable end + local.get $0 + i64x2.load32x2_u align=4 + v128.const i32x4 0x00000001 0x00000000 0xffffffff 0x00000000 + i8x16.eq + i8x16.all_true + i32.eqz + if + i32.const 0 + i32.const 1184 + i32.const 479 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/tlsf/__free + ) + (func $~start + call $start:features/simd ) ) diff --git a/tests/compiler/features/simd.ts b/tests/compiler/features/simd.ts index ff6a61d136..e5e7e6a43d 100644 --- a/tests/compiler/features/simd.ts +++ b/tests/compiler/features/simd.ts @@ -286,29 +286,28 @@ function test_i16x8(): void { assert(i16x8.extend_low_i8x16_u(i8x16.replace_lane(i8x16.splat(-1), 8, 0)) == i16x8.splat(255)); assert(i16x8.extend_high_i8x16_s(i8x16.replace_lane(i8x16.splat(-1), 0, 0)) == i16x8.splat(-1)); assert(i16x8.extend_high_i8x16_u(i8x16.replace_lane(i8x16.splat(-1), 0, 0)) == i16x8.splat(255)); - // TODO: not yet implemented in binaryen/src/wasm-interpreter.h - // { - // let ptr = __alloc(16, 0); - // store(ptr, 1); - // store(ptr, 2, 1); - // store(ptr, 3, 2); - // store(ptr, 4, 3); - // store(ptr, 5, 4); - // store(ptr, 6, 5); - // store(ptr, 7, 6); - // store(ptr, -1, 7); - // assert( - // i16x8.load8x8_s(ptr) - // == - // v128(1, 0, 2, 0, 3, 0, 4, 0, 5, 0, 6, 0, 7, 0, -1, -1) - // ); - // assert( - // i16x8.load8x8_u(ptr) - // == - // v128(1, 0, 2, 0, 3, 0, 4, 0, 5, 0, 6, 0, 7, 0, -1, 0) - // ); - // __free(ptr); - // } + { + let ptr = __alloc(16); + store(ptr, 1); + store(ptr, 2, 1); + store(ptr, 3, 2); + store(ptr, 4, 3); + store(ptr, 5, 4); + store(ptr, 6, 5); + store(ptr, 7, 6); + store(ptr, -1, 7); + assert( + v128.load8x8_s(ptr) + == + v128(1, 0, 2, 0, 3, 0, 4, 0, 5, 0, 6, 0, 7, 0, -1, -1) + ); + assert( + v128.load8x8_u(ptr) + == + v128(1, 0, 2, 0, 3, 0, 4, 0, 5, 0, 6, 0, 7, 0, -1, 0) + ); + __free(ptr); + } } function test_i32x4(): void { @@ -410,25 +409,24 @@ function test_i32x4(): void { assert(i32x4.extend_low_i16x8_u(i16x8.replace_lane(i16x8.splat(-1), 4, 0)) == i32x4.splat(65535)); assert(i32x4.extend_high_i16x8_s(i16x8.replace_lane(i16x8.splat(-1), 0, 0)) == i32x4.splat(-1)); assert(i32x4.extend_high_i16x8_u(i16x8.replace_lane(i16x8.splat(-1), 0, 0)) == i32x4.splat(65535)); - // TODO: not yet implemented in binaryen/src/wasm-interpreter.h - // { - // let ptr = __alloc(16, 0); - // store(ptr, 1); - // store(ptr, 2, 2); - // store(ptr, 3, 4); - // store(ptr, -1, 6); - // assert( - // i32x4.load16x4_s(ptr) - // == - // v128(1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, -1, -1, -1, -1) - // ); - // assert( - // i32x4.load16x4_u(ptr) - // == - // v128(1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, -1, -1, 0, 0) - // ); - // __free(ptr); - // } + { + let ptr = __alloc(16); + store(ptr, 1); + store(ptr, 2, 2); + store(ptr, 3, 4); + store(ptr, -1, 6); + assert( + v128.load16x4_s(ptr) + == + v128(1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, -1, -1, -1, -1) + ); + assert( + v128.load16x4_u(ptr) + == + v128(1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, -1, -1, 0, 0) + ); + __free(ptr); + } } function test_i64x2(): void { @@ -469,23 +467,22 @@ function test_i64x2(): void { == i64x2.splat(0) ); - // TODO: not yet implemented in binaryen/src/wasm-interpreter.h - // { - // let ptr = __alloc(16, 0); - // store(ptr, 1); - // store(ptr, -1, 4); - // assert( - // i64x2.load32x2_s(ptr) - // == - // v128(1, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1) - // ); - // assert( - // i64x2.load32x2_u(ptr) - // == - // v128(1, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, 0, 0, 0, 0) - // ); - // __free(ptr); - // } + { + let ptr = __alloc(16); + store(ptr, 1); + store(ptr, -1, 4); + assert( + v128.load32x2_s(ptr) + == + v128(1, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1) + ); + assert( + v128.load32x2_u(ptr) + == + v128(1, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, 0, 0, 0, 0) + ); + __free(ptr); + } } function test_f32x4(): void { diff --git a/tests/compiler/features/simd.untouched.wat b/tests/compiler/features/simd.untouched.wat index 63cd14523f..dddcb18dc4 100644 --- a/tests/compiler/features/simd.untouched.wat +++ b/tests/compiler/features/simd.untouched.wat @@ -2103,6 +2103,7 @@ (local $4 v128) (local $5 v128) (local $6 v128) + (local $7 i32) v128.const i32x4 0x00020001 0x00040003 0x00060005 0x7fff0007 local.set $0 local.get $0 @@ -2684,6 +2685,67 @@ i32.const 0 i32.ne drop + i32.const 16 + call $~lib/rt/tlsf/__alloc + local.set $7 + local.get $7 + i32.const 1 + i32.store8 + local.get $7 + i32.const 2 + i32.store8 offset=1 + local.get $7 + i32.const 3 + i32.store8 offset=2 + local.get $7 + i32.const 4 + i32.store8 offset=3 + local.get $7 + i32.const 5 + i32.store8 offset=4 + local.get $7 + i32.const 6 + i32.store8 offset=5 + local.get $7 + i32.const 7 + i32.store8 offset=6 + local.get $7 + i32.const -1 + i32.store8 offset=7 + local.get $7 + i16x8.load8x8_s align=1 + v128.const i32x4 0x00020001 0x00040003 0x00060005 0xffff0007 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 160 + i32.const 299 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $7 + i16x8.load8x8_u align=1 + v128.const i32x4 0x00020001 0x00040003 0x00060005 0x00ff0007 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 160 + i32.const 304 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $7 + call $~lib/rt/tlsf/__free ) (func $features/simd/test_i32x4 (local $0 v128) @@ -2693,6 +2755,7 @@ (local $4 v128) (local $5 v128) (local $6 v128) + (local $7 i32) v128.const i32x4 0x00000001 0x00000002 0x00000003 0x7fffffff local.set $0 local.get $0 @@ -2705,7 +2768,7 @@ if i32.const 0 i32.const 160 - i32.const 316 + i32.const 315 i32.const 3 call $~lib/builtins/abort unreachable @@ -2723,7 +2786,7 @@ if i32.const 0 i32.const 160 - i32.const 318 + i32.const 317 i32.const 3 call $~lib/builtins/abort unreachable @@ -2742,7 +2805,7 @@ if i32.const 0 i32.const 160 - i32.const 320 + i32.const 319 i32.const 3 call $~lib/builtins/abort unreachable @@ -2759,7 +2822,7 @@ if i32.const 0 i32.const 160 - i32.const 321 + i32.const 320 i32.const 3 call $~lib/builtins/abort unreachable @@ -2776,7 +2839,7 @@ if i32.const 0 i32.const 160 - i32.const 322 + i32.const 321 i32.const 3 call $~lib/builtins/abort unreachable @@ -2837,7 +2900,7 @@ if i32.const 0 i32.const 160 - i32.const 363 + i32.const 362 i32.const 3 call $~lib/builtins/abort unreachable @@ -2850,7 +2913,7 @@ if i32.const 0 i32.const 160 - i32.const 368 + i32.const 367 i32.const 3 call $~lib/builtins/abort unreachable @@ -2863,7 +2926,7 @@ if i32.const 0 i32.const 160 - i32.const 369 + i32.const 368 i32.const 3 call $~lib/builtins/abort unreachable @@ -2880,7 +2943,7 @@ if i32.const 0 i32.const 160 - i32.const 370 + i32.const 369 i32.const 3 call $~lib/builtins/abort unreachable @@ -2897,7 +2960,7 @@ if i32.const 0 i32.const 160 - i32.const 375 + i32.const 374 i32.const 3 call $~lib/builtins/abort unreachable @@ -2977,7 +3040,7 @@ if i32.const 0 i32.const 160 - i32.const 389 + i32.const 388 i32.const 3 call $~lib/builtins/abort unreachable @@ -2994,7 +3057,7 @@ if i32.const 0 i32.const 160 - i32.const 390 + i32.const 389 i32.const 3 call $~lib/builtins/abort unreachable @@ -3011,7 +3074,7 @@ if i32.const 0 i32.const 160 - i32.const 391 + i32.const 390 i32.const 3 call $~lib/builtins/abort unreachable @@ -3028,7 +3091,7 @@ if i32.const 0 i32.const 160 - i32.const 392 + i32.const 391 i32.const 3 call $~lib/builtins/abort unreachable @@ -3045,7 +3108,7 @@ if i32.const 0 i32.const 160 - i32.const 393 + i32.const 392 i32.const 3 call $~lib/builtins/abort unreachable @@ -3062,7 +3125,7 @@ if i32.const 0 i32.const 160 - i32.const 394 + i32.const 393 i32.const 3 call $~lib/builtins/abort unreachable @@ -3079,7 +3142,7 @@ if i32.const 0 i32.const 160 - i32.const 395 + i32.const 394 i32.const 3 call $~lib/builtins/abort unreachable @@ -3096,7 +3159,7 @@ if i32.const 0 i32.const 160 - i32.const 396 + i32.const 395 i32.const 3 call $~lib/builtins/abort unreachable @@ -3113,7 +3176,7 @@ if i32.const 0 i32.const 160 - i32.const 397 + i32.const 396 i32.const 3 call $~lib/builtins/abort unreachable @@ -3130,7 +3193,7 @@ if i32.const 0 i32.const 160 - i32.const 398 + i32.const 397 i32.const 3 call $~lib/builtins/abort unreachable @@ -3203,11 +3266,61 @@ i32.const 0 i32.ne drop + i32.const 16 + call $~lib/rt/tlsf/__alloc + local.set $7 + local.get $7 + i32.const 1 + i32.store16 + local.get $7 + i32.const 2 + i32.store16 offset=2 + local.get $7 + i32.const 3 + i32.store16 offset=4 + local.get $7 + i32.const -1 + i32.store16 offset=6 + local.get $7 + i32x4.load16x4_s align=2 + v128.const i32x4 0x00000001 0x00000002 0x00000003 0xffffffff + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 160 + i32.const 418 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $7 + i32x4.load16x4_u align=2 + v128.const i32x4 0x00000001 0x00000002 0x00000003 0x0000ffff + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 160 + i32.const 423 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $7 + call $~lib/rt/tlsf/__free ) (func $features/simd/test_i64x2 (local $0 v128) (local $1 v128) (local $2 v128) + (local $3 i32) v128.const i32x4 0x00000001 0x00000000 0xffffffff 0x7fffffff local.set $0 local.get $0 @@ -3220,7 +3333,7 @@ if i32.const 0 i32.const 160 - i32.const 436 + i32.const 434 i32.const 3 call $~lib/builtins/abort unreachable @@ -3238,7 +3351,7 @@ if i32.const 0 i32.const 160 - i32.const 438 + i32.const 436 i32.const 3 call $~lib/builtins/abort unreachable @@ -3257,7 +3370,7 @@ if i32.const 0 i32.const 160 - i32.const 440 + i32.const 438 i32.const 3 call $~lib/builtins/abort unreachable @@ -3274,7 +3387,7 @@ if i32.const 0 i32.const 160 - i32.const 441 + i32.const 439 i32.const 3 call $~lib/builtins/abort unreachable @@ -3290,7 +3403,7 @@ if i32.const 0 i32.const 160 - i32.const 442 + i32.const 440 i32.const 3 call $~lib/builtins/abort unreachable @@ -3303,7 +3416,7 @@ if i32.const 0 i32.const 160 - i32.const 447 + i32.const 445 i32.const 3 call $~lib/builtins/abort unreachable @@ -3316,7 +3429,7 @@ if i32.const 0 i32.const 160 - i32.const 448 + i32.const 446 i32.const 3 call $~lib/builtins/abort unreachable @@ -3333,7 +3446,7 @@ if i32.const 0 i32.const 160 - i32.const 449 + i32.const 447 i32.const 3 call $~lib/builtins/abort unreachable @@ -3350,7 +3463,7 @@ if i32.const 0 i32.const 160 - i32.const 454 + i32.const 452 i32.const 3 call $~lib/builtins/abort unreachable @@ -3408,6 +3521,49 @@ i32.const 0 i32.ne drop + i32.const 16 + call $~lib/rt/tlsf/__alloc + local.set $3 + local.get $3 + i32.const 1 + i32.store + local.get $3 + i32.const -1 + i32.store offset=4 + local.get $3 + i64x2.load32x2_s align=4 + v128.const i32x4 0x00000001 0x00000000 0xffffffff 0xffffffff + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 160 + i32.const 474 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i64x2.load32x2_u align=4 + v128.const i32x4 0x00000001 0x00000000 0xffffffff 0x00000000 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 160 + i32.const 479 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $3 + call $~lib/rt/tlsf/__free ) (func $features/simd/test_f32x4 (local $0 v128) @@ -3430,7 +3586,7 @@ if i32.const 0 i32.const 160 - i32.const 493 + i32.const 490 i32.const 3 call $~lib/builtins/abort unreachable @@ -3448,7 +3604,7 @@ if i32.const 0 i32.const 160 - i32.const 495 + i32.const 492 i32.const 3 call $~lib/builtins/abort unreachable @@ -3467,7 +3623,7 @@ if i32.const 0 i32.const 160 - i32.const 497 + i32.const 494 i32.const 3 call $~lib/builtins/abort unreachable @@ -3484,7 +3640,7 @@ if i32.const 0 i32.const 160 - i32.const 498 + i32.const 495 i32.const 3 call $~lib/builtins/abort unreachable @@ -3501,7 +3657,7 @@ if i32.const 0 i32.const 160 - i32.const 499 + i32.const 496 i32.const 3 call $~lib/builtins/abort unreachable @@ -3522,7 +3678,7 @@ if i32.const 0 i32.const 160 - i32.const 501 + i32.const 498 i32.const 3 call $~lib/builtins/abort unreachable @@ -3539,7 +3695,7 @@ if i32.const 0 i32.const 160 - i32.const 502 + i32.const 499 i32.const 3 call $~lib/builtins/abort unreachable @@ -3555,7 +3711,7 @@ if i32.const 0 i32.const 160 - i32.const 503 + i32.const 500 i32.const 3 call $~lib/builtins/abort unreachable @@ -3568,7 +3724,7 @@ if i32.const 0 i32.const 160 - i32.const 504 + i32.const 501 i32.const 3 call $~lib/builtins/abort unreachable @@ -3581,7 +3737,7 @@ if i32.const 0 i32.const 160 - i32.const 505 + i32.const 502 i32.const 3 call $~lib/builtins/abort unreachable @@ -3598,7 +3754,7 @@ if i32.const 0 i32.const 160 - i32.const 506 + i32.const 503 i32.const 3 call $~lib/builtins/abort unreachable @@ -3615,7 +3771,7 @@ if i32.const 0 i32.const 160 - i32.const 511 + i32.const 508 i32.const 3 call $~lib/builtins/abort unreachable @@ -3646,7 +3802,7 @@ if i32.const 0 i32.const 160 - i32.const 520 + i32.const 517 i32.const 3 call $~lib/builtins/abort unreachable @@ -3663,7 +3819,7 @@ if i32.const 0 i32.const 160 - i32.const 521 + i32.const 518 i32.const 3 call $~lib/builtins/abort unreachable @@ -3680,7 +3836,7 @@ if i32.const 0 i32.const 160 - i32.const 522 + i32.const 519 i32.const 3 call $~lib/builtins/abort unreachable @@ -3697,7 +3853,7 @@ if i32.const 0 i32.const 160 - i32.const 523 + i32.const 520 i32.const 3 call $~lib/builtins/abort unreachable @@ -3714,7 +3870,7 @@ if i32.const 0 i32.const 160 - i32.const 524 + i32.const 521 i32.const 3 call $~lib/builtins/abort unreachable @@ -3731,7 +3887,7 @@ if i32.const 0 i32.const 160 - i32.const 525 + i32.const 522 i32.const 3 call $~lib/builtins/abort unreachable @@ -3748,7 +3904,7 @@ if i32.const 0 i32.const 160 - i32.const 526 + i32.const 523 i32.const 3 call $~lib/builtins/abort unreachable @@ -3765,7 +3921,7 @@ if i32.const 0 i32.const 160 - i32.const 527 + i32.const 524 i32.const 3 call $~lib/builtins/abort unreachable @@ -3781,7 +3937,7 @@ if i32.const 0 i32.const 160 - i32.const 528 + i32.const 525 i32.const 3 call $~lib/builtins/abort unreachable @@ -3836,7 +3992,7 @@ if i32.const 0 i32.const 160 - i32.const 555 + i32.const 552 i32.const 3 call $~lib/builtins/abort unreachable @@ -3854,7 +4010,7 @@ if i32.const 0 i32.const 160 - i32.const 557 + i32.const 554 i32.const 3 call $~lib/builtins/abort unreachable @@ -3873,7 +4029,7 @@ if i32.const 0 i32.const 160 - i32.const 559 + i32.const 556 i32.const 3 call $~lib/builtins/abort unreachable @@ -3890,7 +4046,7 @@ if i32.const 0 i32.const 160 - i32.const 560 + i32.const 557 i32.const 3 call $~lib/builtins/abort unreachable @@ -3907,7 +4063,7 @@ if i32.const 0 i32.const 160 - i32.const 561 + i32.const 558 i32.const 3 call $~lib/builtins/abort unreachable @@ -3928,7 +4084,7 @@ if i32.const 0 i32.const 160 - i32.const 563 + i32.const 560 i32.const 3 call $~lib/builtins/abort unreachable @@ -3945,7 +4101,7 @@ if i32.const 0 i32.const 160 - i32.const 564 + i32.const 561 i32.const 3 call $~lib/builtins/abort unreachable @@ -3961,7 +4117,7 @@ if i32.const 0 i32.const 160 - i32.const 565 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -3974,7 +4130,7 @@ if i32.const 0 i32.const 160 - i32.const 566 + i32.const 563 i32.const 3 call $~lib/builtins/abort unreachable @@ -3987,7 +4143,7 @@ if i32.const 0 i32.const 160 - i32.const 567 + i32.const 564 i32.const 3 call $~lib/builtins/abort unreachable @@ -4004,7 +4160,7 @@ if i32.const 0 i32.const 160 - i32.const 568 + i32.const 565 i32.const 3 call $~lib/builtins/abort unreachable @@ -4021,7 +4177,7 @@ if i32.const 0 i32.const 160 - i32.const 573 + i32.const 570 i32.const 3 call $~lib/builtins/abort unreachable @@ -4052,7 +4208,7 @@ if i32.const 0 i32.const 160 - i32.const 582 + i32.const 579 i32.const 3 call $~lib/builtins/abort unreachable @@ -4069,7 +4225,7 @@ if i32.const 0 i32.const 160 - i32.const 583 + i32.const 580 i32.const 3 call $~lib/builtins/abort unreachable @@ -4086,7 +4242,7 @@ if i32.const 0 i32.const 160 - i32.const 584 + i32.const 581 i32.const 3 call $~lib/builtins/abort unreachable @@ -4103,7 +4259,7 @@ if i32.const 0 i32.const 160 - i32.const 585 + i32.const 582 i32.const 3 call $~lib/builtins/abort unreachable @@ -4120,7 +4276,7 @@ if i32.const 0 i32.const 160 - i32.const 586 + i32.const 583 i32.const 3 call $~lib/builtins/abort unreachable @@ -4137,7 +4293,7 @@ if i32.const 0 i32.const 160 - i32.const 587 + i32.const 584 i32.const 3 call $~lib/builtins/abort unreachable @@ -4154,7 +4310,7 @@ if i32.const 0 i32.const 160 - i32.const 588 + i32.const 585 i32.const 3 call $~lib/builtins/abort unreachable @@ -4171,7 +4327,7 @@ if i32.const 0 i32.const 160 - i32.const 589 + i32.const 586 i32.const 3 call $~lib/builtins/abort unreachable @@ -4187,7 +4343,7 @@ if i32.const 0 i32.const 160 - i32.const 590 + i32.const 587 i32.const 3 call $~lib/builtins/abort unreachable @@ -4241,7 +4397,7 @@ if i32.const 0 i32.const 160 - i32.const 618 + i32.const 615 i32.const 3 call $~lib/builtins/abort unreachable @@ -4260,7 +4416,7 @@ if i32.const 0 i32.const 160 - i32.const 624 + i32.const 621 i32.const 3 call $~lib/builtins/abort unreachable From 8ca869fde0e0ac4c1e1400c103dc98dc0131fda5 Mon Sep 17 00:00:00 2001 From: dcode Date: Thu, 25 Feb 2021 20:00:01 +0100 Subject: [PATCH 06/24] rename SIMD load splat instructions --- src/builtins.ts | 80 ++--- std/assembly/builtins.ts | 51 ++- std/assembly/index.d.ts | 30 +- tests/compiler/features/simd.optimized.wat | 123 ++++++- tests/compiler/features/simd.ts | 106 +++--- tests/compiler/features/simd.untouched.wat | 375 +++++++++++++-------- 6 files changed, 481 insertions(+), 284 deletions(-) diff --git a/src/builtins.ts b/src/builtins.ts index bba0345002..4bacccf4f6 100644 --- a/src/builtins.ts +++ b/src/builtins.ts @@ -360,6 +360,10 @@ export namespace BuiltinNames { export const v128_load16x4_u = "~lib/builtins/v128.load16x4_u"; export const v128_load32x2_s = "~lib/builtins/v128.load32x2_s"; export const v128_load32x2_u = "~lib/builtins/v128.load32x2_u"; + export const v128_load8_splat = "~lib/builtins/v128.load8_splat"; + export const v128_load16_splat = "~lib/builtins/v128.load16_splat"; + export const v128_load32_splat = "~lib/builtins/v128.load32_splat"; + export const v128_load64_splat = "~lib/builtins/v128.load64_splat"; export const v128_store = "~lib/builtins/v128.store"; export const v128_add = "~lib/builtins/v128.add"; export const v128_sub = "~lib/builtins/v128.sub"; @@ -602,10 +606,6 @@ export namespace BuiltinNames { export const v8x16_shuffle = "~lib/builtins/v8x16.shuffle"; export const v8x16_swizzle = "~lib/builtins/v8x16.swizzle"; - export const v8x16_load_splat = "~lib/builtins/v8x16.load_splat"; - export const v16x8_load_splat = "~lib/builtins/v16x8.load_splat"; - export const v32x4_load_splat = "~lib/builtins/v32x4.load_splat"; - export const v64x2_load_splat = "~lib/builtins/v64x2.load_splat"; // internals export const data_end = "~lib/memory/__data_end"; @@ -6980,6 +6980,42 @@ function builtin_v128_load32x2_u(ctx: BuiltinContext): ExpressionRef { } builtins.set(BuiltinNames.v128_load32x2_u, builtin_v128_load32x2_u); +// v128.load8_splat -> v128.load_splat +function builtin_v128_load8_splat(ctx: BuiltinContext): ExpressionRef { + checkTypeAbsent(ctx); + ctx.typeArguments = [ Type.u8 ]; + ctx.contextualType = Type.v128; + return builtin_v128_load_splat(ctx); +} +builtins.set(BuiltinNames.v128_load8_splat, builtin_v128_load8_splat); + +// v128.load16_splat -> v128.load_splat +function builtin_v128_load16_splat(ctx: BuiltinContext): ExpressionRef { + checkTypeAbsent(ctx); + ctx.typeArguments = [ Type.u16 ]; + ctx.contextualType = Type.v128; + return builtin_v128_load_splat(ctx); +} +builtins.set(BuiltinNames.v128_load16_splat, builtin_v128_load16_splat); + +// v128.load32_splat -> v128.load_splat +function builtin_v128_load32_splat(ctx: BuiltinContext): ExpressionRef { + checkTypeAbsent(ctx); + ctx.typeArguments = [ Type.u32 ]; + ctx.contextualType = Type.v128; + return builtin_v128_load_splat(ctx); +} +builtins.set(BuiltinNames.v128_load32_splat, builtin_v128_load32_splat); + +// v128.load64_splat -> v128.load_splat +function builtin_v128_load64_splat(ctx: BuiltinContext): ExpressionRef { + checkTypeAbsent(ctx); + ctx.typeArguments = [ Type.u64 ]; + ctx.contextualType = Type.v128; + return builtin_v128_load_splat(ctx); +} +builtins.set(BuiltinNames.v128_load64_splat, builtin_v128_load64_splat); + // v128.store -> store function builtin_v128_store(ctx: BuiltinContext): ExpressionRef { checkTypeAbsent(ctx); @@ -8646,42 +8682,6 @@ function builtin_v8x16_swizzle(ctx: BuiltinContext): ExpressionRef { } builtins.set(BuiltinNames.v8x16_swizzle, builtin_v8x16_swizzle); -// v8x16.load_splat -> v128.load_splat -function builtin_v8x16_load_splat(ctx: BuiltinContext): ExpressionRef { - checkTypeAbsent(ctx); - ctx.typeArguments = [ Type.u8 ]; - ctx.contextualType = Type.v128; - return builtin_v128_load_splat(ctx); -} -builtins.set(BuiltinNames.v8x16_load_splat, builtin_v8x16_load_splat); - -// v16x8.load_splat -> v128.load_splat -function builtin_v16x8_load_splat(ctx: BuiltinContext): ExpressionRef { - checkTypeAbsent(ctx); - ctx.typeArguments = [ Type.u16 ]; - ctx.contextualType = Type.v128; - return builtin_v128_load_splat(ctx); -} -builtins.set(BuiltinNames.v16x8_load_splat, builtin_v16x8_load_splat); - -// v32x4.load_splat -> v128.load_splat -function builtin_v32x4_load_splat(ctx: BuiltinContext): ExpressionRef { - checkTypeAbsent(ctx); - ctx.typeArguments = [ Type.u32 ]; - ctx.contextualType = Type.v128; - return builtin_v128_load_splat(ctx); -} -builtins.set(BuiltinNames.v32x4_load_splat, builtin_v32x4_load_splat); - -// v64x2.load_splat -> v128.load_splat -function builtin_v64x2_load_splat(ctx: BuiltinContext): ExpressionRef { - checkTypeAbsent(ctx); - ctx.typeArguments = [ Type.u64 ]; - ctx.contextualType = Type.v128; - return builtin_v128_load_splat(ctx); -} -builtins.set(BuiltinNames.v64x2_load_splat, builtin_v64x2_load_splat); - // === Internal helpers ======================================================================= /** Compiles the `visit_globals` function. */ diff --git a/std/assembly/builtins.ts b/std/assembly/builtins.ts index 25685931c1..30fb096458 100644 --- a/std/assembly/builtins.ts +++ b/std/assembly/builtins.ts @@ -1117,16 +1117,12 @@ export namespace v128 { // @ts-ignore: decorator @unsafe @builtin - export declare function load_splat(ptr: usize, immOffset?: usize, immAlign?: usize): v128; + export declare function load(ptr: usize, immOffset?: usize, immAlign?: usize): v128; // @ts-ignore: decorator @unsafe @builtin export declare function load_ext(ptr: usize, immOffset?: usize, immAlign?: usize): v128; - // @ts-ignore: decorator - @unsafe @builtin - export declare function load(ptr: usize, immOffset?: usize, immAlign?: usize): v128; - // @ts-ignore: decorator @builtin export declare function load8x8_s(ptr: usize, immOffset?: u32, immAlign?: u32): v128; @@ -1151,6 +1147,26 @@ export namespace v128 { @builtin export declare function load32x2_u(ptr: usize, immOffset?: u32, immAlign?: u32): v128; + // @ts-ignore: decorator + @unsafe @builtin + export declare function load_splat(ptr: usize, immOffset?: usize, immAlign?: usize): v128; + + // @ts-ignore: decorator + @unsafe @builtin + export declare function load8_splat(ptr: usize, immOffset?: u32, immAlign?: u32): v128; + + // @ts-ignore: decorator + @unsafe @builtin + export declare function load16_splat(ptr: usize, immOffset?: u32, immAlign?: u32): v128; + + // @ts-ignore: decorator + @unsafe @builtin + export declare function load32_splat(ptr: usize, immOffset?: u32, immAlign?: u32): v128; + + // @ts-ignore: decorator + @unsafe @builtin + export declare function load64_splat(ptr: usize, immOffset?: u32, immAlign?: u32): v128; + // @ts-ignore: decorator @unsafe @builtin export declare function store(ptr: usize, value: v128, immOffset?: usize, immAlign?: usize): void; @@ -2118,31 +2134,6 @@ export namespace v8x16 { // @ts-ignore: decorator @builtin export declare function swizzle(a: v128, s: v128): v128; - - // @ts-ignore: decorator - @unsafe @builtin - export declare function load_splat(ptr: usize, immOffset?: u32, immAlign?: u32): v128; -} - -export namespace v16x8 { - - // @ts-ignore: decorator - @unsafe @builtin - export declare function load_splat(ptr: usize, immOffset?: u32, immAlign?: u32): v128; -} - -export namespace v32x4 { - - // @ts-ignore: decorator - @unsafe @builtin - export declare function load_splat(ptr: usize, immOffset?: u32, immAlign?: u32): v128; -} - -export namespace v64x2 { - - // @ts-ignore: decorator - @unsafe @builtin - export declare function load_splat(ptr: usize, immOffset?: u32, immAlign?: u32): v128; } /* eslint-disable @typescript-eslint/no-unused-vars */ diff --git a/std/assembly/index.d.ts b/std/assembly/index.d.ts index e4a817e133..2a46b142a0 100644 --- a/std/assembly/index.d.ts +++ b/std/assembly/index.d.ts @@ -691,12 +691,10 @@ declare namespace v128 { export function shuffle(a: v128, b: v128, ...lanes: u8[]): v128; /** Selects 8-bit lanes from the first vector according to the indexes [0-15] specified by the 8-bit lanes of the second vector. */ export function swizzle(a: v128, s: v128): v128; - /** Creates a vector with identical lanes by loading the splatted value. */ - export function load_splat(ptr: usize, immOffset?: usize, immAlign?: usize): v128; - /** Creates a vector by loading the lanes of the specified type and extending each to the next larger type. */ - export function load_ext(ptr: usize, immOffset?: usize, immAlign?: usize): v128; /** Loads a vector from memory. */ export function load(ptr: usize, immOffset?: usize, immAlign?: usize): v128; + /** Creates a vector by loading the lanes of the specified type and extending each to the next larger type. */ + export function load_ext(ptr: usize, immOffset?: usize, immAlign?: usize): v128; /** Creates a vector with eight 16-bit integer lanes by loading and sign extending eight 8-bit integers. */ export function load8x8_s(ptr: usize, immOffset?: u32, immAlign?: u32): v128; /** Creates a vector with eight 16-bit integer lanes by loading and zero extending eight 8-bit integers. */ @@ -709,6 +707,16 @@ declare namespace v128 { export function load32x2_s(ptr: usize, immOffset?: u32, immAlign?: u32): v128; /** Creates a vector with two 64-bit integer lanes by loading and zero extending two 32-bit integers. */ export function load32x2_u(ptr: usize, immOffset?: u32, immAlign?: u32): v128; + /** Creates a vector with identical lanes by loading the splatted value. */ + export function load_splat(ptr: usize, immOffset?: usize, immAlign?: usize): v128; + /** Loads an 8-bit integer and splats it sixteen times forming a new vector. */ + export function load8_splat(ptr: usize, immOffset?: usize, immAlign?: usize): v128; + /** Loads a 16-bit integer and splats it eight times forming a new vector. */ + export function load16_splat(ptr: usize, immOffset?: usize, immAlign?: usize): v128; + /** Loads a 32-bit integer and splats it four times forming a new vector. */ + export function load32_splat(ptr: usize, immOffset?: usize, immAlign?: usize): v128; + /** Loads a 64-bit integer and splats it two times forming a new vector. */ + export function load64_splat(ptr: usize, immOffset?: usize, immAlign?: usize): v128; /** Stores a vector to memory. */ export function store(ptr: usize, value: v128, immOffset?: usize, immAlign?: usize): void; /** Adds each lane. */ @@ -1193,20 +1201,6 @@ declare namespace v8x16 { export function shuffle(a: v128, b: v128, l0: u8, l1: u8, l2: u8, l3: u8, l4: u8, l5: u8, l6: u8, l7: u8, l8: u8, l9: u8, l10: u8, l11: u8, l12: u8, l13: u8, l14: u8, l15: u8): v128; /** Selects 8-bit lanes from the first vector according to the indexes [0-15] specified by the 8-bit lanes of the second vector. */ export function swizzle(a: v128, s: v128): v128; - /** Loads an 8-bit integer and splats it sixteen times forming a new vector. */ - export function load_splat(ptr: usize, immOffset?: usize, immAlign?: usize): v128; -} -declare namespace v16x8 { - /** Loads a 16-bit integer and splats it eight times forming a new vector. */ - export function load_splat(ptr: usize, immOffset?: usize, immAlign?: usize): v128; -} -declare namespace v32x4 { - /** Loads a 32-bit integer and splats it four times forming a new vector. */ - export function load_splat(ptr: usize, immOffset?: usize, immAlign?: usize): v128; -} -declare namespace v64x2 { - /** Loads a 64-bit integer and splats it two times forming a new vector. */ - export function load_splat(ptr: usize, immOffset?: usize, immAlign?: usize): v128; } /** Macro type evaluating to the underlying native WebAssembly type. */ declare type native = T; diff --git a/tests/compiler/features/simd.optimized.wat b/tests/compiler/features/simd.optimized.wat index aeb2fd2d9e..7038464010 100644 --- a/tests/compiler/features/simd.optimized.wat +++ b/tests/compiler/features/simd.optimized.wat @@ -1036,7 +1036,7 @@ local.get $1 call $~lib/rt/tlsf/insertBlock ) - (func $start:features/simd + (func $features/simd/test_v128 (local $0 i32) i32.const 64 call $~lib/rt/tlsf/__alloc @@ -1049,6 +1049,94 @@ i32.const 16 call $~lib/rt/tlsf/__alloc local.tee $0 + i32.const 42 + i32.store8 + local.get $0 + v8x16.load_splat + v128.const i32x4 0x2a2a2a2a 0x2a2a2a2a 0x2a2a2a2a 0x2a2a2a2a + i8x16.eq + i8x16.all_true + i32.eqz + if + i32.const 0 + i32.const 1184 + i32.const 59 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/tlsf/__free + i32.const 16 + call $~lib/rt/tlsf/__alloc + local.tee $0 + i32.const 42 + i32.store16 + local.get $0 + v16x8.load_splat + v128.const i32x4 0x002a002a 0x002a002a 0x002a002a 0x002a002a + i8x16.eq + i8x16.all_true + i32.eqz + if + i32.const 0 + i32.const 1184 + i32.const 69 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/tlsf/__free + i32.const 16 + call $~lib/rt/tlsf/__alloc + local.tee $0 + i32.const 42 + i32.store + local.get $0 + v32x4.load_splat + v128.const i32x4 0x0000002a 0x0000002a 0x0000002a 0x0000002a + i8x16.eq + i8x16.all_true + i32.eqz + if + i32.const 0 + i32.const 1184 + i32.const 79 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/tlsf/__free + i32.const 16 + call $~lib/rt/tlsf/__alloc + local.tee $0 + i64.const 42 + i64.store + local.get $0 + v64x2.load_splat + v128.const i32x4 0x0000002a 0x00000000 0x0000002a 0x00000000 + i8x16.eq + i8x16.all_true + i32.eqz + if + i32.const 0 + i32.const 1184 + i32.const 89 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/tlsf/__free + ) + (func $start:features/simd + (local $0 i32) + call $features/simd/test_v128 + i32.const 16 + call $~lib/rt/tlsf/__alloc + local.tee $0 i32.const 1 i32.store8 local.get $0 @@ -1081,7 +1169,7 @@ if i32.const 0 i32.const 1184 - i32.const 299 + i32.const 339 i32.const 5 call $~lib/builtins/abort unreachable @@ -1095,7 +1183,7 @@ if i32.const 0 i32.const 1184 - i32.const 304 + i32.const 344 i32.const 5 call $~lib/builtins/abort unreachable @@ -1125,7 +1213,7 @@ if i32.const 0 i32.const 1184 - i32.const 418 + i32.const 458 i32.const 5 call $~lib/builtins/abort unreachable @@ -1139,7 +1227,7 @@ if i32.const 0 i32.const 1184 - i32.const 423 + i32.const 463 i32.const 5 call $~lib/builtins/abort unreachable @@ -1163,7 +1251,7 @@ if i32.const 0 i32.const 1184 - i32.const 474 + i32.const 514 i32.const 5 call $~lib/builtins/abort unreachable @@ -1177,7 +1265,28 @@ if i32.const 0 i32.const 1184 - i32.const 479 + i32.const 519 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/tlsf/__free + i32.const 16 + call $~lib/rt/tlsf/__alloc + local.tee $0 + i32.const 42 + i32.store8 + local.get $0 + v8x16.load_splat + v128.const i32x4 0x2a2a2a2a 0x2a2a2a2a 0x2a2a2a2a 0x2a2a2a2a + i8x16.eq + i8x16.all_true + i32.eqz + if + i32.const 0 + i32.const 1184 + i32.const 669 i32.const 5 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/features/simd.ts b/tests/compiler/features/simd.ts index e5e7e6a43d..5519c954c9 100644 --- a/tests/compiler/features/simd.ts +++ b/tests/compiler/features/simd.ts @@ -53,6 +53,46 @@ function test_v128(): void { v128.store(ptr, v128.load(ptr, 16), 32); __free(ptr); } + { + let ptr = __alloc(16); + store(ptr, 42); + assert( + v128.load8_splat(ptr) + == + v128(42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42) + ); + __free(ptr); + } + { + let ptr = __alloc(16); + store(ptr, 42); + assert( + v128.load16_splat(ptr) + == + v128(42, 0, 42, 0, 42, 0, 42, 0, 42, 0, 42, 0, 42, 0, 42, 0) + ); + __free(ptr); + } + { + let ptr = __alloc(16); + store(ptr, 42); + assert( + v128.load32_splat(ptr) + == + v128(42, 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0) + ); + __free(ptr); + } + { + let ptr = __alloc(16); + store(ptr, 42); + assert( + v128.load64_splat(ptr) + == + v128(42, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0) + ); + __free(ptr); + } // generic operations are tested by the aliases below already } @@ -623,59 +663,16 @@ function test_v8x16(): void { == v128(0, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0) ); - // TODO: not yet implemented in binaryen/src/wasm-interpreter.h - // { - // let ptr = __alloc(16, 0); - // store(ptr, 42); - // assert( - // v8x16.load_splat(ptr) - // == - // v128(42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42) - // ); - // __free(ptr); - // } -} - -function test_v16x8(): void { - // TODO: not yet implemented in binaryen/src/wasm-interpreter.h - // { - // let ptr = __alloc(16, 0); - // store(ptr, 42); - // assert( - // v16x8.load_splat(ptr) - // == - // v128(42, 0, 42, 0, 42, 0, 42, 0, 42, 0, 42, 0, 42, 0, 42, 0) - // ); - // __free(ptr); - // } -} - -function test_v32x4(): void { - // TODO: not yet implemented in binaryen/src/wasm-interpreter.h - // { - // let ptr = __alloc(16, 0); - // store(ptr, 42); - // assert( - // v32x4.load_splat(ptr) - // == - // v128(42, 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0) - // ); - // __free(ptr); - // } -} - -function test_v64x2(): void { - // TODO: not yet implemented in binaryen/src/wasm-interpreter.h - // { - // let ptr = __alloc(16, 0); - // store(ptr, 42); - // assert( - // v64x2.load_splat(ptr) - // == - // v128(42, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0) - // ); - // __free(ptr); - // } + { + let ptr = __alloc(16); + store(ptr, 42); + assert( + v128.load8_splat(ptr) + == + v128(42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42) + ); + __free(ptr); + } } function test_const(): v128 { @@ -692,8 +689,5 @@ if (ASC_FEATURE_SIMD) { test_f32x4(); test_f64x2(); test_v8x16(); - test_v16x8(); - test_v32x4(); - test_v64x2(); test_const(); } diff --git a/tests/compiler/features/simd.untouched.wat b/tests/compiler/features/simd.untouched.wat index dddcb18dc4..bdb6e43a13 100644 --- a/tests/compiler/features/simd.untouched.wat +++ b/tests/compiler/features/simd.untouched.wat @@ -1552,6 +1552,102 @@ v128.store offset=32 local.get $0 call $~lib/rt/tlsf/__free + i32.const 16 + call $~lib/rt/tlsf/__alloc + local.set $0 + local.get $0 + i32.const 42 + i32.store8 + local.get $0 + v8x16.load_splat + v128.const i32x4 0x2a2a2a2a 0x2a2a2a2a 0x2a2a2a2a 0x2a2a2a2a + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 160 + i32.const 59 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/tlsf/__free + i32.const 16 + call $~lib/rt/tlsf/__alloc + local.set $0 + local.get $0 + i32.const 42 + i32.store16 + local.get $0 + v16x8.load_splat + v128.const i32x4 0x002a002a 0x002a002a 0x002a002a 0x002a002a + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 160 + i32.const 69 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/tlsf/__free + i32.const 16 + call $~lib/rt/tlsf/__alloc + local.set $0 + local.get $0 + i32.const 42 + i32.store + local.get $0 + v32x4.load_splat + v128.const i32x4 0x0000002a 0x0000002a 0x0000002a 0x0000002a + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 160 + i32.const 79 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/tlsf/__free + i32.const 16 + call $~lib/rt/tlsf/__alloc + local.set $0 + local.get $0 + i64.const 42 + i64.store + local.get $0 + v64x2.load_splat + v128.const i32x4 0x0000002a 0x00000000 0x0000002a 0x00000000 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 160 + i32.const 89 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/tlsf/__free ) (func $features/simd/test_i8x16 (local $0 v128) @@ -1573,7 +1669,7 @@ if i32.const 0 i32.const 160 - i32.const 61 + i32.const 101 i32.const 3 call $~lib/builtins/abort unreachable @@ -1591,7 +1687,7 @@ if i32.const 0 i32.const 160 - i32.const 63 + i32.const 103 i32.const 3 call $~lib/builtins/abort unreachable @@ -1610,7 +1706,7 @@ if i32.const 0 i32.const 160 - i32.const 65 + i32.const 105 i32.const 3 call $~lib/builtins/abort unreachable @@ -1627,7 +1723,7 @@ if i32.const 0 i32.const 160 - i32.const 66 + i32.const 106 i32.const 3 call $~lib/builtins/abort unreachable @@ -1644,7 +1740,7 @@ if i32.const 0 i32.const 160 - i32.const 67 + i32.const 107 i32.const 3 call $~lib/builtins/abort unreachable @@ -1705,7 +1801,7 @@ if i32.const 0 i32.const 160 - i32.const 108 + i32.const 148 i32.const 3 call $~lib/builtins/abort unreachable @@ -1722,7 +1818,7 @@ if i32.const 0 i32.const 160 - i32.const 113 + i32.const 153 i32.const 3 call $~lib/builtins/abort unreachable @@ -1739,7 +1835,7 @@ if i32.const 0 i32.const 160 - i32.const 114 + i32.const 154 i32.const 3 call $~lib/builtins/abort unreachable @@ -1754,7 +1850,7 @@ if i32.const 0 i32.const 160 - i32.const 115 + i32.const 155 i32.const 3 call $~lib/builtins/abort unreachable @@ -1771,7 +1867,7 @@ if i32.const 0 i32.const 160 - i32.const 116 + i32.const 156 i32.const 3 call $~lib/builtins/abort unreachable @@ -1788,7 +1884,7 @@ if i32.const 0 i32.const 160 - i32.const 121 + i32.const 161 i32.const 3 call $~lib/builtins/abort unreachable @@ -1912,7 +2008,7 @@ if i32.const 0 i32.const 160 - i32.const 159 + i32.const 199 i32.const 3 call $~lib/builtins/abort unreachable @@ -1929,7 +2025,7 @@ if i32.const 0 i32.const 160 - i32.const 160 + i32.const 200 i32.const 3 call $~lib/builtins/abort unreachable @@ -1946,7 +2042,7 @@ if i32.const 0 i32.const 160 - i32.const 161 + i32.const 201 i32.const 3 call $~lib/builtins/abort unreachable @@ -1963,7 +2059,7 @@ if i32.const 0 i32.const 160 - i32.const 162 + i32.const 202 i32.const 3 call $~lib/builtins/abort unreachable @@ -1980,7 +2076,7 @@ if i32.const 0 i32.const 160 - i32.const 163 + i32.const 203 i32.const 3 call $~lib/builtins/abort unreachable @@ -1997,7 +2093,7 @@ if i32.const 0 i32.const 160 - i32.const 164 + i32.const 204 i32.const 3 call $~lib/builtins/abort unreachable @@ -2014,7 +2110,7 @@ if i32.const 0 i32.const 160 - i32.const 165 + i32.const 205 i32.const 3 call $~lib/builtins/abort unreachable @@ -2031,7 +2127,7 @@ if i32.const 0 i32.const 160 - i32.const 166 + i32.const 206 i32.const 3 call $~lib/builtins/abort unreachable @@ -2048,7 +2144,7 @@ if i32.const 0 i32.const 160 - i32.const 167 + i32.const 207 i32.const 3 call $~lib/builtins/abort unreachable @@ -2065,7 +2161,7 @@ if i32.const 0 i32.const 160 - i32.const 168 + i32.const 208 i32.const 3 call $~lib/builtins/abort unreachable @@ -2116,7 +2212,7 @@ if i32.const 0 i32.const 160 - i32.const 175 + i32.const 215 i32.const 3 call $~lib/builtins/abort unreachable @@ -2134,7 +2230,7 @@ if i32.const 0 i32.const 160 - i32.const 177 + i32.const 217 i32.const 3 call $~lib/builtins/abort unreachable @@ -2153,7 +2249,7 @@ if i32.const 0 i32.const 160 - i32.const 179 + i32.const 219 i32.const 3 call $~lib/builtins/abort unreachable @@ -2170,7 +2266,7 @@ if i32.const 0 i32.const 160 - i32.const 180 + i32.const 220 i32.const 3 call $~lib/builtins/abort unreachable @@ -2187,7 +2283,7 @@ if i32.const 0 i32.const 160 - i32.const 181 + i32.const 221 i32.const 3 call $~lib/builtins/abort unreachable @@ -2248,7 +2344,7 @@ if i32.const 0 i32.const 160 - i32.const 222 + i32.const 262 i32.const 3 call $~lib/builtins/abort unreachable @@ -2265,7 +2361,7 @@ if i32.const 0 i32.const 160 - i32.const 227 + i32.const 267 i32.const 3 call $~lib/builtins/abort unreachable @@ -2282,7 +2378,7 @@ if i32.const 0 i32.const 160 - i32.const 228 + i32.const 268 i32.const 3 call $~lib/builtins/abort unreachable @@ -2297,7 +2393,7 @@ if i32.const 0 i32.const 160 - i32.const 229 + i32.const 269 i32.const 3 call $~lib/builtins/abort unreachable @@ -2314,7 +2410,7 @@ if i32.const 0 i32.const 160 - i32.const 230 + i32.const 270 i32.const 3 call $~lib/builtins/abort unreachable @@ -2331,7 +2427,7 @@ if i32.const 0 i32.const 160 - i32.const 235 + i32.const 275 i32.const 3 call $~lib/builtins/abort unreachable @@ -2455,7 +2551,7 @@ if i32.const 0 i32.const 160 - i32.const 273 + i32.const 313 i32.const 3 call $~lib/builtins/abort unreachable @@ -2472,7 +2568,7 @@ if i32.const 0 i32.const 160 - i32.const 274 + i32.const 314 i32.const 3 call $~lib/builtins/abort unreachable @@ -2489,7 +2585,7 @@ if i32.const 0 i32.const 160 - i32.const 275 + i32.const 315 i32.const 3 call $~lib/builtins/abort unreachable @@ -2506,7 +2602,7 @@ if i32.const 0 i32.const 160 - i32.const 276 + i32.const 316 i32.const 3 call $~lib/builtins/abort unreachable @@ -2523,7 +2619,7 @@ if i32.const 0 i32.const 160 - i32.const 277 + i32.const 317 i32.const 3 call $~lib/builtins/abort unreachable @@ -2540,7 +2636,7 @@ if i32.const 0 i32.const 160 - i32.const 278 + i32.const 318 i32.const 3 call $~lib/builtins/abort unreachable @@ -2557,7 +2653,7 @@ if i32.const 0 i32.const 160 - i32.const 279 + i32.const 319 i32.const 3 call $~lib/builtins/abort unreachable @@ -2574,7 +2670,7 @@ if i32.const 0 i32.const 160 - i32.const 280 + i32.const 320 i32.const 3 call $~lib/builtins/abort unreachable @@ -2591,7 +2687,7 @@ if i32.const 0 i32.const 160 - i32.const 281 + i32.const 321 i32.const 3 call $~lib/builtins/abort unreachable @@ -2608,7 +2704,7 @@ if i32.const 0 i32.const 160 - i32.const 282 + i32.const 322 i32.const 3 call $~lib/builtins/abort unreachable @@ -2723,7 +2819,7 @@ if i32.const 0 i32.const 160 - i32.const 299 + i32.const 339 i32.const 5 call $~lib/builtins/abort unreachable @@ -2739,7 +2835,7 @@ if i32.const 0 i32.const 160 - i32.const 304 + i32.const 344 i32.const 5 call $~lib/builtins/abort unreachable @@ -2768,7 +2864,7 @@ if i32.const 0 i32.const 160 - i32.const 315 + i32.const 355 i32.const 3 call $~lib/builtins/abort unreachable @@ -2786,7 +2882,7 @@ if i32.const 0 i32.const 160 - i32.const 317 + i32.const 357 i32.const 3 call $~lib/builtins/abort unreachable @@ -2805,7 +2901,7 @@ if i32.const 0 i32.const 160 - i32.const 319 + i32.const 359 i32.const 3 call $~lib/builtins/abort unreachable @@ -2822,7 +2918,7 @@ if i32.const 0 i32.const 160 - i32.const 320 + i32.const 360 i32.const 3 call $~lib/builtins/abort unreachable @@ -2839,7 +2935,7 @@ if i32.const 0 i32.const 160 - i32.const 321 + i32.const 361 i32.const 3 call $~lib/builtins/abort unreachable @@ -2900,7 +2996,7 @@ if i32.const 0 i32.const 160 - i32.const 362 + i32.const 402 i32.const 3 call $~lib/builtins/abort unreachable @@ -2913,7 +3009,7 @@ if i32.const 0 i32.const 160 - i32.const 367 + i32.const 407 i32.const 3 call $~lib/builtins/abort unreachable @@ -2926,7 +3022,7 @@ if i32.const 0 i32.const 160 - i32.const 368 + i32.const 408 i32.const 3 call $~lib/builtins/abort unreachable @@ -2943,7 +3039,7 @@ if i32.const 0 i32.const 160 - i32.const 369 + i32.const 409 i32.const 3 call $~lib/builtins/abort unreachable @@ -2960,7 +3056,7 @@ if i32.const 0 i32.const 160 - i32.const 374 + i32.const 414 i32.const 3 call $~lib/builtins/abort unreachable @@ -3040,7 +3136,7 @@ if i32.const 0 i32.const 160 - i32.const 388 + i32.const 428 i32.const 3 call $~lib/builtins/abort unreachable @@ -3057,7 +3153,7 @@ if i32.const 0 i32.const 160 - i32.const 389 + i32.const 429 i32.const 3 call $~lib/builtins/abort unreachable @@ -3074,7 +3170,7 @@ if i32.const 0 i32.const 160 - i32.const 390 + i32.const 430 i32.const 3 call $~lib/builtins/abort unreachable @@ -3091,7 +3187,7 @@ if i32.const 0 i32.const 160 - i32.const 391 + i32.const 431 i32.const 3 call $~lib/builtins/abort unreachable @@ -3108,7 +3204,7 @@ if i32.const 0 i32.const 160 - i32.const 392 + i32.const 432 i32.const 3 call $~lib/builtins/abort unreachable @@ -3125,7 +3221,7 @@ if i32.const 0 i32.const 160 - i32.const 393 + i32.const 433 i32.const 3 call $~lib/builtins/abort unreachable @@ -3142,7 +3238,7 @@ if i32.const 0 i32.const 160 - i32.const 394 + i32.const 434 i32.const 3 call $~lib/builtins/abort unreachable @@ -3159,7 +3255,7 @@ if i32.const 0 i32.const 160 - i32.const 395 + i32.const 435 i32.const 3 call $~lib/builtins/abort unreachable @@ -3176,7 +3272,7 @@ if i32.const 0 i32.const 160 - i32.const 396 + i32.const 436 i32.const 3 call $~lib/builtins/abort unreachable @@ -3193,7 +3289,7 @@ if i32.const 0 i32.const 160 - i32.const 397 + i32.const 437 i32.const 3 call $~lib/builtins/abort unreachable @@ -3292,7 +3388,7 @@ if i32.const 0 i32.const 160 - i32.const 418 + i32.const 458 i32.const 5 call $~lib/builtins/abort unreachable @@ -3308,7 +3404,7 @@ if i32.const 0 i32.const 160 - i32.const 423 + i32.const 463 i32.const 5 call $~lib/builtins/abort unreachable @@ -3333,7 +3429,7 @@ if i32.const 0 i32.const 160 - i32.const 434 + i32.const 474 i32.const 3 call $~lib/builtins/abort unreachable @@ -3351,7 +3447,7 @@ if i32.const 0 i32.const 160 - i32.const 436 + i32.const 476 i32.const 3 call $~lib/builtins/abort unreachable @@ -3370,7 +3466,7 @@ if i32.const 0 i32.const 160 - i32.const 438 + i32.const 478 i32.const 3 call $~lib/builtins/abort unreachable @@ -3387,7 +3483,7 @@ if i32.const 0 i32.const 160 - i32.const 439 + i32.const 479 i32.const 3 call $~lib/builtins/abort unreachable @@ -3403,7 +3499,7 @@ if i32.const 0 i32.const 160 - i32.const 440 + i32.const 480 i32.const 3 call $~lib/builtins/abort unreachable @@ -3416,7 +3512,7 @@ if i32.const 0 i32.const 160 - i32.const 445 + i32.const 485 i32.const 3 call $~lib/builtins/abort unreachable @@ -3429,7 +3525,7 @@ if i32.const 0 i32.const 160 - i32.const 446 + i32.const 486 i32.const 3 call $~lib/builtins/abort unreachable @@ -3446,7 +3542,7 @@ if i32.const 0 i32.const 160 - i32.const 447 + i32.const 487 i32.const 3 call $~lib/builtins/abort unreachable @@ -3463,7 +3559,7 @@ if i32.const 0 i32.const 160 - i32.const 452 + i32.const 492 i32.const 3 call $~lib/builtins/abort unreachable @@ -3541,7 +3637,7 @@ if i32.const 0 i32.const 160 - i32.const 474 + i32.const 514 i32.const 5 call $~lib/builtins/abort unreachable @@ -3557,7 +3653,7 @@ if i32.const 0 i32.const 160 - i32.const 479 + i32.const 519 i32.const 5 call $~lib/builtins/abort unreachable @@ -3586,7 +3682,7 @@ if i32.const 0 i32.const 160 - i32.const 490 + i32.const 530 i32.const 3 call $~lib/builtins/abort unreachable @@ -3604,7 +3700,7 @@ if i32.const 0 i32.const 160 - i32.const 492 + i32.const 532 i32.const 3 call $~lib/builtins/abort unreachable @@ -3623,7 +3719,7 @@ if i32.const 0 i32.const 160 - i32.const 494 + i32.const 534 i32.const 3 call $~lib/builtins/abort unreachable @@ -3640,7 +3736,7 @@ if i32.const 0 i32.const 160 - i32.const 495 + i32.const 535 i32.const 3 call $~lib/builtins/abort unreachable @@ -3657,7 +3753,7 @@ if i32.const 0 i32.const 160 - i32.const 496 + i32.const 536 i32.const 3 call $~lib/builtins/abort unreachable @@ -3678,7 +3774,7 @@ if i32.const 0 i32.const 160 - i32.const 498 + i32.const 538 i32.const 3 call $~lib/builtins/abort unreachable @@ -3695,7 +3791,7 @@ if i32.const 0 i32.const 160 - i32.const 499 + i32.const 539 i32.const 3 call $~lib/builtins/abort unreachable @@ -3711,7 +3807,7 @@ if i32.const 0 i32.const 160 - i32.const 500 + i32.const 540 i32.const 3 call $~lib/builtins/abort unreachable @@ -3724,7 +3820,7 @@ if i32.const 0 i32.const 160 - i32.const 501 + i32.const 541 i32.const 3 call $~lib/builtins/abort unreachable @@ -3737,7 +3833,7 @@ if i32.const 0 i32.const 160 - i32.const 502 + i32.const 542 i32.const 3 call $~lib/builtins/abort unreachable @@ -3754,7 +3850,7 @@ if i32.const 0 i32.const 160 - i32.const 503 + i32.const 543 i32.const 3 call $~lib/builtins/abort unreachable @@ -3771,7 +3867,7 @@ if i32.const 0 i32.const 160 - i32.const 508 + i32.const 548 i32.const 3 call $~lib/builtins/abort unreachable @@ -3802,7 +3898,7 @@ if i32.const 0 i32.const 160 - i32.const 517 + i32.const 557 i32.const 3 call $~lib/builtins/abort unreachable @@ -3819,7 +3915,7 @@ if i32.const 0 i32.const 160 - i32.const 518 + i32.const 558 i32.const 3 call $~lib/builtins/abort unreachable @@ -3836,7 +3932,7 @@ if i32.const 0 i32.const 160 - i32.const 519 + i32.const 559 i32.const 3 call $~lib/builtins/abort unreachable @@ -3853,7 +3949,7 @@ if i32.const 0 i32.const 160 - i32.const 520 + i32.const 560 i32.const 3 call $~lib/builtins/abort unreachable @@ -3870,7 +3966,7 @@ if i32.const 0 i32.const 160 - i32.const 521 + i32.const 561 i32.const 3 call $~lib/builtins/abort unreachable @@ -3887,7 +3983,7 @@ if i32.const 0 i32.const 160 - i32.const 522 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -3904,7 +4000,7 @@ if i32.const 0 i32.const 160 - i32.const 523 + i32.const 563 i32.const 3 call $~lib/builtins/abort unreachable @@ -3921,7 +4017,7 @@ if i32.const 0 i32.const 160 - i32.const 524 + i32.const 564 i32.const 3 call $~lib/builtins/abort unreachable @@ -3937,7 +4033,7 @@ if i32.const 0 i32.const 160 - i32.const 525 + i32.const 565 i32.const 3 call $~lib/builtins/abort unreachable @@ -3992,7 +4088,7 @@ if i32.const 0 i32.const 160 - i32.const 552 + i32.const 592 i32.const 3 call $~lib/builtins/abort unreachable @@ -4010,7 +4106,7 @@ if i32.const 0 i32.const 160 - i32.const 554 + i32.const 594 i32.const 3 call $~lib/builtins/abort unreachable @@ -4029,7 +4125,7 @@ if i32.const 0 i32.const 160 - i32.const 556 + i32.const 596 i32.const 3 call $~lib/builtins/abort unreachable @@ -4046,7 +4142,7 @@ if i32.const 0 i32.const 160 - i32.const 557 + i32.const 597 i32.const 3 call $~lib/builtins/abort unreachable @@ -4063,7 +4159,7 @@ if i32.const 0 i32.const 160 - i32.const 558 + i32.const 598 i32.const 3 call $~lib/builtins/abort unreachable @@ -4084,7 +4180,7 @@ if i32.const 0 i32.const 160 - i32.const 560 + i32.const 600 i32.const 3 call $~lib/builtins/abort unreachable @@ -4101,7 +4197,7 @@ if i32.const 0 i32.const 160 - i32.const 561 + i32.const 601 i32.const 3 call $~lib/builtins/abort unreachable @@ -4117,7 +4213,7 @@ if i32.const 0 i32.const 160 - i32.const 562 + i32.const 602 i32.const 3 call $~lib/builtins/abort unreachable @@ -4130,7 +4226,7 @@ if i32.const 0 i32.const 160 - i32.const 563 + i32.const 603 i32.const 3 call $~lib/builtins/abort unreachable @@ -4143,7 +4239,7 @@ if i32.const 0 i32.const 160 - i32.const 564 + i32.const 604 i32.const 3 call $~lib/builtins/abort unreachable @@ -4160,7 +4256,7 @@ if i32.const 0 i32.const 160 - i32.const 565 + i32.const 605 i32.const 3 call $~lib/builtins/abort unreachable @@ -4177,7 +4273,7 @@ if i32.const 0 i32.const 160 - i32.const 570 + i32.const 610 i32.const 3 call $~lib/builtins/abort unreachable @@ -4208,7 +4304,7 @@ if i32.const 0 i32.const 160 - i32.const 579 + i32.const 619 i32.const 3 call $~lib/builtins/abort unreachable @@ -4225,7 +4321,7 @@ if i32.const 0 i32.const 160 - i32.const 580 + i32.const 620 i32.const 3 call $~lib/builtins/abort unreachable @@ -4242,7 +4338,7 @@ if i32.const 0 i32.const 160 - i32.const 581 + i32.const 621 i32.const 3 call $~lib/builtins/abort unreachable @@ -4259,7 +4355,7 @@ if i32.const 0 i32.const 160 - i32.const 582 + i32.const 622 i32.const 3 call $~lib/builtins/abort unreachable @@ -4276,7 +4372,7 @@ if i32.const 0 i32.const 160 - i32.const 583 + i32.const 623 i32.const 3 call $~lib/builtins/abort unreachable @@ -4293,7 +4389,7 @@ if i32.const 0 i32.const 160 - i32.const 584 + i32.const 624 i32.const 3 call $~lib/builtins/abort unreachable @@ -4310,7 +4406,7 @@ if i32.const 0 i32.const 160 - i32.const 585 + i32.const 625 i32.const 3 call $~lib/builtins/abort unreachable @@ -4327,7 +4423,7 @@ if i32.const 0 i32.const 160 - i32.const 586 + i32.const 626 i32.const 3 call $~lib/builtins/abort unreachable @@ -4343,7 +4439,7 @@ if i32.const 0 i32.const 160 - i32.const 587 + i32.const 627 i32.const 3 call $~lib/builtins/abort unreachable @@ -4381,6 +4477,7 @@ (local $0 v128) (local $1 v128) (local $2 v128) + (local $3 i32) v128.const i32x4 0x03020100 0x07060504 0x0b0a0908 0x0f0e0d0c local.set $0 v128.const i32x4 0x13121110 0x17161514 0x1b1a1918 0x1f1e1d1c @@ -4397,7 +4494,7 @@ if i32.const 0 i32.const 160 - i32.const 615 + i32.const 655 i32.const 3 call $~lib/builtins/abort unreachable @@ -4416,20 +4513,35 @@ if i32.const 0 i32.const 160 - i32.const 621 + i32.const 661 i32.const 3 call $~lib/builtins/abort unreachable end - ) - (func $features/simd/test_v16x8 - nop - ) - (func $features/simd/test_v32x4 - nop - ) - (func $features/simd/test_v64x2 - nop + i32.const 16 + call $~lib/rt/tlsf/__alloc + local.set $3 + local.get $3 + i32.const 42 + i32.store8 + local.get $3 + v8x16.load_splat + v128.const i32x4 0x2a2a2a2a 0x2a2a2a2a 0x2a2a2a2a 0x2a2a2a2a + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 160 + i32.const 669 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $3 + call $~lib/rt/tlsf/__free ) (func $features/simd/test_const (result v128) (local $0 v128) @@ -4448,9 +4560,6 @@ call $features/simd/test_f32x4 call $features/simd/test_f64x2 call $features/simd/test_v8x16 - call $features/simd/test_v16x8 - call $features/simd/test_v32x4 - call $features/simd/test_v64x2 call $features/simd/test_const drop ) From c3abeef9b3f561bca9345534b3ee92013c5adc8d Mon Sep 17 00:00:00 2001 From: dcode Date: Thu, 25 Feb 2021 22:49:15 +0100 Subject: [PATCH 07/24] add i64x2.mul --- src/builtins.ts | 21 ++-- std/assembly/builtins.ts | 2 +- tests/compiler/features/simd.optimized.wat | 6 +- tests/compiler/features/simd.ts | 1 + tests/compiler/features/simd.untouched.wat | 121 ++++++++++++--------- 5 files changed, 88 insertions(+), 63 deletions(-) diff --git a/src/builtins.ts b/src/builtins.ts index 4bacccf4f6..e1e9e9d964 100644 --- a/src/builtins.ts +++ b/src/builtins.ts @@ -534,7 +534,8 @@ export namespace BuiltinNames { export const i64x2_extract_lane = "~lib/builtins/i64x2.extract_lane"; export const i64x2_replace_lane = "~lib/builtins/i64x2.replace_lane"; export const i64x2_add = "~lib/builtins/i64x2.add"; - export const i64x2_sub = "~lib/builtins/i64x2.sub"; // i64x2 has no .mul + export const i64x2_sub = "~lib/builtins/i64x2.sub"; + export const i64x2_mul = "~lib/builtins/i64x2.mul"; export const i64x2_neg = "~lib/builtins/i64x2.neg"; export const i64x2_shl = "~lib/builtins/i64x2.shl"; export const i64x2_shr_s = "~lib/builtins/i64x2.shr_s"; @@ -4159,13 +4160,10 @@ function builtin_v128_mul(ctx: BuiltinContext): ExpressionRef { case TypeKind.U16: return module.binary(BinaryOp.MulI16x8, arg0, arg1); case TypeKind.I32: case TypeKind.U32: return module.binary(BinaryOp.MulI32x4, arg0, arg1); + case TypeKind.I64: + case TypeKind.U64: return module.binary(BinaryOp.MulI64x2, arg0, arg1); case TypeKind.ISIZE: - case TypeKind.USIZE: { - if (!compiler.options.isWasm64) { - return module.binary(BinaryOp.MulI32x4, arg0, arg1); - } - break; - } + case TypeKind.USIZE: return module.binary(compiler.options.isWasm64 ? BinaryOp.MulI64x2 : BinaryOp.MulI32x4, arg0, arg1); case TypeKind.F32: return module.binary(BinaryOp.MulF32x4, arg0, arg1); case TypeKind.F64: return module.binary(BinaryOp.MulF64x2, arg0, arg1); } @@ -8070,6 +8068,15 @@ function builtin_i64x2_sub(ctx: BuiltinContext): ExpressionRef { } builtins.set(BuiltinNames.i64x2_sub, builtin_i64x2_sub); +// i64x2.mul -> v128.mul +function builtin_i64x2_mul(ctx: BuiltinContext): ExpressionRef { + checkTypeAbsent(ctx); + ctx.typeArguments = [ Type.i64 ]; + ctx.contextualType = Type.v128; + return builtin_v128_mul(ctx); +} +builtins.set(BuiltinNames.i64x2_mul, builtin_i64x2_mul); + // i64x2.neg -> v128.neg function builtin_i64x2_neg(ctx: BuiltinContext): ExpressionRef { checkTypeAbsent(ctx); diff --git a/std/assembly/builtins.ts b/std/assembly/builtins.ts index 30fb096458..548e51e76c 100644 --- a/std/assembly/builtins.ts +++ b/std/assembly/builtins.ts @@ -1181,7 +1181,7 @@ export namespace v128 { // @ts-ignore: decorator @builtin - export declare function mul(a: v128, b: v128): v128; // except i64 + export declare function mul(a: v128, b: v128): v128; // @ts-ignore: decorator @builtin diff --git a/tests/compiler/features/simd.optimized.wat b/tests/compiler/features/simd.optimized.wat index 7038464010..4b76ea63e0 100644 --- a/tests/compiler/features/simd.optimized.wat +++ b/tests/compiler/features/simd.optimized.wat @@ -1251,7 +1251,7 @@ if i32.const 0 i32.const 1184 - i32.const 514 + i32.const 515 i32.const 5 call $~lib/builtins/abort unreachable @@ -1265,7 +1265,7 @@ if i32.const 0 i32.const 1184 - i32.const 519 + i32.const 520 i32.const 5 call $~lib/builtins/abort unreachable @@ -1286,7 +1286,7 @@ if i32.const 0 i32.const 1184 - i32.const 669 + i32.const 670 i32.const 5 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/features/simd.ts b/tests/compiler/features/simd.ts index 5519c954c9..8a1742538a 100644 --- a/tests/compiler/features/simd.ts +++ b/tests/compiler/features/simd.ts @@ -477,6 +477,7 @@ function test_i64x2(): void { var c = i64x2.add(a, b); assert(c == i64x2(2, -9223372036854775808)); assert(i64x2.sub(c, b) == a); + assert(i64x2.mul(c, b) == c); assert( i64x2.neg(a) == diff --git a/tests/compiler/features/simd.untouched.wat b/tests/compiler/features/simd.untouched.wat index bdb6e43a13..572988af59 100644 --- a/tests/compiler/features/simd.untouched.wat +++ b/tests/compiler/features/simd.untouched.wat @@ -3488,6 +3488,23 @@ call $~lib/builtins/abort unreachable end + local.get $2 + local.get $1 + i64x2.mul + local.get $2 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 160 + i32.const 480 + i32.const 3 + call $~lib/builtins/abort + unreachable + end local.get $0 i64x2.neg v128.const i32x4 0xffffffff 0xffffffff 0x00000001 0x80000000 @@ -3499,7 +3516,7 @@ if i32.const 0 i32.const 160 - i32.const 480 + i32.const 481 i32.const 3 call $~lib/builtins/abort unreachable @@ -3512,7 +3529,7 @@ if i32.const 0 i32.const 160 - i32.const 485 + i32.const 486 i32.const 3 call $~lib/builtins/abort unreachable @@ -3525,7 +3542,7 @@ if i32.const 0 i32.const 160 - i32.const 486 + i32.const 487 i32.const 3 call $~lib/builtins/abort unreachable @@ -3542,7 +3559,7 @@ if i32.const 0 i32.const 160 - i32.const 487 + i32.const 488 i32.const 3 call $~lib/builtins/abort unreachable @@ -3559,7 +3576,7 @@ if i32.const 0 i32.const 160 - i32.const 492 + i32.const 493 i32.const 3 call $~lib/builtins/abort unreachable @@ -3637,7 +3654,7 @@ if i32.const 0 i32.const 160 - i32.const 514 + i32.const 515 i32.const 5 call $~lib/builtins/abort unreachable @@ -3653,7 +3670,7 @@ if i32.const 0 i32.const 160 - i32.const 519 + i32.const 520 i32.const 5 call $~lib/builtins/abort unreachable @@ -3682,7 +3699,7 @@ if i32.const 0 i32.const 160 - i32.const 530 + i32.const 531 i32.const 3 call $~lib/builtins/abort unreachable @@ -3700,7 +3717,7 @@ if i32.const 0 i32.const 160 - i32.const 532 + i32.const 533 i32.const 3 call $~lib/builtins/abort unreachable @@ -3719,7 +3736,7 @@ if i32.const 0 i32.const 160 - i32.const 534 + i32.const 535 i32.const 3 call $~lib/builtins/abort unreachable @@ -3736,7 +3753,7 @@ if i32.const 0 i32.const 160 - i32.const 535 + i32.const 536 i32.const 3 call $~lib/builtins/abort unreachable @@ -3753,7 +3770,7 @@ if i32.const 0 i32.const 160 - i32.const 536 + i32.const 537 i32.const 3 call $~lib/builtins/abort unreachable @@ -3774,7 +3791,7 @@ if i32.const 0 i32.const 160 - i32.const 538 + i32.const 539 i32.const 3 call $~lib/builtins/abort unreachable @@ -3791,7 +3808,7 @@ if i32.const 0 i32.const 160 - i32.const 539 + i32.const 540 i32.const 3 call $~lib/builtins/abort unreachable @@ -3807,7 +3824,7 @@ if i32.const 0 i32.const 160 - i32.const 540 + i32.const 541 i32.const 3 call $~lib/builtins/abort unreachable @@ -3820,7 +3837,7 @@ if i32.const 0 i32.const 160 - i32.const 541 + i32.const 542 i32.const 3 call $~lib/builtins/abort unreachable @@ -3833,7 +3850,7 @@ if i32.const 0 i32.const 160 - i32.const 542 + i32.const 543 i32.const 3 call $~lib/builtins/abort unreachable @@ -3850,7 +3867,7 @@ if i32.const 0 i32.const 160 - i32.const 543 + i32.const 544 i32.const 3 call $~lib/builtins/abort unreachable @@ -3867,7 +3884,7 @@ if i32.const 0 i32.const 160 - i32.const 548 + i32.const 549 i32.const 3 call $~lib/builtins/abort unreachable @@ -3898,7 +3915,7 @@ if i32.const 0 i32.const 160 - i32.const 557 + i32.const 558 i32.const 3 call $~lib/builtins/abort unreachable @@ -3915,7 +3932,7 @@ if i32.const 0 i32.const 160 - i32.const 558 + i32.const 559 i32.const 3 call $~lib/builtins/abort unreachable @@ -3932,7 +3949,7 @@ if i32.const 0 i32.const 160 - i32.const 559 + i32.const 560 i32.const 3 call $~lib/builtins/abort unreachable @@ -3949,7 +3966,7 @@ if i32.const 0 i32.const 160 - i32.const 560 + i32.const 561 i32.const 3 call $~lib/builtins/abort unreachable @@ -3966,7 +3983,7 @@ if i32.const 0 i32.const 160 - i32.const 561 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable @@ -3983,7 +4000,7 @@ if i32.const 0 i32.const 160 - i32.const 562 + i32.const 563 i32.const 3 call $~lib/builtins/abort unreachable @@ -4000,7 +4017,7 @@ if i32.const 0 i32.const 160 - i32.const 563 + i32.const 564 i32.const 3 call $~lib/builtins/abort unreachable @@ -4017,7 +4034,7 @@ if i32.const 0 i32.const 160 - i32.const 564 + i32.const 565 i32.const 3 call $~lib/builtins/abort unreachable @@ -4033,7 +4050,7 @@ if i32.const 0 i32.const 160 - i32.const 565 + i32.const 566 i32.const 3 call $~lib/builtins/abort unreachable @@ -4088,7 +4105,7 @@ if i32.const 0 i32.const 160 - i32.const 592 + i32.const 593 i32.const 3 call $~lib/builtins/abort unreachable @@ -4106,7 +4123,7 @@ if i32.const 0 i32.const 160 - i32.const 594 + i32.const 595 i32.const 3 call $~lib/builtins/abort unreachable @@ -4125,7 +4142,7 @@ if i32.const 0 i32.const 160 - i32.const 596 + i32.const 597 i32.const 3 call $~lib/builtins/abort unreachable @@ -4142,7 +4159,7 @@ if i32.const 0 i32.const 160 - i32.const 597 + i32.const 598 i32.const 3 call $~lib/builtins/abort unreachable @@ -4159,7 +4176,7 @@ if i32.const 0 i32.const 160 - i32.const 598 + i32.const 599 i32.const 3 call $~lib/builtins/abort unreachable @@ -4180,7 +4197,7 @@ if i32.const 0 i32.const 160 - i32.const 600 + i32.const 601 i32.const 3 call $~lib/builtins/abort unreachable @@ -4197,7 +4214,7 @@ if i32.const 0 i32.const 160 - i32.const 601 + i32.const 602 i32.const 3 call $~lib/builtins/abort unreachable @@ -4213,7 +4230,7 @@ if i32.const 0 i32.const 160 - i32.const 602 + i32.const 603 i32.const 3 call $~lib/builtins/abort unreachable @@ -4226,7 +4243,7 @@ if i32.const 0 i32.const 160 - i32.const 603 + i32.const 604 i32.const 3 call $~lib/builtins/abort unreachable @@ -4239,7 +4256,7 @@ if i32.const 0 i32.const 160 - i32.const 604 + i32.const 605 i32.const 3 call $~lib/builtins/abort unreachable @@ -4256,7 +4273,7 @@ if i32.const 0 i32.const 160 - i32.const 605 + i32.const 606 i32.const 3 call $~lib/builtins/abort unreachable @@ -4273,7 +4290,7 @@ if i32.const 0 i32.const 160 - i32.const 610 + i32.const 611 i32.const 3 call $~lib/builtins/abort unreachable @@ -4304,7 +4321,7 @@ if i32.const 0 i32.const 160 - i32.const 619 + i32.const 620 i32.const 3 call $~lib/builtins/abort unreachable @@ -4321,7 +4338,7 @@ if i32.const 0 i32.const 160 - i32.const 620 + i32.const 621 i32.const 3 call $~lib/builtins/abort unreachable @@ -4338,7 +4355,7 @@ if i32.const 0 i32.const 160 - i32.const 621 + i32.const 622 i32.const 3 call $~lib/builtins/abort unreachable @@ -4355,7 +4372,7 @@ if i32.const 0 i32.const 160 - i32.const 622 + i32.const 623 i32.const 3 call $~lib/builtins/abort unreachable @@ -4372,7 +4389,7 @@ if i32.const 0 i32.const 160 - i32.const 623 + i32.const 624 i32.const 3 call $~lib/builtins/abort unreachable @@ -4389,7 +4406,7 @@ if i32.const 0 i32.const 160 - i32.const 624 + i32.const 625 i32.const 3 call $~lib/builtins/abort unreachable @@ -4406,7 +4423,7 @@ if i32.const 0 i32.const 160 - i32.const 625 + i32.const 626 i32.const 3 call $~lib/builtins/abort unreachable @@ -4423,7 +4440,7 @@ if i32.const 0 i32.const 160 - i32.const 626 + i32.const 627 i32.const 3 call $~lib/builtins/abort unreachable @@ -4439,7 +4456,7 @@ if i32.const 0 i32.const 160 - i32.const 627 + i32.const 628 i32.const 3 call $~lib/builtins/abort unreachable @@ -4494,7 +4511,7 @@ if i32.const 0 i32.const 160 - i32.const 655 + i32.const 656 i32.const 3 call $~lib/builtins/abort unreachable @@ -4513,7 +4530,7 @@ if i32.const 0 i32.const 160 - i32.const 661 + i32.const 662 i32.const 3 call $~lib/builtins/abort unreachable @@ -4535,7 +4552,7 @@ if i32.const 0 i32.const 160 - i32.const 669 + i32.const 670 i32.const 5 call $~lib/builtins/abort unreachable From fe619b885c01178e96f6fef500df20eecd80cc6f Mon Sep 17 00:00:00 2001 From: dcode Date: Fri, 26 Feb 2021 10:52:22 +0100 Subject: [PATCH 08/24] update --- package-lock.json | 14 +++++++------- package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index 54f95a2d26..526a590ba9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,7 +8,7 @@ "version": "0.0.0", "license": "Apache-2.0", "dependencies": { - "binaryen": "99.0.0-nightly.20210220", + "binaryen": "99.0.0-nightly.20210226", "long": "^4.0.0", "source-map-support": "^0.5.19", "ts-node": "^6.2.0" @@ -709,9 +709,9 @@ } }, "node_modules/binaryen": { - "version": "99.0.0-nightly.20210220", - "resolved": "https://registry.npmjs.org/binaryen/-/binaryen-99.0.0-nightly.20210220.tgz", - "integrity": "sha512-fQfDEZVgQQa3E0cxJx8I6nDN2zIB1WrrURtAyJoP6iyF40nTAwb5bFAC38fPT0PwCnxqziEgJ0MF36j79/BtYw==", + "version": "99.0.0-nightly.20210226", + "resolved": "https://registry.npmjs.org/binaryen/-/binaryen-99.0.0-nightly.20210226.tgz", + "integrity": "sha512-gEGikvZLZ1eczlanQeNYBtK2zGrpjwSfgipYy/vOQUERckdP4KVeUDs6YsT0TIzIEN+b7E8LwPcebcwnPuzbvA==", "bin": { "wasm-opt": "bin/wasm-opt" } @@ -3560,9 +3560,9 @@ "dev": true }, "binaryen": { - "version": "99.0.0-nightly.20210220", - "resolved": "https://registry.npmjs.org/binaryen/-/binaryen-99.0.0-nightly.20210220.tgz", - "integrity": "sha512-fQfDEZVgQQa3E0cxJx8I6nDN2zIB1WrrURtAyJoP6iyF40nTAwb5bFAC38fPT0PwCnxqziEgJ0MF36j79/BtYw==" + "version": "99.0.0-nightly.20210226", + "resolved": "https://registry.npmjs.org/binaryen/-/binaryen-99.0.0-nightly.20210226.tgz", + "integrity": "sha512-gEGikvZLZ1eczlanQeNYBtK2zGrpjwSfgipYy/vOQUERckdP4KVeUDs6YsT0TIzIEN+b7E8LwPcebcwnPuzbvA==" }, "brace-expansion": { "version": "1.1.11", diff --git a/package.json b/package.json index d23ffaf5c6..6c25e8814a 100644 --- a/package.json +++ b/package.json @@ -21,7 +21,7 @@ "url": "https://github.com/AssemblyScript/assemblyscript/issues" }, "dependencies": { - "binaryen": "99.0.0-nightly.20210220", + "binaryen": "99.0.0-nightly.20210226", "long": "^4.0.0", "source-map-support": "^0.5.19", "ts-node": "^6.2.0" From b4222aafcfdcc2f9b3d1a28ce2b27a0856bfeae9 Mon Sep 17 00:00:00 2001 From: dcode Date: Fri, 26 Feb 2021 16:14:05 +0100 Subject: [PATCH 09/24] rename shuffle and swizzle instructions --- src/builtins.ts | 41 ++- std/assembly/builtins.ts | 27 +- std/assembly/index.d.ts | 10 +- tests/compiler/features/simd.optimized.wat | 33 +-- tests/compiler/features/simd.ts | 42 +-- tests/compiler/features/simd.untouched.wat | 312 ++++++++++----------- 6 files changed, 199 insertions(+), 266 deletions(-) diff --git a/src/builtins.ts b/src/builtins.ts index e1e9e9d964..21f300992c 100644 --- a/src/builtins.ts +++ b/src/builtins.ts @@ -452,6 +452,8 @@ export namespace BuiltinNames { export const i8x16_ge_u = "~lib/builtins/i8x16.ge_u"; export const i8x16_narrow_i16x8_s = "~lib/builtins/i8x16.narrow_i16x8_s"; export const i8x16_narrow_i16x8_u = "~lib/builtins/i8x16.narrow_i16x8_u"; + export const i8x16_shuffle = "~lib/builtins/i8x16.shuffle"; + export const i8x16_swizzle = "~lib/builtins/i8x16.swizzle"; export const i16x8_splat = "~lib/builtins/i16x8.splat"; export const i16x8_extract_lane_s = "~lib/builtins/i16x8.extract_lane_s"; @@ -605,9 +607,6 @@ export namespace BuiltinNames { export const f64x2_qfma = "~lib/builtins/f64x2.qfma"; export const f64x2_qfms = "~lib/builtins/f64x2.qfms"; - export const v8x16_shuffle = "~lib/builtins/v8x16.shuffle"; - export const v8x16_swizzle = "~lib/builtins/v8x16.swizzle"; - // internals export const data_end = "~lib/memory/__data_end"; export const stack_pointer = "~lib/memory/__stack_pointer"; @@ -7348,6 +7347,24 @@ function builtin_i8x16_narrow_i16x8_u(ctx: BuiltinContext): ExpressionRef { } builtins.set(BuiltinNames.i8x16_narrow_i16x8_u, builtin_i8x16_narrow_i16x8_u); +// i8x16.shuffle -> v128.shuffle +function builtin_i8x16_shuffle(ctx: BuiltinContext): ExpressionRef { + checkTypeAbsent(ctx); + ctx.typeArguments = [ Type.i8 ]; + ctx.contextualType = Type.v128; + return builtin_v128_shuffle(ctx); +} +builtins.set(BuiltinNames.i8x16_shuffle, builtin_i8x16_shuffle); + +// i8x16.swizzle -> v128.swizzle +function builtin_i8x16_swizzle(ctx: BuiltinContext): ExpressionRef { + checkTypeAbsent(ctx); + ctx.typeArguments = null; + ctx.contextualType = Type.v128; + return builtin_v128_swizzle(ctx); +} +builtins.set(BuiltinNames.i8x16_swizzle, builtin_i8x16_swizzle); + // i16x8.splat -> v128.splat function builtin_i16x8_splat(ctx: BuiltinContext): ExpressionRef { checkTypeAbsent(ctx); @@ -8671,24 +8688,6 @@ function builtin_f64x2_qfms(ctx: BuiltinContext): ExpressionRef { } builtins.set(BuiltinNames.f64x2_qfms, builtin_f64x2_qfms); -// v8x16.shuffle -> v128.shuffle -function builtin_v8x16_shuffle(ctx: BuiltinContext): ExpressionRef { - checkTypeAbsent(ctx); - ctx.typeArguments = [ Type.i8 ]; - ctx.contextualType = Type.v128; - return builtin_v128_shuffle(ctx); -} -builtins.set(BuiltinNames.v8x16_shuffle, builtin_v8x16_shuffle); - -// v8x16.swizzle -> v128.swizzle -function builtin_v8x16_swizzle(ctx: BuiltinContext): ExpressionRef { - checkTypeAbsent(ctx); - ctx.typeArguments = null; - ctx.contextualType = Type.v128; - return builtin_v128_swizzle(ctx); -} -builtins.set(BuiltinNames.v8x16_swizzle, builtin_v8x16_swizzle); - // === Internal helpers ======================================================================= /** Compiles the `visit_globals` function. */ diff --git a/std/assembly/builtins.ts b/std/assembly/builtins.ts index 548e51e76c..2cc3f5e26f 100644 --- a/std/assembly/builtins.ts +++ b/std/assembly/builtins.ts @@ -1496,6 +1496,18 @@ export namespace i8x16 { // @ts-ignore: decorator @builtin export declare function narrow_i16x8_u(a: v128, b: v128): v128; + + // @ts-ignore: decorator + @builtin + export declare function shuffle( + a: v128, b: v128, + l0: u8, l1: u8, l2: u8, l3: u8, l4: u8, l5: u8, l6: u8, l7: u8, + l8: u8, l9: u8, l10: u8, l11: u8, l12: u8, l13: u8, l14: u8, l15: u8 + ): v128; + + // @ts-ignore: decorator + @builtin + export declare function swizzle(a: v128, s: v128): v128; } // @ts-ignore: decorator @@ -2121,21 +2133,6 @@ export namespace f64x2 { export declare function qfms(a: v128, b: v128, c: v128): v128; } -export namespace v8x16 { - - // @ts-ignore: decorator - @builtin - export declare function shuffle( - a: v128, b: v128, - l0: u8, l1: u8, l2: u8, l3: u8, l4: u8, l5: u8, l6: u8, l7: u8, - l8: u8, l9: u8, l10: u8, l11: u8, l12: u8, l13: u8, l14: u8, l15: u8 - ): v128; - - // @ts-ignore: decorator - @builtin - export declare function swizzle(a: v128, s: v128): v128; -} - /* eslint-disable @typescript-eslint/no-unused-vars */ // @ts-ignore: decorator diff --git a/std/assembly/index.d.ts b/std/assembly/index.d.ts index 2a46b142a0..4d45166a02 100644 --- a/std/assembly/index.d.ts +++ b/std/assembly/index.d.ts @@ -881,6 +881,10 @@ declare namespace i8x16 { export function narrow_i16x8_s(a: v128, b: v128): v128; /** Narrows each 16-bit signed integer lane to 8-bit unsigned integer lanes. */ export function narrow_i16x8_u(a: v128, b: v128): v128; + /** Selects 8-bit lanes from either vector according to the specified [0-15] respectively [16-31] lane indexes. */ + export function shuffle(a: v128, b: v128, l0: u8, l1: u8, l2: u8, l3: u8, l4: u8, l5: u8, l6: u8, l7: u8, l8: u8, l9: u8, l10: u8, l11: u8, l12: u8, l13: u8, l14: u8, l15: u8): v128; + /** Selects 8-bit lanes from the first vector according to the indexes [0-15] specified by the 8-bit lanes of the second vector. */ + export function swizzle(a: v128, s: v128): v128; } /** Initializes a 128-bit vector from eight 16-bit integer values. Arguments must be compile-time constants. */ declare function i16x8(a: i16, b: i16, c: i16, d: i16, e: i16, f: i16, g: i16, h: i16): v128; @@ -1196,12 +1200,6 @@ declare namespace f64x2 { /** Computes `(a * b) - c` for each 64-bit float lane. */ export function qfms(a: v128, b: v128, c: v128): v128; } -declare namespace v8x16 { - /** Selects 8-bit lanes from either vector according to the specified [0-15] respectively [16-31] lane indexes. */ - export function shuffle(a: v128, b: v128, l0: u8, l1: u8, l2: u8, l3: u8, l4: u8, l5: u8, l6: u8, l7: u8, l8: u8, l9: u8, l10: u8, l11: u8, l12: u8, l13: u8, l14: u8, l15: u8): v128; - /** Selects 8-bit lanes from the first vector according to the indexes [0-15] specified by the 8-bit lanes of the second vector. */ - export function swizzle(a: v128, s: v128): v128; -} /** Macro type evaluating to the underlying native WebAssembly type. */ declare type native = T; /** Special type evaluating the indexed access index type. */ diff --git a/tests/compiler/features/simd.optimized.wat b/tests/compiler/features/simd.optimized.wat index 4b76ea63e0..a44768e83b 100644 --- a/tests/compiler/features/simd.optimized.wat +++ b/tests/compiler/features/simd.optimized.wat @@ -1169,7 +1169,7 @@ if i32.const 0 i32.const 1184 - i32.const 339 + i32.const 354 i32.const 5 call $~lib/builtins/abort unreachable @@ -1183,7 +1183,7 @@ if i32.const 0 i32.const 1184 - i32.const 344 + i32.const 359 i32.const 5 call $~lib/builtins/abort unreachable @@ -1213,7 +1213,7 @@ if i32.const 0 i32.const 1184 - i32.const 458 + i32.const 473 i32.const 5 call $~lib/builtins/abort unreachable @@ -1227,7 +1227,7 @@ if i32.const 0 i32.const 1184 - i32.const 463 + i32.const 478 i32.const 5 call $~lib/builtins/abort unreachable @@ -1251,7 +1251,7 @@ if i32.const 0 i32.const 1184 - i32.const 515 + i32.const 530 i32.const 5 call $~lib/builtins/abort unreachable @@ -1265,28 +1265,7 @@ if i32.const 0 i32.const 1184 - i32.const 520 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/tlsf/__free - i32.const 16 - call $~lib/rt/tlsf/__alloc - local.tee $0 - i32.const 42 - i32.store8 - local.get $0 - v8x16.load_splat - v128.const i32x4 0x2a2a2a2a 0x2a2a2a2a 0x2a2a2a2a 0x2a2a2a2a - i8x16.eq - i8x16.all_true - i32.eqz - if - i32.const 0 - i32.const 1184 - i32.const 670 + i32.const 535 i32.const 5 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/features/simd.ts b/tests/compiler/features/simd.ts index 8a1742538a..f8d8661ef9 100644 --- a/tests/compiler/features/simd.ts +++ b/tests/compiler/features/simd.ts @@ -208,6 +208,21 @@ function test_i8x16(): void { assert(i8x16.ge_u(one, negOne) == excl1st); assert(i8x16.narrow_i16x8_s(i16x8.splat(i16.MAX_VALUE), i16x8.splat(i16.MAX_VALUE)) == i8x16.splat(i8.MAX_VALUE)); assert(i8x16.narrow_i16x8_u(i16x8.splat(i16.MAX_VALUE), i16x8.splat(i16.MAX_VALUE)) == i8x16.splat(u8.MAX_VALUE)); + { + let a = v128( 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15); + let b = v128(16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31); + assert( + i8x16.shuffle(a, b, 0, 17, 2, 19, 4, 21, 6, 23, 8, 25, 10, 27, 12, 29, 14, 31) + == + v128(0, 17, 2, 19, 4, 21, 6, 23, 8, 25, 10, 27, 12, 29, 14, 31) + ); + let c = v128(16, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); + assert( + i8x16.swizzle(a, c) + == + v128(0, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0) + ); + } } function test_i16x8(): void { @@ -650,32 +665,6 @@ function test_f64x2(): void { // ); } -function test_v8x16(): void { - var a = v128( 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15); - var b = v128(16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31); - assert( - v8x16.shuffle(a, b, 0, 17, 2, 19, 4, 21, 6, 23, 8, 25, 10, 27, 12, 29, 14, 31) - == - v128(0, 17, 2, 19, 4, 21, 6, 23, 8, 25, 10, 27, 12, 29, 14, 31) - ); - var c = v128(16, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); - assert( - v8x16.swizzle(a, c) - == - v128(0, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0) - ); - { - let ptr = __alloc(16); - store(ptr, 42); - assert( - v128.load8_splat(ptr) - == - v128(42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42) - ); - __free(ptr); - } -} - function test_const(): v128 { const one = i32x4.splat(1); // should precompute return one; // should not inline @@ -689,6 +678,5 @@ if (ASC_FEATURE_SIMD) { test_i64x2(); test_f32x4(); test_f64x2(); - test_v8x16(); test_const(); } diff --git a/tests/compiler/features/simd.untouched.wat b/tests/compiler/features/simd.untouched.wat index 572988af59..bacd6a7722 100644 --- a/tests/compiler/features/simd.untouched.wat +++ b/tests/compiler/features/simd.untouched.wat @@ -1657,6 +1657,9 @@ (local $4 v128) (local $5 v128) (local $6 v128) + (local $7 v128) + (local $8 v128) + (local $9 v128) v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x7f0f0e0d local.set $0 local.get $0 @@ -2190,6 +2193,46 @@ i32.const 0 i32.ne drop + v128.const i32x4 0x03020100 0x07060504 0x0b0a0908 0x0f0e0d0c + local.set $7 + v128.const i32x4 0x13121110 0x17161514 0x1b1a1918 0x1f1e1d1c + local.set $8 + local.get $7 + local.get $8 + v8x16.shuffle 0 17 2 19 4 21 6 23 8 25 10 27 12 29 14 31 + v128.const i32x4 0x13021100 0x17061504 0x1b0a1908 0x1f0e1d0c + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 160 + i32.const 214 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + v128.const i32x4 0x0c0d0e10 0x08090a0b 0x04050607 0x00010203 + local.set $9 + local.get $7 + local.get $9 + v8x16.swizzle + v128.const i32x4 0x0c0d0e00 0x08090a0b 0x04050607 0x00010203 + i8x16.eq + i8x16.all_true + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 160 + i32.const 220 + i32.const 5 + call $~lib/builtins/abort + unreachable + end ) (func $features/simd/test_i16x8 (local $0 v128) @@ -2212,7 +2255,7 @@ if i32.const 0 i32.const 160 - i32.const 215 + i32.const 230 i32.const 3 call $~lib/builtins/abort unreachable @@ -2230,7 +2273,7 @@ if i32.const 0 i32.const 160 - i32.const 217 + i32.const 232 i32.const 3 call $~lib/builtins/abort unreachable @@ -2249,7 +2292,7 @@ if i32.const 0 i32.const 160 - i32.const 219 + i32.const 234 i32.const 3 call $~lib/builtins/abort unreachable @@ -2266,7 +2309,7 @@ if i32.const 0 i32.const 160 - i32.const 220 + i32.const 235 i32.const 3 call $~lib/builtins/abort unreachable @@ -2283,7 +2326,7 @@ if i32.const 0 i32.const 160 - i32.const 221 + i32.const 236 i32.const 3 call $~lib/builtins/abort unreachable @@ -2344,7 +2387,7 @@ if i32.const 0 i32.const 160 - i32.const 262 + i32.const 277 i32.const 3 call $~lib/builtins/abort unreachable @@ -2361,7 +2404,7 @@ if i32.const 0 i32.const 160 - i32.const 267 + i32.const 282 i32.const 3 call $~lib/builtins/abort unreachable @@ -2378,7 +2421,7 @@ if i32.const 0 i32.const 160 - i32.const 268 + i32.const 283 i32.const 3 call $~lib/builtins/abort unreachable @@ -2393,7 +2436,7 @@ if i32.const 0 i32.const 160 - i32.const 269 + i32.const 284 i32.const 3 call $~lib/builtins/abort unreachable @@ -2410,7 +2453,7 @@ if i32.const 0 i32.const 160 - i32.const 270 + i32.const 285 i32.const 3 call $~lib/builtins/abort unreachable @@ -2427,7 +2470,7 @@ if i32.const 0 i32.const 160 - i32.const 275 + i32.const 290 i32.const 3 call $~lib/builtins/abort unreachable @@ -2551,7 +2594,7 @@ if i32.const 0 i32.const 160 - i32.const 313 + i32.const 328 i32.const 3 call $~lib/builtins/abort unreachable @@ -2568,7 +2611,7 @@ if i32.const 0 i32.const 160 - i32.const 314 + i32.const 329 i32.const 3 call $~lib/builtins/abort unreachable @@ -2585,7 +2628,7 @@ if i32.const 0 i32.const 160 - i32.const 315 + i32.const 330 i32.const 3 call $~lib/builtins/abort unreachable @@ -2602,7 +2645,7 @@ if i32.const 0 i32.const 160 - i32.const 316 + i32.const 331 i32.const 3 call $~lib/builtins/abort unreachable @@ -2619,7 +2662,7 @@ if i32.const 0 i32.const 160 - i32.const 317 + i32.const 332 i32.const 3 call $~lib/builtins/abort unreachable @@ -2636,7 +2679,7 @@ if i32.const 0 i32.const 160 - i32.const 318 + i32.const 333 i32.const 3 call $~lib/builtins/abort unreachable @@ -2653,7 +2696,7 @@ if i32.const 0 i32.const 160 - i32.const 319 + i32.const 334 i32.const 3 call $~lib/builtins/abort unreachable @@ -2670,7 +2713,7 @@ if i32.const 0 i32.const 160 - i32.const 320 + i32.const 335 i32.const 3 call $~lib/builtins/abort unreachable @@ -2687,7 +2730,7 @@ if i32.const 0 i32.const 160 - i32.const 321 + i32.const 336 i32.const 3 call $~lib/builtins/abort unreachable @@ -2704,7 +2747,7 @@ if i32.const 0 i32.const 160 - i32.const 322 + i32.const 337 i32.const 3 call $~lib/builtins/abort unreachable @@ -2819,7 +2862,7 @@ if i32.const 0 i32.const 160 - i32.const 339 + i32.const 354 i32.const 5 call $~lib/builtins/abort unreachable @@ -2835,7 +2878,7 @@ if i32.const 0 i32.const 160 - i32.const 344 + i32.const 359 i32.const 5 call $~lib/builtins/abort unreachable @@ -2864,7 +2907,7 @@ if i32.const 0 i32.const 160 - i32.const 355 + i32.const 370 i32.const 3 call $~lib/builtins/abort unreachable @@ -2882,7 +2925,7 @@ if i32.const 0 i32.const 160 - i32.const 357 + i32.const 372 i32.const 3 call $~lib/builtins/abort unreachable @@ -2901,7 +2944,7 @@ if i32.const 0 i32.const 160 - i32.const 359 + i32.const 374 i32.const 3 call $~lib/builtins/abort unreachable @@ -2918,7 +2961,7 @@ if i32.const 0 i32.const 160 - i32.const 360 + i32.const 375 i32.const 3 call $~lib/builtins/abort unreachable @@ -2935,7 +2978,7 @@ if i32.const 0 i32.const 160 - i32.const 361 + i32.const 376 i32.const 3 call $~lib/builtins/abort unreachable @@ -2996,7 +3039,7 @@ if i32.const 0 i32.const 160 - i32.const 402 + i32.const 417 i32.const 3 call $~lib/builtins/abort unreachable @@ -3009,7 +3052,7 @@ if i32.const 0 i32.const 160 - i32.const 407 + i32.const 422 i32.const 3 call $~lib/builtins/abort unreachable @@ -3022,7 +3065,7 @@ if i32.const 0 i32.const 160 - i32.const 408 + i32.const 423 i32.const 3 call $~lib/builtins/abort unreachable @@ -3039,7 +3082,7 @@ if i32.const 0 i32.const 160 - i32.const 409 + i32.const 424 i32.const 3 call $~lib/builtins/abort unreachable @@ -3056,7 +3099,7 @@ if i32.const 0 i32.const 160 - i32.const 414 + i32.const 429 i32.const 3 call $~lib/builtins/abort unreachable @@ -3136,7 +3179,7 @@ if i32.const 0 i32.const 160 - i32.const 428 + i32.const 443 i32.const 3 call $~lib/builtins/abort unreachable @@ -3153,7 +3196,7 @@ if i32.const 0 i32.const 160 - i32.const 429 + i32.const 444 i32.const 3 call $~lib/builtins/abort unreachable @@ -3170,7 +3213,7 @@ if i32.const 0 i32.const 160 - i32.const 430 + i32.const 445 i32.const 3 call $~lib/builtins/abort unreachable @@ -3187,7 +3230,7 @@ if i32.const 0 i32.const 160 - i32.const 431 + i32.const 446 i32.const 3 call $~lib/builtins/abort unreachable @@ -3204,7 +3247,7 @@ if i32.const 0 i32.const 160 - i32.const 432 + i32.const 447 i32.const 3 call $~lib/builtins/abort unreachable @@ -3221,7 +3264,7 @@ if i32.const 0 i32.const 160 - i32.const 433 + i32.const 448 i32.const 3 call $~lib/builtins/abort unreachable @@ -3238,7 +3281,7 @@ if i32.const 0 i32.const 160 - i32.const 434 + i32.const 449 i32.const 3 call $~lib/builtins/abort unreachable @@ -3255,7 +3298,7 @@ if i32.const 0 i32.const 160 - i32.const 435 + i32.const 450 i32.const 3 call $~lib/builtins/abort unreachable @@ -3272,7 +3315,7 @@ if i32.const 0 i32.const 160 - i32.const 436 + i32.const 451 i32.const 3 call $~lib/builtins/abort unreachable @@ -3289,7 +3332,7 @@ if i32.const 0 i32.const 160 - i32.const 437 + i32.const 452 i32.const 3 call $~lib/builtins/abort unreachable @@ -3388,7 +3431,7 @@ if i32.const 0 i32.const 160 - i32.const 458 + i32.const 473 i32.const 5 call $~lib/builtins/abort unreachable @@ -3404,7 +3447,7 @@ if i32.const 0 i32.const 160 - i32.const 463 + i32.const 478 i32.const 5 call $~lib/builtins/abort unreachable @@ -3429,7 +3472,7 @@ if i32.const 0 i32.const 160 - i32.const 474 + i32.const 489 i32.const 3 call $~lib/builtins/abort unreachable @@ -3447,7 +3490,7 @@ if i32.const 0 i32.const 160 - i32.const 476 + i32.const 491 i32.const 3 call $~lib/builtins/abort unreachable @@ -3466,7 +3509,7 @@ if i32.const 0 i32.const 160 - i32.const 478 + i32.const 493 i32.const 3 call $~lib/builtins/abort unreachable @@ -3483,7 +3526,7 @@ if i32.const 0 i32.const 160 - i32.const 479 + i32.const 494 i32.const 3 call $~lib/builtins/abort unreachable @@ -3500,7 +3543,7 @@ if i32.const 0 i32.const 160 - i32.const 480 + i32.const 495 i32.const 3 call $~lib/builtins/abort unreachable @@ -3516,7 +3559,7 @@ if i32.const 0 i32.const 160 - i32.const 481 + i32.const 496 i32.const 3 call $~lib/builtins/abort unreachable @@ -3529,7 +3572,7 @@ if i32.const 0 i32.const 160 - i32.const 486 + i32.const 501 i32.const 3 call $~lib/builtins/abort unreachable @@ -3542,7 +3585,7 @@ if i32.const 0 i32.const 160 - i32.const 487 + i32.const 502 i32.const 3 call $~lib/builtins/abort unreachable @@ -3559,7 +3602,7 @@ if i32.const 0 i32.const 160 - i32.const 488 + i32.const 503 i32.const 3 call $~lib/builtins/abort unreachable @@ -3576,7 +3619,7 @@ if i32.const 0 i32.const 160 - i32.const 493 + i32.const 508 i32.const 3 call $~lib/builtins/abort unreachable @@ -3654,7 +3697,7 @@ if i32.const 0 i32.const 160 - i32.const 515 + i32.const 530 i32.const 5 call $~lib/builtins/abort unreachable @@ -3670,7 +3713,7 @@ if i32.const 0 i32.const 160 - i32.const 520 + i32.const 535 i32.const 5 call $~lib/builtins/abort unreachable @@ -3699,7 +3742,7 @@ if i32.const 0 i32.const 160 - i32.const 531 + i32.const 546 i32.const 3 call $~lib/builtins/abort unreachable @@ -3717,7 +3760,7 @@ if i32.const 0 i32.const 160 - i32.const 533 + i32.const 548 i32.const 3 call $~lib/builtins/abort unreachable @@ -3736,7 +3779,7 @@ if i32.const 0 i32.const 160 - i32.const 535 + i32.const 550 i32.const 3 call $~lib/builtins/abort unreachable @@ -3753,7 +3796,7 @@ if i32.const 0 i32.const 160 - i32.const 536 + i32.const 551 i32.const 3 call $~lib/builtins/abort unreachable @@ -3770,7 +3813,7 @@ if i32.const 0 i32.const 160 - i32.const 537 + i32.const 552 i32.const 3 call $~lib/builtins/abort unreachable @@ -3791,7 +3834,7 @@ if i32.const 0 i32.const 160 - i32.const 539 + i32.const 554 i32.const 3 call $~lib/builtins/abort unreachable @@ -3808,7 +3851,7 @@ if i32.const 0 i32.const 160 - i32.const 540 + i32.const 555 i32.const 3 call $~lib/builtins/abort unreachable @@ -3824,7 +3867,7 @@ if i32.const 0 i32.const 160 - i32.const 541 + i32.const 556 i32.const 3 call $~lib/builtins/abort unreachable @@ -3837,7 +3880,7 @@ if i32.const 0 i32.const 160 - i32.const 542 + i32.const 557 i32.const 3 call $~lib/builtins/abort unreachable @@ -3850,7 +3893,7 @@ if i32.const 0 i32.const 160 - i32.const 543 + i32.const 558 i32.const 3 call $~lib/builtins/abort unreachable @@ -3867,7 +3910,7 @@ if i32.const 0 i32.const 160 - i32.const 544 + i32.const 559 i32.const 3 call $~lib/builtins/abort unreachable @@ -3884,7 +3927,7 @@ if i32.const 0 i32.const 160 - i32.const 549 + i32.const 564 i32.const 3 call $~lib/builtins/abort unreachable @@ -3915,7 +3958,7 @@ if i32.const 0 i32.const 160 - i32.const 558 + i32.const 573 i32.const 3 call $~lib/builtins/abort unreachable @@ -3932,7 +3975,7 @@ if i32.const 0 i32.const 160 - i32.const 559 + i32.const 574 i32.const 3 call $~lib/builtins/abort unreachable @@ -3949,7 +3992,7 @@ if i32.const 0 i32.const 160 - i32.const 560 + i32.const 575 i32.const 3 call $~lib/builtins/abort unreachable @@ -3966,7 +4009,7 @@ if i32.const 0 i32.const 160 - i32.const 561 + i32.const 576 i32.const 3 call $~lib/builtins/abort unreachable @@ -3983,7 +4026,7 @@ if i32.const 0 i32.const 160 - i32.const 562 + i32.const 577 i32.const 3 call $~lib/builtins/abort unreachable @@ -4000,7 +4043,7 @@ if i32.const 0 i32.const 160 - i32.const 563 + i32.const 578 i32.const 3 call $~lib/builtins/abort unreachable @@ -4017,7 +4060,7 @@ if i32.const 0 i32.const 160 - i32.const 564 + i32.const 579 i32.const 3 call $~lib/builtins/abort unreachable @@ -4034,7 +4077,7 @@ if i32.const 0 i32.const 160 - i32.const 565 + i32.const 580 i32.const 3 call $~lib/builtins/abort unreachable @@ -4050,7 +4093,7 @@ if i32.const 0 i32.const 160 - i32.const 566 + i32.const 581 i32.const 3 call $~lib/builtins/abort unreachable @@ -4105,7 +4148,7 @@ if i32.const 0 i32.const 160 - i32.const 593 + i32.const 608 i32.const 3 call $~lib/builtins/abort unreachable @@ -4123,7 +4166,7 @@ if i32.const 0 i32.const 160 - i32.const 595 + i32.const 610 i32.const 3 call $~lib/builtins/abort unreachable @@ -4142,7 +4185,7 @@ if i32.const 0 i32.const 160 - i32.const 597 + i32.const 612 i32.const 3 call $~lib/builtins/abort unreachable @@ -4159,7 +4202,7 @@ if i32.const 0 i32.const 160 - i32.const 598 + i32.const 613 i32.const 3 call $~lib/builtins/abort unreachable @@ -4176,7 +4219,7 @@ if i32.const 0 i32.const 160 - i32.const 599 + i32.const 614 i32.const 3 call $~lib/builtins/abort unreachable @@ -4197,7 +4240,7 @@ if i32.const 0 i32.const 160 - i32.const 601 + i32.const 616 i32.const 3 call $~lib/builtins/abort unreachable @@ -4214,7 +4257,7 @@ if i32.const 0 i32.const 160 - i32.const 602 + i32.const 617 i32.const 3 call $~lib/builtins/abort unreachable @@ -4230,7 +4273,7 @@ if i32.const 0 i32.const 160 - i32.const 603 + i32.const 618 i32.const 3 call $~lib/builtins/abort unreachable @@ -4243,7 +4286,7 @@ if i32.const 0 i32.const 160 - i32.const 604 + i32.const 619 i32.const 3 call $~lib/builtins/abort unreachable @@ -4256,7 +4299,7 @@ if i32.const 0 i32.const 160 - i32.const 605 + i32.const 620 i32.const 3 call $~lib/builtins/abort unreachable @@ -4273,7 +4316,7 @@ if i32.const 0 i32.const 160 - i32.const 606 + i32.const 621 i32.const 3 call $~lib/builtins/abort unreachable @@ -4290,7 +4333,7 @@ if i32.const 0 i32.const 160 - i32.const 611 + i32.const 626 i32.const 3 call $~lib/builtins/abort unreachable @@ -4321,7 +4364,7 @@ if i32.const 0 i32.const 160 - i32.const 620 + i32.const 635 i32.const 3 call $~lib/builtins/abort unreachable @@ -4338,7 +4381,7 @@ if i32.const 0 i32.const 160 - i32.const 621 + i32.const 636 i32.const 3 call $~lib/builtins/abort unreachable @@ -4355,7 +4398,7 @@ if i32.const 0 i32.const 160 - i32.const 622 + i32.const 637 i32.const 3 call $~lib/builtins/abort unreachable @@ -4372,7 +4415,7 @@ if i32.const 0 i32.const 160 - i32.const 623 + i32.const 638 i32.const 3 call $~lib/builtins/abort unreachable @@ -4389,7 +4432,7 @@ if i32.const 0 i32.const 160 - i32.const 624 + i32.const 639 i32.const 3 call $~lib/builtins/abort unreachable @@ -4406,7 +4449,7 @@ if i32.const 0 i32.const 160 - i32.const 625 + i32.const 640 i32.const 3 call $~lib/builtins/abort unreachable @@ -4423,7 +4466,7 @@ if i32.const 0 i32.const 160 - i32.const 626 + i32.const 641 i32.const 3 call $~lib/builtins/abort unreachable @@ -4440,7 +4483,7 @@ if i32.const 0 i32.const 160 - i32.const 627 + i32.const 642 i32.const 3 call $~lib/builtins/abort unreachable @@ -4456,7 +4499,7 @@ if i32.const 0 i32.const 160 - i32.const 628 + i32.const 643 i32.const 3 call $~lib/builtins/abort unreachable @@ -4490,76 +4533,6 @@ i32.ne drop ) - (func $features/simd/test_v8x16 - (local $0 v128) - (local $1 v128) - (local $2 v128) - (local $3 i32) - v128.const i32x4 0x03020100 0x07060504 0x0b0a0908 0x0f0e0d0c - local.set $0 - v128.const i32x4 0x13121110 0x17161514 0x1b1a1918 0x1f1e1d1c - local.set $1 - local.get $0 - local.get $1 - v8x16.shuffle 0 17 2 19 4 21 6 23 8 25 10 27 12 29 14 31 - v128.const i32x4 0x13021100 0x17061504 0x1b0a1908 0x1f0e1d0c - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 160 - i32.const 656 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - v128.const i32x4 0x0c0d0e10 0x08090a0b 0x04050607 0x00010203 - local.set $2 - local.get $0 - local.get $2 - v8x16.swizzle - v128.const i32x4 0x0c0d0e00 0x08090a0b 0x04050607 0x00010203 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 160 - i32.const 662 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 16 - call $~lib/rt/tlsf/__alloc - local.set $3 - local.get $3 - i32.const 42 - i32.store8 - local.get $3 - v8x16.load_splat - v128.const i32x4 0x2a2a2a2a 0x2a2a2a2a 0x2a2a2a2a 0x2a2a2a2a - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 160 - i32.const 670 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $3 - call $~lib/rt/tlsf/__free - ) (func $features/simd/test_const (result v128) (local $0 v128) v128.const i32x4 0x00000001 0x00000001 0x00000001 0x00000001 @@ -4576,7 +4549,6 @@ call $features/simd/test_i64x2 call $features/simd/test_f32x4 call $features/simd/test_f64x2 - call $features/simd/test_v8x16 call $features/simd/test_const drop ) From f0a59ee614357be2f3e494915273d151c8feef51 Mon Sep 17 00:00:00 2001 From: dcode Date: Fri, 26 Feb 2021 17:26:17 +0100 Subject: [PATCH 10/24] remove i8x16.mul --- src/builtins.ts | 11 - std/assembly/builtins.ts | 4 - std/assembly/index.d.ts | 2 - tests/compiler/features/simd.optimized.wat | 12 +- tests/compiler/features/simd.ts | 1 - tests/compiler/features/simd.untouched.wat | 251 ++++++++++----------- 6 files changed, 123 insertions(+), 158 deletions(-) diff --git a/src/builtins.ts b/src/builtins.ts index 21f300992c..819f849b5c 100644 --- a/src/builtins.ts +++ b/src/builtins.ts @@ -4153,8 +4153,6 @@ function builtin_v128_mul(ctx: BuiltinContext): ExpressionRef { var arg1 = compiler.compileExpression(operands[1], Type.v128, Constraints.CONV_IMPLICIT); if (type.isValue) { switch (type.kind) { - case TypeKind.I8: - case TypeKind.U8: return module.binary(BinaryOp.MulI8x16, arg0, arg1); case TypeKind.I16: case TypeKind.U16: return module.binary(BinaryOp.MulI16x8, arg0, arg1); case TypeKind.I32: @@ -7077,15 +7075,6 @@ function builtin_i8x16_sub(ctx: BuiltinContext): ExpressionRef { } builtins.set(BuiltinNames.i8x16_sub, builtin_i8x16_sub); -// i8x16.mul -> v128.mul -function builtin_i8x16_mul(ctx: BuiltinContext): ExpressionRef { - checkTypeAbsent(ctx); - ctx.typeArguments = [ Type.i8 ]; - ctx.contextualType = Type.v128; - return builtin_v128_mul(ctx); -} -builtins.set(BuiltinNames.i8x16_mul, builtin_i8x16_mul); - // i8x16.min_s -> v128.min function builtin_i8x16_min_s(ctx: BuiltinContext): ExpressionRef { checkTypeAbsent(ctx); diff --git a/std/assembly/builtins.ts b/std/assembly/builtins.ts index 2cc3f5e26f..ffd1c3b138 100644 --- a/std/assembly/builtins.ts +++ b/std/assembly/builtins.ts @@ -1377,10 +1377,6 @@ export namespace i8x16 { @builtin export declare function sub(a: v128, b: v128): v128; - // @ts-ignore: decorator - @builtin - export declare function mul(a: v128, b: v128): v128; - // @ts-ignore: decorator @builtin export declare function min_s(a: v128, b: v128): v128; diff --git a/std/assembly/index.d.ts b/std/assembly/index.d.ts index 4d45166a02..057e2d782b 100644 --- a/std/assembly/index.d.ts +++ b/std/assembly/index.d.ts @@ -821,8 +821,6 @@ declare namespace i8x16 { export function add(a: v128, b: v128): v128; /** Subtracts each 8-bit integer lane. */ export function sub(a: v128, b: v128): v128; - /** Multiplies each 8-bit integer lane. */ - export function mul(a: v128, b: v128): v128; /** Computes the signed minimum of each 8-bit integer lane. */ export function min_s(a: v128, b: v128): v128; /** Computes the unsigned minimum of each 8-bit integer lane. */ diff --git a/tests/compiler/features/simd.optimized.wat b/tests/compiler/features/simd.optimized.wat index a44768e83b..bd8698a259 100644 --- a/tests/compiler/features/simd.optimized.wat +++ b/tests/compiler/features/simd.optimized.wat @@ -1169,7 +1169,7 @@ if i32.const 0 i32.const 1184 - i32.const 354 + i32.const 353 i32.const 5 call $~lib/builtins/abort unreachable @@ -1183,7 +1183,7 @@ if i32.const 0 i32.const 1184 - i32.const 359 + i32.const 358 i32.const 5 call $~lib/builtins/abort unreachable @@ -1213,7 +1213,7 @@ if i32.const 0 i32.const 1184 - i32.const 473 + i32.const 472 i32.const 5 call $~lib/builtins/abort unreachable @@ -1227,7 +1227,7 @@ if i32.const 0 i32.const 1184 - i32.const 478 + i32.const 477 i32.const 5 call $~lib/builtins/abort unreachable @@ -1251,7 +1251,7 @@ if i32.const 0 i32.const 1184 - i32.const 530 + i32.const 529 i32.const 5 call $~lib/builtins/abort unreachable @@ -1265,7 +1265,7 @@ if i32.const 0 i32.const 1184 - i32.const 535 + i32.const 534 i32.const 5 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/features/simd.ts b/tests/compiler/features/simd.ts index f8d8661ef9..549f010f24 100644 --- a/tests/compiler/features/simd.ts +++ b/tests/compiler/features/simd.ts @@ -104,7 +104,6 @@ function test_i8x16(): void { var c = i8x16.add(a, b); assert(c == i8x16(2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, -128)); assert(i8x16.sub(c, b) == a); - assert(i8x16.mul(c, b) == c); assert( i8x16.min_s( i8x16(0, 127, 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), diff --git a/tests/compiler/features/simd.untouched.wat b/tests/compiler/features/simd.untouched.wat index bacd6a7722..b03c25629f 100644 --- a/tests/compiler/features/simd.untouched.wat +++ b/tests/compiler/features/simd.untouched.wat @@ -1731,23 +1731,6 @@ call $~lib/builtins/abort unreachable end - local.get $2 - local.get $1 - i8x16.mul - local.get $2 - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 160 - i32.const 107 - i32.const 3 - call $~lib/builtins/abort - unreachable - end v128.const i32x4 0x007f7f00 0x00000000 0x00000000 0x00000000 v128.const i32x4 0x00800080 0x00000000 0x00000000 0x00000000 i8x16.min_s @@ -1804,7 +1787,7 @@ if i32.const 0 i32.const 160 - i32.const 148 + i32.const 147 i32.const 3 call $~lib/builtins/abort unreachable @@ -1821,7 +1804,7 @@ if i32.const 0 i32.const 160 - i32.const 153 + i32.const 152 i32.const 3 call $~lib/builtins/abort unreachable @@ -1838,7 +1821,7 @@ if i32.const 0 i32.const 160 - i32.const 154 + i32.const 153 i32.const 3 call $~lib/builtins/abort unreachable @@ -1853,7 +1836,7 @@ if i32.const 0 i32.const 160 - i32.const 155 + i32.const 154 i32.const 3 call $~lib/builtins/abort unreachable @@ -1870,7 +1853,7 @@ if i32.const 0 i32.const 160 - i32.const 156 + i32.const 155 i32.const 3 call $~lib/builtins/abort unreachable @@ -1887,7 +1870,7 @@ if i32.const 0 i32.const 160 - i32.const 161 + i32.const 160 i32.const 3 call $~lib/builtins/abort unreachable @@ -2011,7 +1994,7 @@ if i32.const 0 i32.const 160 - i32.const 199 + i32.const 198 i32.const 3 call $~lib/builtins/abort unreachable @@ -2028,7 +2011,7 @@ if i32.const 0 i32.const 160 - i32.const 200 + i32.const 199 i32.const 3 call $~lib/builtins/abort unreachable @@ -2045,7 +2028,7 @@ if i32.const 0 i32.const 160 - i32.const 201 + i32.const 200 i32.const 3 call $~lib/builtins/abort unreachable @@ -2062,7 +2045,7 @@ if i32.const 0 i32.const 160 - i32.const 202 + i32.const 201 i32.const 3 call $~lib/builtins/abort unreachable @@ -2079,7 +2062,7 @@ if i32.const 0 i32.const 160 - i32.const 203 + i32.const 202 i32.const 3 call $~lib/builtins/abort unreachable @@ -2096,7 +2079,7 @@ if i32.const 0 i32.const 160 - i32.const 204 + i32.const 203 i32.const 3 call $~lib/builtins/abort unreachable @@ -2113,7 +2096,7 @@ if i32.const 0 i32.const 160 - i32.const 205 + i32.const 204 i32.const 3 call $~lib/builtins/abort unreachable @@ -2130,7 +2113,7 @@ if i32.const 0 i32.const 160 - i32.const 206 + i32.const 205 i32.const 3 call $~lib/builtins/abort unreachable @@ -2147,7 +2130,7 @@ if i32.const 0 i32.const 160 - i32.const 207 + i32.const 206 i32.const 3 call $~lib/builtins/abort unreachable @@ -2164,7 +2147,7 @@ if i32.const 0 i32.const 160 - i32.const 208 + i32.const 207 i32.const 3 call $~lib/builtins/abort unreachable @@ -2209,7 +2192,7 @@ if i32.const 0 i32.const 160 - i32.const 214 + i32.const 213 i32.const 5 call $~lib/builtins/abort unreachable @@ -2228,7 +2211,7 @@ if i32.const 0 i32.const 160 - i32.const 220 + i32.const 219 i32.const 5 call $~lib/builtins/abort unreachable @@ -2255,7 +2238,7 @@ if i32.const 0 i32.const 160 - i32.const 230 + i32.const 229 i32.const 3 call $~lib/builtins/abort unreachable @@ -2273,7 +2256,7 @@ if i32.const 0 i32.const 160 - i32.const 232 + i32.const 231 i32.const 3 call $~lib/builtins/abort unreachable @@ -2292,7 +2275,7 @@ if i32.const 0 i32.const 160 - i32.const 234 + i32.const 233 i32.const 3 call $~lib/builtins/abort unreachable @@ -2309,7 +2292,7 @@ if i32.const 0 i32.const 160 - i32.const 235 + i32.const 234 i32.const 3 call $~lib/builtins/abort unreachable @@ -2326,7 +2309,7 @@ if i32.const 0 i32.const 160 - i32.const 236 + i32.const 235 i32.const 3 call $~lib/builtins/abort unreachable @@ -2387,7 +2370,7 @@ if i32.const 0 i32.const 160 - i32.const 277 + i32.const 276 i32.const 3 call $~lib/builtins/abort unreachable @@ -2404,7 +2387,7 @@ if i32.const 0 i32.const 160 - i32.const 282 + i32.const 281 i32.const 3 call $~lib/builtins/abort unreachable @@ -2421,7 +2404,7 @@ if i32.const 0 i32.const 160 - i32.const 283 + i32.const 282 i32.const 3 call $~lib/builtins/abort unreachable @@ -2436,7 +2419,7 @@ if i32.const 0 i32.const 160 - i32.const 284 + i32.const 283 i32.const 3 call $~lib/builtins/abort unreachable @@ -2453,7 +2436,7 @@ if i32.const 0 i32.const 160 - i32.const 285 + i32.const 284 i32.const 3 call $~lib/builtins/abort unreachable @@ -2470,7 +2453,7 @@ if i32.const 0 i32.const 160 - i32.const 290 + i32.const 289 i32.const 3 call $~lib/builtins/abort unreachable @@ -2594,7 +2577,7 @@ if i32.const 0 i32.const 160 - i32.const 328 + i32.const 327 i32.const 3 call $~lib/builtins/abort unreachable @@ -2611,7 +2594,7 @@ if i32.const 0 i32.const 160 - i32.const 329 + i32.const 328 i32.const 3 call $~lib/builtins/abort unreachable @@ -2628,7 +2611,7 @@ if i32.const 0 i32.const 160 - i32.const 330 + i32.const 329 i32.const 3 call $~lib/builtins/abort unreachable @@ -2645,7 +2628,7 @@ if i32.const 0 i32.const 160 - i32.const 331 + i32.const 330 i32.const 3 call $~lib/builtins/abort unreachable @@ -2662,7 +2645,7 @@ if i32.const 0 i32.const 160 - i32.const 332 + i32.const 331 i32.const 3 call $~lib/builtins/abort unreachable @@ -2679,7 +2662,7 @@ if i32.const 0 i32.const 160 - i32.const 333 + i32.const 332 i32.const 3 call $~lib/builtins/abort unreachable @@ -2696,7 +2679,7 @@ if i32.const 0 i32.const 160 - i32.const 334 + i32.const 333 i32.const 3 call $~lib/builtins/abort unreachable @@ -2713,7 +2696,7 @@ if i32.const 0 i32.const 160 - i32.const 335 + i32.const 334 i32.const 3 call $~lib/builtins/abort unreachable @@ -2730,7 +2713,7 @@ if i32.const 0 i32.const 160 - i32.const 336 + i32.const 335 i32.const 3 call $~lib/builtins/abort unreachable @@ -2747,7 +2730,7 @@ if i32.const 0 i32.const 160 - i32.const 337 + i32.const 336 i32.const 3 call $~lib/builtins/abort unreachable @@ -2862,7 +2845,7 @@ if i32.const 0 i32.const 160 - i32.const 354 + i32.const 353 i32.const 5 call $~lib/builtins/abort unreachable @@ -2878,7 +2861,7 @@ if i32.const 0 i32.const 160 - i32.const 359 + i32.const 358 i32.const 5 call $~lib/builtins/abort unreachable @@ -2907,7 +2890,7 @@ if i32.const 0 i32.const 160 - i32.const 370 + i32.const 369 i32.const 3 call $~lib/builtins/abort unreachable @@ -2925,7 +2908,7 @@ if i32.const 0 i32.const 160 - i32.const 372 + i32.const 371 i32.const 3 call $~lib/builtins/abort unreachable @@ -2944,7 +2927,7 @@ if i32.const 0 i32.const 160 - i32.const 374 + i32.const 373 i32.const 3 call $~lib/builtins/abort unreachable @@ -2961,7 +2944,7 @@ if i32.const 0 i32.const 160 - i32.const 375 + i32.const 374 i32.const 3 call $~lib/builtins/abort unreachable @@ -2978,7 +2961,7 @@ if i32.const 0 i32.const 160 - i32.const 376 + i32.const 375 i32.const 3 call $~lib/builtins/abort unreachable @@ -3039,7 +3022,7 @@ if i32.const 0 i32.const 160 - i32.const 417 + i32.const 416 i32.const 3 call $~lib/builtins/abort unreachable @@ -3052,7 +3035,7 @@ if i32.const 0 i32.const 160 - i32.const 422 + i32.const 421 i32.const 3 call $~lib/builtins/abort unreachable @@ -3065,7 +3048,7 @@ if i32.const 0 i32.const 160 - i32.const 423 + i32.const 422 i32.const 3 call $~lib/builtins/abort unreachable @@ -3082,7 +3065,7 @@ if i32.const 0 i32.const 160 - i32.const 424 + i32.const 423 i32.const 3 call $~lib/builtins/abort unreachable @@ -3099,7 +3082,7 @@ if i32.const 0 i32.const 160 - i32.const 429 + i32.const 428 i32.const 3 call $~lib/builtins/abort unreachable @@ -3179,7 +3162,7 @@ if i32.const 0 i32.const 160 - i32.const 443 + i32.const 442 i32.const 3 call $~lib/builtins/abort unreachable @@ -3196,7 +3179,7 @@ if i32.const 0 i32.const 160 - i32.const 444 + i32.const 443 i32.const 3 call $~lib/builtins/abort unreachable @@ -3213,7 +3196,7 @@ if i32.const 0 i32.const 160 - i32.const 445 + i32.const 444 i32.const 3 call $~lib/builtins/abort unreachable @@ -3230,7 +3213,7 @@ if i32.const 0 i32.const 160 - i32.const 446 + i32.const 445 i32.const 3 call $~lib/builtins/abort unreachable @@ -3247,7 +3230,7 @@ if i32.const 0 i32.const 160 - i32.const 447 + i32.const 446 i32.const 3 call $~lib/builtins/abort unreachable @@ -3264,7 +3247,7 @@ if i32.const 0 i32.const 160 - i32.const 448 + i32.const 447 i32.const 3 call $~lib/builtins/abort unreachable @@ -3281,7 +3264,7 @@ if i32.const 0 i32.const 160 - i32.const 449 + i32.const 448 i32.const 3 call $~lib/builtins/abort unreachable @@ -3298,7 +3281,7 @@ if i32.const 0 i32.const 160 - i32.const 450 + i32.const 449 i32.const 3 call $~lib/builtins/abort unreachable @@ -3315,7 +3298,7 @@ if i32.const 0 i32.const 160 - i32.const 451 + i32.const 450 i32.const 3 call $~lib/builtins/abort unreachable @@ -3332,7 +3315,7 @@ if i32.const 0 i32.const 160 - i32.const 452 + i32.const 451 i32.const 3 call $~lib/builtins/abort unreachable @@ -3431,7 +3414,7 @@ if i32.const 0 i32.const 160 - i32.const 473 + i32.const 472 i32.const 5 call $~lib/builtins/abort unreachable @@ -3447,7 +3430,7 @@ if i32.const 0 i32.const 160 - i32.const 478 + i32.const 477 i32.const 5 call $~lib/builtins/abort unreachable @@ -3472,7 +3455,7 @@ if i32.const 0 i32.const 160 - i32.const 489 + i32.const 488 i32.const 3 call $~lib/builtins/abort unreachable @@ -3490,7 +3473,7 @@ if i32.const 0 i32.const 160 - i32.const 491 + i32.const 490 i32.const 3 call $~lib/builtins/abort unreachable @@ -3509,7 +3492,7 @@ if i32.const 0 i32.const 160 - i32.const 493 + i32.const 492 i32.const 3 call $~lib/builtins/abort unreachable @@ -3526,7 +3509,7 @@ if i32.const 0 i32.const 160 - i32.const 494 + i32.const 493 i32.const 3 call $~lib/builtins/abort unreachable @@ -3543,7 +3526,7 @@ if i32.const 0 i32.const 160 - i32.const 495 + i32.const 494 i32.const 3 call $~lib/builtins/abort unreachable @@ -3559,7 +3542,7 @@ if i32.const 0 i32.const 160 - i32.const 496 + i32.const 495 i32.const 3 call $~lib/builtins/abort unreachable @@ -3572,7 +3555,7 @@ if i32.const 0 i32.const 160 - i32.const 501 + i32.const 500 i32.const 3 call $~lib/builtins/abort unreachable @@ -3585,7 +3568,7 @@ if i32.const 0 i32.const 160 - i32.const 502 + i32.const 501 i32.const 3 call $~lib/builtins/abort unreachable @@ -3602,7 +3585,7 @@ if i32.const 0 i32.const 160 - i32.const 503 + i32.const 502 i32.const 3 call $~lib/builtins/abort unreachable @@ -3619,7 +3602,7 @@ if i32.const 0 i32.const 160 - i32.const 508 + i32.const 507 i32.const 3 call $~lib/builtins/abort unreachable @@ -3697,7 +3680,7 @@ if i32.const 0 i32.const 160 - i32.const 530 + i32.const 529 i32.const 5 call $~lib/builtins/abort unreachable @@ -3713,7 +3696,7 @@ if i32.const 0 i32.const 160 - i32.const 535 + i32.const 534 i32.const 5 call $~lib/builtins/abort unreachable @@ -3742,7 +3725,7 @@ if i32.const 0 i32.const 160 - i32.const 546 + i32.const 545 i32.const 3 call $~lib/builtins/abort unreachable @@ -3760,7 +3743,7 @@ if i32.const 0 i32.const 160 - i32.const 548 + i32.const 547 i32.const 3 call $~lib/builtins/abort unreachable @@ -3779,7 +3762,7 @@ if i32.const 0 i32.const 160 - i32.const 550 + i32.const 549 i32.const 3 call $~lib/builtins/abort unreachable @@ -3796,7 +3779,7 @@ if i32.const 0 i32.const 160 - i32.const 551 + i32.const 550 i32.const 3 call $~lib/builtins/abort unreachable @@ -3813,7 +3796,7 @@ if i32.const 0 i32.const 160 - i32.const 552 + i32.const 551 i32.const 3 call $~lib/builtins/abort unreachable @@ -3834,7 +3817,7 @@ if i32.const 0 i32.const 160 - i32.const 554 + i32.const 553 i32.const 3 call $~lib/builtins/abort unreachable @@ -3851,7 +3834,7 @@ if i32.const 0 i32.const 160 - i32.const 555 + i32.const 554 i32.const 3 call $~lib/builtins/abort unreachable @@ -3867,7 +3850,7 @@ if i32.const 0 i32.const 160 - i32.const 556 + i32.const 555 i32.const 3 call $~lib/builtins/abort unreachable @@ -3880,7 +3863,7 @@ if i32.const 0 i32.const 160 - i32.const 557 + i32.const 556 i32.const 3 call $~lib/builtins/abort unreachable @@ -3893,7 +3876,7 @@ if i32.const 0 i32.const 160 - i32.const 558 + i32.const 557 i32.const 3 call $~lib/builtins/abort unreachable @@ -3910,7 +3893,7 @@ if i32.const 0 i32.const 160 - i32.const 559 + i32.const 558 i32.const 3 call $~lib/builtins/abort unreachable @@ -3927,7 +3910,7 @@ if i32.const 0 i32.const 160 - i32.const 564 + i32.const 563 i32.const 3 call $~lib/builtins/abort unreachable @@ -3958,7 +3941,7 @@ if i32.const 0 i32.const 160 - i32.const 573 + i32.const 572 i32.const 3 call $~lib/builtins/abort unreachable @@ -3975,7 +3958,7 @@ if i32.const 0 i32.const 160 - i32.const 574 + i32.const 573 i32.const 3 call $~lib/builtins/abort unreachable @@ -3992,7 +3975,7 @@ if i32.const 0 i32.const 160 - i32.const 575 + i32.const 574 i32.const 3 call $~lib/builtins/abort unreachable @@ -4009,7 +3992,7 @@ if i32.const 0 i32.const 160 - i32.const 576 + i32.const 575 i32.const 3 call $~lib/builtins/abort unreachable @@ -4026,7 +4009,7 @@ if i32.const 0 i32.const 160 - i32.const 577 + i32.const 576 i32.const 3 call $~lib/builtins/abort unreachable @@ -4043,7 +4026,7 @@ if i32.const 0 i32.const 160 - i32.const 578 + i32.const 577 i32.const 3 call $~lib/builtins/abort unreachable @@ -4060,7 +4043,7 @@ if i32.const 0 i32.const 160 - i32.const 579 + i32.const 578 i32.const 3 call $~lib/builtins/abort unreachable @@ -4077,7 +4060,7 @@ if i32.const 0 i32.const 160 - i32.const 580 + i32.const 579 i32.const 3 call $~lib/builtins/abort unreachable @@ -4093,7 +4076,7 @@ if i32.const 0 i32.const 160 - i32.const 581 + i32.const 580 i32.const 3 call $~lib/builtins/abort unreachable @@ -4148,7 +4131,7 @@ if i32.const 0 i32.const 160 - i32.const 608 + i32.const 607 i32.const 3 call $~lib/builtins/abort unreachable @@ -4166,7 +4149,7 @@ if i32.const 0 i32.const 160 - i32.const 610 + i32.const 609 i32.const 3 call $~lib/builtins/abort unreachable @@ -4185,7 +4168,7 @@ if i32.const 0 i32.const 160 - i32.const 612 + i32.const 611 i32.const 3 call $~lib/builtins/abort unreachable @@ -4202,7 +4185,7 @@ if i32.const 0 i32.const 160 - i32.const 613 + i32.const 612 i32.const 3 call $~lib/builtins/abort unreachable @@ -4219,7 +4202,7 @@ if i32.const 0 i32.const 160 - i32.const 614 + i32.const 613 i32.const 3 call $~lib/builtins/abort unreachable @@ -4240,7 +4223,7 @@ if i32.const 0 i32.const 160 - i32.const 616 + i32.const 615 i32.const 3 call $~lib/builtins/abort unreachable @@ -4257,7 +4240,7 @@ if i32.const 0 i32.const 160 - i32.const 617 + i32.const 616 i32.const 3 call $~lib/builtins/abort unreachable @@ -4273,7 +4256,7 @@ if i32.const 0 i32.const 160 - i32.const 618 + i32.const 617 i32.const 3 call $~lib/builtins/abort unreachable @@ -4286,7 +4269,7 @@ if i32.const 0 i32.const 160 - i32.const 619 + i32.const 618 i32.const 3 call $~lib/builtins/abort unreachable @@ -4299,7 +4282,7 @@ if i32.const 0 i32.const 160 - i32.const 620 + i32.const 619 i32.const 3 call $~lib/builtins/abort unreachable @@ -4316,7 +4299,7 @@ if i32.const 0 i32.const 160 - i32.const 621 + i32.const 620 i32.const 3 call $~lib/builtins/abort unreachable @@ -4333,7 +4316,7 @@ if i32.const 0 i32.const 160 - i32.const 626 + i32.const 625 i32.const 3 call $~lib/builtins/abort unreachable @@ -4364,7 +4347,7 @@ if i32.const 0 i32.const 160 - i32.const 635 + i32.const 634 i32.const 3 call $~lib/builtins/abort unreachable @@ -4381,7 +4364,7 @@ if i32.const 0 i32.const 160 - i32.const 636 + i32.const 635 i32.const 3 call $~lib/builtins/abort unreachable @@ -4398,7 +4381,7 @@ if i32.const 0 i32.const 160 - i32.const 637 + i32.const 636 i32.const 3 call $~lib/builtins/abort unreachable @@ -4415,7 +4398,7 @@ if i32.const 0 i32.const 160 - i32.const 638 + i32.const 637 i32.const 3 call $~lib/builtins/abort unreachable @@ -4432,7 +4415,7 @@ if i32.const 0 i32.const 160 - i32.const 639 + i32.const 638 i32.const 3 call $~lib/builtins/abort unreachable @@ -4449,7 +4432,7 @@ if i32.const 0 i32.const 160 - i32.const 640 + i32.const 639 i32.const 3 call $~lib/builtins/abort unreachable @@ -4466,7 +4449,7 @@ if i32.const 0 i32.const 160 - i32.const 641 + i32.const 640 i32.const 3 call $~lib/builtins/abort unreachable @@ -4483,7 +4466,7 @@ if i32.const 0 i32.const 160 - i32.const 642 + i32.const 641 i32.const 3 call $~lib/builtins/abort unreachable @@ -4499,7 +4482,7 @@ if i32.const 0 i32.const 160 - i32.const 643 + i32.const 642 i32.const 3 call $~lib/builtins/abort unreachable From e023abea733ae3740d528e9237954bbc448e8007 Mon Sep 17 00:00:00 2001 From: dcode Date: Fri, 26 Feb 2021 17:33:47 +0100 Subject: [PATCH 11/24] rename SIMD saturate -> sat --- src/builtins.ts | 100 ++++++++++++++++---------------- std/assembly/builtins.ts | 20 +++---- std/assembly/index.d.ts | 20 +++---- tests/compiler/features/simd.ts | 16 ++--- 4 files changed, 78 insertions(+), 78 deletions(-) diff --git a/src/builtins.ts b/src/builtins.ts index 819f849b5c..1428b13505 100644 --- a/src/builtins.ts +++ b/src/builtins.ts @@ -370,8 +370,8 @@ export namespace BuiltinNames { export const v128_mul = "~lib/builtins/v128.mul"; export const v128_div = "~lib/builtins/v128.div"; export const v128_neg = "~lib/builtins/v128.neg"; - export const v128_add_saturate = "~lib/builtins/v128.add_saturate"; - export const v128_sub_saturate = "~lib/builtins/v128.sub_saturate"; + export const v128_add_sat = "~lib/builtins/v128.add_sat"; + export const v128_sub_sat = "~lib/builtins/v128.sub_sat"; export const v128_shl = "~lib/builtins/v128.shl"; export const v128_shr = "~lib/builtins/v128.shr"; export const v128_and = "~lib/builtins/v128.and"; @@ -430,10 +430,10 @@ export namespace BuiltinNames { export const i8x16_avgr_u = "~lib/builtins/i8x16.avgr_u"; export const i8x16_abs = "~lib/builtins/i8x16.abs"; export const i8x16_neg = "~lib/builtins/i8x16.neg"; - export const i8x16_add_saturate_s = "~lib/builtins/i8x16.add_saturate_s"; - export const i8x16_add_saturate_u = "~lib/builtins/i8x16.add_saturate_u"; - export const i8x16_sub_saturate_s = "~lib/builtins/i8x16.sub_saturate_s"; - export const i8x16_sub_saturate_u = "~lib/builtins/i8x16.sub_saturate_u"; + export const i8x16_add_sat_s = "~lib/builtins/i8x16.add_sat_s"; + export const i8x16_add_sat_u = "~lib/builtins/i8x16.add_sat_u"; + export const i8x16_sub_sat_s = "~lib/builtins/i8x16.sub_sat_s"; + export const i8x16_sub_sat_u = "~lib/builtins/i8x16.sub_sat_u"; export const i8x16_shl = "~lib/builtins/i8x16.shl"; export const i8x16_shr_s = "~lib/builtins/i8x16.shr_s"; export const i8x16_shr_u = "~lib/builtins/i8x16.shr_u"; @@ -469,10 +469,10 @@ export namespace BuiltinNames { export const i16x8_avgr_u = "~lib/builtins/i16x8.avgr_u"; export const i16x8_abs = "~lib/builtins/i16x8.abs"; export const i16x8_neg = "~lib/builtins/i16x8.neg"; - export const i16x8_add_saturate_s = "~lib/builtins/i16x8.add_saturate_s"; - export const i16x8_add_saturate_u = "~lib/builtins/i16x8.add_saturate_u"; - export const i16x8_sub_saturate_s = "~lib/builtins/i16x8.sub_saturate_s"; - export const i16x8_sub_saturate_u = "~lib/builtins/i16x8.sub_saturate_u"; + export const i16x8_add_sat_s = "~lib/builtins/i16x8.add_sat_s"; + export const i16x8_add_sat_u = "~lib/builtins/i16x8.add_sat_u"; + export const i16x8_sub_sat_s = "~lib/builtins/i16x8.sub_sat_s"; + export const i16x8_sub_sat_u = "~lib/builtins/i16x8.sub_sat_u"; export const i16x8_shl = "~lib/builtins/i16x8.shl"; export const i16x8_shr_s = "~lib/builtins/i16x8.shr_s"; export const i16x8_shr_u = "~lib/builtins/i16x8.shr_u"; @@ -4204,8 +4204,8 @@ function builtin_v128_div(ctx: BuiltinContext): ExpressionRef { } builtins.set(BuiltinNames.v128_div, builtin_v128_div); -// v128.add_saturate(a: v128, b: v128) -> v128 -function builtin_v128_add_saturate(ctx: BuiltinContext): ExpressionRef { +// v128.add_sat(a: v128, b: v128) -> v128 +function builtin_v128_add_sat(ctx: BuiltinContext): ExpressionRef { var compiler = ctx.compiler; var module = compiler.module; if ( @@ -4231,14 +4231,14 @@ function builtin_v128_add_saturate(ctx: BuiltinContext): ExpressionRef { } compiler.error( DiagnosticCode.Operation_0_cannot_be_applied_to_type_1, - ctx.reportNode.typeArgumentsRange, "v128.add_saturate", type.toString() + ctx.reportNode.typeArgumentsRange, "v128.add_sat", type.toString() ); return module.unreachable(); } -builtins.set(BuiltinNames.v128_add_saturate, builtin_v128_add_saturate); +builtins.set(BuiltinNames.v128_add_sat, builtin_v128_add_sat); -// v128.sub_saturate(a: v128, b: v128) -> v128 -function builtin_v128_sub_saturate(ctx: BuiltinContext): ExpressionRef { +// v128.sub_sat(a: v128, b: v128) -> v128 +function builtin_v128_sub_sat(ctx: BuiltinContext): ExpressionRef { var compiler = ctx.compiler; var module = compiler.module; if ( @@ -4264,11 +4264,11 @@ function builtin_v128_sub_saturate(ctx: BuiltinContext): ExpressionRef { } compiler.error( DiagnosticCode.Operation_0_cannot_be_applied_to_type_1, - ctx.reportNode.typeArgumentsRange, "v128.sub_saturate", type.toString() + ctx.reportNode.typeArgumentsRange, "v128.sub_sat", type.toString() ); return module.unreachable(); } -builtins.set(BuiltinNames.v128_sub_saturate, builtin_v128_sub_saturate); +builtins.set(BuiltinNames.v128_sub_sat, builtin_v128_sub_sat); // v128.min(a: v128, b: v128) -> v128 function builtin_v128_min(ctx: BuiltinContext): ExpressionRef { @@ -7138,41 +7138,41 @@ function builtin_i8x16_neg(ctx: BuiltinContext): ExpressionRef { } builtins.set(BuiltinNames.i8x16_neg, builtin_i8x16_neg); -// i8x16.add_saturate_s -> v128.add_saturate -function builtin_i8x16_add_saturate_s(ctx: BuiltinContext): ExpressionRef { +// i8x16.add_sat_s -> v128.add_sat +function builtin_i8x16_add_sat_s(ctx: BuiltinContext): ExpressionRef { checkTypeAbsent(ctx); ctx.typeArguments = [ Type.i8 ]; ctx.contextualType = Type.v128; - return builtin_v128_add_saturate(ctx); + return builtin_v128_add_sat(ctx); } -builtins.set(BuiltinNames.i8x16_add_saturate_s, builtin_i8x16_add_saturate_s); +builtins.set(BuiltinNames.i8x16_add_sat_s, builtin_i8x16_add_sat_s); -// i8x16.add_saturate_u -> v128.add_saturate -function builtin_i8x16_add_saturate_u(ctx: BuiltinContext): ExpressionRef { +// i8x16.add_sat_u -> v128.add_sat +function builtin_i8x16_add_sat_u(ctx: BuiltinContext): ExpressionRef { checkTypeAbsent(ctx); ctx.typeArguments = [ Type.u8 ]; ctx.contextualType = Type.v128; - return builtin_v128_add_saturate(ctx); + return builtin_v128_add_sat(ctx); } -builtins.set(BuiltinNames.i8x16_add_saturate_u, builtin_i8x16_add_saturate_u); +builtins.set(BuiltinNames.i8x16_add_sat_u, builtin_i8x16_add_sat_u); -// i8x16.sub_saturate_s -> v128.sub_saturate -function builtin_i8x16_sub_saturate_s(ctx: BuiltinContext): ExpressionRef { +// i8x16.sub_sat_s -> v128.sub_sat +function builtin_i8x16_sub_sat_s(ctx: BuiltinContext): ExpressionRef { checkTypeAbsent(ctx); ctx.typeArguments = [ Type.i8 ]; ctx.contextualType = Type.v128; - return builtin_v128_sub_saturate(ctx); + return builtin_v128_sub_sat(ctx); } -builtins.set(BuiltinNames.i8x16_sub_saturate_s, builtin_i8x16_sub_saturate_s); +builtins.set(BuiltinNames.i8x16_sub_sat_s, builtin_i8x16_sub_sat_s); -// i8x16.sub_saturate_u -> v128.sub_saturate -function builtin_i8x16_sub_saturate_u(ctx: BuiltinContext): ExpressionRef { +// i8x16.sub_sat_u -> v128.sub_sat +function builtin_i8x16_sub_sat_u(ctx: BuiltinContext): ExpressionRef { checkTypeAbsent(ctx); ctx.typeArguments = [ Type.u8 ]; ctx.contextualType = Type.v128; - return builtin_v128_sub_saturate(ctx); + return builtin_v128_sub_sat(ctx); } -builtins.set(BuiltinNames.i8x16_sub_saturate_u, builtin_i8x16_sub_saturate_u); +builtins.set(BuiltinNames.i8x16_sub_sat_u, builtin_i8x16_sub_sat_u); // i8x16.shl -> v128.shl function builtin_i8x16_shl(ctx: BuiltinContext): ExpressionRef { @@ -7480,41 +7480,41 @@ function builtin_i16x8_neg(ctx: BuiltinContext): ExpressionRef { } builtins.set(BuiltinNames.i16x8_neg, builtin_i16x8_neg); -// i16x8.add_saturate_s -> v128.add_saturate -function builtin_i16x8_add_saturate_s(ctx: BuiltinContext): ExpressionRef { +// i16x8.add_sat_s -> v128.add_sat +function builtin_i16x8_add_sat_s(ctx: BuiltinContext): ExpressionRef { checkTypeAbsent(ctx); ctx.typeArguments = [ Type.i16 ]; ctx.contextualType = Type.v128; - return builtin_v128_add_saturate(ctx); + return builtin_v128_add_sat(ctx); } -builtins.set(BuiltinNames.i16x8_add_saturate_s, builtin_i16x8_add_saturate_s); +builtins.set(BuiltinNames.i16x8_add_sat_s, builtin_i16x8_add_sat_s); -// i16x8.add_saturate_u -> v128.add_saturate -function builtin_i16x8_add_saturate_u(ctx: BuiltinContext): ExpressionRef { +// i16x8.add_sat_u -> v128.add_sat +function builtin_i16x8_add_sat_u(ctx: BuiltinContext): ExpressionRef { checkTypeAbsent(ctx); ctx.typeArguments = [ Type.u16 ]; ctx.contextualType = Type.v128; - return builtin_v128_add_saturate(ctx); + return builtin_v128_add_sat(ctx); } -builtins.set(BuiltinNames.i16x8_add_saturate_u, builtin_i16x8_add_saturate_u); +builtins.set(BuiltinNames.i16x8_add_sat_u, builtin_i16x8_add_sat_u); -// i16x8.sub_saturate_s -> v128.sub_saturate -function builtin_i16x8_sub_saturate_s(ctx: BuiltinContext): ExpressionRef { +// i16x8.sub_sat_s -> v128.sub_sat +function builtin_i16x8_sub_sat_s(ctx: BuiltinContext): ExpressionRef { checkTypeAbsent(ctx); ctx.typeArguments = [ Type.i16 ]; ctx.contextualType = Type.v128; - return builtin_v128_sub_saturate(ctx); + return builtin_v128_sub_sat(ctx); } -builtins.set(BuiltinNames.i16x8_sub_saturate_s, builtin_i16x8_sub_saturate_s); +builtins.set(BuiltinNames.i16x8_sub_sat_s, builtin_i16x8_sub_sat_s); -// i16x8.sub_saturate_u -> v128.sub_saturate -function builtin_i16x8_sub_saturate_u(ctx: BuiltinContext): ExpressionRef { +// i16x8.sub_sat_u -> v128.sub_sat +function builtin_i16x8_sub_sat_u(ctx: BuiltinContext): ExpressionRef { checkTypeAbsent(ctx); ctx.typeArguments = [ Type.u16 ]; ctx.contextualType = Type.v128; - return builtin_v128_sub_saturate(ctx); + return builtin_v128_sub_sat(ctx); } -builtins.set(BuiltinNames.i16x8_sub_saturate_u, builtin_i16x8_sub_saturate_u); +builtins.set(BuiltinNames.i16x8_sub_sat_u, builtin_i16x8_sub_sat_u); // i16x8.shl -> v128.shl function builtin_i16x8_shl(ctx: BuiltinContext): ExpressionRef { diff --git a/std/assembly/builtins.ts b/std/assembly/builtins.ts index ffd1c3b138..72189938e5 100644 --- a/std/assembly/builtins.ts +++ b/std/assembly/builtins.ts @@ -1193,11 +1193,11 @@ export namespace v128 { // @ts-ignore: decorator @builtin - export declare function add_saturate(a: v128, b: v128): v128; + export declare function add_sat(a: v128, b: v128): v128; // @ts-ignore: decorator @builtin - export declare function sub_saturate(a: v128, b: v128): v128; + export declare function sub_sat(a: v128, b: v128): v128; // @ts-ignore: decorator @builtin @@ -1407,19 +1407,19 @@ export namespace i8x16 { // @ts-ignore: decorator @builtin - export declare function add_saturate_s(a: v128, b: v128): v128; + export declare function add_sat_s(a: v128, b: v128): v128; // @ts-ignore: decorator @builtin - export declare function add_saturate_u(a: v128, b: v128): v128; + export declare function add_sat_u(a: v128, b: v128): v128; // @ts-ignore: decorator @builtin - export declare function sub_saturate_s(a: v128, b: v128): v128; + export declare function sub_sat_s(a: v128, b: v128): v128; // @ts-ignore: decorator @builtin - export declare function sub_saturate_u(a: v128, b: v128): v128; + export declare function sub_sat_u(a: v128, b: v128): v128; // @ts-ignore: decorator @builtin @@ -1570,19 +1570,19 @@ export namespace i16x8 { // @ts-ignore: decorator @builtin - export declare function add_saturate_s(a: v128, b: v128): v128; + export declare function add_sat_s(a: v128, b: v128): v128; // @ts-ignore: decorator @builtin - export declare function add_saturate_u(a: v128, b: v128): v128; + export declare function add_sat_u(a: v128, b: v128): v128; // @ts-ignore: decorator @builtin - export declare function sub_saturate_s(a: v128, b: v128): v128; + export declare function sub_sat_s(a: v128, b: v128): v128; // @ts-ignore: decorator @builtin - export declare function sub_saturate_u(a: v128, b: v128): v128; + export declare function sub_sat_u(a: v128, b: v128): v128; // @ts-ignore: decorator @builtin diff --git a/std/assembly/index.d.ts b/std/assembly/index.d.ts index 057e2d782b..f1b6bb2f23 100644 --- a/std/assembly/index.d.ts +++ b/std/assembly/index.d.ts @@ -730,9 +730,9 @@ declare namespace v128 { /** Negates each lane of a vector. */ export function neg(a: v128): v128; /** Adds each lane using saturation. */ - export function add_saturate(a: v128, b: v128): v128; + export function add_sat(a: v128, b: v128): v128; /** Subtracts each lane using saturation. */ - export function sub_saturate(a: v128, b: v128): v128; + export function sub_sat(a: v128, b: v128): v128; /** Performs a bitwise left shift on each lane of a vector by a scalar. */ export function shl(a: v128, b: i32): v128; /** Performs a bitwise right shift on each lane of a vector by a scalar. */ @@ -836,13 +836,13 @@ declare namespace i8x16 { /** Negates each 8-bit integer lane. */ export function neg(a: v128): v128; /** Adds each 8-bit integer lane using signed saturation. */ - export function add_saturate_s(a: v128, b: v128): v128; + export function add_sat_s(a: v128, b: v128): v128; /** Adds each 8-bit integer lane using unsigned saturation. */ - export function add_saturate_u(a: v128, b: v128): v128; + export function add_sat_u(a: v128, b: v128): v128; /** Subtracts each 8-bit integer lane using signed saturation. */ - export function sub_saturate_s(a: v128, b: v128): v128; + export function sub_sat_s(a: v128, b: v128): v128; /** Subtracts each 8-bit integer lane using unsigned saturation. */ - export function sub_saturate_u(a: v128, b: v128): v128; + export function sub_sat_u(a: v128, b: v128): v128; /** Performs a bitwise left shift on each 8-bit integer lane by a scalar. */ export function shl(a: v128, b: i32): v128; /** Performs a bitwise arithmetic right shift on each 8-bit integer lane by a scalar. */ @@ -916,13 +916,13 @@ declare namespace i16x8 { /** Negates each 16-bit integer lane. */ export function neg(a: v128): v128; /** Adds each 16-bit integer lane using signed saturation. */ - export function add_saturate_s(a: v128, b: v128): v128; + export function add_sat_s(a: v128, b: v128): v128; /** Adds each 16-bit integer lane using unsigned saturation. */ - export function add_saturate_u(a: v128, b: v128): v128; + export function add_sat_u(a: v128, b: v128): v128; /** Subtracts each 16-bit integer lane using signed saturation. */ - export function sub_saturate_s(a: v128, b: v128): v128; + export function sub_sat_s(a: v128, b: v128): v128; /** Subtracts each 16-bit integer lane using unsigned saturation. */ - export function sub_saturate_u(a: v128, b: v128): v128; + export function sub_sat_u(a: v128, b: v128): v128; /** Performs a bitwise left shift on each 16-bit integer lane by a scalar. */ export function shl(a: v128, b: i32): v128; /** Performs a bitwise arithmetic right shift each 16-bit integer lane by a scalar. */ diff --git a/tests/compiler/features/simd.ts b/tests/compiler/features/simd.ts index 549f010f24..38cf6f2e1c 100644 --- a/tests/compiler/features/simd.ts +++ b/tests/compiler/features/simd.ts @@ -163,25 +163,25 @@ function test_i8x16(): void { i8x16(1, 2, 3, 4, 5, 6, 7, 8, 1, 1, 1, 1, 1, 1, 1, 1) ); assert( - i8x16.add_saturate_s( + i8x16.add_sat_s( i8x16(126, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127), i8x16.splat(2) ) == i8x16.splat(127) ); assert( - i8x16.add_saturate_u( + i8x16.add_sat_u( i8x16(-2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1), i8x16.splat(2) ) == i8x16.splat(-1) ); assert( - i8x16.sub_saturate_s( + i8x16.sub_sat_s( i8x16(-127, -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, -128), i8x16.splat(2) ) == i8x16.splat(-128) ); assert( - i8x16.sub_saturate_u( + i8x16.sub_sat_u( i8x16(1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), i8x16.splat(2) ) == i8x16.splat(0) @@ -292,25 +292,25 @@ function test_i16x8(): void { i16x8(1, 2, 3, 4, 1, 1, 1, 1) ); assert( - i16x8.add_saturate_s( + i16x8.add_sat_s( i16x8(32766, 32767, 32767, 32767, 32767, 32767, 32767, 32767), i16x8.splat(2) ) == i16x8.splat(32767) ); assert( - i16x8.add_saturate_u( + i16x8.add_sat_u( i16x8(-2, -1, -1, -1, -1, -1, -1, -1), i16x8.splat(2) ) == i16x8.splat(-1) ); assert( - i16x8.sub_saturate_s( + i16x8.sub_sat_s( i16x8(-32767, -32768, -32768, -32768, -32768, -32768, -32768, -32768), i16x8.splat(2) ) == i16x8.splat(-32768) ); assert( - i16x8.sub_saturate_u( + i16x8.sub_sat_u( i16x8(1, 0, 0, 0, 0, 0, 0, 0), i16x8.splat(2) ) == i16x8.splat(0) From e4e64672b32fbac6d1ea7305e1c464d008bba8fd Mon Sep 17 00:00:00 2001 From: dcode Date: Fri, 26 Feb 2021 18:18:47 +0100 Subject: [PATCH 12/24] unify SIMD any_true, add dummy i64x2.all_true --- src/builtins.ts | 75 +++----------- src/module.ts | 1 + std/assembly/builtins.ts | 18 +--- std/assembly/index.d.ts | 10 +- tests/compiler/features/simd.optimized.wat | 49 ++------- tests/compiler/features/simd.ts | 8 +- tests/compiler/features/simd.untouched.wat | 115 ++++++++++++--------- 7 files changed, 106 insertions(+), 170 deletions(-) diff --git a/src/builtins.ts b/src/builtins.ts index 1428b13505..2a9671987c 100644 --- a/src/builtins.ts +++ b/src/builtins.ts @@ -437,7 +437,6 @@ export namespace BuiltinNames { export const i8x16_shl = "~lib/builtins/i8x16.shl"; export const i8x16_shr_s = "~lib/builtins/i8x16.shr_s"; export const i8x16_shr_u = "~lib/builtins/i8x16.shr_u"; - export const i8x16_any_true = "~lib/builtins/i8x16.any_true"; export const i8x16_all_true = "~lib/builtins/i8x16.all_true"; export const i8x16_bitmask = "~lib/builtins/i8x16.bitmask"; export const i8x16_eq = "~lib/builtins/i8x16.eq"; @@ -476,7 +475,6 @@ export namespace BuiltinNames { export const i16x8_shl = "~lib/builtins/i16x8.shl"; export const i16x8_shr_s = "~lib/builtins/i16x8.shr_s"; export const i16x8_shr_u = "~lib/builtins/i16x8.shr_u"; - export const i16x8_any_true = "~lib/builtins/i16x8.any_true"; export const i16x8_all_true = "~lib/builtins/i16x8.all_true"; export const i16x8_bitmask = "~lib/builtins/i16x8.bitmask"; export const i16x8_eq = "~lib/builtins/i16x8.eq"; @@ -512,7 +510,6 @@ export namespace BuiltinNames { export const i32x4_shl = "~lib/builtins/i32x4.shl"; export const i32x4_shr_s = "~lib/builtins/i32x4.shr_s"; export const i32x4_shr_u = "~lib/builtins/i32x4.shr_u"; - export const i32x4_any_true = "~lib/builtins/i32x4.any_true"; export const i32x4_all_true = "~lib/builtins/i32x4.all_true"; export const i32x4_bitmask = "~lib/builtins/i32x4.bitmask"; export const i32x4_eq = "~lib/builtins/i32x4.eq"; @@ -542,6 +539,7 @@ export namespace BuiltinNames { export const i64x2_shl = "~lib/builtins/i64x2.shl"; export const i64x2_shr_s = "~lib/builtins/i64x2.shr_s"; export const i64x2_shr_u = "~lib/builtins/i64x2.shr_u"; + export const i64x2_all_true = "~lib/builtins/i64x2.all_true"; export const i64x2_trunc_sat_f64x2_s = "~lib/builtins/i64x2.trunc_sat_f64x2_s"; export const i64x2_trunc_sat_f64x2_u = "~lib/builtins/i64x2.trunc_sat_f64x2_u"; export const i64x2_extend_low_i32x4_s = "~lib/builtins/i64x2.extend_low_i32x4_s"; @@ -5375,44 +5373,22 @@ function builtin_v128_bitselect(ctx: BuiltinContext): ExpressionRef { } builtins.set(BuiltinNames.v128_bitselect, builtin_v128_bitselect); -// v128.any_true(a: v128) -> bool +// v128.any_true(a: v128) -> bool function builtin_v128_any_true(ctx: BuiltinContext): ExpressionRef { var compiler = ctx.compiler; var module = compiler.module; if ( checkFeatureEnabled(ctx, Feature.SIMD) | - checkTypeRequired(ctx) | + checkTypeAbsent(ctx) | checkArgsRequired(ctx, 1) ) { compiler.currentType = Type.bool; return module.unreachable(); } var operands = ctx.operands; - var type = ctx.typeArguments![0]; var arg0 = compiler.compileExpression(operands[0], Type.v128, Constraints.CONV_IMPLICIT); compiler.currentType = Type.bool; - if (type.isValue) { - switch (type.kind) { - case TypeKind.I8: - case TypeKind.U8: return module.unary(UnaryOp.AnyTrueI8x16, arg0); - case TypeKind.I16: - case TypeKind.U16: return module.unary(UnaryOp.AnyTrueI16x8, arg0); - case TypeKind.I32: - case TypeKind.U32: return module.unary(UnaryOp.AnyTrueI32x4, arg0); - case TypeKind.ISIZE: - case TypeKind.USIZE: { - if (!compiler.options.isWasm64) { - return module.unary(UnaryOp.AnyTrueI32x4, arg0); - } - break; - } - } - } - compiler.error( - DiagnosticCode.Operation_0_cannot_be_applied_to_type_1, - ctx.reportNode.typeArgumentsRange, "v128.any_true", type.toString() - ); - return module.unreachable(); + return module.unary(UnaryOp.AnyTrueI8x16, arg0); } builtins.set(BuiltinNames.v128_any_true, builtin_v128_any_true); @@ -5440,12 +5416,11 @@ function builtin_v128_all_true(ctx: BuiltinContext): ExpressionRef { case TypeKind.U16: return module.unary(UnaryOp.AllTrueI16x8, arg0); case TypeKind.I32: case TypeKind.U32: return module.unary(UnaryOp.AllTrueI32x4, arg0); + case TypeKind.I64: + case TypeKind.U64: return module.unary(UnaryOp.AllTrueI64x2, arg0); case TypeKind.ISIZE: case TypeKind.USIZE: { - if (!compiler.options.isWasm64) { - return module.unary(UnaryOp.AllTrueI32x4, arg0); - } - break; + return module.unary(compiler.options.isWasm64 ? UnaryOp.AllTrueI64x2 : UnaryOp.AllTrueI32x4, arg0); } } } @@ -7201,15 +7176,6 @@ function builtin_i8x16_shr_u(ctx: BuiltinContext): ExpressionRef { } builtins.set(BuiltinNames.i8x16_shr_u, builtin_i8x16_shr_u); -// i8x16.any_true -> v128.any_true -function builtin_i8x16_any_true(ctx: BuiltinContext): ExpressionRef { - checkTypeAbsent(ctx); - ctx.typeArguments = [ Type.i8 ]; - ctx.contextualType = Type.i32; - return builtin_v128_any_true(ctx); -} -builtins.set(BuiltinNames.i8x16_any_true, builtin_i8x16_any_true); - // i8x16.all_true -> v128.all_true function builtin_i8x16_all_true(ctx: BuiltinContext): ExpressionRef { checkTypeAbsent(ctx); @@ -7543,15 +7509,6 @@ function builtin_i16x8_shr_u(ctx: BuiltinContext): ExpressionRef { } builtins.set(BuiltinNames.i16x8_shr_u, builtin_i16x8_shr_u); -// i16x8.any_true -> v128.any_true -function builtin_i16x8_any_true(ctx: BuiltinContext): ExpressionRef { - checkTypeAbsent(ctx); - ctx.typeArguments = [ Type.i16 ]; - ctx.contextualType = Type.i32; - return builtin_v128_any_true(ctx); -} -builtins.set(BuiltinNames.i16x8_any_true, builtin_i16x8_any_true); - // i16x8.all_true -> v128.all_true function builtin_i16x8_all_true(ctx: BuiltinContext): ExpressionRef { checkTypeAbsent(ctx); @@ -7858,15 +7815,6 @@ function builtin_i32x4_shr_u(ctx: BuiltinContext): ExpressionRef { } builtins.set(BuiltinNames.i32x4_shr_u, builtin_i32x4_shr_u); -// i32x4.any_true -> v128.any_true -function builtin_i32x4_any_true(ctx: BuiltinContext): ExpressionRef { - checkTypeAbsent(ctx); - ctx.typeArguments = [ Type.i32 ]; - ctx.contextualType = Type.i32; - return builtin_v128_any_true(ctx); -} -builtins.set(BuiltinNames.i32x4_any_true, builtin_i32x4_any_true); - // i32x4.all_true -> v128.all_true function builtin_i32x4_all_true(ctx: BuiltinContext): ExpressionRef { checkTypeAbsent(ctx); @@ -8119,6 +8067,15 @@ function builtin_i64x2_shr_u(ctx: BuiltinContext): ExpressionRef { } builtins.set(BuiltinNames.i64x2_shr_u, builtin_i64x2_shr_u); +// i64x2.all_true -> v128.all_true +function builtin_i64x2_all_true(ctx: BuiltinContext): ExpressionRef { + checkTypeAbsent(ctx); + ctx.typeArguments = [ Type.i64 ]; + ctx.contextualType = Type.i32; + return builtin_v128_all_true(ctx); +} +builtins.set(BuiltinNames.i64x2_all_true, builtin_i64x2_all_true); + // i64x2.trunc_sat_f64x2_s -> v128.trunc_sat function builtin_i64x2_trunc_sat_f64x2_s(ctx: BuiltinContext): ExpressionRef { checkTypeAbsent(ctx); diff --git a/src/module.ts b/src/module.ts index 5315b3ee1c..8b7a2b5dc9 100644 --- a/src/module.ts +++ b/src/module.ts @@ -236,6 +236,7 @@ export enum UnaryOp { AllTrueI32x4 = 81 /* _BinaryenAllTrueVecI32x4 */, BitmaskI32x4 = 82 /* _BinaryenBitmaskVecI32x4 */, NegI64x2 = 83 /* _BinaryenNegVecI64x2 */, + AllTrueI64x2 = 81 /* TODO_BinaryenAllTrueVecI64x2 */, // FIXME: missing opcode in binaryen BitmaskI64x2 = 84 /* TODO_BinaryenBitmaskVecI64x2 */, AbsF32x4 = 85 /* _BinaryenAbsVecF32x4 */, NegF32x4 = 86 /* _BinaryenNegVecF32x4 */, diff --git a/std/assembly/builtins.ts b/std/assembly/builtins.ts index 72189938e5..4f72b9fdad 100644 --- a/std/assembly/builtins.ts +++ b/std/assembly/builtins.ts @@ -1233,7 +1233,7 @@ export namespace v128 { // @ts-ignore: decorator @builtin - export declare function any_true(a: v128): bool; + export declare function any_true(a: v128): bool; // @ts-ignore: decorator @builtin @@ -1433,10 +1433,6 @@ export namespace i8x16 { @builtin export declare function shr_u(a: v128, b: i32): v128; - // @ts-ignore: decorator - @builtin - export declare function any_true(a: v128): bool; - // @ts-ignore: decorator @builtin export declare function all_true(a: v128): bool; @@ -1596,10 +1592,6 @@ export namespace i16x8 { @builtin export declare function shr_u(a: v128, b: i32): v128; - // @ts-ignore: decorator - @builtin - export declare function any_true(a: v128): bool; - // @ts-ignore: decorator @builtin export declare function all_true(a: v128): bool; @@ -1743,10 +1735,6 @@ export namespace i32x4 { @builtin export declare function shr_u(a: v128, b: i32): v128; - // @ts-ignore: decorator - @builtin - export declare function any_true(a: v128): bool; - // @ts-ignore: decorator @builtin export declare function all_true(a: v128): bool; @@ -1866,6 +1854,10 @@ export namespace i64x2 { @builtin export declare function shr_u(a: v128, b: i32): v128; + // @ts-ignore: decorator + @builtin + export declare function all_true(a: v128): bool; + // @ts-ignore: decorator @builtin export declare function trunc_sat_f64x2_s(a: v128): v128; diff --git a/std/assembly/index.d.ts b/std/assembly/index.d.ts index f1b6bb2f23..3d015dc44e 100644 --- a/std/assembly/index.d.ts +++ b/std/assembly/index.d.ts @@ -750,7 +750,7 @@ declare namespace v128 { /** Selects bits of either vector according to the specified mask. */ export function bitselect(v1: v128, v2: v128, mask: v128): v128; /** Reduces a vector to a scalar indicating whether any lane is considered `true`. */ - export function any_true(a: v128): bool; + export function any_true(a: v128): bool; /** Reduces a vector to a scalar indicating whether all lanes are considered `true`. */ export function all_true(a: v128): bool; /** Extracts the high bit of each lane and produces a scalar mask with all bits concatenated. */ @@ -849,8 +849,6 @@ declare namespace i8x16 { export function shr_s(a: v128, b: i32): v128; /** Performs a bitwise logical right shift on each 8-bit integer lane by a scalar. */ export function shr_u(a: v128, b: i32): v128; - /** Reduces a vector to a scalar indicating whether any 8-bit integer lane is considered `true`. */ - export function any_true(a: v128): bool; /** Reduces a vector to a scalar indicating whether all 8-bit integer lanes are considered `true`. */ export function all_true(a: v128): bool; /** Extracts the high bit of each 8-bit integer lane and produces a scalar mask with all bits concatenated. */ @@ -929,8 +927,6 @@ declare namespace i16x8 { export function shr_s(a: v128, b: i32): v128; /** Performs a bitwise logical right shift on each 16-bit integer lane by a scalar. */ export function shr_u(a: v128, b: i32): v128; - /** Reduces a vector to a scalar indicating whether any 16-bit integer lane is considered `true`. */ - export function any_true(a: v128): bool; /** Reduces a vector to a scalar indicating whether all 16-bit integer lanes are considered `true`. */ export function all_true(a: v128): bool; /** Extracts the high bit of each 16-bit integer lane and produces a scalar mask with all bits concatenated. */ @@ -1003,8 +999,6 @@ declare namespace i32x4 { export function shr_s(a: v128, b: i32): v128; /** Performs a bitwise logical right shift on each 32-bit integer lane by a scalar. */ export function shr_u(a: v128, b: i32): v128; - /** Reduces a vector to a scalar indicating whether any 32-bit integer lane is considered `true`. */ - export function any_true(a: v128): bool; /** Reduces a vector to a scalar indicating whether all 32-bit integer lanes are considered `true`. */ export function all_true(a: v128): bool; /** Extracts the high bit of each 32-bit integer lane and produces a scalar mask with all bits concatenated. */ @@ -1065,6 +1059,8 @@ declare namespace i64x2 { export function shr_s(a: v128, b: i32): v128; /** Performs a bitwise logical right shift on each 64-bit integer lane by a scalar. */ export function shr_u(a: v128, b: i32): v128; + /** Reduces a vector to a scalar indicating whether all 64-bit integer lanes are considered `true`. */ + export function all_true(a: v128): bool; /** Truncates each 64-bit float lane to a signed integer with saturation. */ export function trunc_sat_f64x2_s(a: v128): v128; /** Truncates each 64-bit float lane to an unsigned integer with saturation. */ diff --git a/tests/compiler/features/simd.optimized.wat b/tests/compiler/features/simd.optimized.wat index bd8698a259..055f07438e 100644 --- a/tests/compiler/features/simd.optimized.wat +++ b/tests/compiler/features/simd.optimized.wat @@ -1131,7 +1131,7 @@ local.get $0 call $~lib/rt/tlsf/__free ) - (func $start:features/simd + (func $~start (local $0 i32) call $features/simd/test_v128 i32.const 16 @@ -1234,46 +1234,11 @@ end local.get $0 call $~lib/rt/tlsf/__free - i32.const 16 - call $~lib/rt/tlsf/__alloc - local.tee $0 - i32.const 1 - i32.store - local.get $0 - i32.const -1 - i32.store offset=4 - local.get $0 - i64x2.load32x2_s align=4 - v128.const i32x4 0x00000001 0x00000000 0xffffffff 0xffffffff - i8x16.eq - i8x16.all_true - i32.eqz - if - i32.const 0 - i32.const 1184 - i32.const 529 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i64x2.load32x2_u align=4 - v128.const i32x4 0x00000001 0x00000000 0xffffffff 0x00000000 - i8x16.eq - i8x16.all_true - i32.eqz - if - i32.const 0 - i32.const 1184 - i32.const 534 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/tlsf/__free - ) - (func $~start - call $start:features/simd + i32.const 0 + i32.const 1184 + i32.const 516 + i32.const 3 + call $~lib/builtins/abort + unreachable ) ) diff --git a/tests/compiler/features/simd.ts b/tests/compiler/features/simd.ts index 38cf6f2e1c..6df6523b33 100644 --- a/tests/compiler/features/simd.ts +++ b/tests/compiler/features/simd.ts @@ -189,7 +189,7 @@ function test_i8x16(): void { assert(i8x16.shl(i8x16.splat(1), 1) == i8x16.splat(2)); assert(i8x16.shr_s(i8x16.splat(-2), 1) == i8x16.splat(-1)); assert(i8x16.shr_u(i8x16.splat(-1), 1) == i8x16.splat(127)); - assert(i8x16.any_true(i8x16(1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)) == true); + assert(v128.any_true(i8x16(1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)) == true); assert(i8x16.all_true(i8x16.splat(1)) == true); var one = i8x16.replace_lane(i8x16.splat(0), 0, 1); var negOne = i8x16.replace_lane(i8x16.splat(0), 0, -1); @@ -318,7 +318,7 @@ function test_i16x8(): void { assert(i16x8.shl(i16x8.splat(1), 1) == i16x8.splat(2)); assert(i16x8.shr_s(i16x8.splat(-2), 1) == i16x8.splat(-1)); assert(i16x8.shr_u(i16x8.splat(-1), 1) == i16x8.splat(32767)); - assert(i16x8.any_true(i16x8(1, 0, 0, 0, 0, 0, 0, 0)) == true); + assert(v128.any_true(i16x8(1, 0, 0, 0, 0, 0, 0, 0)) == true); assert(i16x8.all_true(i16x8.splat(1)) == true); var one = i16x8.replace_lane(i16x8.splat(0), 0, 1); var negOne = i16x8.replace_lane(i16x8.splat(0), 0, -1); @@ -433,7 +433,7 @@ function test_i32x4(): void { assert(i32x4.shl(i32x4.splat(1), 1) == i32x4.splat(2)); assert(i32x4.shr_s(i32x4.splat(-2), 1) == i32x4.splat(-1)); assert(i32x4.shr_u(i32x4.splat(-1), 1) == i32x4.splat(2147483647)); - assert(i32x4.any_true(i32x4(1, 0, 0, 0)) == true); + assert(v128.any_true(i32x4(1, 0, 0, 0)) == true); assert(i32x4.all_true(i32x4.splat(1)) == true); var one = i32x4.replace_lane(i32x4.splat(0), 0, 1); var negOne = i32x4.replace_lane(i32x4.splat(0), 0, -1); @@ -512,6 +512,8 @@ function test_i64x2(): void { assert(i64x2.shl(i64x2.splat(1), 1) == i64x2.splat(2)); assert(i64x2.shr_s(i64x2.splat(-2), 1) == i64x2.splat(-1)); assert(i64x2.shr_u(i64x2.splat(-1), 1) == i64x2.splat(9223372036854775807)); + assert(v128.any_true(i64x2(1, 0)) == true); + assert(i64x2.all_true(i64x2.splat(1)) == true); assert( i64x2.trunc_sat_f64x2_s(f64x2.splat(-1.5)) == diff --git a/tests/compiler/features/simd.untouched.wat b/tests/compiler/features/simd.untouched.wat index b03c25629f..9a98729a69 100644 --- a/tests/compiler/features/simd.untouched.wat +++ b/tests/compiler/features/simd.untouched.wat @@ -2536,7 +2536,7 @@ i32.ne drop v128.const i32x4 0x00000001 0x00000000 0x00000000 0x00000000 - i16x8.any_true + i8x16.any_true i32.const 0 i32.ne i32.const 1 @@ -3121,7 +3121,7 @@ i32.ne drop v128.const i32x4 0x00000001 0x00000000 0x00000000 0x00000000 - i32x4.any_true + i8x16.any_true i32.const 0 i32.ne i32.const 1 @@ -3640,6 +3640,29 @@ i32.const 0 i32.ne drop + v128.const i32x4 0x00000001 0x00000000 0x00000000 0x00000000 + i8x16.any_true + i32.const 0 + i32.ne + i32.const 1 + i32.eq + drop + i64.const 1 + i64x2.splat + i32x4.all_true + i32.const 0 + i32.ne + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 160 + i32.const 516 + i32.const 3 + call $~lib/builtins/abort + unreachable + end f64.const -1.5 f64x2.splat i64x2.trunc_sat_f64x2_s @@ -3680,7 +3703,7 @@ if i32.const 0 i32.const 160 - i32.const 529 + i32.const 531 i32.const 5 call $~lib/builtins/abort unreachable @@ -3696,7 +3719,7 @@ if i32.const 0 i32.const 160 - i32.const 534 + i32.const 536 i32.const 5 call $~lib/builtins/abort unreachable @@ -3725,7 +3748,7 @@ if i32.const 0 i32.const 160 - i32.const 545 + i32.const 547 i32.const 3 call $~lib/builtins/abort unreachable @@ -3743,7 +3766,7 @@ if i32.const 0 i32.const 160 - i32.const 547 + i32.const 549 i32.const 3 call $~lib/builtins/abort unreachable @@ -3762,7 +3785,7 @@ if i32.const 0 i32.const 160 - i32.const 549 + i32.const 551 i32.const 3 call $~lib/builtins/abort unreachable @@ -3779,7 +3802,7 @@ if i32.const 0 i32.const 160 - i32.const 550 + i32.const 552 i32.const 3 call $~lib/builtins/abort unreachable @@ -3796,7 +3819,7 @@ if i32.const 0 i32.const 160 - i32.const 551 + i32.const 553 i32.const 3 call $~lib/builtins/abort unreachable @@ -3817,7 +3840,7 @@ if i32.const 0 i32.const 160 - i32.const 553 + i32.const 555 i32.const 3 call $~lib/builtins/abort unreachable @@ -3834,7 +3857,7 @@ if i32.const 0 i32.const 160 - i32.const 554 + i32.const 556 i32.const 3 call $~lib/builtins/abort unreachable @@ -3850,7 +3873,7 @@ if i32.const 0 i32.const 160 - i32.const 555 + i32.const 557 i32.const 3 call $~lib/builtins/abort unreachable @@ -3863,7 +3886,7 @@ if i32.const 0 i32.const 160 - i32.const 556 + i32.const 558 i32.const 3 call $~lib/builtins/abort unreachable @@ -3876,7 +3899,7 @@ if i32.const 0 i32.const 160 - i32.const 557 + i32.const 559 i32.const 3 call $~lib/builtins/abort unreachable @@ -3893,7 +3916,7 @@ if i32.const 0 i32.const 160 - i32.const 558 + i32.const 560 i32.const 3 call $~lib/builtins/abort unreachable @@ -3910,7 +3933,7 @@ if i32.const 0 i32.const 160 - i32.const 563 + i32.const 565 i32.const 3 call $~lib/builtins/abort unreachable @@ -3941,7 +3964,7 @@ if i32.const 0 i32.const 160 - i32.const 572 + i32.const 574 i32.const 3 call $~lib/builtins/abort unreachable @@ -3958,7 +3981,7 @@ if i32.const 0 i32.const 160 - i32.const 573 + i32.const 575 i32.const 3 call $~lib/builtins/abort unreachable @@ -3975,7 +3998,7 @@ if i32.const 0 i32.const 160 - i32.const 574 + i32.const 576 i32.const 3 call $~lib/builtins/abort unreachable @@ -3992,7 +4015,7 @@ if i32.const 0 i32.const 160 - i32.const 575 + i32.const 577 i32.const 3 call $~lib/builtins/abort unreachable @@ -4009,7 +4032,7 @@ if i32.const 0 i32.const 160 - i32.const 576 + i32.const 578 i32.const 3 call $~lib/builtins/abort unreachable @@ -4026,7 +4049,7 @@ if i32.const 0 i32.const 160 - i32.const 577 + i32.const 579 i32.const 3 call $~lib/builtins/abort unreachable @@ -4043,7 +4066,7 @@ if i32.const 0 i32.const 160 - i32.const 578 + i32.const 580 i32.const 3 call $~lib/builtins/abort unreachable @@ -4060,7 +4083,7 @@ if i32.const 0 i32.const 160 - i32.const 579 + i32.const 581 i32.const 3 call $~lib/builtins/abort unreachable @@ -4076,7 +4099,7 @@ if i32.const 0 i32.const 160 - i32.const 580 + i32.const 582 i32.const 3 call $~lib/builtins/abort unreachable @@ -4131,7 +4154,7 @@ if i32.const 0 i32.const 160 - i32.const 607 + i32.const 609 i32.const 3 call $~lib/builtins/abort unreachable @@ -4149,7 +4172,7 @@ if i32.const 0 i32.const 160 - i32.const 609 + i32.const 611 i32.const 3 call $~lib/builtins/abort unreachable @@ -4168,7 +4191,7 @@ if i32.const 0 i32.const 160 - i32.const 611 + i32.const 613 i32.const 3 call $~lib/builtins/abort unreachable @@ -4185,7 +4208,7 @@ if i32.const 0 i32.const 160 - i32.const 612 + i32.const 614 i32.const 3 call $~lib/builtins/abort unreachable @@ -4202,7 +4225,7 @@ if i32.const 0 i32.const 160 - i32.const 613 + i32.const 615 i32.const 3 call $~lib/builtins/abort unreachable @@ -4223,7 +4246,7 @@ if i32.const 0 i32.const 160 - i32.const 615 + i32.const 617 i32.const 3 call $~lib/builtins/abort unreachable @@ -4240,7 +4263,7 @@ if i32.const 0 i32.const 160 - i32.const 616 + i32.const 618 i32.const 3 call $~lib/builtins/abort unreachable @@ -4256,7 +4279,7 @@ if i32.const 0 i32.const 160 - i32.const 617 + i32.const 619 i32.const 3 call $~lib/builtins/abort unreachable @@ -4269,7 +4292,7 @@ if i32.const 0 i32.const 160 - i32.const 618 + i32.const 620 i32.const 3 call $~lib/builtins/abort unreachable @@ -4282,7 +4305,7 @@ if i32.const 0 i32.const 160 - i32.const 619 + i32.const 621 i32.const 3 call $~lib/builtins/abort unreachable @@ -4299,7 +4322,7 @@ if i32.const 0 i32.const 160 - i32.const 620 + i32.const 622 i32.const 3 call $~lib/builtins/abort unreachable @@ -4316,7 +4339,7 @@ if i32.const 0 i32.const 160 - i32.const 625 + i32.const 627 i32.const 3 call $~lib/builtins/abort unreachable @@ -4347,7 +4370,7 @@ if i32.const 0 i32.const 160 - i32.const 634 + i32.const 636 i32.const 3 call $~lib/builtins/abort unreachable @@ -4364,7 +4387,7 @@ if i32.const 0 i32.const 160 - i32.const 635 + i32.const 637 i32.const 3 call $~lib/builtins/abort unreachable @@ -4381,7 +4404,7 @@ if i32.const 0 i32.const 160 - i32.const 636 + i32.const 638 i32.const 3 call $~lib/builtins/abort unreachable @@ -4398,7 +4421,7 @@ if i32.const 0 i32.const 160 - i32.const 637 + i32.const 639 i32.const 3 call $~lib/builtins/abort unreachable @@ -4415,7 +4438,7 @@ if i32.const 0 i32.const 160 - i32.const 638 + i32.const 640 i32.const 3 call $~lib/builtins/abort unreachable @@ -4432,7 +4455,7 @@ if i32.const 0 i32.const 160 - i32.const 639 + i32.const 641 i32.const 3 call $~lib/builtins/abort unreachable @@ -4449,7 +4472,7 @@ if i32.const 0 i32.const 160 - i32.const 640 + i32.const 642 i32.const 3 call $~lib/builtins/abort unreachable @@ -4466,7 +4489,7 @@ if i32.const 0 i32.const 160 - i32.const 641 + i32.const 643 i32.const 3 call $~lib/builtins/abort unreachable @@ -4482,7 +4505,7 @@ if i32.const 0 i32.const 160 - i32.const 642 + i32.const 644 i32.const 3 call $~lib/builtins/abort unreachable From 2a3c13b04d2b053565731b92d1097f55ed71244d Mon Sep 17 00:00:00 2001 From: dcode Date: Fri, 26 Feb 2021 19:13:38 +0100 Subject: [PATCH 13/24] remove i64x2.trunc_sat_f64x2_s/u --- src/builtins.ts | 30 ++---- std/assembly/builtins.ts | 8 -- std/assembly/index.d.ts | 6 +- tests/compiler/features/simd.ts | 10 -- tests/compiler/features/simd.untouched.wat | 108 +++++++++------------ 5 files changed, 53 insertions(+), 109 deletions(-) diff --git a/src/builtins.ts b/src/builtins.ts index 2a9671987c..4e86c59f03 100644 --- a/src/builtins.ts +++ b/src/builtins.ts @@ -540,8 +540,6 @@ export namespace BuiltinNames { export const i64x2_shr_s = "~lib/builtins/i64x2.shr_s"; export const i64x2_shr_u = "~lib/builtins/i64x2.shr_u"; export const i64x2_all_true = "~lib/builtins/i64x2.all_true"; - export const i64x2_trunc_sat_f64x2_s = "~lib/builtins/i64x2.trunc_sat_f64x2_s"; - export const i64x2_trunc_sat_f64x2_u = "~lib/builtins/i64x2.trunc_sat_f64x2_u"; export const i64x2_extend_low_i32x4_s = "~lib/builtins/i64x2.extend_low_i32x4_s"; export const i64x2_extend_low_i32x4_u = "~lib/builtins/i64x2.extend_low_i32x4_u"; export const i64x2_extend_high_i32x4_s = "~lib/builtins/i64x2.extend_high_i32x4_s"; @@ -5089,10 +5087,16 @@ function builtin_v128_trunc_sat(ctx: BuiltinContext): ExpressionRef { var arg0 = compiler.compileExpression(operands[0], Type.v128, Constraints.CONV_IMPLICIT); if (type.isValue) { switch (type.kind) { + case TypeKind.ISIZE: { + if (compiler.options.isWasm64) break; + // fall-through + } case TypeKind.I32: return module.unary(UnaryOp.TruncSatF32x4ToI32x4, arg0); + case TypeKind.USIZE: { + if (compiler.options.isWasm64) break; + // fall-through + } case TypeKind.U32: return module.unary(UnaryOp.TruncSatF32x4ToU32x4, arg0); - case TypeKind.I64: return module.unary(UnaryOp.TruncSatF64x2ToI64x2, arg0); - case TypeKind.U64: return module.unary(UnaryOp.TruncSatF64x2ToU64x2, arg0); } } compiler.error( @@ -8076,24 +8080,6 @@ function builtin_i64x2_all_true(ctx: BuiltinContext): ExpressionRef { } builtins.set(BuiltinNames.i64x2_all_true, builtin_i64x2_all_true); -// i64x2.trunc_sat_f64x2_s -> v128.trunc_sat -function builtin_i64x2_trunc_sat_f64x2_s(ctx: BuiltinContext): ExpressionRef { - checkTypeAbsent(ctx); - ctx.typeArguments = [ Type.i64 ]; - ctx.contextualType = Type.v128; - return builtin_v128_trunc_sat(ctx); -} -builtins.set(BuiltinNames.i64x2_trunc_sat_f64x2_s, builtin_i64x2_trunc_sat_f64x2_s); - -// i64x2.trunc_sat_f64x2_u -> v128.trunc_sat -function builtin_i64x2_trunc_sat_f64x2_u(ctx: BuiltinContext): ExpressionRef { - checkTypeAbsent(ctx); - ctx.typeArguments = [ Type.u64 ]; - ctx.contextualType = Type.v128; - return builtin_v128_trunc_sat(ctx); -} -builtins.set(BuiltinNames.i64x2_trunc_sat_f64x2_u, builtin_i64x2_trunc_sat_f64x2_u); - // i64x2.extend_low_i32x4_s -> // v128.extend_low function builtin_i64x2_extend_low_i32x4_s(ctx: BuiltinContext): ExpressionRef { checkTypeAbsent(ctx); diff --git a/std/assembly/builtins.ts b/std/assembly/builtins.ts index 4f72b9fdad..2522778cd3 100644 --- a/std/assembly/builtins.ts +++ b/std/assembly/builtins.ts @@ -1858,14 +1858,6 @@ export namespace i64x2 { @builtin export declare function all_true(a: v128): bool; - // @ts-ignore: decorator - @builtin - export declare function trunc_sat_f64x2_s(a: v128): v128; - - // @ts-ignore: decorator - @builtin - export declare function trunc_sat_f64x2_u(a: v128): v128; - // @ts-ignore: decorator @builtin export declare function extend_low_i32x4_s(a: v128): v128; diff --git a/std/assembly/index.d.ts b/std/assembly/index.d.ts index 3d015dc44e..b4609ceabe 100644 --- a/std/assembly/index.d.ts +++ b/std/assembly/index.d.ts @@ -794,7 +794,7 @@ declare namespace v128 { /** Converts each lane of a vector from integer to floating point. */ export function convert(a: v128): v128; /** Truncates each lane of a vector from floating point to integer with saturation. Takes the target type. */ - export function trunc_sat(a: v128): v128; + export function trunc_sat(a: v128): v128; /** Narrows each lane to their respective narrower lanes. */ export function narrow(a: v128, b: v128): v128; /** Extends the low lanes of a vector to their respective wider lanes. */ @@ -1061,10 +1061,6 @@ declare namespace i64x2 { export function shr_u(a: v128, b: i32): v128; /** Reduces a vector to a scalar indicating whether all 64-bit integer lanes are considered `true`. */ export function all_true(a: v128): bool; - /** Truncates each 64-bit float lane to a signed integer with saturation. */ - export function trunc_sat_f64x2_s(a: v128): v128; - /** Truncates each 64-bit float lane to an unsigned integer with saturation. */ - export function trunc_sat_f64x2_u(a: v128): v128; /** Extends the low 32-bit signed integer lanes to 64-bit signed integer lanes. */ export function extend_low_i32x4_s(a: v128): v128; /** Extends the low 32-bit unsigned integer lane to 64-bit unsigned integer lanes. */ diff --git a/tests/compiler/features/simd.ts b/tests/compiler/features/simd.ts index 6df6523b33..27fe405261 100644 --- a/tests/compiler/features/simd.ts +++ b/tests/compiler/features/simd.ts @@ -514,16 +514,6 @@ function test_i64x2(): void { assert(i64x2.shr_u(i64x2.splat(-1), 1) == i64x2.splat(9223372036854775807)); assert(v128.any_true(i64x2(1, 0)) == true); assert(i64x2.all_true(i64x2.splat(1)) == true); - assert( - i64x2.trunc_sat_f64x2_s(f64x2.splat(-1.5)) - == - i64x2.splat(-1) - ); - assert( - i64x2.trunc_sat_f64x2_u(f64x2.splat(-1.5)) - == - i64x2.splat(0) - ); { let ptr = __alloc(16); store(ptr, 1); diff --git a/tests/compiler/features/simd.untouched.wat b/tests/compiler/features/simd.untouched.wat index 9a98729a69..6b839672e3 100644 --- a/tests/compiler/features/simd.untouched.wat +++ b/tests/compiler/features/simd.untouched.wat @@ -3663,26 +3663,6 @@ call $~lib/builtins/abort unreachable end - f64.const -1.5 - f64x2.splat - i64x2.trunc_sat_f64x2_s - i64.const -1 - i64x2.splat - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - drop - f64.const -1.5 - f64x2.splat - i64x2.trunc_sat_f64x2_u - i64.const 0 - i64x2.splat - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - drop i32.const 16 call $~lib/rt/tlsf/__alloc local.set $3 @@ -3703,7 +3683,7 @@ if i32.const 0 i32.const 160 - i32.const 531 + i32.const 521 i32.const 5 call $~lib/builtins/abort unreachable @@ -3719,7 +3699,7 @@ if i32.const 0 i32.const 160 - i32.const 536 + i32.const 526 i32.const 5 call $~lib/builtins/abort unreachable @@ -3748,7 +3728,7 @@ if i32.const 0 i32.const 160 - i32.const 547 + i32.const 537 i32.const 3 call $~lib/builtins/abort unreachable @@ -3766,7 +3746,7 @@ if i32.const 0 i32.const 160 - i32.const 549 + i32.const 539 i32.const 3 call $~lib/builtins/abort unreachable @@ -3785,7 +3765,7 @@ if i32.const 0 i32.const 160 - i32.const 551 + i32.const 541 i32.const 3 call $~lib/builtins/abort unreachable @@ -3802,7 +3782,7 @@ if i32.const 0 i32.const 160 - i32.const 552 + i32.const 542 i32.const 3 call $~lib/builtins/abort unreachable @@ -3819,7 +3799,7 @@ if i32.const 0 i32.const 160 - i32.const 553 + i32.const 543 i32.const 3 call $~lib/builtins/abort unreachable @@ -3840,7 +3820,7 @@ if i32.const 0 i32.const 160 - i32.const 555 + i32.const 545 i32.const 3 call $~lib/builtins/abort unreachable @@ -3857,7 +3837,7 @@ if i32.const 0 i32.const 160 - i32.const 556 + i32.const 546 i32.const 3 call $~lib/builtins/abort unreachable @@ -3873,7 +3853,7 @@ if i32.const 0 i32.const 160 - i32.const 557 + i32.const 547 i32.const 3 call $~lib/builtins/abort unreachable @@ -3886,7 +3866,7 @@ if i32.const 0 i32.const 160 - i32.const 558 + i32.const 548 i32.const 3 call $~lib/builtins/abort unreachable @@ -3899,7 +3879,7 @@ if i32.const 0 i32.const 160 - i32.const 559 + i32.const 549 i32.const 3 call $~lib/builtins/abort unreachable @@ -3916,7 +3896,7 @@ if i32.const 0 i32.const 160 - i32.const 560 + i32.const 550 i32.const 3 call $~lib/builtins/abort unreachable @@ -3933,7 +3913,7 @@ if i32.const 0 i32.const 160 - i32.const 565 + i32.const 555 i32.const 3 call $~lib/builtins/abort unreachable @@ -3964,7 +3944,7 @@ if i32.const 0 i32.const 160 - i32.const 574 + i32.const 564 i32.const 3 call $~lib/builtins/abort unreachable @@ -3981,7 +3961,7 @@ if i32.const 0 i32.const 160 - i32.const 575 + i32.const 565 i32.const 3 call $~lib/builtins/abort unreachable @@ -3998,7 +3978,7 @@ if i32.const 0 i32.const 160 - i32.const 576 + i32.const 566 i32.const 3 call $~lib/builtins/abort unreachable @@ -4015,7 +3995,7 @@ if i32.const 0 i32.const 160 - i32.const 577 + i32.const 567 i32.const 3 call $~lib/builtins/abort unreachable @@ -4032,7 +4012,7 @@ if i32.const 0 i32.const 160 - i32.const 578 + i32.const 568 i32.const 3 call $~lib/builtins/abort unreachable @@ -4049,7 +4029,7 @@ if i32.const 0 i32.const 160 - i32.const 579 + i32.const 569 i32.const 3 call $~lib/builtins/abort unreachable @@ -4066,7 +4046,7 @@ if i32.const 0 i32.const 160 - i32.const 580 + i32.const 570 i32.const 3 call $~lib/builtins/abort unreachable @@ -4083,7 +4063,7 @@ if i32.const 0 i32.const 160 - i32.const 581 + i32.const 571 i32.const 3 call $~lib/builtins/abort unreachable @@ -4099,7 +4079,7 @@ if i32.const 0 i32.const 160 - i32.const 582 + i32.const 572 i32.const 3 call $~lib/builtins/abort unreachable @@ -4154,7 +4134,7 @@ if i32.const 0 i32.const 160 - i32.const 609 + i32.const 599 i32.const 3 call $~lib/builtins/abort unreachable @@ -4172,7 +4152,7 @@ if i32.const 0 i32.const 160 - i32.const 611 + i32.const 601 i32.const 3 call $~lib/builtins/abort unreachable @@ -4191,7 +4171,7 @@ if i32.const 0 i32.const 160 - i32.const 613 + i32.const 603 i32.const 3 call $~lib/builtins/abort unreachable @@ -4208,7 +4188,7 @@ if i32.const 0 i32.const 160 - i32.const 614 + i32.const 604 i32.const 3 call $~lib/builtins/abort unreachable @@ -4225,7 +4205,7 @@ if i32.const 0 i32.const 160 - i32.const 615 + i32.const 605 i32.const 3 call $~lib/builtins/abort unreachable @@ -4246,7 +4226,7 @@ if i32.const 0 i32.const 160 - i32.const 617 + i32.const 607 i32.const 3 call $~lib/builtins/abort unreachable @@ -4263,7 +4243,7 @@ if i32.const 0 i32.const 160 - i32.const 618 + i32.const 608 i32.const 3 call $~lib/builtins/abort unreachable @@ -4279,7 +4259,7 @@ if i32.const 0 i32.const 160 - i32.const 619 + i32.const 609 i32.const 3 call $~lib/builtins/abort unreachable @@ -4292,7 +4272,7 @@ if i32.const 0 i32.const 160 - i32.const 620 + i32.const 610 i32.const 3 call $~lib/builtins/abort unreachable @@ -4305,7 +4285,7 @@ if i32.const 0 i32.const 160 - i32.const 621 + i32.const 611 i32.const 3 call $~lib/builtins/abort unreachable @@ -4322,7 +4302,7 @@ if i32.const 0 i32.const 160 - i32.const 622 + i32.const 612 i32.const 3 call $~lib/builtins/abort unreachable @@ -4339,7 +4319,7 @@ if i32.const 0 i32.const 160 - i32.const 627 + i32.const 617 i32.const 3 call $~lib/builtins/abort unreachable @@ -4370,7 +4350,7 @@ if i32.const 0 i32.const 160 - i32.const 636 + i32.const 626 i32.const 3 call $~lib/builtins/abort unreachable @@ -4387,7 +4367,7 @@ if i32.const 0 i32.const 160 - i32.const 637 + i32.const 627 i32.const 3 call $~lib/builtins/abort unreachable @@ -4404,7 +4384,7 @@ if i32.const 0 i32.const 160 - i32.const 638 + i32.const 628 i32.const 3 call $~lib/builtins/abort unreachable @@ -4421,7 +4401,7 @@ if i32.const 0 i32.const 160 - i32.const 639 + i32.const 629 i32.const 3 call $~lib/builtins/abort unreachable @@ -4438,7 +4418,7 @@ if i32.const 0 i32.const 160 - i32.const 640 + i32.const 630 i32.const 3 call $~lib/builtins/abort unreachable @@ -4455,7 +4435,7 @@ if i32.const 0 i32.const 160 - i32.const 641 + i32.const 631 i32.const 3 call $~lib/builtins/abort unreachable @@ -4472,7 +4452,7 @@ if i32.const 0 i32.const 160 - i32.const 642 + i32.const 632 i32.const 3 call $~lib/builtins/abort unreachable @@ -4489,7 +4469,7 @@ if i32.const 0 i32.const 160 - i32.const 643 + i32.const 633 i32.const 3 call $~lib/builtins/abort unreachable @@ -4505,7 +4485,7 @@ if i32.const 0 i32.const 160 - i32.const 644 + i32.const 634 i32.const 3 call $~lib/builtins/abort unreachable From c4580064846678af4681288468beee1ba4207ac7 Mon Sep 17 00:00:00 2001 From: dcode Date: Fri, 26 Feb 2021 19:45:00 +0100 Subject: [PATCH 14/24] remove SIMD qfma/qfms --- src/builtins.ts | 104 --------------------- std/assembly/builtins.ts | 24 ----- std/assembly/index.d.ts | 12 --- tests/compiler/features/simd.ts | 22 ----- tests/compiler/features/simd.untouched.wat | 42 ++++----- 5 files changed, 21 insertions(+), 183 deletions(-) diff --git a/src/builtins.ts b/src/builtins.ts index 4e86c59f03..b2d9e9dd5d 100644 --- a/src/builtins.ts +++ b/src/builtins.ts @@ -406,8 +406,6 @@ export namespace BuiltinNames { export const v128_narrow = "~lib/builtins/v128.narrow"; export const v128_extend_low = "~lib/builtins/v128.extend_low"; export const v128_extend_high = "~lib/builtins/v128.extend_high"; - export const v128_qfma = "~lib/builtins/v128.qfma"; - export const v128_qfms = "~lib/builtins/v128.qfms"; export const i8x16 = "~lib/builtins/i8x16"; export const i16x8 = "~lib/builtins/i16x8"; @@ -571,8 +569,6 @@ export namespace BuiltinNames { export const f32x4_ge = "~lib/builtins/f32x4.ge"; export const f32x4_convert_i32x4_s = "~lib/builtins/f32x4.convert_i32x4_s"; export const f32x4_convert_i32x4_u = "~lib/builtins/f32x4.convert_i32x4_u"; - export const f32x4_qfma = "~lib/builtins/f32x4.qfma"; - export const f32x4_qfms = "~lib/builtins/f32x4.qfms"; export const f64x2_splat = "~lib/builtins/f64x2.splat"; export const f64x2_extract_lane = "~lib/builtins/f64x2.extract_lane"; @@ -600,8 +596,6 @@ export namespace BuiltinNames { export const f64x2_ge = "~lib/builtins/f64x2.ge"; export const f64x2_convert_i64x2_s = "~lib/builtins/f64x2.convert_i64x2_s"; export const f64x2_convert_i64x2_u = "~lib/builtins/f64x2.convert_i64x2_u"; - export const f64x2_qfma = "~lib/builtins/f64x2.qfma"; - export const f64x2_qfms = "~lib/builtins/f64x2.qfms"; // internals export const data_end = "~lib/memory/__data_end"; @@ -5475,68 +5469,6 @@ function builtin_v128_bitmask(ctx: BuiltinContext): ExpressionRef { } builtins.set(BuiltinNames.v128_bitmask, builtin_v128_bitmask); -// v128.qfma(a: v128, b: v128, c: v128) -> v128 -function builtin_v128_qfma(ctx: BuiltinContext): ExpressionRef { - var compiler = ctx.compiler; - var module = compiler.module; - if ( - checkFeatureEnabled(ctx, Feature.SIMD) | - checkTypeRequired(ctx) | - checkArgsRequired(ctx, 3) - ) { - compiler.currentType = Type.v128; - return module.unreachable(); - } - var operands = ctx.operands; - var type = ctx.typeArguments![0]; - var arg0 = compiler.compileExpression(operands[0], Type.v128, Constraints.CONV_IMPLICIT); - var arg1 = compiler.compileExpression(operands[1], Type.v128, Constraints.CONV_IMPLICIT); - var arg2 = compiler.compileExpression(operands[2], Type.v128, Constraints.CONV_IMPLICIT); - if (type.isValue) { - switch (type.kind) { - case TypeKind.F32: return module.simd_ternary(SIMDTernaryOp.QFMAF32x4, arg0, arg1, arg2); - case TypeKind.F64: return module.simd_ternary(SIMDTernaryOp.QFMAF64x2, arg0, arg1, arg2); - } - } - compiler.error( - DiagnosticCode.Operation_0_cannot_be_applied_to_type_1, - ctx.reportNode.typeArgumentsRange, "v128.qfma", type.toString() - ); - return module.unreachable(); -} -builtins.set(BuiltinNames.v128_qfma, builtin_v128_qfma); - -// v128.qfms(a: v128, b: v128, c: v128) -> v128 -function builtin_v128_qfms(ctx: BuiltinContext): ExpressionRef { - var compiler = ctx.compiler; - var module = compiler.module; - if ( - checkFeatureEnabled(ctx, Feature.SIMD) | - checkTypeRequired(ctx) | - checkArgsRequired(ctx, 3) - ) { - compiler.currentType = Type.v128; - return module.unreachable(); - } - var operands = ctx.operands; - var type = ctx.typeArguments![0]; - var arg0 = compiler.compileExpression(operands[0], Type.v128, Constraints.CONV_IMPLICIT); - var arg1 = compiler.compileExpression(operands[1], Type.v128, Constraints.CONV_IMPLICIT); - var arg2 = compiler.compileExpression(operands[2], Type.v128, Constraints.CONV_IMPLICIT); - if (type.isValue) { - switch (type.kind) { - case TypeKind.F32: return module.simd_ternary(SIMDTernaryOp.QFMSF32x4, arg0, arg1, arg2); - case TypeKind.F64: return module.simd_ternary(SIMDTernaryOp.QFMSF64x2, arg0, arg1, arg2); - } - } - compiler.error( - DiagnosticCode.Operation_0_cannot_be_applied_to_type_1, - ctx.reportNode.typeArgumentsRange, "v128.qfms", type.toString() - ); - return module.unreachable(); -} -builtins.set(BuiltinNames.v128_qfms, builtin_v128_qfms); - // === Internal runtime ======================================================================= // __visit_globals(cookie: u32) -> void @@ -8350,24 +8282,6 @@ function builtin_f32x4_convert_i32x4_u(ctx: BuiltinContext): ExpressionRef { } builtins.set(BuiltinNames.f32x4_convert_i32x4_u, builtin_f32x4_convert_i32x4_u); -// f32x4.qfma -> v128.qfma -function builtin_f32x4_qfma(ctx: BuiltinContext): ExpressionRef { - checkTypeAbsent(ctx); - ctx.typeArguments = [ Type.f32 ]; - ctx.contextualType = Type.v128; - return builtin_v128_qfma(ctx); -} -builtins.set(BuiltinNames.f32x4_qfma, builtin_f32x4_qfma); - -// f32x4.qfms -> v128.qfms -function builtin_f32x4_qfms(ctx: BuiltinContext): ExpressionRef { - checkTypeAbsent(ctx); - ctx.typeArguments = [ Type.f32 ]; - ctx.contextualType = Type.v128; - return builtin_v128_qfms(ctx); -} -builtins.set(BuiltinNames.f32x4_qfms, builtin_f32x4_qfms); - // f64x2.splat -> v128.splat function builtin_f64x2_splat(ctx: BuiltinContext): ExpressionRef { checkTypeAbsent(ctx); @@ -8602,24 +8516,6 @@ function builtin_f64x2_convert_i64x2_u(ctx: BuiltinContext): ExpressionRef { } builtins.set(BuiltinNames.f64x2_convert_i64x2_u, builtin_f64x2_convert_i64x2_u); -// f64x2.qfma -> v128.qfma -function builtin_f64x2_qfma(ctx: BuiltinContext): ExpressionRef { - checkTypeAbsent(ctx); - ctx.typeArguments = [ Type.f64 ]; - ctx.contextualType = Type.v128; - return builtin_v128_qfma(ctx); -} -builtins.set(BuiltinNames.f64x2_qfma, builtin_f64x2_qfma); - -// f64x2.qfms -> v128.qfms -function builtin_f64x2_qfms(ctx: BuiltinContext): ExpressionRef { - checkTypeAbsent(ctx); - ctx.typeArguments = [ Type.f64 ]; - ctx.contextualType = Type.v128; - return builtin_v128_qfms(ctx); -} -builtins.set(BuiltinNames.f64x2_qfms, builtin_f64x2_qfms); - // === Internal helpers ======================================================================= /** Compiles the `visit_globals` function. */ diff --git a/std/assembly/builtins.ts b/std/assembly/builtins.ts index 2522778cd3..6f0733ce40 100644 --- a/std/assembly/builtins.ts +++ b/std/assembly/builtins.ts @@ -1334,14 +1334,6 @@ export namespace v128 { // @ts-ignore: decorator @builtin export declare function extend_high(a: v128): v128; - - // @ts-ignore: decorator - @builtin - export declare function qfma(v1: v128, v2: v128, c: v128): v128; - - // @ts-ignore: decorator - @builtin - export declare function qfms(v1: v128, v2: v128, c: v128): v128; } // @ts-ignore: decorator @@ -1984,14 +1976,6 @@ export namespace f32x4 { // @ts-ignore: decorator @builtin export declare function convert_i32x4_u(a: v128): v128; - - // @ts-ignore: decorator - @builtin - export declare function qfma(a: v128, b: v128, c: v128): v128; - - // @ts-ignore: decorator - @builtin - export declare function qfms(a: v128, b: v128, c: v128): v128; } // @ts-ignore: decorator @@ -2103,14 +2087,6 @@ export namespace f64x2 { // @ts-ignore: decorator @builtin export declare function convert_i64x2_u(a: v128): v128; - - // @ts-ignore: decorator - @builtin - export declare function qfma(a: v128, b: v128, c: v128): v128; - - // @ts-ignore: decorator - @builtin - export declare function qfms(a: v128, b: v128, c: v128): v128; } /* eslint-disable @typescript-eslint/no-unused-vars */ diff --git a/std/assembly/index.d.ts b/std/assembly/index.d.ts index b4609ceabe..98279b5cff 100644 --- a/std/assembly/index.d.ts +++ b/std/assembly/index.d.ts @@ -801,10 +801,6 @@ declare namespace v128 { export function extend_low(a: v128): v128; /** Extends the high lanes of a vector to their respective wider lanes. */ export function extend_high(a: v128): v128; - /** Computes `(a * b) + c` for each lane. */ - export function qfma(a: v128, b: v128, c: v128): v128; - /** Computes `(a * b) - c` for each lane. */ - export function qfms(a: v128, b: v128, c: v128): v128; } /** Initializes a 128-bit vector from sixteen 8-bit integer values. Arguments must be compile-time constants. */ declare function i8x16(a: i8, b: i8, c: i8, d: i8, e: i8, f: i8, g: i8, h: i8, i: i8, j: i8, k: i8, l: i8, m: i8, n: i8, o: i8, p: i8): v128; @@ -1125,10 +1121,6 @@ declare namespace f32x4 { export function convert_i32x4_s(a: v128): v128; /** Converts each 32-bit unsigned integer lane of a vector to floating point. */ export function convert_i32x4_u(a: v128): v128; - /** Computes `(a * b) + c` for each 32-bit float lane. */ - export function qfma(a: v128, b: v128, c: v128): v128; - /** Computes `(a * b) - c` for each 32-bit float lane. */ - export function qfms(a: v128, b: v128, c: v128): v128; } /** Initializes a 128-bit vector from two 64-bit float values. Arguments must be compile-time constants. */ declare function f64x2(a: f64, b: f64): v128; @@ -1185,10 +1177,6 @@ declare namespace f64x2 { export function convert_i64x2_s(a: v128): v128; /** Converts each 64-bit unsigned integer lane of a vector to floating point. */ export function convert_i64x2_u(a: v128): v128; - /** Computes `(a * b) + c` for each 64-bit float lane. */ - export function qfma(a: v128, b: v128, c: v128): v128; - /** Computes `(a * b) - c` for each 64-bit float lane. */ - export function qfms(a: v128, b: v128, c: v128): v128; } /** Macro type evaluating to the underlying native WebAssembly type. */ declare type native = T; diff --git a/tests/compiler/features/simd.ts b/tests/compiler/features/simd.ts index 27fe405261..b3b0f34677 100644 --- a/tests/compiler/features/simd.ts +++ b/tests/compiler/features/simd.ts @@ -581,17 +581,6 @@ function test_f32x4(): void { == f32x4.splat(4294967296.0) ); - // TODO: not yet implemented in binaryen/src/wasm-interpreter.h - // assert( - // f32x4.qfma(f32x4.splat(2), f32x4.splat(3), f32x4.splat(4)) - // == - // f32x4.splat(10) - // ); - // assert( - // f32x4.qfms(f32x4.splat(2), f32x4.splat(3), f32x4.splat(4)) - // == - // f32x4.splat(2) - // ); } function test_f64x2(): void { @@ -643,17 +632,6 @@ function test_f64x2(): void { == f64x2.splat(18446744073709551615.0) ); - // TODO: not yet implemented in binaryen/src/wasm-interpreter.h - // assert( - // f64x2.qfma(f64x2.splat(2), f64x2.splat(3), f64x2.splat(4)) - // == - // f64x2.splat(10) - // ); - // assert( - // f64x2.qfms(f64x2.splat(2), f64x2.splat(3), f64x2.splat(4)) - // == - // f64x2.splat(2) - // ); } function test_const(): v128 { diff --git a/tests/compiler/features/simd.untouched.wat b/tests/compiler/features/simd.untouched.wat index 6b839672e3..3bd83d4939 100644 --- a/tests/compiler/features/simd.untouched.wat +++ b/tests/compiler/features/simd.untouched.wat @@ -4134,7 +4134,7 @@ if i32.const 0 i32.const 160 - i32.const 599 + i32.const 588 i32.const 3 call $~lib/builtins/abort unreachable @@ -4152,7 +4152,7 @@ if i32.const 0 i32.const 160 - i32.const 601 + i32.const 590 i32.const 3 call $~lib/builtins/abort unreachable @@ -4171,7 +4171,7 @@ if i32.const 0 i32.const 160 - i32.const 603 + i32.const 592 i32.const 3 call $~lib/builtins/abort unreachable @@ -4188,7 +4188,7 @@ if i32.const 0 i32.const 160 - i32.const 604 + i32.const 593 i32.const 3 call $~lib/builtins/abort unreachable @@ -4205,7 +4205,7 @@ if i32.const 0 i32.const 160 - i32.const 605 + i32.const 594 i32.const 3 call $~lib/builtins/abort unreachable @@ -4226,7 +4226,7 @@ if i32.const 0 i32.const 160 - i32.const 607 + i32.const 596 i32.const 3 call $~lib/builtins/abort unreachable @@ -4243,7 +4243,7 @@ if i32.const 0 i32.const 160 - i32.const 608 + i32.const 597 i32.const 3 call $~lib/builtins/abort unreachable @@ -4259,7 +4259,7 @@ if i32.const 0 i32.const 160 - i32.const 609 + i32.const 598 i32.const 3 call $~lib/builtins/abort unreachable @@ -4272,7 +4272,7 @@ if i32.const 0 i32.const 160 - i32.const 610 + i32.const 599 i32.const 3 call $~lib/builtins/abort unreachable @@ -4285,7 +4285,7 @@ if i32.const 0 i32.const 160 - i32.const 611 + i32.const 600 i32.const 3 call $~lib/builtins/abort unreachable @@ -4302,7 +4302,7 @@ if i32.const 0 i32.const 160 - i32.const 612 + i32.const 601 i32.const 3 call $~lib/builtins/abort unreachable @@ -4319,7 +4319,7 @@ if i32.const 0 i32.const 160 - i32.const 617 + i32.const 606 i32.const 3 call $~lib/builtins/abort unreachable @@ -4350,7 +4350,7 @@ if i32.const 0 i32.const 160 - i32.const 626 + i32.const 615 i32.const 3 call $~lib/builtins/abort unreachable @@ -4367,7 +4367,7 @@ if i32.const 0 i32.const 160 - i32.const 627 + i32.const 616 i32.const 3 call $~lib/builtins/abort unreachable @@ -4384,7 +4384,7 @@ if i32.const 0 i32.const 160 - i32.const 628 + i32.const 617 i32.const 3 call $~lib/builtins/abort unreachable @@ -4401,7 +4401,7 @@ if i32.const 0 i32.const 160 - i32.const 629 + i32.const 618 i32.const 3 call $~lib/builtins/abort unreachable @@ -4418,7 +4418,7 @@ if i32.const 0 i32.const 160 - i32.const 630 + i32.const 619 i32.const 3 call $~lib/builtins/abort unreachable @@ -4435,7 +4435,7 @@ if i32.const 0 i32.const 160 - i32.const 631 + i32.const 620 i32.const 3 call $~lib/builtins/abort unreachable @@ -4452,7 +4452,7 @@ if i32.const 0 i32.const 160 - i32.const 632 + i32.const 621 i32.const 3 call $~lib/builtins/abort unreachable @@ -4469,7 +4469,7 @@ if i32.const 0 i32.const 160 - i32.const 633 + i32.const 622 i32.const 3 call $~lib/builtins/abort unreachable @@ -4485,7 +4485,7 @@ if i32.const 0 i32.const 160 - i32.const 634 + i32.const 623 i32.const 3 call $~lib/builtins/abort unreachable From 1ad3c02e2522c1e200141711aeacdaacb4a02d4e Mon Sep 17 00:00:00 2001 From: dcode Date: Fri, 26 Feb 2021 19:59:29 +0100 Subject: [PATCH 15/24] remove f64x2.convert_i64x2_s/u --- src/builtins.ts | 30 ++++++---------------- std/assembly/builtins.ts | 8 ------ std/assembly/index.d.ts | 6 +---- tests/compiler/features/simd.ts | 10 -------- tests/compiler/features/simd.untouched.wat | 20 --------------- 5 files changed, 9 insertions(+), 65 deletions(-) diff --git a/src/builtins.ts b/src/builtins.ts index b2d9e9dd5d..dcf51df2a0 100644 --- a/src/builtins.ts +++ b/src/builtins.ts @@ -594,8 +594,6 @@ export namespace BuiltinNames { export const f64x2_le = "~lib/builtins/f64x2.le"; export const f64x2_gt = "~lib/builtins/f64x2.gt"; export const f64x2_ge = "~lib/builtins/f64x2.ge"; - export const f64x2_convert_i64x2_s = "~lib/builtins/f64x2.convert_i64x2_s"; - export const f64x2_convert_i64x2_u = "~lib/builtins/f64x2.convert_i64x2_u"; // internals export const data_end = "~lib/memory/__data_end"; @@ -5049,10 +5047,16 @@ function builtin_v128_convert(ctx: BuiltinContext): ExpressionRef { var arg0 = compiler.compileExpression(operands[0], Type.v128, Constraints.CONV_IMPLICIT); if (type.isValue) { switch (type.kind) { + case TypeKind.ISIZE: { + if (compiler.options.isWasm64) break; + // fall-through + } case TypeKind.I32: return module.unary(UnaryOp.ConvertI32x4ToF32x4, arg0); + case TypeKind.USIZE: { + if (compiler.options.isWasm64) break; + // fall-through + } case TypeKind.U32: return module.unary(UnaryOp.ConvertU32x4ToF32x4, arg0); - case TypeKind.I64: return module.unary(UnaryOp.ConvertI64x2ToF64x2, arg0); - case TypeKind.U64: return module.unary(UnaryOp.ConvertU64x2ToF64x2, arg0); } } compiler.error( @@ -8498,24 +8502,6 @@ function builtin_f64x2_ge(ctx: BuiltinContext): ExpressionRef { } builtins.set(BuiltinNames.f64x2_ge, builtin_f64x2_ge); -// f64x2.convert_i64x2_s -> v128.convert -function builtin_f64x2_convert_i64x2_s(ctx: BuiltinContext): ExpressionRef { - checkTypeAbsent(ctx); - ctx.typeArguments = [ Type.i64 ]; - ctx.contextualType = Type.v128; - return builtin_v128_convert(ctx); -} -builtins.set(BuiltinNames.f64x2_convert_i64x2_s, builtin_f64x2_convert_i64x2_s); - -// f64x2.convert_i64x2_u -> v128.convert -function builtin_f64x2_convert_i64x2_u(ctx: BuiltinContext): ExpressionRef { - checkTypeAbsent(ctx); - ctx.typeArguments = [ Type.u64 ]; - ctx.contextualType = Type.v128; - return builtin_v128_convert(ctx); -} -builtins.set(BuiltinNames.f64x2_convert_i64x2_u, builtin_f64x2_convert_i64x2_u); - // === Internal helpers ======================================================================= /** Compiles the `visit_globals` function. */ diff --git a/std/assembly/builtins.ts b/std/assembly/builtins.ts index 6f0733ce40..80a83bff29 100644 --- a/std/assembly/builtins.ts +++ b/std/assembly/builtins.ts @@ -2079,14 +2079,6 @@ export namespace f64x2 { // @ts-ignore: decorator @builtin export declare function ge(a: v128, b: v128): v128; - - // @ts-ignore: decorator - @builtin - export declare function convert_i64x2_s(a: v128): v128; - - // @ts-ignore: decorator - @builtin - export declare function convert_i64x2_u(a: v128): v128; } /* eslint-disable @typescript-eslint/no-unused-vars */ diff --git a/std/assembly/index.d.ts b/std/assembly/index.d.ts index 98279b5cff..d01e0d01eb 100644 --- a/std/assembly/index.d.ts +++ b/std/assembly/index.d.ts @@ -792,7 +792,7 @@ declare namespace v128 { /** Computes which lanes of the first vector are greater than or equal those of the second. */ export function ge(a: v128, b: v128): v128; /** Converts each lane of a vector from integer to floating point. */ - export function convert(a: v128): v128; + export function convert(a: v128): v128; /** Truncates each lane of a vector from floating point to integer with saturation. Takes the target type. */ export function trunc_sat(a: v128): v128; /** Narrows each lane to their respective narrower lanes. */ @@ -1173,10 +1173,6 @@ declare namespace f64x2 { export function gt(a: v128, b: v128): v128; /** Computes which 64-bit float lanes of the first vector are greater than or equal those of the second. */ export function ge(a: v128, b: v128): v128; - /** Converts each 64-bit signed integer lane of a vector to floating point. */ - export function convert_i64x2_s(a: v128): v128; - /** Converts each 64-bit unsigned integer lane of a vector to floating point. */ - export function convert_i64x2_u(a: v128): v128; } /** Macro type evaluating to the underlying native WebAssembly type. */ declare type native = T; diff --git a/tests/compiler/features/simd.ts b/tests/compiler/features/simd.ts index b3b0f34677..83ed92d136 100644 --- a/tests/compiler/features/simd.ts +++ b/tests/compiler/features/simd.ts @@ -622,16 +622,6 @@ function test_f64x2(): void { assert(f64x2.max(negOne, one) == one); assert(f64x2.abs(negOne) == one); assert(f64x2.sqrt(f64x2(4.0, 9.0)) == f64x2(2.0, 3.0)); - assert( - f64x2.convert_i64x2_s(i64x2.splat(-1)) - == - f64x2.splat(-1.0) - ); - assert( - f64x2.convert_i64x2_u(i64x2.splat(-1)) - == - f64x2.splat(18446744073709551615.0) - ); } function test_const(): v128 { diff --git a/tests/compiler/features/simd.untouched.wat b/tests/compiler/features/simd.untouched.wat index 3bd83d4939..d7e783a1f3 100644 --- a/tests/compiler/features/simd.untouched.wat +++ b/tests/compiler/features/simd.untouched.wat @@ -4498,26 +4498,6 @@ i32.const 0 i32.ne drop - i64.const -1 - i64x2.splat - f64x2.convert_i64x2_s - f64.const -1 - f64x2.splat - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - drop - i64.const -1 - i64x2.splat - f64x2.convert_i64x2_u - f64.const 18446744073709551615 - f64x2.splat - i8x16.eq - i8x16.all_true - i32.const 0 - i32.ne - drop ) (func $features/simd/test_const (result v128) (local $0 v128) From a8f8a85a927629793de75bec01714bbe0843203f Mon Sep 17 00:00:00 2001 From: dcode Date: Sat, 27 Feb 2021 17:08:04 +0100 Subject: [PATCH 16/24] update --- package-lock.json | 14 +++++++------- package.json | 2 +- src/glue/binaryen.d.ts | 4 ++++ src/module.ts | 2 +- 4 files changed, 13 insertions(+), 9 deletions(-) diff --git a/package-lock.json b/package-lock.json index 526a590ba9..214d2569f2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,7 +8,7 @@ "version": "0.0.0", "license": "Apache-2.0", "dependencies": { - "binaryen": "99.0.0-nightly.20210226", + "binaryen": "99.0.0-nightly.20210227", "long": "^4.0.0", "source-map-support": "^0.5.19", "ts-node": "^6.2.0" @@ -709,9 +709,9 @@ } }, "node_modules/binaryen": { - "version": "99.0.0-nightly.20210226", - "resolved": "https://registry.npmjs.org/binaryen/-/binaryen-99.0.0-nightly.20210226.tgz", - "integrity": "sha512-gEGikvZLZ1eczlanQeNYBtK2zGrpjwSfgipYy/vOQUERckdP4KVeUDs6YsT0TIzIEN+b7E8LwPcebcwnPuzbvA==", + "version": "99.0.0-nightly.20210227", + "resolved": "https://registry.npmjs.org/binaryen/-/binaryen-99.0.0-nightly.20210227.tgz", + "integrity": "sha512-wUPV8h/Ktx7W6fz0x0TcawZsi3/AWHAfl56/kX+Lou6oD/NsHQ/B6LXrYvZl+n76Yp8c1Utd/dorYt3AAWCRlQ==", "bin": { "wasm-opt": "bin/wasm-opt" } @@ -3560,9 +3560,9 @@ "dev": true }, "binaryen": { - "version": "99.0.0-nightly.20210226", - "resolved": "https://registry.npmjs.org/binaryen/-/binaryen-99.0.0-nightly.20210226.tgz", - "integrity": "sha512-gEGikvZLZ1eczlanQeNYBtK2zGrpjwSfgipYy/vOQUERckdP4KVeUDs6YsT0TIzIEN+b7E8LwPcebcwnPuzbvA==" + "version": "99.0.0-nightly.20210227", + "resolved": "https://registry.npmjs.org/binaryen/-/binaryen-99.0.0-nightly.20210227.tgz", + "integrity": "sha512-wUPV8h/Ktx7W6fz0x0TcawZsi3/AWHAfl56/kX+Lou6oD/NsHQ/B6LXrYvZl+n76Yp8c1Utd/dorYt3AAWCRlQ==" }, "brace-expansion": { "version": "1.1.11", diff --git a/package.json b/package.json index 6c25e8814a..b4f0357db1 100644 --- a/package.json +++ b/package.json @@ -21,7 +21,7 @@ "url": "https://github.com/AssemblyScript/assemblyscript/issues" }, "dependencies": { - "binaryen": "99.0.0-nightly.20210226", + "binaryen": "99.0.0-nightly.20210227", "long": "^4.0.0", "source-map-support": "^0.5.19", "ts-node": "^6.2.0" diff --git a/src/glue/binaryen.d.ts b/src/glue/binaryen.d.ts index ba2bcc7d47..b9a3d43b87 100644 --- a/src/glue/binaryen.d.ts +++ b/src/glue/binaryen.d.ts @@ -61,6 +61,7 @@ export declare function _BinaryenFeatureTailCall(): BinaryenFeatureFlags; export declare function _BinaryenFeatureReferenceTypes(): BinaryenFeatureFlags; export declare function _BinaryenFeatureMultivalue(): BinaryenFeatureFlags; export declare function _BinaryenFeatureGC(): BinaryenFeatureFlags; +export declare function _BinaryenFeatureTypedFunctionReferences(): BinaryenFeatureFlags; export declare function _BinaryenFeatureAll(): BinaryenFeatureFlags; type BinaryenExpressionId = i32; @@ -944,9 +945,12 @@ export declare function _BinaryenGetTable(module: BinaryenModuleRef, name: Binar export declare function _BinaryenGetTableByIndex(module: BinaryenModuleRef, index: BinaryenIndex): BinaryenTableRef; export declare function _BinaryenTableGetName(table: BinaryenTableRef): BinaryenString; +export declare function _BinaryenTableSetName(table: BinaryenTableRef, name: BinaryenString): void; export declare function _BinaryenTableGetInitial(table: BinaryenTableRef): BinaryenIndex; +export declare function _BinaryenTableSetInitial(table: BinaryenTableRef, initial: BinaryenIndex): void; export declare function _BinaryenTableHasMax(table: BinaryenTableRef): bool; export declare function _BinaryenTableGetMax(table: BinaryenTableRef): BinaryenIndex; +export declare function _BinaryenTableSetMax(table: BinaryenTableRef, max: BinaryenIndex): void; export declare function _BinaryenSetMemory(module: BinaryenModuleRef, initial: BinaryenIndex, maximum: BinaryenIndex, exportName: BinaryenString, segments: BinaryenArray>, segmentPassive: BinaryenArray, segmentOffsets: BinaryenArray, segmentSizes: BinaryenArray, numSegments: BinaryenIndex, shared: bool): void; export declare function _BinaryenGetNumMemorySegments(module: BinaryenModuleRef): BinaryenIndex; diff --git a/src/module.ts b/src/module.ts index 8b7a2b5dc9..e5236cb219 100644 --- a/src/module.ts +++ b/src/module.ts @@ -62,7 +62,7 @@ export enum FeatureFlags { MultiValue = 512 /* _BinaryenFeatureMultivalue */, GC = 1024 /* _BinaryenFeatureGC */, Memory64 = 2048 /* _BinaryenFeatureMemory64 */, - TypedFunctionReferences = 4096, /* TODO_BinaryenTypedFunctionReferences */ + TypedFunctionReferences = 4096, /* _BinaryenTypedFunctionReferences */ All = 8191 /* _BinaryenFeatureAll */ } From 959f9d78b061413bf346ce90c54ed1d64220199d Mon Sep 17 00:00:00 2001 From: dcode Date: Sat, 27 Feb 2021 19:40:09 +0100 Subject: [PATCH 17/24] add dummies for i64x2.eq/ne/lt_s/lt_u/le_s/le_u/gt_s/gt_u/ge_s/ge_u --- src/builtins.ts | 182 ++++++++++++++++++++++++++------------- src/module.ts | 11 +++ std/assembly/builtins.ts | 40 +++++++++ std/assembly/index.d.ts | 20 +++++ 4 files changed, 193 insertions(+), 60 deletions(-) diff --git a/src/builtins.ts b/src/builtins.ts index dcf51df2a0..c488ad47a3 100644 --- a/src/builtins.ts +++ b/src/builtins.ts @@ -538,6 +538,16 @@ export namespace BuiltinNames { export const i64x2_shr_s = "~lib/builtins/i64x2.shr_s"; export const i64x2_shr_u = "~lib/builtins/i64x2.shr_u"; export const i64x2_all_true = "~lib/builtins/i64x2.all_true"; + export const i64x2_eq = "~lib/builtins/i64x2.eq"; + export const i64x2_ne = "~lib/builtins/i64x2.ne"; + export const i64x2_lt_s = "~lib/builtins/i64x2.lt_s"; + export const i64x2_lt_u = "~lib/builtins/i64x2.lt_u"; + export const i64x2_le_s = "~lib/builtins/i64x2.le_s"; + export const i64x2_le_u = "~lib/builtins/i64x2.le_u"; + export const i64x2_gt_s = "~lib/builtins/i64x2.gt_s"; + export const i64x2_gt_u = "~lib/builtins/i64x2.gt_u"; + export const i64x2_ge_s = "~lib/builtins/i64x2.ge_s"; + export const i64x2_ge_u = "~lib/builtins/i64x2.ge_u"; export const i64x2_extend_low_i32x4_s = "~lib/builtins/i64x2.extend_low_i32x4_s"; export const i64x2_extend_low_i32x4_u = "~lib/builtins/i64x2.extend_low_i32x4_u"; export const i64x2_extend_high_i32x4_s = "~lib/builtins/i64x2.extend_high_i32x4_s"; @@ -4496,13 +4506,10 @@ function builtin_v128_eq(ctx: BuiltinContext): ExpressionRef { case TypeKind.U16: return module.binary(BinaryOp.EqI16x8, arg0, arg1); case TypeKind.I32: case TypeKind.U32: return module.binary(BinaryOp.EqI32x4, arg0, arg1); + case TypeKind.I64: + case TypeKind.U64: return module.binary(BinaryOp.EqI64x2, arg0, arg1); case TypeKind.ISIZE: - case TypeKind.USIZE: { - if (!compiler.options.isWasm64) { - return module.binary(BinaryOp.EqI32x4, arg0, arg1); - } - break; - } + case TypeKind.USIZE: return module.binary(compiler.options.isWasm64 ? BinaryOp.EqI64x2 : BinaryOp.EqI32x4, arg0, arg1); case TypeKind.F32: return module.binary(BinaryOp.EqF32x4, arg0, arg1); case TypeKind.F64: return module.binary(BinaryOp.EqF64x2, arg0, arg1); } @@ -4540,13 +4547,10 @@ function builtin_v128_ne(ctx: BuiltinContext): ExpressionRef { case TypeKind.U16: return module.binary(BinaryOp.NeI16x8, arg0, arg1); case TypeKind.I32: case TypeKind.U32: return module.binary(BinaryOp.NeI32x4, arg0, arg1); + case TypeKind.I64: + case TypeKind.U64: return module.binary(BinaryOp.NeI64x2, arg0, arg1); case TypeKind.ISIZE: - case TypeKind.USIZE: { - if (!compiler.options.isWasm64) { - return module.binary(BinaryOp.NeI32x4, arg0, arg1); - } - break; - } + case TypeKind.USIZE: return module.binary(compiler.options.isWasm64 ? BinaryOp.NeI64x2 : BinaryOp.NeI32x4, arg0, arg1); case TypeKind.F32: return module.binary(BinaryOp.NeF32x4, arg0, arg1); case TypeKind.F64: return module.binary(BinaryOp.NeF64x2, arg0, arg1); } @@ -4584,18 +4588,10 @@ function builtin_v128_lt(ctx: BuiltinContext): ExpressionRef { case TypeKind.U16: return module.binary(BinaryOp.LtU16x8, arg0, arg1); case TypeKind.I32: return module.binary(BinaryOp.LtI32x4, arg0, arg1); case TypeKind.U32: return module.binary(BinaryOp.LtU32x4, arg0, arg1); - case TypeKind.ISIZE: { - if (!compiler.options.isWasm64) { - return module.binary(BinaryOp.LtI32x4, arg0, arg1); - } - break; - } - case TypeKind.USIZE: { - if (!compiler.options.isWasm64) { - return module.binary(BinaryOp.LtU32x4, arg0, arg1); - } - break; - } + case TypeKind.I64: return module.binary(BinaryOp.LtI64x2, arg0, arg1); + case TypeKind.U64: return module.binary(BinaryOp.LtU64x2, arg0, arg1); + case TypeKind.ISIZE: return module.binary(compiler.options.isWasm64 ? BinaryOp.LtI64x2 : BinaryOp.LtI32x4, arg0, arg1); + case TypeKind.USIZE: return module.binary(compiler.options.isWasm64 ? BinaryOp.LtU64x2 : BinaryOp.LtU32x4, arg0, arg1); case TypeKind.F32: return module.binary(BinaryOp.LtF32x4, arg0, arg1); case TypeKind.F64: return module.binary(BinaryOp.LtF64x2, arg0, arg1); } @@ -4633,18 +4629,10 @@ function builtin_v128_le(ctx: BuiltinContext): ExpressionRef { case TypeKind.U16: return module.binary(BinaryOp.LeU16x8, arg0, arg1); case TypeKind.I32: return module.binary(BinaryOp.LeI32x4, arg0, arg1); case TypeKind.U32: return module.binary(BinaryOp.LeU32x4, arg0, arg1); - case TypeKind.ISIZE: { - if (!compiler.options.isWasm64) { - return module.binary(BinaryOp.LeI32x4, arg0, arg1); - } - break; - } - case TypeKind.USIZE: { - if (!compiler.options.isWasm64) { - return module.binary(BinaryOp.LeU32x4, arg0, arg1); - } - break; - } + case TypeKind.I64: return module.binary(BinaryOp.LeI64x2, arg0, arg1); + case TypeKind.U64: return module.binary(BinaryOp.LeU64x2, arg0, arg1); + case TypeKind.ISIZE: return module.binary(compiler.options.isWasm64 ? BinaryOp.LeI64x2 : BinaryOp.LeI32x4, arg0, arg1); + case TypeKind.USIZE: return module.binary(compiler.options.isWasm64 ? BinaryOp.LeU64x2 : BinaryOp.LeU32x4, arg0, arg1); case TypeKind.F32: return module.binary(BinaryOp.LeF32x4, arg0, arg1); case TypeKind.F64: return module.binary(BinaryOp.LeF64x2, arg0, arg1); } @@ -4682,18 +4670,10 @@ function builtin_v128_gt(ctx: BuiltinContext): ExpressionRef { case TypeKind.U16: return module.binary(BinaryOp.GtU16x8, arg0, arg1); case TypeKind.I32: return module.binary(BinaryOp.GtI32x4, arg0, arg1); case TypeKind.U32: return module.binary(BinaryOp.GtU32x4, arg0, arg1); - case TypeKind.ISIZE: { - if (!compiler.options.isWasm64) { - return module.binary(BinaryOp.GtI32x4, arg0, arg1); - } - break; - } - case TypeKind.USIZE: { - if (!compiler.options.isWasm64) { - return module.binary(BinaryOp.GtU32x4, arg0, arg1); - } - break; - } + case TypeKind.I64: return module.binary(BinaryOp.GtI64x2, arg0, arg1); + case TypeKind.U64: return module.binary(BinaryOp.GtU64x2, arg0, arg1); + case TypeKind.ISIZE: return module.binary(compiler.options.isWasm64 ? BinaryOp.GtI64x2 : BinaryOp.GtI32x4, arg0, arg1); + case TypeKind.USIZE: return module.binary(compiler.options.isWasm64 ? BinaryOp.GtU64x2 : BinaryOp.GtU32x4, arg0, arg1); case TypeKind.F32: return module.binary(BinaryOp.GtF32x4, arg0, arg1); case TypeKind.F64: return module.binary(BinaryOp.GtF64x2, arg0, arg1); } @@ -4731,18 +4711,10 @@ function builtin_v128_ge(ctx: BuiltinContext): ExpressionRef { case TypeKind.U16: return module.binary(BinaryOp.GeU16x8, arg0, arg1); case TypeKind.I32: return module.binary(BinaryOp.GeI32x4, arg0, arg1); case TypeKind.U32: return module.binary(BinaryOp.GeU32x4, arg0, arg1); - case TypeKind.ISIZE: { - if (!compiler.options.isWasm64) { - return module.binary(BinaryOp.GeI32x4, arg0, arg1); - } - break; - } - case TypeKind.USIZE: { - if (!compiler.options.isWasm64) { - return module.binary(BinaryOp.GeU32x4, arg0, arg1); - } - break; - } + case TypeKind.I64: return module.binary(BinaryOp.GeI64x2, arg0, arg1); + case TypeKind.U64: return module.binary(BinaryOp.GeU64x2, arg0, arg1); + case TypeKind.ISIZE: return module.binary(compiler.options.isWasm64 ? BinaryOp.GeI64x2 : BinaryOp.GeI32x4, arg0, arg1); + case TypeKind.USIZE: return module.binary(compiler.options.isWasm64 ? BinaryOp.GeU64x2 : BinaryOp.GeU32x4, arg0, arg1); case TypeKind.F32: return module.binary(BinaryOp.GeF32x4, arg0, arg1); case TypeKind.F64: return module.binary(BinaryOp.GeF64x2, arg0, arg1); } @@ -8016,6 +7988,96 @@ function builtin_i64x2_all_true(ctx: BuiltinContext): ExpressionRef { } builtins.set(BuiltinNames.i64x2_all_true, builtin_i64x2_all_true); +// i64x2.eq -> v128.eq +function builtin_i64x2_eq(ctx: BuiltinContext): ExpressionRef { + checkTypeAbsent(ctx); + ctx.typeArguments = [ Type.i64 ]; + ctx.contextualType = Type.v128; + return builtin_v128_eq(ctx); +} +builtins.set(BuiltinNames.i64x2_eq, builtin_i64x2_eq); + +// i64x2.ne -> v128.ne +function builtin_i64x2_ne(ctx: BuiltinContext): ExpressionRef { + checkTypeAbsent(ctx); + ctx.typeArguments = [ Type.i64 ]; + ctx.contextualType = Type.v128; + return builtin_v128_ne(ctx); +} +builtins.set(BuiltinNames.i64x2_ne, builtin_i64x2_ne); + +// i64x2.lt_s -> v128.lt +function builtin_i64x2_lt_s(ctx: BuiltinContext): ExpressionRef { + checkTypeAbsent(ctx); + ctx.typeArguments = [ Type.i64 ]; + ctx.contextualType = Type.v128; + return builtin_v128_lt(ctx); +} +builtins.set(BuiltinNames.i64x2_lt_s, builtin_i64x2_lt_s); + +// i64x2.lt_u -> v128.lt +function builtin_i64x2_lt_u(ctx: BuiltinContext): ExpressionRef { + checkTypeAbsent(ctx); + ctx.typeArguments = [ Type.u64 ]; + ctx.contextualType = Type.v128; + return builtin_v128_lt(ctx); +} +builtins.set(BuiltinNames.i64x2_lt_u, builtin_i64x2_lt_u); + +// i64x2.le_s -> v128.le +function builtin_i64x2_le_s(ctx: BuiltinContext): ExpressionRef { + checkTypeAbsent(ctx); + ctx.typeArguments = [ Type.i64 ]; + ctx.contextualType = Type.v128; + return builtin_v128_le(ctx); +} +builtins.set(BuiltinNames.i64x2_le_s, builtin_i64x2_le_s); + +// i64x2.le_u -> v128.le +function builtin_i64x2_le_u(ctx: BuiltinContext): ExpressionRef { + checkTypeAbsent(ctx); + ctx.typeArguments = [ Type.u64 ]; + ctx.contextualType = Type.v128; + return builtin_v128_le(ctx); +} +builtins.set(BuiltinNames.i64x2_le_u, builtin_i64x2_le_u); + +// i64x2.gt_s -> v128.gt +function builtin_i64x2_gt_s(ctx: BuiltinContext): ExpressionRef { + checkTypeAbsent(ctx); + ctx.typeArguments = [ Type.i64 ]; + ctx.contextualType = Type.v128; + return builtin_v128_gt(ctx); +} +builtins.set(BuiltinNames.i64x2_gt_s, builtin_i64x2_gt_s); + +// i64x2.gt_u -> v128.gt +function builtin_i64x2_gt_u(ctx: BuiltinContext): ExpressionRef { + checkTypeAbsent(ctx); + ctx.typeArguments = [ Type.u64 ]; + ctx.contextualType = Type.v128; + return builtin_v128_gt(ctx); +} +builtins.set(BuiltinNames.i64x2_gt_u, builtin_i64x2_gt_u); + +// i64x2.ge_s -> v128.ge +function builtin_i64x2_ge_s(ctx: BuiltinContext): ExpressionRef { + checkTypeAbsent(ctx); + ctx.typeArguments = [ Type.i64 ]; + ctx.contextualType = Type.v128; + return builtin_v128_ge(ctx); +} +builtins.set(BuiltinNames.i64x2_ge_s, builtin_i64x2_ge_s); + +// i64x2.ge_u -> v128.ge +function builtin_i64x2_ge_u(ctx: BuiltinContext): ExpressionRef { + checkTypeAbsent(ctx); + ctx.typeArguments = [ Type.u64 ]; + ctx.contextualType = Type.v128; + return builtin_v128_ge(ctx); +} +builtins.set(BuiltinNames.i64x2_ge_u, builtin_i64x2_ge_u); + // i64x2.extend_low_i32x4_s -> // v128.extend_low function builtin_i64x2_extend_low_i32x4_s(ctx: BuiltinContext): ExpressionRef { checkTypeAbsent(ctx); diff --git a/src/module.ts b/src/module.ts index e5236cb219..992bea2884 100644 --- a/src/module.ts +++ b/src/module.ts @@ -393,6 +393,17 @@ export enum BinaryOp { LeU32x4 = 103 /* _BinaryenLeUVecI32x4 */, GeI32x4 = 104 /* _BinaryenGeSVecI32x4 */, GeU32x4 = 105 /* _BinaryenGeUVecI32x4 */, + EqI64x2 = 96 /* TODO_BinaryenEqVecI64x2 */, // FIXME: missing opcode in binaryen + NeI64x2 = 97 /* TODO_BinaryenNeVecI64x2 */, // FIXME: missing opcode in binaryen + LtI64x2 = 98 /* TODO_BinaryenLtSVecI64x2 */, // FIXME: missing opcode in binaryen + LtU64x2 = 99 /* TODO_BinaryenLtUVecI64x2 */, // FIXME: missing opcode in binaryen + GtI64x2 = 100 /* TODO_BinaryenGtSVecI64x2 */, // FIXME: missing opcode in binaryen + GtU64x2 = 101 /* TODO_BinaryenGtUVecI64x2 */, // FIXME: missing opcode in binaryen + LeI64x2 = 102 /* TODO_BinaryenLeSVecI64x2 */, // FIXME: missing opcode in binaryen + LeU64x2 = 103 /* TODO_BinaryenLeUVecI64x2 */, // FIXME: missing opcode in binaryen + GeI64x2 = 104 /* TODO_BinaryenGeSVecI64x2 */, // FIXME: missing opcode in binaryen + GeU64x2 = 105 /* TODO_BinaryenGeUVecI64x2 */, // FIXME: missing opcode in binaryen + // 106? EqF32x4 = 107 /* _BinaryenEqVecF32x4 */, NeF32x4 = 108 /* _BinaryenNeVecF32x4 */, LtF32x4 = 109 /* _BinaryenLtVecF32x4 */, diff --git a/std/assembly/builtins.ts b/std/assembly/builtins.ts index 80a83bff29..1dd1c7b451 100644 --- a/std/assembly/builtins.ts +++ b/std/assembly/builtins.ts @@ -1850,6 +1850,46 @@ export namespace i64x2 { @builtin export declare function all_true(a: v128): bool; + // @ts-ignore: decorator + @builtin + export declare function eq(a: v128, b: v128): v128; + + // @ts-ignore: decorator + @builtin + export declare function ne(a: v128, b: v128): v128; + + // @ts-ignore: decorator + @builtin + export declare function lt_s(a: v128, b: v128): v128; + + // @ts-ignore: decorator + @builtin + export declare function lt_u(a: v128, b: v128): v128; + + // @ts-ignore: decorator + @builtin + export declare function le_s(a: v128, b: v128): v128; + + // @ts-ignore: decorator + @builtin + export declare function le_u(a: v128, b: v128): v128; + + // @ts-ignore: decorator + @builtin + export declare function gt_s(a: v128, b: v128): v128; + + // @ts-ignore: decorator + @builtin + export declare function gt_u(a: v128, b: v128): v128; + + // @ts-ignore: decorator + @builtin + export declare function ge_s(a: v128, b: v128): v128; + + // @ts-ignore: decorator + @builtin + export declare function ge_u(a: v128, b: v128): v128; + // @ts-ignore: decorator @builtin export declare function extend_low_i32x4_s(a: v128): v128; diff --git a/std/assembly/index.d.ts b/std/assembly/index.d.ts index d01e0d01eb..86b4f2c4aa 100644 --- a/std/assembly/index.d.ts +++ b/std/assembly/index.d.ts @@ -1057,6 +1057,26 @@ declare namespace i64x2 { export function shr_u(a: v128, b: i32): v128; /** Reduces a vector to a scalar indicating whether all 64-bit integer lanes are considered `true`. */ export function all_true(a: v128): bool; + /** Computes which 64-bit integer lanes are equal. */ + export function eq(a: v128, b: v128): v128; + /** Computes which 64-bit integer lanes are not equal. */ + export function ne(a: v128, b: v128): v128; + /** Computes which 64-bit signed integer lanes of the first vector are less than those of the second. */ + export function lt_s(a: v128, b: v128): v128; + /** Computes which 64-bit unsigned integer lanes of the first vector are less than those of the second. */ + export function lt_u(a: v128, b: v128): v128; + /** Computes which 64-bit signed integer lanes of the first vector are less than or equal those of the second. */ + export function le_s(a: v128, b: v128): v128; + /** Computes which 64-bit unsigned integer lanes of the first vector are less than or equal those of the second. */ + export function le_u(a: v128, b: v128): v128; + /** Computes which 64-bit signed integer lanes of the first vector are greater than those of the second. */ + export function gt_s(a: v128, b: v128): v128; + /** Computes which 64-bit unsigned integer lanes of the first vector are greater than those of the second. */ + export function gt_u(a: v128, b: v128): v128; + /** Computes which 64-bit signed integer lanes of the first vector are greater than or equal those of the second. */ + export function ge_s(a: v128, b: v128): v128; + /** Computes which 64-bit unsigned integer lanes of the first vector are greater than or equal those of the second. */ + export function ge_u(a: v128, b: v128): v128; /** Extends the low 32-bit signed integer lanes to 64-bit signed integer lanes. */ export function extend_low_i32x4_s(a: v128): v128; /** Extends the low 32-bit unsigned integer lane to 64-bit unsigned integer lanes. */ From d215fabdd6c4944fc2a95cf52013b0fd6ace6c59 Mon Sep 17 00:00:00 2001 From: dcode Date: Sun, 28 Feb 2021 23:50:22 +0100 Subject: [PATCH 18/24] initial i31ref --- cli/asc.json | 2 +- src/builtins.ts | 61 +++++++++++++++++------- src/compiler.ts | 9 +--- src/glue/binaryen.d.ts | 10 ++++ src/module.ts | 13 ++--- src/passes/pass.ts | 22 +++++++-- std/assembly/builtins.ts | 12 +++++ std/assembly/index.d.ts | 8 ++++ std/assembly/reference.ts | 6 +++ tests/compiler/features/gc.json | 10 ++++ tests/compiler/features/gc.optimized.wat | 17 +++++++ tests/compiler/features/gc.ts | 8 ++++ tests/compiler/features/gc.untouched.wat | 50 +++++++++++++++++++ tests/features.json | 1 + 14 files changed, 190 insertions(+), 39 deletions(-) create mode 100644 tests/compiler/features/gc.json create mode 100644 tests/compiler/features/gc.optimized.wat create mode 100644 tests/compiler/features/gc.ts create mode 100644 tests/compiler/features/gc.untouched.wat diff --git a/cli/asc.json b/cli/asc.json index f94fb9fed9..34edc5a756 100644 --- a/cli/asc.json +++ b/cli/asc.json @@ -215,7 +215,7 @@ " simd SIMD types and operations.", " threads Threading and atomic operations.", " reference-types Reference types and operations.", - " gc Garbage collection (anyref, WIP).", + " gc Garbage collection (WIP).", "" ], "TODO_doesNothingYet": [ diff --git a/src/builtins.ts b/src/builtins.ts index c488ad47a3..2b9a5252a3 100644 --- a/src/builtins.ts +++ b/src/builtins.ts @@ -605,6 +605,9 @@ export namespace BuiltinNames { export const f64x2_gt = "~lib/builtins/f64x2.gt"; export const f64x2_ge = "~lib/builtins/f64x2.ge"; + export const i31_new = "~lib/builtins/i31.new"; + export const i31_get = "~lib/builtins/i31.get"; + // internals export const data_end = "~lib/memory/__data_end"; export const stack_pointer = "~lib/memory/__stack_pointer"; @@ -2920,6 +2923,41 @@ function builtin_memory_data(ctx: BuiltinContext): ExpressionRef { } builtins.set(BuiltinNames.memory_data, builtin_memory_data); +// === GC ===================================================================================== + +function builtin_i31_new(ctx: BuiltinContext): ExpressionRef { + var compiler = ctx.compiler; + var module = compiler.module; + if ( + checkTypeAbsent(ctx) | + checkArgsRequired(ctx, 1) + ) return module.unreachable(); + var operands = ctx.operands; + var arg0 = compiler.compileExpression(operands[0], Type.i32, Constraints.CONV_IMPLICIT); + compiler.currentType = Type.i31ref; + return module.i31_new(arg0); +} +builtins.set(BuiltinNames.i31_new, builtin_i31_new); + +function builtin_i31_get(ctx: BuiltinContext): ExpressionRef { + var compiler = ctx.compiler; + var module = compiler.module; + if ( + checkTypeAbsent(ctx) | + checkArgsRequired(ctx, 1) + ) return module.unreachable(); + var operands = ctx.operands; + var arg0 = compiler.compileExpression(operands[0], Type.i31ref, Constraints.CONV_IMPLICIT); + if (ctx.contextualType.is(TypeFlags.UNSIGNED)) { + compiler.currentType = Type.u32; + return module.i31_get(arg0, false); + } else { + compiler.currentType = Type.i32; + return module.i31_get(arg0, true); + } +} +builtins.set(BuiltinNames.i31_get, builtin_i31_get); + // === Helpers ================================================================================ // changetype(value: *) -> T @@ -3040,8 +3078,8 @@ function builtin_assert(ctx: BuiltinContext): ExpressionRef { case TypeKind.EXTERNREF: case TypeKind.ANYREF: case TypeKind.EQREF: - case TypeKind.DATAREF: return module.if(module.ref_is(RefIsOp.RefIsNull, arg0), abort); - case TypeKind.I31REF: return module.if(module.unary(UnaryOp.EqzI32, module.i31_get(arg0)), abort); + case TypeKind.DATAREF: + case TypeKind.I31REF: return module.if(module.ref_is(RefIsOp.RefIsNull, arg0), abort); } } else { @@ -3124,28 +3162,15 @@ function builtin_assert(ctx: BuiltinContext): ExpressionRef { case TypeKind.EXTERNREF: case TypeKind.ANYREF: case TypeKind.EQREF: - case TypeKind.DATAREF: { + case TypeKind.DATAREF: + case TypeKind.I31REF: { let temp = flow.getTempLocal(type); let ret = module.if( module.ref_is(RefIsOp.RefIsNull, module.local_tee(temp.index, arg0, false) // ref ), abort, - module.local_get(temp.index, NativeType.F64) - ); - flow.freeTempLocal(temp); - return ret; - } - case TypeKind.I31REF: { - let temp = flow.getTempLocal(type); - let ret = module.if( - module.unary(UnaryOp.EqzI32, - module.i31_get( - module.local_tee(temp.index, arg0, false) // ref - ) - ), - abort, - module.local_get(temp.index, NativeType.F64) + module.local_get(temp.index, type.toNativeType()) ); flow.freeTempLocal(temp); return ret; diff --git a/src/compiler.ts b/src/compiler.ts index 5ff74f7aa2..4acdbfa2bd 100644 --- a/src/compiler.ts +++ b/src/compiler.ts @@ -9940,14 +9940,9 @@ export class Compiler extends DiagnosticEmitter { case TypeKind.EXTERNREF: case TypeKind.ANYREF: case TypeKind.EQREF: - case TypeKind.DATAREF: { - return module.ref_is(RefIsOp.RefIsNull, expr); - } + case TypeKind.DATAREF: case TypeKind.I31REF: { - return module.binary(BinaryOp.NeI32, - module.i31_get(expr), - module.i32(0) - ); + return module.ref_is(RefIsOp.RefIsNull, expr); } default: { assert(false); diff --git a/src/glue/binaryen.d.ts b/src/glue/binaryen.d.ts index b9a3d43b87..734606e8b2 100644 --- a/src/glue/binaryen.d.ts +++ b/src/glue/binaryen.d.ts @@ -864,6 +864,16 @@ export declare function _BinaryenTupleExtractSetIndex(expr: BinaryenExpressionRe export declare function _BinaryenPop(module: BinaryenModuleRef, type: BinaryenType): BinaryenExpressionRef; +export declare function _BinaryenI31New(module: BinaryenModuleRef, value: BinaryenExpressionRef): BinaryenExpressionRef; +export declare function _BinaryenI31NewGetValue(expr: BinaryenExpressionRef): BinaryenExpressionRef; +export declare function _BinaryenI31NewSetValue(expr: BinaryenExpressionRef, valueExpr: BinaryenExpressionRef): void; + +export declare function _BinaryenI31Get(module: BinaryenModuleRef, i31Expr: BinaryenExpressionRef, signed: bool): BinaryenExpressionRef; +export declare function _BinaryenI31GetGetI31(expr: BinaryenExpressionRef): BinaryenExpressionRef; +export declare function _BinaryenI31GetSetI31(expr: BinaryenExpressionRef, i31Expr: BinaryenExpressionRef): void; +export declare function _BinaryenI31GetIsSigned(expr: BinaryenExpressionRef): bool; +export declare function _BinaryenI31GetSetSigned(expr: BinaryenExpressionRef, signed: bool): void; + type BinaryenFunctionRef = usize; export declare function _BinaryenAddFunction(module: BinaryenModuleRef, name: BinaryenString, params: BinaryenType, results: BinaryenType, varTypes: BinaryenArray, numVarTypes: BinaryenIndex, body: BinaryenExpressionRef): BinaryenFunctionRef; diff --git a/src/module.ts b/src/module.ts index 992bea2884..c318a47f35 100644 --- a/src/module.ts +++ b/src/module.ts @@ -1179,19 +1179,16 @@ export class Module { // gc i31_new( - expr: ExpressionRef + value: ExpressionRef ): ExpressionRef { - assert(false); - return this.unreachable(); - // return binaryen._BinaryenI31New(this.ref, expr); + return binaryen._BinaryenI31New(this.ref, value); } i31_get( - expr: ExpressionRef + expr: ExpressionRef, + signed: bool ): ExpressionRef { - assert(false); - return this.unreachable(); - // return binaryen._BinaryenI31Get(this.ref, expr); + return binaryen._BinaryenI31Get(this.ref, expr, signed); } // globals diff --git a/src/passes/pass.ts b/src/passes/pass.ts index b8ab254605..733c3906a0 100644 --- a/src/passes/pass.ts +++ b/src/passes/pass.ts @@ -169,7 +169,11 @@ import { _BinaryenRefEqGetRight, _BinaryenRefEqSetLeft, _BinaryenRefEqSetRight, - _BinaryenFunctionSetBody + _BinaryenFunctionSetBody, + _BinaryenI31NewGetValue, + _BinaryenI31GetGetI31, + _BinaryenI31NewSetValue, + _BinaryenI31GetSetI31 } from "../glue/binaryen"; /** Base class of custom Binaryen visitors. */ @@ -865,14 +869,14 @@ export abstract class Visitor { } case ExpressionId.I31New: { this.stack.push(expr); - assert(false); // TODO + this.visit(_BinaryenI31NewGetValue(expr)); assert(this.stack.pop() == expr); this.visitI31New(expr); break; } case ExpressionId.I31Get: { this.stack.push(expr); - assert(false); // TODO + this.visit(_BinaryenI31GetGetI31(expr)); assert(this.stack.pop() == expr); this.visitI31Get(expr); break; @@ -1559,11 +1563,19 @@ export function replaceChild( break; } case ExpressionId.I31New: { - assert(false); // TODO + let value = _BinaryenI31NewGetValue(parent); + if (value == search) { + _BinaryenI31NewSetValue(parent, replacement); + return value; + } break; } case ExpressionId.I31Get: { - assert(false); // TODO + let i31Expr = _BinaryenI31GetGetI31(parent); + if (i31Expr == search) { + _BinaryenI31GetSetI31(parent, replacement); + return i31Expr; + } break; } case ExpressionId.CallRef: { diff --git a/std/assembly/builtins.ts b/std/assembly/builtins.ts index 1dd1c7b451..4112eebb8f 100644 --- a/std/assembly/builtins.ts +++ b/std/assembly/builtins.ts @@ -2121,6 +2121,18 @@ export namespace f64x2 { export declare function ge(a: v128, b: v128): v128; } +@final +export abstract class i31 { // FIXME: usage of 'new' requires a class :( + + // @ts-ignore: decorator + @builtin + static new(value: i32): i31ref { return unreachable(); }; + + // @ts-ignore: decorator + @builtin + static get(i31expr: i31ref): i32 { return unreachable(); }; +} + /* eslint-disable @typescript-eslint/no-unused-vars */ // @ts-ignore: decorator diff --git a/std/assembly/index.d.ts b/std/assembly/index.d.ts index 86b4f2c4aa..89ca2f76be 100644 --- a/std/assembly/index.d.ts +++ b/std/assembly/index.d.ts @@ -1194,6 +1194,14 @@ declare namespace f64x2 { /** Computes which 64-bit float lanes of the first vector are greater than or equal those of the second. */ export function ge(a: v128, b: v128): v128; } + +declare abstract class i31 { + /** Creates a new i31ref from the specified integer value. */ + static new(value: i32): i31ref; + /** Gets the integer value of an i31ref. */ + static get(i31expr: i31ref): i32; +} + /** Macro type evaluating to the underlying native WebAssembly type. */ declare type native = T; /** Special type evaluating the indexed access index type. */ diff --git a/std/assembly/reference.ts b/std/assembly/reference.ts index 234c52650e..a020ed0e55 100644 --- a/std/assembly/reference.ts +++ b/std/assembly/reference.ts @@ -20,6 +20,12 @@ export abstract class Eqref extends Ref { @final @unmanaged export abstract class I31ref extends Ref { + get(this: i31ref): i32 { + return i31.get(this); + } + getUnsigned(this: i31ref): u32 { + return i31.get(this); + } } @final @unmanaged diff --git a/tests/compiler/features/gc.json b/tests/compiler/features/gc.json new file mode 100644 index 0000000000..ed1300131d --- /dev/null +++ b/tests/compiler/features/gc.json @@ -0,0 +1,10 @@ +{ + "features": [ + "gc" + ], + "asc_flags": [ + "--explicitStart", + "--noValidate" + ], + "skipInstantiate": true +} diff --git a/tests/compiler/features/gc.optimized.wat b/tests/compiler/features/gc.optimized.wat new file mode 100644 index 0000000000..8255d25a29 --- /dev/null +++ b/tests/compiler/features/gc.optimized.wat @@ -0,0 +1,17 @@ +(module + (type $none_=>_none (func)) + (memory $0 1) + (data (i32.const 1036) ",") + (data (i32.const 1048) "\01\00\00\00\1c\00\00\00f\00e\00a\00t\00u\00r\00e\00s\00/\00g\00c\00.\00t\00s") + (global $~started (mut i32) (i32.const 0)) + (export "memory" (memory $0)) + (export "_start" (func $~start)) + (func $~start + global.get $~started + if + return + end + i32.const 1 + global.set $~started + ) +) diff --git a/tests/compiler/features/gc.ts b/tests/compiler/features/gc.ts new file mode 100644 index 0000000000..6b9c564b78 --- /dev/null +++ b/tests/compiler/features/gc.ts @@ -0,0 +1,8 @@ +function test_i31(): void { + var ref = i31.new(123); + assert(ref); + var val = i31.get(ref); + var uval = i31.get(ref); +} + +test_i31(); diff --git a/tests/compiler/features/gc.untouched.wat b/tests/compiler/features/gc.untouched.wat new file mode 100644 index 0000000000..16ba095b03 --- /dev/null +++ b/tests/compiler/features/gc.untouched.wat @@ -0,0 +1,50 @@ +(module + (type $none_=>_none (func)) + (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (memory $0 1) + (data (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00f\00e\00a\00t\00u\00r\00e\00s\00/\00g\00c\00.\00t\00s\00") + (table $0 1 funcref) + (global $~lib/memory/__data_end i32 (i32.const 60)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 16444)) + (global $~lib/memory/__heap_base i32 (i32.const 16444)) + (global $~started (mut i32) (i32.const 0)) + (export "memory" (memory $0)) + (export "_start" (func $~start)) + (func $features/gc/test_i31 + (local $0 i31ref) + (local $1 i32) + (local $2 i32) + i32.const 123 + i31.new + local.set $0 + local.get $0 + ref.is_null + if + i32.const 0 + i32.const 32 + i32.const 3 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i31.get_s + local.set $1 + local.get $0 + i31.get_u + local.set $2 + ) + (func $start:features/gc + call $features/gc/test_i31 + ) + (func $~start + global.get $~started + if + return + end + i32.const 1 + global.set $~started + call $start:features/gc + ) +) diff --git a/tests/features.json b/tests/features.json index 35ee6029c8..92adbebdef 100644 --- a/tests/features.json +++ b/tests/features.json @@ -32,6 +32,7 @@ }, "gc": { "asc_flags": [ + "--enable reference-types", "--enable gc" ], "v8_flags": [ From 28f1d41687fd0deb741d6ae4cca73d08bbcf76b1 Mon Sep 17 00:00:00 2001 From: dcode Date: Mon, 1 Mar 2021 00:06:57 +0100 Subject: [PATCH 19/24] lint --- std/assembly/builtins.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/std/assembly/builtins.ts b/std/assembly/builtins.ts index 4112eebb8f..6e43f70178 100644 --- a/std/assembly/builtins.ts +++ b/std/assembly/builtins.ts @@ -2126,11 +2126,11 @@ export abstract class i31 { // FIXME: usage of 'new' requires a class :( // @ts-ignore: decorator @builtin - static new(value: i32): i31ref { return unreachable(); }; + static new(value: i32): i31ref { return unreachable(); } // @ts-ignore: decorator @builtin - static get(i31expr: i31ref): i32 { return unreachable(); }; + static get(i31expr: i31ref): i32 { return unreachable(); } } /* eslint-disable @typescript-eslint/no-unused-vars */ From 12059fe63590299f56c9ea174d321666d9aa8fea Mon Sep 17 00:00:00 2001 From: dcode Date: Mon, 1 Mar 2021 12:52:09 +0100 Subject: [PATCH 20/24] remove I31 wrapper methods --- std/assembly/reference.ts | 6 ------ 1 file changed, 6 deletions(-) diff --git a/std/assembly/reference.ts b/std/assembly/reference.ts index a020ed0e55..234c52650e 100644 --- a/std/assembly/reference.ts +++ b/std/assembly/reference.ts @@ -20,12 +20,6 @@ export abstract class Eqref extends Ref { @final @unmanaged export abstract class I31ref extends Ref { - get(this: i31ref): i32 { - return i31.get(this); - } - getUnsigned(this: i31ref): u32 { - return i31.get(this); - } } @final @unmanaged From 12a89ff2bbaf9e3279ced7b75bbdb68a999916e1 Mon Sep 17 00:00:00 2001 From: dcode Date: Tue, 2 Mar 2021 13:42:29 +0100 Subject: [PATCH 21/24] update --- package-lock.json | 280 +++++++++++++++++++++++----------------------- package.json | 2 +- 2 files changed, 140 insertions(+), 142 deletions(-) diff --git a/package-lock.json b/package-lock.json index 214d2569f2..95d7d8ee11 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,7 +8,7 @@ "version": "0.0.0", "license": "Apache-2.0", "dependencies": { - "binaryen": "99.0.0-nightly.20210227", + "binaryen": "99.0.0-nightly.20210302", "long": "^4.0.0", "source-map-support": "^0.5.19", "ts-node": "^6.2.0" @@ -53,9 +53,9 @@ "dev": true }, "node_modules/@babel/highlight": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.12.13.tgz", - "integrity": "sha512-kocDQvIbgMKlWxXe9fof3TQ+gkIPOUSEYhJjqUjvKMez3krV7vbzYCDq39Oj11UAVK7JqPVGQPlgE85dPNlQww==", + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.8.tgz", + "integrity": "sha512-4vrIhfJyfNf+lCtXC2ck1rKSzDwciqF7IWFhXXrSOUC2O5DrVp+w4c6ed4AllTxhTkUP5x2tYj41VaxdVMMRDw==", "dev": true, "dependencies": { "@babel/helper-validator-identifier": "^7.12.11", @@ -135,9 +135,9 @@ } }, "node_modules/@eslint/eslintrc": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.3.0.tgz", - "integrity": "sha512-1JTKgrOKAHVivSvOYw+sJOunkBjUOvjqWk1DPja7ZFhIS2mX/4EgTT8M7eTK9jrKhL/FvXXEbQwIs3pg1xp3dg==", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.0.tgz", + "integrity": "sha512-2ZPCc+uNbjV5ERJr+aKSPRwZgKd2z11x0EgLvb1PURmUrn9QNRXFqje0Ldq454PfAVyaJYyrDvvIKSFP4NnBog==", "dev": true, "dependencies": { "ajv": "^6.12.4", @@ -147,7 +147,6 @@ "ignore": "^4.0.6", "import-fresh": "^3.2.1", "js-yaml": "^3.13.1", - "lodash": "^4.17.20", "minimatch": "^3.0.4", "strip-json-comments": "^3.1.1" }, @@ -229,13 +228,13 @@ "dev": true }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "4.15.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.15.2.tgz", - "integrity": "sha512-uiQQeu9tWl3f1+oK0yoAv9lt/KXO24iafxgQTkIYO/kitruILGx3uH+QtIAHqxFV+yIsdnJH+alel9KuE3J15Q==", + "version": "4.16.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.16.1.tgz", + "integrity": "sha512-SK777klBdlkUZpZLC1mPvyOWk9yAFCWmug13eAjVQ4/Q1LATE/NbcQL1xDHkptQkZOLnPmLUA1Y54m8dqYwnoQ==", "dev": true, "dependencies": { - "@typescript-eslint/experimental-utils": "4.15.2", - "@typescript-eslint/scope-manager": "4.15.2", + "@typescript-eslint/experimental-utils": "4.16.1", + "@typescript-eslint/scope-manager": "4.16.1", "debug": "^4.1.1", "functional-red-black-tree": "^1.0.1", "lodash": "^4.17.15", @@ -261,15 +260,15 @@ } }, "node_modules/@typescript-eslint/experimental-utils": { - "version": "4.15.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.15.2.tgz", - "integrity": "sha512-Fxoshw8+R5X3/Vmqwsjc8nRO/7iTysRtDqx6rlfLZ7HbT8TZhPeQqbPjTyk2RheH3L8afumecTQnUc9EeXxohQ==", + "version": "4.16.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.16.1.tgz", + "integrity": "sha512-0Hm3LSlMYFK17jO4iY3un1Ve9x1zLNn4EM50Lia+0EV99NdbK+cn0er7HC7IvBA23mBg3P+8dUkMXy4leL33UQ==", "dev": true, "dependencies": { "@types/json-schema": "^7.0.3", - "@typescript-eslint/scope-manager": "4.15.2", - "@typescript-eslint/types": "4.15.2", - "@typescript-eslint/typescript-estree": "4.15.2", + "@typescript-eslint/scope-manager": "4.16.1", + "@typescript-eslint/types": "4.16.1", + "@typescript-eslint/typescript-estree": "4.16.1", "eslint-scope": "^5.0.0", "eslint-utils": "^2.0.0" }, @@ -285,14 +284,14 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "4.15.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.15.2.tgz", - "integrity": "sha512-SHeF8xbsC6z2FKXsaTb1tBCf0QZsjJ94H6Bo51Y1aVEZ4XAefaw5ZAilMoDPlGghe+qtq7XdTiDlGfVTOmvA+Q==", + "version": "4.16.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.16.1.tgz", + "integrity": "sha512-/c0LEZcDL5y8RyI1zLcmZMvJrsR6SM1uetskFkoh3dvqDKVXPsXI+wFB/CbVw7WkEyyTKobC1mUNp/5y6gRvXg==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "4.15.2", - "@typescript-eslint/types": "4.15.2", - "@typescript-eslint/typescript-estree": "4.15.2", + "@typescript-eslint/scope-manager": "4.16.1", + "@typescript-eslint/types": "4.16.1", + "@typescript-eslint/typescript-estree": "4.16.1", "debug": "^4.1.1" }, "engines": { @@ -312,13 +311,13 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "4.15.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.15.2.tgz", - "integrity": "sha512-Zm0tf/MSKuX6aeJmuXexgdVyxT9/oJJhaCkijv0DvJVT3ui4zY6XYd6iwIo/8GEZGy43cd7w1rFMiCLHbRzAPQ==", + "version": "4.16.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.16.1.tgz", + "integrity": "sha512-6IlZv9JaurqV0jkEg923cV49aAn8V6+1H1DRfhRcvZUrptQ+UtSKHb5kwTayzOYTJJ/RsYZdcvhOEKiBLyc0Cw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "4.15.2", - "@typescript-eslint/visitor-keys": "4.15.2" + "@typescript-eslint/types": "4.16.1", + "@typescript-eslint/visitor-keys": "4.16.1" }, "engines": { "node": "^8.10.0 || ^10.13.0 || >=11.10.1" @@ -329,9 +328,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "4.15.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.15.2.tgz", - "integrity": "sha512-r7lW7HFkAarfUylJ2tKndyO9njwSyoy6cpfDKWPX6/ctZA+QyaYscAHXVAfJqtnY6aaTwDYrOhp+ginlbc7HfQ==", + "version": "4.16.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.16.1.tgz", + "integrity": "sha512-nnKqBwMgRlhzmJQF8tnFDZWfunXmJyuXj55xc8Kbfup4PbkzdoDXZvzN8//EiKR27J6vUSU8j4t37yUuYPiLqA==", "dev": true, "engines": { "node": "^8.10.0 || ^10.13.0 || >=11.10.1" @@ -342,13 +341,13 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "4.15.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.15.2.tgz", - "integrity": "sha512-cGR8C2g5SPtHTQvAymEODeqx90pJHadWsgTtx6GbnTWKqsg7yp6Eaya9nFzUd4KrKhxdYTTFBiYeTPQaz/l8bw==", + "version": "4.16.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.16.1.tgz", + "integrity": "sha512-m8I/DKHa8YbeHt31T+UGd/l8Kwr0XCTCZL3H4HMvvLCT7HU9V7yYdinTOv1gf/zfqNeDcCgaFH2BMsS8x6NvJg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "4.15.2", - "@typescript-eslint/visitor-keys": "4.15.2", + "@typescript-eslint/types": "4.16.1", + "@typescript-eslint/visitor-keys": "4.16.1", "debug": "^4.1.1", "globby": "^11.0.1", "is-glob": "^4.0.1", @@ -369,12 +368,12 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "4.15.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.15.2.tgz", - "integrity": "sha512-TME1VgSb7wTwgENN5KVj4Nqg25hP8DisXxNBojM4Nn31rYaNDIocNm5cmjOFfh42n7NVERxWrDFoETO/76ePyg==", + "version": "4.16.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.16.1.tgz", + "integrity": "sha512-s/aIP1XcMkEqCNcPQtl60ogUYjSM8FU2mq1O7y5cFf3Xcob1z1iXWNB6cC43Op+NGRTFgGolri6s8z/efA9i1w==", "dev": true, "dependencies": { - "@typescript-eslint/types": "4.15.2", + "@typescript-eslint/types": "4.16.1", "eslint-visitor-keys": "^2.0.0" }, "engines": { @@ -709,9 +708,9 @@ } }, "node_modules/binaryen": { - "version": "99.0.0-nightly.20210227", - "resolved": "https://registry.npmjs.org/binaryen/-/binaryen-99.0.0-nightly.20210227.tgz", - "integrity": "sha512-wUPV8h/Ktx7W6fz0x0TcawZsi3/AWHAfl56/kX+Lou6oD/NsHQ/B6LXrYvZl+n76Yp8c1Utd/dorYt3AAWCRlQ==", + "version": "99.0.0-nightly.20210302", + "resolved": "https://registry.npmjs.org/binaryen/-/binaryen-99.0.0-nightly.20210302.tgz", + "integrity": "sha512-AAM8xaq8vvstPrpjUEbGqa0cYglX+vohSRKtHLZaZTJNUezixz7vAYb6dEVAqwjUv3lulSY4RTg/aKt7HXj7TQ==", "bin": { "wasm-opt": "bin/wasm-opt" } @@ -776,9 +775,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001191", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001191.tgz", - "integrity": "sha512-xJJqzyd+7GCJXkcoBiQ1GuxEiOBCLQ0aVW9HMekifZsAVGdj5eJ4mFB9fEhSHipq9IOk/QXFJUiIr9lZT+EsGw==", + "version": "1.0.30001194", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001194.tgz", + "integrity": "sha512-iDUOH+oFeBYk5XawYsPtsx/8fFpndAPUQJC7gBTfxHM8xw5nOZv7ceAD4frS1MKCLUac7QL5wdAJiFQlDRjXlA==", "dev": true }, "node_modules/chalk": { @@ -842,9 +841,9 @@ "dev": true }, "node_modules/colorette": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.1.tgz", - "integrity": "sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz", + "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==", "dev": true }, "node_modules/commander": { @@ -936,9 +935,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.3.672", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.672.tgz", - "integrity": "sha512-gFQe7HBb0lbOMqK2GAS5/1F+B0IMdYiAgB9OT/w1F4M7lgJK2aNOMNOM622aEax+nS1cTMytkiT0uMOkbtFmHw==", + "version": "1.3.677", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.677.tgz", + "integrity": "sha512-Tcmk+oKQgpjcM+KYanlkd76ZtpzalkpUULnlJDP6vjHtR7UU564IM9Qv5DxqHZNBQjzXm6mkn7Y8bw2OoE3FmQ==", "dev": true }, "node_modules/emoji-regex": { @@ -1031,13 +1030,13 @@ } }, "node_modules/eslint": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.20.0.tgz", - "integrity": "sha512-qGi0CTcOGP2OtCQBgWZlQjcTuP0XkIpYFj25XtRTQSHC+umNnp7UMshr2G8SLsRFYDdAPFeHOsiteadmMH02Yw==", + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.21.0.tgz", + "integrity": "sha512-W2aJbXpMNofUp0ztQaF40fveSsJBjlSCSWpy//gzfTvwC+USs/nceBrKmlJOiM8r1bLwP2EuYkCqArn/6QTIgg==", "dev": true, "dependencies": { "@babel/code-frame": "7.12.11", - "@eslint/eslintrc": "^0.3.0", + "@eslint/eslintrc": "^0.4.0", "ajv": "^6.10.0", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", @@ -1050,7 +1049,7 @@ "espree": "^7.3.1", "esquery": "^1.4.0", "esutils": "^2.0.2", - "file-entry-cache": "^6.0.0", + "file-entry-cache": "^6.0.1", "functional-red-black-tree": "^1.0.1", "glob-parent": "^5.0.0", "globals": "^12.1.0", @@ -1227,9 +1226,9 @@ } }, "node_modules/events": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.2.0.tgz", - "integrity": "sha512-/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", "dev": true, "engines": { "node": ">=0.8.x" @@ -1300,9 +1299,9 @@ "dev": true }, "node_modules/fastq": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.10.1.tgz", - "integrity": "sha512-AWuv6Ery3pM+dY7LYS8YIaCiQvUaos9OB1RyNgaOWnaX+Tik7Onvcsf8x8c+YtDeT0maYLniBip2hox5KtEXXA==", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.11.0.tgz", + "integrity": "sha512-7Eczs8gIPDrVzT+EksYBcupqMyxSHXXrHOLRRxU2/DicV8789MRBRR8+Hc2uWzUupOs4YS4JzBmBxjjCVBxD/g==", "dev": true, "dependencies": { "reusify": "^1.0.4" @@ -2501,9 +2500,9 @@ } }, "node_modules/string-width": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", - "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", "dev": true, "dependencies": { "emoji-regex": "^8.0.0", @@ -2812,9 +2811,9 @@ } }, "node_modules/webpack": { - "version": "5.24.1", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.24.1.tgz", - "integrity": "sha512-eg+6OIt6npUSwbhRQY6XffAixEUSARBf+WAWOxrZwOB4jRbbpMXlridFy/Yt7N0U20Ry1vp/nnDbtN7l1rUdIA==", + "version": "5.24.2", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.24.2.tgz", + "integrity": "sha512-uxxKYEY4kMNjP+D2Y+8aw5Vd7ar4pMuKCNemxV26ysr1nk0YDiQTylg9U3VZIdkmI0YHa0uC8ABxL+uGxGWWJg==", "dev": true, "dependencies": { "@types/eslint-scope": "^3.7.0", @@ -3054,9 +3053,9 @@ "dev": true }, "@babel/highlight": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.12.13.tgz", - "integrity": "sha512-kocDQvIbgMKlWxXe9fof3TQ+gkIPOUSEYhJjqUjvKMez3krV7vbzYCDq39Oj11UAVK7JqPVGQPlgE85dPNlQww==", + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.8.tgz", + "integrity": "sha512-4vrIhfJyfNf+lCtXC2ck1rKSzDwciqF7IWFhXXrSOUC2O5DrVp+w4c6ed4AllTxhTkUP5x2tYj41VaxdVMMRDw==", "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.12.11", @@ -3123,9 +3122,9 @@ "dev": true }, "@eslint/eslintrc": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.3.0.tgz", - "integrity": "sha512-1JTKgrOKAHVivSvOYw+sJOunkBjUOvjqWk1DPja7ZFhIS2mX/4EgTT8M7eTK9jrKhL/FvXXEbQwIs3pg1xp3dg==", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.0.tgz", + "integrity": "sha512-2ZPCc+uNbjV5ERJr+aKSPRwZgKd2z11x0EgLvb1PURmUrn9QNRXFqje0Ldq454PfAVyaJYyrDvvIKSFP4NnBog==", "dev": true, "requires": { "ajv": "^6.12.4", @@ -3135,7 +3134,6 @@ "ignore": "^4.0.6", "import-fresh": "^3.2.1", "js-yaml": "^3.13.1", - "lodash": "^4.17.20", "minimatch": "^3.0.4", "strip-json-comments": "^3.1.1" } @@ -3205,13 +3203,13 @@ "dev": true }, "@typescript-eslint/eslint-plugin": { - "version": "4.15.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.15.2.tgz", - "integrity": "sha512-uiQQeu9tWl3f1+oK0yoAv9lt/KXO24iafxgQTkIYO/kitruILGx3uH+QtIAHqxFV+yIsdnJH+alel9KuE3J15Q==", + "version": "4.16.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.16.1.tgz", + "integrity": "sha512-SK777klBdlkUZpZLC1mPvyOWk9yAFCWmug13eAjVQ4/Q1LATE/NbcQL1xDHkptQkZOLnPmLUA1Y54m8dqYwnoQ==", "dev": true, "requires": { - "@typescript-eslint/experimental-utils": "4.15.2", - "@typescript-eslint/scope-manager": "4.15.2", + "@typescript-eslint/experimental-utils": "4.16.1", + "@typescript-eslint/scope-manager": "4.16.1", "debug": "^4.1.1", "functional-red-black-tree": "^1.0.1", "lodash": "^4.17.15", @@ -3221,55 +3219,55 @@ } }, "@typescript-eslint/experimental-utils": { - "version": "4.15.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.15.2.tgz", - "integrity": "sha512-Fxoshw8+R5X3/Vmqwsjc8nRO/7iTysRtDqx6rlfLZ7HbT8TZhPeQqbPjTyk2RheH3L8afumecTQnUc9EeXxohQ==", + "version": "4.16.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.16.1.tgz", + "integrity": "sha512-0Hm3LSlMYFK17jO4iY3un1Ve9x1zLNn4EM50Lia+0EV99NdbK+cn0er7HC7IvBA23mBg3P+8dUkMXy4leL33UQ==", "dev": true, "requires": { "@types/json-schema": "^7.0.3", - "@typescript-eslint/scope-manager": "4.15.2", - "@typescript-eslint/types": "4.15.2", - "@typescript-eslint/typescript-estree": "4.15.2", + "@typescript-eslint/scope-manager": "4.16.1", + "@typescript-eslint/types": "4.16.1", + "@typescript-eslint/typescript-estree": "4.16.1", "eslint-scope": "^5.0.0", "eslint-utils": "^2.0.0" } }, "@typescript-eslint/parser": { - "version": "4.15.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.15.2.tgz", - "integrity": "sha512-SHeF8xbsC6z2FKXsaTb1tBCf0QZsjJ94H6Bo51Y1aVEZ4XAefaw5ZAilMoDPlGghe+qtq7XdTiDlGfVTOmvA+Q==", + "version": "4.16.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.16.1.tgz", + "integrity": "sha512-/c0LEZcDL5y8RyI1zLcmZMvJrsR6SM1uetskFkoh3dvqDKVXPsXI+wFB/CbVw7WkEyyTKobC1mUNp/5y6gRvXg==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "4.15.2", - "@typescript-eslint/types": "4.15.2", - "@typescript-eslint/typescript-estree": "4.15.2", + "@typescript-eslint/scope-manager": "4.16.1", + "@typescript-eslint/types": "4.16.1", + "@typescript-eslint/typescript-estree": "4.16.1", "debug": "^4.1.1" } }, "@typescript-eslint/scope-manager": { - "version": "4.15.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.15.2.tgz", - "integrity": "sha512-Zm0tf/MSKuX6aeJmuXexgdVyxT9/oJJhaCkijv0DvJVT3ui4zY6XYd6iwIo/8GEZGy43cd7w1rFMiCLHbRzAPQ==", + "version": "4.16.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.16.1.tgz", + "integrity": "sha512-6IlZv9JaurqV0jkEg923cV49aAn8V6+1H1DRfhRcvZUrptQ+UtSKHb5kwTayzOYTJJ/RsYZdcvhOEKiBLyc0Cw==", "dev": true, "requires": { - "@typescript-eslint/types": "4.15.2", - "@typescript-eslint/visitor-keys": "4.15.2" + "@typescript-eslint/types": "4.16.1", + "@typescript-eslint/visitor-keys": "4.16.1" } }, "@typescript-eslint/types": { - "version": "4.15.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.15.2.tgz", - "integrity": "sha512-r7lW7HFkAarfUylJ2tKndyO9njwSyoy6cpfDKWPX6/ctZA+QyaYscAHXVAfJqtnY6aaTwDYrOhp+ginlbc7HfQ==", + "version": "4.16.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.16.1.tgz", + "integrity": "sha512-nnKqBwMgRlhzmJQF8tnFDZWfunXmJyuXj55xc8Kbfup4PbkzdoDXZvzN8//EiKR27J6vUSU8j4t37yUuYPiLqA==", "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "4.15.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.15.2.tgz", - "integrity": "sha512-cGR8C2g5SPtHTQvAymEODeqx90pJHadWsgTtx6GbnTWKqsg7yp6Eaya9nFzUd4KrKhxdYTTFBiYeTPQaz/l8bw==", + "version": "4.16.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.16.1.tgz", + "integrity": "sha512-m8I/DKHa8YbeHt31T+UGd/l8Kwr0XCTCZL3H4HMvvLCT7HU9V7yYdinTOv1gf/zfqNeDcCgaFH2BMsS8x6NvJg==", "dev": true, "requires": { - "@typescript-eslint/types": "4.15.2", - "@typescript-eslint/visitor-keys": "4.15.2", + "@typescript-eslint/types": "4.16.1", + "@typescript-eslint/visitor-keys": "4.16.1", "debug": "^4.1.1", "globby": "^11.0.1", "is-glob": "^4.0.1", @@ -3278,12 +3276,12 @@ } }, "@typescript-eslint/visitor-keys": { - "version": "4.15.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.15.2.tgz", - "integrity": "sha512-TME1VgSb7wTwgENN5KVj4Nqg25hP8DisXxNBojM4Nn31rYaNDIocNm5cmjOFfh42n7NVERxWrDFoETO/76ePyg==", + "version": "4.16.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.16.1.tgz", + "integrity": "sha512-s/aIP1XcMkEqCNcPQtl60ogUYjSM8FU2mq1O7y5cFf3Xcob1z1iXWNB6cC43Op+NGRTFgGolri6s8z/efA9i1w==", "dev": true, "requires": { - "@typescript-eslint/types": "4.15.2", + "@typescript-eslint/types": "4.16.1", "eslint-visitor-keys": "^2.0.0" } }, @@ -3560,9 +3558,9 @@ "dev": true }, "binaryen": { - "version": "99.0.0-nightly.20210227", - "resolved": "https://registry.npmjs.org/binaryen/-/binaryen-99.0.0-nightly.20210227.tgz", - "integrity": "sha512-wUPV8h/Ktx7W6fz0x0TcawZsi3/AWHAfl56/kX+Lou6oD/NsHQ/B6LXrYvZl+n76Yp8c1Utd/dorYt3AAWCRlQ==" + "version": "99.0.0-nightly.20210302", + "resolved": "https://registry.npmjs.org/binaryen/-/binaryen-99.0.0-nightly.20210302.tgz", + "integrity": "sha512-AAM8xaq8vvstPrpjUEbGqa0cYglX+vohSRKtHLZaZTJNUezixz7vAYb6dEVAqwjUv3lulSY4RTg/aKt7HXj7TQ==" }, "brace-expansion": { "version": "1.1.11", @@ -3608,9 +3606,9 @@ "dev": true }, "caniuse-lite": { - "version": "1.0.30001191", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001191.tgz", - "integrity": "sha512-xJJqzyd+7GCJXkcoBiQ1GuxEiOBCLQ0aVW9HMekifZsAVGdj5eJ4mFB9fEhSHipq9IOk/QXFJUiIr9lZT+EsGw==", + "version": "1.0.30001194", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001194.tgz", + "integrity": "sha512-iDUOH+oFeBYk5XawYsPtsx/8fFpndAPUQJC7gBTfxHM8xw5nOZv7ceAD4frS1MKCLUac7QL5wdAJiFQlDRjXlA==", "dev": true }, "chalk": { @@ -3659,9 +3657,9 @@ "dev": true }, "colorette": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.1.tgz", - "integrity": "sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz", + "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==", "dev": true }, "commander": { @@ -3733,9 +3731,9 @@ } }, "electron-to-chromium": { - "version": "1.3.672", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.672.tgz", - "integrity": "sha512-gFQe7HBb0lbOMqK2GAS5/1F+B0IMdYiAgB9OT/w1F4M7lgJK2aNOMNOM622aEax+nS1cTMytkiT0uMOkbtFmHw==", + "version": "1.3.677", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.677.tgz", + "integrity": "sha512-Tcmk+oKQgpjcM+KYanlkd76ZtpzalkpUULnlJDP6vjHtR7UU564IM9Qv5DxqHZNBQjzXm6mkn7Y8bw2OoE3FmQ==", "dev": true }, "emoji-regex": { @@ -3804,13 +3802,13 @@ "dev": true }, "eslint": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.20.0.tgz", - "integrity": "sha512-qGi0CTcOGP2OtCQBgWZlQjcTuP0XkIpYFj25XtRTQSHC+umNnp7UMshr2G8SLsRFYDdAPFeHOsiteadmMH02Yw==", + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.21.0.tgz", + "integrity": "sha512-W2aJbXpMNofUp0ztQaF40fveSsJBjlSCSWpy//gzfTvwC+USs/nceBrKmlJOiM8r1bLwP2EuYkCqArn/6QTIgg==", "dev": true, "requires": { "@babel/code-frame": "7.12.11", - "@eslint/eslintrc": "^0.3.0", + "@eslint/eslintrc": "^0.4.0", "ajv": "^6.10.0", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", @@ -3823,7 +3821,7 @@ "espree": "^7.3.1", "esquery": "^1.4.0", "esutils": "^2.0.2", - "file-entry-cache": "^6.0.0", + "file-entry-cache": "^6.0.1", "functional-red-black-tree": "^1.0.1", "glob-parent": "^5.0.0", "globals": "^12.1.0", @@ -3953,9 +3951,9 @@ "dev": true }, "events": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.2.0.tgz", - "integrity": "sha512-/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", "dev": true }, "execa": { @@ -4014,9 +4012,9 @@ "dev": true }, "fastq": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.10.1.tgz", - "integrity": "sha512-AWuv6Ery3pM+dY7LYS8YIaCiQvUaos9OB1RyNgaOWnaX+Tik7Onvcsf8x8c+YtDeT0maYLniBip2hox5KtEXXA==", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.11.0.tgz", + "integrity": "sha512-7Eczs8gIPDrVzT+EksYBcupqMyxSHXXrHOLRRxU2/DicV8789MRBRR8+Hc2uWzUupOs4YS4JzBmBxjjCVBxD/g==", "dev": true, "requires": { "reusify": "^1.0.4" @@ -4912,9 +4910,9 @@ } }, "string-width": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", - "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", "dev": true, "requires": { "emoji-regex": "^8.0.0", @@ -5141,9 +5139,9 @@ } }, "webpack": { - "version": "5.24.1", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.24.1.tgz", - "integrity": "sha512-eg+6OIt6npUSwbhRQY6XffAixEUSARBf+WAWOxrZwOB4jRbbpMXlridFy/Yt7N0U20Ry1vp/nnDbtN7l1rUdIA==", + "version": "5.24.2", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.24.2.tgz", + "integrity": "sha512-uxxKYEY4kMNjP+D2Y+8aw5Vd7ar4pMuKCNemxV26ysr1nk0YDiQTylg9U3VZIdkmI0YHa0uC8ABxL+uGxGWWJg==", "dev": true, "requires": { "@types/eslint-scope": "^3.7.0", diff --git a/package.json b/package.json index b4f0357db1..3f1b2230ba 100644 --- a/package.json +++ b/package.json @@ -21,7 +21,7 @@ "url": "https://github.com/AssemblyScript/assemblyscript/issues" }, "dependencies": { - "binaryen": "99.0.0-nightly.20210227", + "binaryen": "99.0.0-nightly.20210302", "long": "^4.0.0", "source-map-support": "^0.5.19", "ts-node": "^6.2.0" From 5f90df2421c0fe0becb70757cfc88ab8c3992908 Mon Sep 17 00:00:00 2001 From: dcode Date: Tue, 2 Mar 2021 13:47:48 +0100 Subject: [PATCH 22/24] bindings for ref.as_* --- src/glue/binaryen.d.ts | 11 +++++++++++ src/module.ts | 19 ++++++++++++------- 2 files changed, 23 insertions(+), 7 deletions(-) diff --git a/src/glue/binaryen.d.ts b/src/glue/binaryen.d.ts index 734606e8b2..79fb483759 100644 --- a/src/glue/binaryen.d.ts +++ b/src/glue/binaryen.d.ts @@ -470,6 +470,11 @@ export declare function _BinaryenRefIsFunc(): BinaryenOp; export declare function _BinaryenRefIsData(): BinaryenOp; export declare function _BinaryenRefIsI31(): BinaryenOp; +export declare function _BinaryenRefAsNonNull(): BinaryenOp; +export declare function _BinaryenRefAsFunc(): BinaryenOp; +export declare function _BinaryenRefAsData(): BinaryenOp; +export declare function _BinaryenRefAsAsI31(): BinaryenOp; + type BinaryenExpressionRef = usize; export declare function _BinaryenExpressionGetId(expr: BinaryenExpressionRef): BinaryenExpressionId; @@ -802,6 +807,12 @@ export declare function _BinaryenRefIsSetOp(expr: BinaryenExpressionRef, op: Bin export declare function _BinaryenRefIsGetValue(expr: BinaryenExpressionRef): BinaryenExpressionRef; export declare function _BinaryenRefIsSetValue(expr: BinaryenExpressionRef, valueExpr: BinaryenExpressionRef): void; +export declare function _BinaryenRefAs(module: BinaryenModuleRef, op: BinaryenOp, valueExpr: BinaryenExpressionRef): BinaryenExpressionRef; +export declare function _BinaryenRefAsGetOp(expr: BinaryenExpressionRef): BinaryenOp; +export declare function _BinaryenRefAsSetOp(expr: BinaryenExpressionRef, op: BinaryenOp): void; +export declare function _BinaryenRefAsGetValue(expr: BinaryenExpressionRef): BinaryenExpressionRef; +export declare function _BinaryenRefAsSetValue(expr: BinaryenExpressionRef, valueExpr: BinaryenExpressionRef): void; + export declare function _BinaryenRefFunc(module: BinaryenModuleRef, funcName: BinaryenString, type: BinaryenType): BinaryenExpressionRef; export declare function _BinaryenRefFuncGetFunc(expr: BinaryenExpressionRef): BinaryenString; export declare function _BinaryenRefFuncSetFunc(expr: BinaryenExpressionRef, funcName: BinaryenString): void; diff --git a/src/module.ts b/src/module.ts index c318a47f35..f76331ed00 100644 --- a/src/module.ts +++ b/src/module.ts @@ -583,10 +583,10 @@ export enum RefIsOp { } export enum RefAsOp { - RefAsNonNull = 0 /* TODO_BinaryenRefAsNonNull */, - RefAsFunc = 1 /* TODO_BinaryenRefAsFunc */, - RefAsData = 2 /* TODO_BinaryenRefAsData */, - RefAsI31 = 3 /* TODO_BinaryenRefAsI31 */ + RefAsNonNull = 0 /* _BinaryenRefAsNonNull */, + RefAsFunc = 1 /* _BinaryenRefAsFunc */, + RefAsData = 2 /* _BinaryenRefAsData */, + RefAsI31 = 3 /* _BinaryenRefAsI31 */ } export enum BrOnOp { @@ -1159,7 +1159,7 @@ export class Module { return binaryen._BinaryenSIMDLoad(this.ref, op, offset, align, ptr); } - // reference types + // reference types / gc ref_is( op: RefIsOp, @@ -1168,6 +1168,13 @@ export class Module { return binaryen._BinaryenRefIs(this.ref, op, expr); } + ref_as( + op: RefAsOp, + expr: ExpressionRef + ): ExpressionRef { + return binaryen._BinaryenRefAs(this.ref, op, expr); + } + ref_func( name: string, type: NativeType @@ -1176,8 +1183,6 @@ export class Module { return binaryen._BinaryenRefFunc(this.ref, cStr, type); } - // gc - i31_new( value: ExpressionRef ): ExpressionRef { From a3ff84f09f763d3e6c5ba3800583dc6d34e1d111 Mon Sep 17 00:00:00 2001 From: dcode Date: Thu, 4 Mar 2021 02:23:09 +0100 Subject: [PATCH 23/24] shall we --- package-lock.json | 14 +++++++------- package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index 95d7d8ee11..38c106ec7b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,7 +8,7 @@ "version": "0.0.0", "license": "Apache-2.0", "dependencies": { - "binaryen": "99.0.0-nightly.20210302", + "binaryen": "100.0.0", "long": "^4.0.0", "source-map-support": "^0.5.19", "ts-node": "^6.2.0" @@ -708,9 +708,9 @@ } }, "node_modules/binaryen": { - "version": "99.0.0-nightly.20210302", - "resolved": "https://registry.npmjs.org/binaryen/-/binaryen-99.0.0-nightly.20210302.tgz", - "integrity": "sha512-AAM8xaq8vvstPrpjUEbGqa0cYglX+vohSRKtHLZaZTJNUezixz7vAYb6dEVAqwjUv3lulSY4RTg/aKt7HXj7TQ==", + "version": "100.0.0", + "resolved": "https://registry.npmjs.org/binaryen/-/binaryen-100.0.0.tgz", + "integrity": "sha512-nxOt8d8/VXAuSVEtAWUdKrqpqCy365QqD223EzzB1GzS5himiZAfM/R5lXx+M/5q8TB8cYp3tYxv5rTjNTJveQ==", "bin": { "wasm-opt": "bin/wasm-opt" } @@ -3558,9 +3558,9 @@ "dev": true }, "binaryen": { - "version": "99.0.0-nightly.20210302", - "resolved": "https://registry.npmjs.org/binaryen/-/binaryen-99.0.0-nightly.20210302.tgz", - "integrity": "sha512-AAM8xaq8vvstPrpjUEbGqa0cYglX+vohSRKtHLZaZTJNUezixz7vAYb6dEVAqwjUv3lulSY4RTg/aKt7HXj7TQ==" + "version": "100.0.0", + "resolved": "https://registry.npmjs.org/binaryen/-/binaryen-100.0.0.tgz", + "integrity": "sha512-nxOt8d8/VXAuSVEtAWUdKrqpqCy365QqD223EzzB1GzS5himiZAfM/R5lXx+M/5q8TB8cYp3tYxv5rTjNTJveQ==" }, "brace-expansion": { "version": "1.1.11", diff --git a/package.json b/package.json index 3f1b2230ba..6e179c8153 100644 --- a/package.json +++ b/package.json @@ -21,7 +21,7 @@ "url": "https://github.com/AssemblyScript/assemblyscript/issues" }, "dependencies": { - "binaryen": "99.0.0-nightly.20210302", + "binaryen": "100.0.0", "long": "^4.0.0", "source-map-support": "^0.5.19", "ts-node": "^6.2.0" From c0c4d2563cfd554d9fe2cad8c98272372fcdc35b Mon Sep 17 00:00:00 2001 From: dcode Date: Fri, 5 Mar 2021 19:02:48 +0100 Subject: [PATCH 24/24] update other deps again --- package-lock.json | 60 +++++++++++++++++++++++------------------------ 1 file changed, 30 insertions(+), 30 deletions(-) diff --git a/package-lock.json b/package-lock.json index 38c106ec7b..342ea1609b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -775,9 +775,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001194", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001194.tgz", - "integrity": "sha512-iDUOH+oFeBYk5XawYsPtsx/8fFpndAPUQJC7gBTfxHM8xw5nOZv7ceAD4frS1MKCLUac7QL5wdAJiFQlDRjXlA==", + "version": "1.0.30001196", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001196.tgz", + "integrity": "sha512-CPvObjD3ovWrNBaXlAIGWmg2gQQuJ5YhuciUOjPRox6hIQttu8O+b51dx6VIpIY9ESd2d0Vac1RKpICdG4rGUg==", "dev": true }, "node_modules/chalk": { @@ -935,9 +935,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.3.677", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.677.tgz", - "integrity": "sha512-Tcmk+oKQgpjcM+KYanlkd76ZtpzalkpUULnlJDP6vjHtR7UU564IM9Qv5DxqHZNBQjzXm6mkn7Y8bw2OoE3FmQ==", + "version": "1.3.681", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.681.tgz", + "integrity": "sha512-W6uYvSUTHuyX2DZklIESAqx57jfmGjUkd7Z3RWqLdj9Mmt39ylhBuvFXlskQnvBHj0MYXIeQI+mjiwVddZLSvA==", "dev": true }, "node_modules/emoji-regex": { @@ -1006,9 +1006,9 @@ } }, "node_modules/es-module-lexer": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.4.0.tgz", - "integrity": "sha512-iuEGihqqhKWFgh72Q/Jtch7V2t/ft8w8IPP2aEN8ArYKO+IWyo6hsi96hCdgyeEDQIV3InhYQ9BlwUFPGXrbEQ==", + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.4.1.tgz", + "integrity": "sha512-ooYciCUtfw6/d2w56UVeqHPcoCFAiJdz5XOkYpv/Txl1HMUozpXjz/2RIQgqwKdXNDPSF1W7mJCFse3G+HDyAA==", "dev": true }, "node_modules/escalade": { @@ -2764,9 +2764,9 @@ } }, "node_modules/typescript": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.2.2.tgz", - "integrity": "sha512-tbb+NVrLfnsJy3M59lsDgrzWIflR4d4TIUjz+heUnHZwdF7YsrMTKoRERiIvI2lvBG95dfpLxB21WZhys1bgaQ==", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.2.3.tgz", + "integrity": "sha512-qOcYwxaByStAWrBf4x0fibwZvMRG+r4cQoTjbPtUlrWjBHbmCAww1i448U0GJ+3cNNEtebDteo/cHOR3xJ4wEw==", "dev": true, "bin": { "tsc": "bin/tsc", @@ -2811,9 +2811,9 @@ } }, "node_modules/webpack": { - "version": "5.24.2", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.24.2.tgz", - "integrity": "sha512-uxxKYEY4kMNjP+D2Y+8aw5Vd7ar4pMuKCNemxV26ysr1nk0YDiQTylg9U3VZIdkmI0YHa0uC8ABxL+uGxGWWJg==", + "version": "5.24.3", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.24.3.tgz", + "integrity": "sha512-x7lrWZ7wlWAdyKdML6YPvfVZkhD1ICuIZGODE5SzKJjqI9A4SpqGTjGJTc6CwaHqn19gGaoOR3ONJ46nYsn9rw==", "dev": true, "dependencies": { "@types/eslint-scope": "^3.7.0", @@ -3606,9 +3606,9 @@ "dev": true }, "caniuse-lite": { - "version": "1.0.30001194", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001194.tgz", - "integrity": "sha512-iDUOH+oFeBYk5XawYsPtsx/8fFpndAPUQJC7gBTfxHM8xw5nOZv7ceAD4frS1MKCLUac7QL5wdAJiFQlDRjXlA==", + "version": "1.0.30001196", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001196.tgz", + "integrity": "sha512-CPvObjD3ovWrNBaXlAIGWmg2gQQuJ5YhuciUOjPRox6hIQttu8O+b51dx6VIpIY9ESd2d0Vac1RKpICdG4rGUg==", "dev": true }, "chalk": { @@ -3731,9 +3731,9 @@ } }, "electron-to-chromium": { - "version": "1.3.677", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.677.tgz", - "integrity": "sha512-Tcmk+oKQgpjcM+KYanlkd76ZtpzalkpUULnlJDP6vjHtR7UU564IM9Qv5DxqHZNBQjzXm6mkn7Y8bw2OoE3FmQ==", + "version": "1.3.681", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.681.tgz", + "integrity": "sha512-W6uYvSUTHuyX2DZklIESAqx57jfmGjUkd7Z3RWqLdj9Mmt39ylhBuvFXlskQnvBHj0MYXIeQI+mjiwVddZLSvA==", "dev": true }, "emoji-regex": { @@ -3784,9 +3784,9 @@ } }, "es-module-lexer": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.4.0.tgz", - "integrity": "sha512-iuEGihqqhKWFgh72Q/Jtch7V2t/ft8w8IPP2aEN8ArYKO+IWyo6hsi96hCdgyeEDQIV3InhYQ9BlwUFPGXrbEQ==", + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.4.1.tgz", + "integrity": "sha512-ooYciCUtfw6/d2w56UVeqHPcoCFAiJdz5XOkYpv/Txl1HMUozpXjz/2RIQgqwKdXNDPSF1W7mJCFse3G+HDyAA==", "dev": true }, "escalade": { @@ -5102,9 +5102,9 @@ "dev": true }, "typescript": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.2.2.tgz", - "integrity": "sha512-tbb+NVrLfnsJy3M59lsDgrzWIflR4d4TIUjz+heUnHZwdF7YsrMTKoRERiIvI2lvBG95dfpLxB21WZhys1bgaQ==", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.2.3.tgz", + "integrity": "sha512-qOcYwxaByStAWrBf4x0fibwZvMRG+r4cQoTjbPtUlrWjBHbmCAww1i448U0GJ+3cNNEtebDteo/cHOR3xJ4wEw==", "dev": true }, "uri-js": { @@ -5139,9 +5139,9 @@ } }, "webpack": { - "version": "5.24.2", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.24.2.tgz", - "integrity": "sha512-uxxKYEY4kMNjP+D2Y+8aw5Vd7ar4pMuKCNemxV26ysr1nk0YDiQTylg9U3VZIdkmI0YHa0uC8ABxL+uGxGWWJg==", + "version": "5.24.3", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.24.3.tgz", + "integrity": "sha512-x7lrWZ7wlWAdyKdML6YPvfVZkhD1ICuIZGODE5SzKJjqI9A4SpqGTjGJTc6CwaHqn19gGaoOR3ONJ46nYsn9rw==", "dev": true, "requires": { "@types/eslint-scope": "^3.7.0",