summaryrefslogtreecommitdiff
path: root/scripts
Commit message (Collapse)AuthorAgeFilesLines
* Share trap mode between asm2wasm and s2wasm (#1168)jgravelle-google2017-10-022-26/+196
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Extract Asm2WasmBuilder::TrapMode to shared FloatTrapMode * Extract makeTrappingI32Binary * Extract makeTrappingI64Binary * Extract asm2wasm test script into scripts/test/asm2wasm.py This matches s2wasm.py, and makes iterating on asm2wasm slightly faster. * Simplify callsites with an arg struct * Combine func adding across i32 and i64 * Support f32-to-int in asm2wasm * Add BinaryenTrapMode pass, run pass from s2wasm * BinaryenTrapMode pass takes trap context as a parameter * Pass fully supports non-trapping binary ops * Defer adding functions until after iteration (hackily) * Update asm2wasm to work with deferred function adding, rebuild tests * Extract makeTrappingFloatToInt32 * Extract makeTrappingFloatToInt64 * Add unary conversions to trap pass * Add functions in the pass itself * Set s2wasm trap mode with command-line arguments * Print BINARYEN_PASS_DEBUG state when testing * Get asm2wasm using the BinaryenTrapMode pass instead of handling it inline * Also handle f32 to int in asm2wasm * Make BinaryenTrapMode only need a FloatTrapMode from the caller * Just pass the current binary Expression directly * Combine makeTrappingI32Binary with makeTrappingI64Binary * Pass Unary expr to makeTrappingFloatToInt32 * Unify makeTrappingFloatToInt32 & 64 * Move makeTrapping* functions inside BinaryenTrapMode, make addedFunctions non-static * Remove FloatTrapContext * Minor cleanups * Extract some smaller subfunctions * Emit name switch/casing, rename is32Bit to isI64 for consistency * Rename BinaryenTrapMode to FloatTrap, make trap mode a nested enum * Add some comments explaining why FloatTrap is non-parallel * Rename addedFunctions to generatedFunctions for precision * Rename move and split float-clamp.h to passes/FloatTrap.(h|cpp) * Use builder instead of allocator * Instantiate trap handling passes via the pass manager * Move passes/FloatTrap.h to ast/trapping.h * Add helper function to add trap-handling passes * Add trap mode pass tests * Rename FloatTrap.cpp to TrapMode.cpp * Add s2wasm trap mode tests. Force float->int conversion to be signed * Add trapping_sint_div_s test to unit.asm.js * Fix flake8 issues with test scripts * Update pass description comment * Extract building functions methods * Make generate functions into top-level functions * Add GeneratedTrappingFunctions class to manage function/import additions * Move ensure/makeTrapping functions outside class scope * Use GeneratedTrappingFunctions to add immediately in asm2wasm mode * Remove trapping_sint_div_s test We only added it to test that trapping divisions would get constant-folded at the correct time. Now that we're not changing the timing of trapping modes, the test is unneeded (and problematic). * Review feedback, add validator/*.wasm to .gitignore * Add support for unsigned float-to-int conversion * Use opcode directly instead of bools * Update s2wasm clamp test for unsigned ftoi
* default waterfall testing to off (#1186)Alon Zakai2017-09-161-2/+2
|
* wasm-reduce tool (#1139)Alon Zakai2017-09-011-4/+13
| | | Reduce an interesting wasm to a smaller still interesting wasm. This takes an arbitrary command to run, and reduces the wasm as much as it can while keeping the behavior of that command fixed. This can be used to reduce compiler bugs in an arbitrary VM, etc.
* i64 to i32 lowering for wasm2asm (#1134)Thomas Lively2017-09-011-5/+7
|
* Move test/local-revision into test/wasm-install (#1157)Sam Clegg2017-08-301-9/+8
| | | | This means you can do `rm -rf test/wasm-install` and have it get redownloaded.
* Fix locaion of wasm-merge in auto_update_tests.py (#1151)Sam Clegg2017-08-291-2/+5
| | | | | Also, fix -l and -rpath lib directories so that it can be run out-of-tree
* wasm2asm test generation (#1124)Thomas Lively2017-08-161-10/+49
| | | | | | | | | | | | | | | | | * Translate assert_return invokes to asm * Translate assert_trap tests to JS * Enable wasm2asm tests * Fix wasm2asm translation of store * Update ubuntu nodejs in Travis * Free JSPrinter buffer * Use unique_ptr for Functions to prevent leaks * Add tests for assert translation
* Get wasm2asm building again (#1107)Thomas Lively2017-08-023-2/+57
| | | | | | | | | | | | | | | | | | * Get wasm2asm building again Updates CMakeLists.txt to have wasm2asm built by default, updates wasm2asm.h to account for recent interface changes, and restores JSPrinter functionality. * Implement splice for array values * Clean up wasm2asm testing * Print semicolons after statements in blocks * Cleanups and semicolons for condition arms * Prettify semicolon emission
* Add shared memories (#1069)Derek Schuff2017-06-271-1/+2
| | | | | Begin to implement wasm threading proposal in https://github.com/WebAssembly/threads/blob/master/proposals/threads/Overview.md This PR just has shared memory attribute with wast and binary support.
* Fix path to wasm-ctor-eval binary used in test codeSam Clegg2017-06-091-0/+1
|
* S2wasm runtime funcs (#1027)jgravelle-google2017-06-051-4/+11
| | | | | | | | | | | | | | | | * Generate stackSave function in s2wasm * Generate stackAlloc in s2wasm * Generate stackRestore in s2wasm * Update dot_s tests for runtime functions * Add s2wasm check for exporting runtime functions * Fix flake8 for s2wasm.py * Rename wasmBuilder to builder
* Unreachable typing fixes (#1004)Alon Zakai2017-05-091-0/+5
| | | | | | | | | | | | * fix type of drop, set_local, set_global, load, etc: when operand is unreachable, so is the node itself * support binary tests properly in test/passes * fix unreachable typing of blocks with no name and an unreachable child * fix continue emitting in asm2wasm * properly handle emitting of unreachable load
* --no-js-ffi opt to disable JS FFI mangling. (#984)Joel Martin2017-05-011-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | * Always use scripts.test.shared for bin paths. Update scripts/test/shared.py to add WASM_MERGE relative to build directory. Update auto_update_tests.py to use scripts.test.shared variables for all bin paths. Update check.py to use scripts.test.shared for wasm-merge path (this was missing). This allows check.py and auto_update_tests.py to be run from the source directory using built binaries in a different location. * --no-legalize-javascript-ffi disables JS FFI mangling. For JS/Web platform, calls to JS imports are wrapped to convert i64 to i32 and f32 to f64. Likewise calls from JS into exports do the inverse wrapping. This change provides an option to disable that wrapping and use the original types for the call. Includes tests test/noffi_f32.asm.js and test/noffi_i64.asm.js to make sure neither f32->f64 nor i64->i32 type mangling is happening when --no-legalize-javascript-ffi is specified. To fully disable JS FFI mangling when using emscripten, the fastcomp FFI mangling must also be disabled using the -emscripten-legalize-javascript-ffi=0 flag.
* fix s2wasm.py hanging indent (#969)Alon Zakai2017-04-171-2/+2
|
* s2wasm: Add command line option for importing memory (#963)Max Klein2017-04-121-0/+6
| | | | | | This option allows to import the linear memory from JS code instead of exporting it. --emscripten-glue does this too but often the emscripten glue isn't needed, so this option only affects the memory. All the code necessary for importing the memory basically already exists, so nothing except for the command line option itself had to be added.
* Read/Write Abstraction (#889)Alon Zakai2017-01-261-11/+11
| | | | | * Added ModuleReader/Writer classes that support text and binary I/O * Use them in wasm-opt and asm2wasm
* Refactor check.py so that groups of tests can be split into separate … (#849)jgravelle-google2016-12-064-0/+526
| | | | | | | | | | | | | | * Refactor check.py so that groups of tests can be split into separate files - Move helper util functions into test/shared.py - Move scripts/support.py to test/support.py - Split s2wasm tests into its own file * Fix flake8 warnings for shared.py and s2wasm.py * Move test scripts from test/ to scripts/test/ * Replace 'from shared import *' with explicit imports
* fix python spacing in some scripts (#841)Alon Zakai2016-11-152-0/+2
|
* Add priority to copies on backedges (#791)Alon Zakai2016-10-201-0/+13
| | | | | | | | * add a coalesce-locals test for costly backedges * add script to strip local names out, for convenient diffing * prioritize backedge copies
* pass/wast fuzzer improvementsAlon Zakai2016-10-131-3/+5
|
* update spidermonkify.pyAlon Zakai2016-10-111-18/+1
|
* DCE bugfix (#736)Alon Zakai2016-10-041-0/+136
| | | | | * fix a dce bug where it is invalid to truncate a block if it leaves a final element with a bad type (wasm doesn't always allow removing unreachable code) * add wast pass fuzzer
* add a pass fuzzer script (#709)Alon Zakai2016-09-231-0/+146
|
* Update s2wasm for 0xc changes (#698)Derek Schuff2016-09-151-1/+8
| | | | | | | | | | | Several updates for s2wasm and its tests: Add explicit drops where they are emitted by LLVM already Convert loops (which are still modeled in the old way by LLVM) to wrap them in an explicit block (for the exit label). This also allows simplifying the loop creation (no need to post-process the implicit block which is the loop's body). After the engines update to 0xc we should update LLVM to model loops in the 0xc way, but for now it remains compatible with 0xb and 0xc. Fix the order of the calls to setTee() when creating tee_locals Add an explicit drop when creating the _start entry function wrapper if needed Update dot_s and llvm_autogenerated tests to remove store-results optimization (and few other minor updates) Fix the test auto-updater to fail if subprocesses fail There still seems to be a validation failure when building libc (I think it's from the stricter drop rules, but it may be in the source rather than the compiler), but this at least makes Binaryen's tests pa
* add drop and tee expressionsAlon Zakai2016-09-071-2/+4
|
* fix parsing in split_wastAlon Zakai2016-09-071-1/+6
|
* update relooper fuzzerAlon Zakai2016-07-181-1/+1
|
* separate wasm-opt out from wasm-shell: opt optimizes, shell runs wast shell ↵Alon Zakai2016-07-131-0/+57
| | | | tests
* add a tracing option to the c api, which logs out a runnable program from c ↵Alon Zakai2016-07-121-0/+23
| | | | api calls
* Relooper switch support (#617)Alon Zakai2016-07-021-4/+41
| | | | | | * support switches in relooper and c api * update relooper fuzzer for switches
* rewrite OptimizeInstructions to use a dsl of patternsAlon Zakai2016-06-261-0/+16
|
* use separate internal opcodes for binary variantsAlon Zakai2016-05-181-6/+6
|
* remove obsolete comment from relooper fuzzerAlon Zakai2016-05-071-1/+1
|
* relooper fuzzing improvements (#453)Alon Zakai2016-05-061-15/+22
|
* add a fuzzer for the relooper through the C APIAlon Zakai2016-05-061-0/+282
|
* br_table offsets are int32s, not lebsAlon Zakai2016-04-221-2/+2
|
* update wasm.jsAlon Zakai2016-04-211-0/+3
|
* fix spidermonkifyAlon Zakai2016-04-211-5/+8
|
* spidermonkify debugging commentAlon Zakai2016-04-211-1/+5
|
* we export memory properly now, no need in spidermonkify.pyAlon Zakai2016-03-301-10/+0
|
* python fixAlon Zakai2016-03-121-1/+0
|
* update spidermonkify.py to not fix page size, which is already done nowAlon Zakai2016-03-121-10/+4
|
* Re-enable flake8JF Bastien2016-03-121-9/+26
| | | | Was disabled in https://github.com/WebAssembly/binaryen/pull/229
* commentAlon Zakai2016-03-091-0/+2
|
* remove lower-if-else from spidermonkifyAlon Zakai2016-03-071-8/+0
|
* remove br_table hack in spidermonkfiyAlon Zakai2016-03-071-2/+0
|
* remove temp fileAlon Zakai2016-03-071-0/+1
|
* no need for .buffer for instantiateModuleAlon Zakai2016-03-061-4/+0
|
* more python fixesAlon Zakai2016-03-051-6/+6
|
* more python fixesAlon Zakai2016-03-051-2/+4
|