diff options
author | Jacob Gravelle <jgravelle@google.com> | 2017-11-15 16:09:08 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-11-15 16:09:08 -0800 |
commit | 27474b7482ad2673ef3c9aca09aa443769e7447f (patch) | |
tree | 3dd1fde96ccc7b7101012b9d6bc9cb73e4c9bac3 | |
parent | dc0cd445c08ede80fa2b1747cffcd2254c97a0f6 (diff) | |
download | binaryen-27474b7482ad2673ef3c9aca09aa443769e7447f.tar.gz binaryen-27474b7482ad2673ef3c9aca09aa443769e7447f.tar.bz2 binaryen-27474b7482ad2673ef3c9aca09aa443769e7447f.zip |
Decouple wasm-linker from Emscripten glue (#1293)
85 files changed, 485 insertions, 454 deletions
diff --git a/src/asm2wasm.h b/src/asm2wasm.h index 71c7447e0..6a3e15b29 100644 --- a/src/asm2wasm.h +++ b/src/asm2wasm.h @@ -1331,7 +1331,8 @@ void Asm2WasmBuilder::processAsm(Ref ast) { // apply memory growth, if relevant if (preprocessor.memoryGrowth) { - emscripten::generateMemoryGrowthFunction(wasm); + EmscriptenGlueGenerator generator(wasm); + generator.generateMemoryGrowthFunction(); wasm.memory.max = Memory::kMaxSize; } diff --git a/src/tools/s2wasm.cpp b/src/tools/s2wasm.cpp index 96d9ae5ce..6e7b2c05e 100644 --- a/src/tools/s2wasm.cpp +++ b/src/tools/s2wasm.cpp @@ -175,21 +175,21 @@ int main(int argc, const char *argv[]) { linker.linkArchive(lib); } - if (generateEmscriptenGlue) { - emscripten::generateRuntimeFunctions(linker.getOutput()); - } - linker.layout(); - std::stringstream meta; + std::string metadata; if (generateEmscriptenGlue) { - if (options.debug) std::cerr << "Emscripten gluing..." << std::endl; - if (allowMemoryGrowth) { - emscripten::generateMemoryGrowthFunction(linker.getOutput().wasm); + Module& wasm = linker.getOutput().wasm; + if (options.debug) { + std::cerr << "Emscripten gluing..." << std::endl; + WasmPrinter::printModule(&wasm, std::cerr); } - - // dyncall thunks - linker.emscriptenGlue(meta); + metadata = emscriptenGlue( + wasm, + allowMemoryGrowth, + linker.getStackPointerAddress(), + linker.getStaticBump(), + linker.getOutput().getInitializerFunctions()); } if (options.extra["validate"] != "none") { @@ -205,7 +205,7 @@ int main(int argc, const char *argv[]) { if (options.debug) std::cerr << "Printing..." << std::endl; Output output(options.extra["output"], Flags::Text, options.debug ? Flags::Debug : Flags::Release); WasmPrinter::printModule(&linker.getOutput().wasm, output.getStream()); - output << meta.str(); + output << metadata; if (options.debug) std::cerr << "Done." << std::endl; return 0; diff --git a/src/wasm-emscripten.cpp b/src/wasm-emscripten.cpp index 9c617a31e..14f93cff3 100644 --- a/src/wasm-emscripten.cpp +++ b/src/wasm-emscripten.cpp @@ -16,6 +16,8 @@ #include "wasm-emscripten.h" +#include <sstream> + #include "asm_v_wasm.h" #include "asmjs/shared-constants.h" #include "shared-constants.h" @@ -26,11 +28,9 @@ namespace wasm { -namespace emscripten { - cashew::IString EMSCRIPTEN_ASM_CONST("emscripten_asm_const"); -static constexpr const char* stackPointer = "__stack_pointer"; +static constexpr const char* dummyFunction = "__wasm_nullptr"; void addExportedFunction(Module& wasm, Function* function) { wasm.addFunction(function); @@ -40,82 +40,49 @@ void addExportedFunction(Module& wasm, Function* function) { wasm.addExport(export_); } -void generateMemoryGrowthFunction(Module& wasm) { - Builder builder(wasm); - Name name(GROW_WASM_MEMORY); - std::vector<NameType> params { { NEW_SIZE, i32 } }; - Function* growFunction = builder.makeFunction( - name, std::move(params), i32, {} - ); - growFunction->body = builder.makeHost( - GrowMemory, - Name(), - { builder.makeGetLocal(0, i32) } - ); - - addExportedFunction(wasm, growFunction); -} - -void addStackPointerRelocation(LinkerObject& linker, uint32_t* data) { - linker.addRelocation(new LinkerObject::Relocation( - LinkerObject::Relocation::kData, - data, - Name(stackPointer), - 0 - )); -} - -Load* generateLoadStackPointer(Builder& builder, LinkerObject& linker) { +Load* EmscriptenGlueGenerator::generateLoadStackPointer() { Load* load = builder.makeLoad( /* bytes =*/ 4, /* signed =*/ false, - /* offset =*/ 0, + /* offset =*/ stackPointerOffset, /* align =*/ 4, /* ptr =*/ builder.makeConst(Literal(0)), /* type =*/ i32 ); - addStackPointerRelocation(linker, &load->offset.addr); return load; } -Store* generateStoreStackPointer(Builder& builder, - LinkerObject& linker, - Expression* value) { +Store* EmscriptenGlueGenerator::generateStoreStackPointer(Expression* value) { Store* store = builder.makeStore( /* bytes =*/ 4, - /* offset =*/ 0, + /* offset =*/ stackPointerOffset, /* align =*/ 4, /* ptr =*/ builder.makeConst(Literal(0)), /* value =*/ value, /* type =*/ i32 ); - addStackPointerRelocation(linker, &store->offset.addr); return store; } -void generateStackSaveFunction(LinkerObject& linker) { - Module& wasm = linker.wasm; - Builder builder(wasm); +void EmscriptenGlueGenerator::generateStackSaveFunction() { Name name("stackSave"); std::vector<NameType> params { }; Function* function = builder.makeFunction( name, std::move(params), i32, {} ); - function->body = generateLoadStackPointer(builder, linker); + function->body = generateLoadStackPointer(); addExportedFunction(wasm, function); } -void generateStackAllocFunction(LinkerObject& linker) { - Module& wasm = linker.wasm; - Builder builder(wasm); +void EmscriptenGlueGenerator::generateStackAllocFunction() { Name name("stackAlloc"); std::vector<NameType> params { { "0", i32 } }; Function* function = builder.makeFunction( name, std::move(params), i32, { { "1", i32 } } ); - Load* loadStack = generateLoadStackPointer(builder, linker); + Load* loadStack = generateLoadStackPointer(); SetLocal* setStackLocal = builder.makeSetLocal(1, loadStack); GetLocal* getStackLocal = builder.makeGetLocal(1, i32); GetLocal* getSizeArg = builder.makeGetLocal(0, i32); @@ -124,7 +91,7 @@ void generateStackAllocFunction(LinkerObject& linker) { const static uint32_t bitMask = bitAlignment - 1; Const* subConst = builder.makeConst(Literal(~bitMask)); Binary* maskedSub = builder.makeBinary(AndInt32, sub, subConst); - Store* storeStack = generateStoreStackPointer(builder, linker, maskedSub); + Store* storeStack = generateStoreStackPointer(maskedSub); Block* block = builder.makeBlock(); block->list.push_back(setStackLocal); @@ -137,26 +104,39 @@ void generateStackAllocFunction(LinkerObject& linker) { addExportedFunction(wasm, function); } -void generateStackRestoreFunction(LinkerObject& linker) { - Module& wasm = linker.wasm; - Builder builder(wasm); +void EmscriptenGlueGenerator::generateStackRestoreFunction() { Name name("stackRestore"); std::vector<NameType> params { { "0", i32 } }; Function* function = builder.makeFunction( name, std::move(params), none, {} ); GetLocal* getArg = builder.makeGetLocal(0, i32); - Store* store = generateStoreStackPointer(builder, linker, getArg); + Store* store = generateStoreStackPointer(getArg); function->body = store; addExportedFunction(wasm, function); } -void generateRuntimeFunctions(LinkerObject& linker) { - generateStackSaveFunction(linker); - generateStackAllocFunction(linker); - generateStackRestoreFunction(linker); +void EmscriptenGlueGenerator::generateRuntimeFunctions() { + generateStackSaveFunction(); + generateStackAllocFunction(); + generateStackRestoreFunction(); +} + +void EmscriptenGlueGenerator::generateMemoryGrowthFunction() { + Name name(GROW_WASM_MEMORY); + std::vector<NameType> params { { NEW_SIZE, i32 } }; + Function* growFunction = builder.makeFunction( + name, std::move(params), i32, {} + ); + growFunction->body = builder.makeHost( + GrowMemory, + Name(), + { builder.makeGetLocal(0, i32) } + ); + + addExportedFunction(wasm, growFunction); } static bool hasI64ResultOrParam(FunctionType* ft) { @@ -179,13 +159,19 @@ void removeImportsWithSubstring(Module& module, Name name) { } } -std::vector<Function*> makeDynCallThunks(Module& wasm, std::vector<Name> const& tableSegmentData) { +void EmscriptenGlueGenerator::generateDynCallThunks() { removeImportsWithSubstring(wasm, EMSCRIPTEN_ASM_CONST); // we create _sig versions - std::vector<Function*> generatedFunctions; std::unordered_set<std::string> sigs; Builder builder(wasm); + std::vector<Name> tableSegmentData; + if (wasm.table.segments.size() > 0) { + tableSegmentData = wasm.table.segments[0].data; + } for (const auto& indirectFunc : tableSegmentData) { + if (indirectFunc == dummyFunction) { + continue; + } std::string sig(getSig(wasm.getFunction(indirectFunc))); auto* funcType = ensureFunctionType(sig, &wasm); if (hasI64ResultOrParam(funcType)) continue; // Can't export i64s on the web. @@ -202,10 +188,10 @@ std::vector<Function*> makeDynCallThunks(Module& wasm, std::vector<Name> const& } Expression* call = builder.makeCallIndirect(funcType, fptr, args); f->body = call; + wasm.addFunction(f); - generatedFunctions.push_back(f); + exportFunction(wasm, f->name, true); } - return generatedFunctions; } struct AsmConstWalker : public PostWalker<AsmConstWalker> { @@ -216,8 +202,13 @@ struct AsmConstWalker : public PostWalker<AsmConstWalker> { std::map<std::string, Address> ids; std::set<std::string> allSigs; - AsmConstWalker(Module& _wasm, std::unordered_map<Address, Address> _segmentsByAddress) : - wasm(_wasm), segmentsByAddress(_segmentsByAddress) { } + AsmConstWalker(Module& _wasm) : wasm(_wasm) { + for (unsigned i = 0; i < wasm.memory.segments.size(); ++i) { + Const* addrConst = wasm.memory.segments[i].offset->cast<Const>(); + auto address = addrConst->value.geti32(); + segmentsByAddress[address] = Address(i); + } + } void visitCallImport(CallImport* curr); @@ -329,43 +320,62 @@ void printSet(std::ostream& o, C& c) { o << "]"; } -void generateEmscriptenMetadata(std::ostream& o, - Module& wasm, - std::unordered_map<Address, Address> segmentsByAddress, - Address staticBump, - std::vector<Name> const& initializerFunctions) { - o << ";; METADATA: { "; +std::string EmscriptenGlueGenerator::generateEmscriptenMetadata( + Address staticBump, + std::vector<Name> const& initializerFunctions) { + std::stringstream meta; + meta << ";; METADATA: { "; + // find asmConst calls, and emit their metadata - AsmConstWalker walker(wasm, segmentsByAddress); + AsmConstWalker walker(wasm); walker.walkModule(&wasm); + // print - o << "\"asmConsts\": {"; + meta << "\"asmConsts\": {"; bool first = true; for (auto& pair : walker.sigsForCode) { auto& code = pair.first; auto& sigs = pair.second; if (first) first = false; - else o << ","; - o << '"' << walker.ids[code] << "\": [\"" << code << "\", "; - printSet(o, sigs); - o << "]"; + else meta << ","; + meta << '"' << walker.ids[code] << "\": [\"" << code << "\", "; + printSet(meta, sigs); + meta << "]"; } - o << "}"; - o << ","; - o << "\"staticBump\": " << staticBump << ", "; + meta << "}"; + meta << ","; + meta << "\"staticBump\": " << staticBump << ", "; - o << "\"initializers\": ["; + meta << "\"initializers\": ["; first = true; for (const auto& func : initializerFunctions) { if (first) first = false; - else o << ", "; - o << "\"" << func.c_str() << "\""; + else meta << ", "; + meta << "\"" << func.c_str() << "\""; } - o << "]"; + meta << "]"; + + meta << " }\n"; - o << " }\n"; + return meta.str(); } -} // namespace emscripten +std::string emscriptenGlue( + Module& wasm, + bool allowMemoryGrowth, + Address stackPointer, + Address staticBump, + std::vector<Name> const& initializerFunctions) { + EmscriptenGlueGenerator generator(wasm, stackPointer); + generator.generateRuntimeFunctions(); + + if (allowMemoryGrowth) { + generator.generateMemoryGrowthFunction(); + } + + generator.generateDynCallThunks(); + + return generator.generateEmscriptenMetadata(staticBump, initializerFunctions); +} } // namespace wasm diff --git a/src/wasm-emscripten.h b/src/wasm-emscripten.h index 7400a8b0f..90a7d9a86 100644 --- a/src/wasm-emscripten.h +++ b/src/wasm-emscripten.h @@ -18,27 +18,47 @@ #define wasm_wasm_emscripten_h #include "wasm.h" +#include "wasm-builder.h" namespace wasm { -class LinkerObject; +// Class which modifies a wasm module for use with emscripten. Generates +// runtime functions and emits metadata. +class EmscriptenGlueGenerator { +public: + EmscriptenGlueGenerator(Module& wasm, Address stackPointerOffset = Address(0)) + : wasm(wasm), + builder(wasm), + stackPointerOffset(stackPointerOffset) { } -namespace emscripten { + void generateRuntimeFunctions(); + void generateMemoryGrowthFunction(); -void generateRuntimeFunctions(LinkerObject& linker); -void generateMemoryGrowthFunction(Module&); + // Create thunks for use with emscripten Runtime.dynCall. Creates one for each + // signature in the indirect function table. + void generateDynCallThunks(); -// Create thunks for use with emscripten Runtime.dynCall. Creates one for each -// signature in the indirect function table. -std::vector<Function*> makeDynCallThunks(Module& wasm, std::vector<Name> const& tableSegmentData); + std::string generateEmscriptenMetadata( + Address staticBump, std::vector<Name> const& initializerFunctions); -void generateEmscriptenMetadata(std::ostream& o, - Module& wasm, - std::unordered_map<Address, Address> segmentsByAddress, - Address staticBump, - std::vector<Name> const& initializerFunctions); +private: + Module& wasm; + Builder builder; + Address stackPointerOffset; -} // namespace emscripten + Load* generateLoadStackPointer(); + Store* generateStoreStackPointer(Expression* value); + void generateStackSaveFunction(); + void generateStackAllocFunction(); + void generateStackRestoreFunction(); +}; + +std::string emscriptenGlue( + Module& wasm, + bool allowMemoryGrowth, + Address stackPointer, + Address staticBump, + std::vector<Name> const& initializerFunctions); } // namespace wasm diff --git a/src/wasm-linker.cpp b/src/wasm-linker.cpp index b2f337d5a..dacc3cf51 100644 --- a/src/wasm-linker.cpp +++ b/src/wasm-linker.cpp @@ -148,8 +148,8 @@ void Linker::layout() { } // XXX For now, export all functions marked .globl. - for (Name name : out.globls) exportFunction(name, false); - for (Name name : out.initializerFunctions) exportFunction(name, true); + for (Name name : out.globls) exportFunction(out.wasm, name, false); + for (Name name : out.initializerFunctions) exportFunction(out.wasm, name, true); // Pad the indirect function table with a dummy function makeDummyFunction(); @@ -212,6 +212,8 @@ void Linker::layout() { } } } + out.relocations.clear(); + if (!!startFunction) { if (out.symbolInfo.implementedFunctions.count(startFunction) == 0) { Fatal() << "Unknown start function: `" << startFunction << "`\n"; @@ -263,7 +265,7 @@ void Linker::layout() { // argument from emcc.py and export all of them. for (auto function : {"malloc", "free", "realloc", "memalign"}) { if (out.symbolInfo.implementedFunctions.count(function)) { - exportFunction(function, true); + exportFunction(out.wasm, function, true); } } @@ -331,20 +333,8 @@ bool Linker::linkArchive(Archive& archive) { return true; } -void Linker::emscriptenGlue(std::ostream& o) { - if (debug) { - WasmPrinter::printModule(&out.wasm, std::cerr); - } - - auto functionsToThunk = getTableData(); - auto removeIt = std::remove(functionsToThunk.begin(), functionsToThunk.end(), dummyFunction); - functionsToThunk.erase(removeIt, functionsToThunk.end()); - for (auto f : emscripten::makeDynCallThunks(out.wasm, functionsToThunk)) { - exportFunction(f->name, true); - } - - auto staticBump = nextStatic - globalBase; - emscripten::generateEmscriptenMetadata(o, out.wasm, segmentsByAddress, staticBump, out.initializerFunctions); +Address Linker::getStaticBump() const { + return nextStatic - globalBase; } void Linker::ensureTableSegment() { @@ -415,3 +405,7 @@ Function* Linker::getImportThunk(Name name, const FunctionType* funcType) { out.wasm.addFunction(f); return f; } + +Address Linker::getStackPointerAddress() const { + return Address(staticAddresses.at(stackPointer)); +} diff --git a/src/wasm-linker.h b/src/wasm-linker.h index 2129f4fd3..89f1cb718 100644 --- a/src/wasm-linker.h +++ b/src/wasm-linker.h @@ -33,6 +33,18 @@ namespace wasm { class S2WasmBuilder; +inline void exportFunction(Module& wasm, Name name, bool must_export) { + if (!wasm.getFunctionOrNull(name)) { + assert(!must_export); + return; + } + if (wasm.getExportOrNull(name)) return; // Already exported + auto exp = new Export; + exp->name = exp->value = name; + exp->kind = ExternalKind::Function; + wasm.addExport(exp); +} + // An "object file" for linking. Contains a wasm module, plus the associated // information needed for linking/layout. class LinkerObject { @@ -156,6 +168,10 @@ class LinkerObject { return wasm.functions.empty(); } + std::vector<Name> const& getInitializerFunctions() const { + return initializerFunctions; + } + friend class Linker; Module wasm; @@ -246,10 +262,6 @@ class Linker { // function table. void layout(); - // Support for emscripten integration: generates dyncall thunks, emits - // metadata for asmConsts, staticBump and initializer functions. - void emscriptenGlue(std::ostream& o); - // Add an object to the link by constructing it in-place with a builder. // Returns false if an error occurred. bool linkObject(S2WasmBuilder& builder); @@ -259,6 +271,12 @@ class Linker { // Returns false if an error occurred. bool linkArchive(Archive& archive); + // Returns the address of the stack pointer. + Address getStackPointerAddress() const; + + // Returns the total size of all static allocations. + Address getStaticBump() const; + private: // Allocate a static variable and return its address in linear memory Address allocateStatic(Address allocSize, Address alignment, Name name) { @@ -294,18 +312,6 @@ class Linker { return (size + Memory::kPageSize - 1) & Memory::kPageMask; } - void exportFunction(Name name, bool must_export) { - if (!out.wasm.getFunctionOrNull(name)) { - assert(!must_export); - return; - } - if (out.wasm.getExportOrNull(name)) return; // Already exported - auto exp = new Export; - exp->name = exp->value = name; - exp->kind = ExternalKind::Function; - out.wasm.addExport(exp); - } - Function* getImportThunk(Name name, const FunctionType* t); // The output module (linked executable) diff --git a/test/dot_s/alias.wast b/test/dot_s/alias.wast index 4fa629157..acb13f8f0 100644 --- a/test/dot_s/alias.wast +++ b/test/dot_s/alias.wast @@ -4,11 +4,11 @@ (table 2 2 anyfunc) (elem (i32.const 0) $__wasm_nullptr $__exit) (data (i32.const 16) "\d2\04\00\00\00\00\00\00)\t\00\00") + (export "__exit" (func $__exit)) + (export "__needs_exit" (func $__needs_exit)) (export "stackSave" (func $stackSave)) (export "stackAlloc" (func $stackAlloc)) (export "stackRestore" (func $stackRestore)) - (export "__exit" (func $__exit)) - (export "__needs_exit" (func $__needs_exit)) (export "dynCall_v" (func $dynCall_v)) (func $__exit (; 0 ;) (type $FUNCSIG$v) (drop @@ -28,12 +28,15 @@ (i32.const 1) ) ) - (func $stackSave (; 2 ;) (result i32) + (func $__wasm_nullptr (; 2 ;) (type $FUNCSIG$v) + (unreachable) + ) + (func $stackSave (; 3 ;) (result i32) (i32.load offset=4 (i32.const 0) ) ) - (func $stackAlloc (; 3 ;) (param $0 i32) (result i32) + (func $stackAlloc (; 4 ;) (param $0 i32) (result i32) (local $1 i32) (set_local $1 (i32.load offset=4 @@ -52,15 +55,12 @@ ) (get_local $1) ) - (func $stackRestore (; 4 ;) (param $0 i32) + (func $stackRestore (; 5 ;) (param $0 i32) (i32.store offset=4 (i32.const 0) (get_local $0) ) ) - (func $__wasm_nullptr (; 5 ;) (type $FUNCSIG$v) - (unreachable) - ) (func $dynCall_v (; 6 ;) (param $fptr i32) (call_indirect (type $FUNCSIG$v) (get_local $fptr) diff --git a/test/dot_s/asm_const.wast b/test/dot_s/asm_const.wast index 4484fe3d2..0974c817e 100644 --- a/test/dot_s/asm_const.wast +++ b/test/dot_s/asm_const.wast @@ -4,10 +4,10 @@ (import "env" "emscripten_asm_const_v" (func $emscripten_asm_const_v (param i32))) (table 0 anyfunc) (data (i32.const 16) "{ Module.print(\"hello, world!\"); }\00") + (export "main" (func $main)) (export "stackSave" (func $stackSave)) (export "stackAlloc" (func $stackAlloc)) (export "stackRestore" (func $stackRestore)) - (export "main" (func $main)) (func $main (; 1 ;) (result i32) (call $emscripten_asm_const_v (i32.const 0) diff --git a/test/dot_s/basics.wast b/test/dot_s/basics.wast index 9215507f7..57b3b9899 100644 --- a/test/dot_s/basics.wast +++ b/test/dot_s/basics.wast @@ -9,10 +9,10 @@ (data (i32.const 16) "hello, world!\n\00") (data (i32.const 32) "vcq") (data (i32.const 48) "\16\00\00\00") + (export "main" (func $main)) (export "stackSave" (func $stackSave)) (export "stackAlloc" (func $stackAlloc)) (export "stackRestore" (func $stackRestore)) - (export "main" (func $main)) (export "dynCall_iii" (func $dynCall_iii)) (func $main (; 1 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (call $puts @@ -97,12 +97,15 @@ ) (get_local $0) ) - (func $stackSave (; 2 ;) (result i32) + (func $__wasm_nullptr (; 2 ;) (type $FUNCSIG$v) + (unreachable) + ) + (func $stackSave (; 3 ;) (result i32) (i32.load offset=4 (i32.const 0) ) ) - (func $stackAlloc (; 3 ;) (param $0 i32) (result i32) + (func $stackAlloc (; 4 ;) (param $0 i32) (result i32) (local $1 i32) (set_local $1 (i32.load offset=4 @@ -121,15 +124,12 @@ ) (get_local $1) ) - (func $stackRestore (; 4 ;) (param $0 i32) + (func $stackRestore (; 5 ;) (param $0 i32) (i32.store offset=4 (i32.const 0) (get_local $0) ) ) - (func $__wasm_nullptr (; 5 ;) (type $FUNCSIG$v) - (unreachable) - ) (func $dynCall_iii (; 6 ;) (param $fptr i32) (param $0 i32) (param $1 i32) (result i32) (call_indirect (type $FUNCSIG$iii) (get_local $0) diff --git a/test/dot_s/bcp-1.wast b/test/dot_s/bcp-1.wast index 79072396c..c75687537 100644 --- a/test/dot_s/bcp-1.wast +++ b/test/dot_s/bcp-1.wast @@ -15,9 +15,6 @@ (data (i32.const 72) "\0f\00\00\00\10\00\00\00\11\00\00\00") (data (i32.const 96) "hi\00") (data (i32.const 100) "\00\00\00\00") - (export "stackSave" (func $stackSave)) - (export "stackAlloc" (func $stackAlloc)) - (export "stackRestore" (func $stackRestore)) (export "bad0" (func $bad0)) (export "bad1" (func $bad1)) (export "bad2" (func $bad2)) @@ -36,6 +33,9 @@ (export "opt1" (func $opt1)) (export "opt2" (func $opt2)) (export "main" (func $main)) + (export "stackSave" (func $stackSave)) + (export "stackAlloc" (func $stackAlloc)) + (export "stackRestore" (func $stackRestore)) (export "dynCall_i" (func $dynCall_i)) (export "dynCall_ii" (func $dynCall_ii)) (func $bad0 (; 2 ;) (type $FUNCSIG$i) (result i32) @@ -309,12 +309,15 @@ (call $abort) (unreachable) ) - (func $stackSave (; 20 ;) (result i32) + (func $__wasm_nullptr (; 20 ;) (type $FUNCSIG$v) + (unreachable) + ) + (func $stackSave (; 21 ;) (result i32) (i32.load offset=4 (i32.const 0) ) ) - (func $stackAlloc (; 21 ;) (param $0 i32) (result i32) + (func $stackAlloc (; 22 ;) (param $0 i32) (result i32) (local $1 i32) (set_local $1 (i32.load offset=4 @@ -333,15 +336,12 @@ ) (get_local $1) ) - (func $stackRestore (; 22 ;) (param $0 i32) + (func $stackRestore (; 23 ;) (param $0 i32) (i32.store offset=4 (i32.const 0) (get_local $0) ) ) - (func $__wasm_nullptr (; 23 ;) (type $FUNCSIG$v) - (unreachable) - ) (func $dynCall_i (; 24 ;) (param $fptr i32) (result i32) (call_indirect (type $FUNCSIG$i) (get_local $fptr) diff --git a/test/dot_s/debug.wast b/test/dot_s/debug.wast index 6177724ae..6a7d36eac 100644 --- a/test/dot_s/debug.wast +++ b/test/dot_s/debug.wast @@ -1,10 +1,10 @@ (module (import "env" "memory" (memory $0 1)) (table 0 anyfunc) + (export "fib" (func $fib)) (export "stackSave" (func $stackSave)) (export "stackAlloc" (func $stackAlloc)) (export "stackRestore" (func $stackRestore)) - (export "fib" (func $fib)) (func $fib (; 0 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) diff --git a/test/dot_s/dso_handle.wast b/test/dot_s/dso_handle.wast index 392add253..7dfb84db2 100644 --- a/test/dot_s/dso_handle.wast +++ b/test/dot_s/dso_handle.wast @@ -1,10 +1,10 @@ (module (import "env" "memory" (memory $0 1)) (table 0 anyfunc) + (export "main" (func $main)) (export "stackSave" (func $stackSave)) (export "stackAlloc" (func $stackAlloc)) (export "stackRestore" (func $stackRestore)) - (export "main" (func $main)) (func $main (; 0 ;) (result i32) (return (i32.const 8) diff --git a/test/dot_s/dyncall.wast b/test/dot_s/dyncall.wast index 27d1ddaf7..35ee92d9b 100644 --- a/test/dot_s/dyncall.wast +++ b/test/dot_s/dyncall.wast @@ -7,15 +7,15 @@ (import "env" "memory" (memory $0 1)) (table 6 6 anyfunc) (elem (i32.const 0) $__wasm_nullptr $i $i_f $vd $ffjjdi $vd2) - (export "stackSave" (func $stackSave)) - (export "stackAlloc" (func $stackAlloc)) - (export "stackRestore" (func $stackRestore)) (export "i" (func $i)) (export "i_f" (func $i_f)) (export "vd" (func $vd)) (export "ffjjdi" (func $ffjjdi)) (export "vd2" (func $vd2)) (export "main" (func $main)) + (export "stackSave" (func $stackSave)) + (export "stackAlloc" (func $stackAlloc)) + (export "stackRestore" (func $stackRestore)) (export "dynCall_i" (func $dynCall_i)) (export "dynCall_if" (func $dynCall_if)) (export "dynCall_vd" (func $dynCall_vd)) @@ -50,12 +50,15 @@ ) (i32.const 0) ) - (func $stackSave (; 6 ;) (result i32) + (func $__wasm_nullptr (; 6 ;) (type $FUNCSIG$v) + (unreachable) + ) + (func $stackSave (; 7 ;) (result i32) (i32.load offset=4 (i32.const 0) ) ) - (func $stackAlloc (; 7 ;) (param $0 i32) (result i32) + (func $stackAlloc (; 8 ;) (param $0 i32) (result i32) (local $1 i32) (set_local $1 (i32.load offset=4 @@ -74,15 +77,12 @@ ) (get_local $1) ) - (func $stackRestore (; 8 ;) (param $0 i32) + (func $stackRestore (; 9 ;) (param $0 i32) (i32.store offset=4 (i32.const 0) (get_local $0) ) ) - (func $__wasm_nullptr (; 9 ;) (type $FUNCSIG$v) - (unreachable) - ) (func $dynCall_i (; 10 ;) (param $fptr i32) (result i32) (call_indirect (type $FUNCSIG$i) (get_local $fptr) diff --git a/test/dot_s/exit.wast b/test/dot_s/exit.wast index e161285c8..65fb224cc 100644 --- a/test/dot_s/exit.wast +++ b/test/dot_s/exit.wast @@ -3,10 +3,10 @@ (import "env" "exit" (func $exit (param i32))) (import "env" "memory" (memory $0 1)) (table 0 anyfunc) + (export "main" (func $main)) (export "stackSave" (func $stackSave)) (export "stackAlloc" (func $stackAlloc)) (export "stackRestore" (func $stackRestore)) - (export "main" (func $main)) (func $main (; 1 ;) (result i32) (local $0 i32) (call $exit diff --git a/test/dot_s/export_malloc_free.wast b/test/dot_s/export_malloc_free.wast index b645b9e8a..33dbcdfe7 100644 --- a/test/dot_s/export_malloc_free.wast +++ b/test/dot_s/export_malloc_free.wast @@ -1,14 +1,14 @@ (module (import "env" "memory" (memory $0 1)) (table 0 anyfunc) - (export "stackSave" (func $stackSave)) - (export "stackAlloc" (func $stackAlloc)) - (export "stackRestore" (func $stackRestore)) (export "main" (func $main)) (export "malloc" (func $malloc)) (export "free" (func $free)) (export "realloc" (func $realloc)) (export "memalign" (func $memalign)) + (export "stackSave" (func $stackSave)) + (export "stackAlloc" (func $stackAlloc)) + (export "stackRestore" (func $stackRestore)) (func $main (; 0 ;) (result i32) (i32.const 0) ) diff --git a/test/dot_s/fix_em_ehsjlj_names.wast b/test/dot_s/fix_em_ehsjlj_names.wast index a287983e8..28dc00867 100644 --- a/test/dot_s/fix_em_ehsjlj_names.wast +++ b/test/dot_s/fix_em_ehsjlj_names.wast @@ -15,10 +15,10 @@ (import "env" "memory" (memory $0 1)) (table 5 5 anyfunc) (elem (i32.const 0) $__wasm_nullptr $_Z5func1v $_Z5func2iii $_Z5func3fd $_Z5func4P8mystructS_) + (export "main" (func $main)) (export "stackSave" (func $stackSave)) (export "stackAlloc" (func $stackAlloc)) (export "stackRestore" (func $stackRestore)) - (export "main" (func $main)) (export "dynCall_v" (func $dynCall_v)) (export "dynCall_iiii" (func $dynCall_iiii)) (export "dynCall_ffd" (func $dynCall_ffd)) @@ -76,12 +76,15 @@ ) (i32.const 0) ) - (func $stackSave (; 10 ;) (result i32) + (func $__wasm_nullptr (; 10 ;) (type $FUNCSIG$v) + (unreachable) + ) + (func $stackSave (; 11 ;) (result i32) (i32.load offset=4 (i32.const 0) ) ) - (func $stackAlloc (; 11 ;) (param $0 i32) (result i32) + (func $stackAlloc (; 12 ;) (param $0 i32) (result i32) (local $1 i32) (set_local $1 (i32.load offset=4 @@ -100,15 +103,12 @@ ) (get_local $1) ) - (func $stackRestore (; 12 ;) (param $0 i32) + (func $stackRestore (; 13 ;) (param $0 i32) (i32.store offset=4 (i32.const 0) (get_local $0) ) ) - (func $__wasm_nullptr (; 13 ;) (type $FUNCSIG$v) - (unreachable) - ) (func $dynCall_v (; 14 ;) (param $fptr i32) (call_indirect (type $FUNCSIG$v) (get_local $fptr) diff --git a/test/dot_s/function-data-sections.wast b/test/dot_s/function-data-sections.wast index aea8a9b85..205d815f4 100644 --- a/test/dot_s/function-data-sections.wast +++ b/test/dot_s/function-data-sections.wast @@ -4,12 +4,12 @@ (data (i32.const 12) "\00\00\00\00") (data (i32.const 16) "\01\00\00\00") (data (i32.const 20) "33\13@") - (export "stackSave" (func $stackSave)) - (export "stackAlloc" (func $stackAlloc)) - (export "stackRestore" (func $stackRestore)) (export "foo" (func $foo)) (export "bar" (func $bar)) (export "qux" (func $qux)) + (export "stackSave" (func $stackSave)) + (export "stackAlloc" (func $stackAlloc)) + (export "stackRestore" (func $stackRestore)) (func $foo (; 0 ;) (return) ) diff --git a/test/dot_s/globals.wast b/test/dot_s/globals.wast index a7d0ff50e..4e08e3375 100644 --- a/test/dot_s/globals.wast +++ b/test/dot_s/globals.wast @@ -5,13 +5,13 @@ (data (i32.const 12) "\11\00\00\00") (data (i32.const 16) "\0c\00\00\00") (data (i32.const 20) "\0e\00\00\00") - (export "stackSave" (func $stackSave)) - (export "stackAlloc" (func $stackAlloc)) - (export "stackRestore" (func $stackRestore)) (export "globals" (func $globals)) (export "import_globals" (func $import_globals)) (export "globals_offset" (func $globals_offset)) (export "import_globals_offset" (func $import_globals_offset)) + (export "stackSave" (func $stackSave)) + (export "stackAlloc" (func $stackAlloc)) + (export "stackRestore" (func $stackRestore)) (func $globals (; 0 ;) (i32.store offset=12 (i32.const 0) diff --git a/test/dot_s/indidx.wast b/test/dot_s/indidx.wast index 194868832..105b0faa0 100644 --- a/test/dot_s/indidx.wast +++ b/test/dot_s/indidx.wast @@ -6,10 +6,10 @@ (table 5 5 anyfunc) (elem (i32.const 0) $__wasm_nullptr $c $b $d $a) (data (i32.const 16) "\04\00\00\00\02\00\00\00\01\00\00\00\03\00\00\00") + (export "main" (func $main)) (export "stackSave" (func $stackSave)) (export "stackAlloc" (func $stackAlloc)) (export "stackRestore" (func $stackRestore)) - (export "main" (func $main)) (export "dynCall_i" (func $dynCall_i)) (func $a (; 1 ;) (type $FUNCSIG$i) (result i32) (i32.const 0) @@ -51,12 +51,15 @@ (unreachable) (unreachable) ) - (func $stackSave (; 6 ;) (result i32) + (func $__wasm_nullptr (; 6 ;) (type $FUNCSIG$v) + (unreachable) + ) + (func $stackSave (; 7 ;) (result i32) (i32.load offset=4 (i32.const 0) ) ) - (func $stackAlloc (; 7 ;) (param $0 i32) (result i32) + (func $stackAlloc (; 8 ;) (param $0 i32) (result i32) (local $1 i32) (set_local $1 (i32.load offset=4 @@ -75,15 +78,12 @@ ) (get_local $1) ) - (func $stackRestore (; 8 ;) (param $0 i32) + (func $stackRestore (; 9 ;) (param $0 i32) (i32.store offset=4 (i32.const 0) (get_local $0) ) ) - (func $__wasm_nullptr (; 9 ;) (type $FUNCSIG$v) - (unreachable) - ) (func $dynCall_i (; 10 ;) (param $fptr i32) (result i32) (call_indirect (type $FUNCSIG$i) (get_local $fptr) diff --git a/test/dot_s/indirect-import.wast b/test/dot_s/indirect-import.wast index 1b4c019ab..cd8a13ed6 100644 --- a/test/dot_s/indirect-import.wast +++ b/test/dot_s/indirect-import.wast @@ -13,11 +13,11 @@ (import "env" "extern_sret" (func $extern_sret (param i32))) (table 7 7 anyfunc) (elem (i32.const 0) $__wasm_nullptr $__importThunk_extern_fd $__importThunk_extern_vj $__importThunk_extern_v $__importThunk_extern_ijidf $__importThunk_extern_struct $__importThunk_extern_sret) + (export "bar" (func $bar)) + (export "baz" (func $baz)) (export "stackSave" (func $stackSave)) (export "stackAlloc" (func $stackAlloc)) (export "stackRestore" (func $stackRestore)) - (export "bar" (func $bar)) - (export "baz" (func $baz)) (export "dynCall_fd" (func $dynCall_fd)) (export "dynCall_v" (func $dynCall_v)) (export "dynCall_vi" (func $dynCall_vi)) @@ -88,53 +88,23 @@ (func $baz (; 7 ;) (result i32) (i32.const 3) ) - (func $stackSave (; 8 ;) (result i32) - (i32.load offset=4 - (i32.const 0) - ) - ) - (func $stackAlloc (; 9 ;) (param $0 i32) (result i32) - (local $1 i32) - (set_local $1 - (i32.load offset=4 - (i32.const 0) - ) - ) - (i32.store offset=4 - (i32.const 0) - (i32.and - (i32.sub - (get_local $1) - (get_local $0) - ) - (i32.const -16) - ) - ) - (get_local $1) - ) - (func $stackRestore (; 10 ;) (param $0 i32) - (i32.store offset=4 - (i32.const 0) - (get_local $0) - ) - ) - (func $__wasm_nullptr (; 11 ;) (type $FUNCSIG$v) + (func $__wasm_nullptr (; 8 ;) (type $FUNCSIG$v) (unreachable) ) - (func $__importThunk_extern_fd (; 12 ;) (type $FUNCSIG$fd) (param $0 f64) (result f32) + (func $__importThunk_extern_fd (; 9 ;) (type $FUNCSIG$fd) (param $0 f64) (result f32) (call $extern_fd (get_local $0) ) ) - (func $__importThunk_extern_vj (; 13 ;) (type $FUNCSIG$vj) (param $0 i64) + (func $__importThunk_extern_vj (; 10 ;) (type $FUNCSIG$vj) (param $0 i64) (call $extern_vj (get_local $0) ) ) - (func $__importThunk_extern_v (; 14 ;) (type $FUNCSIG$v) + (func $__importThunk_extern_v (; 11 ;) (type $FUNCSIG$v) (call $extern_v) ) - (func $__importThunk_extern_ijidf (; 15 ;) (type $FUNCSIG$ijidf) (param $0 i64) (param $1 i32) (param $2 f64) (param $3 f32) (result i32) + (func $__importThunk_extern_ijidf (; 12 ;) (type $FUNCSIG$ijidf) (param $0 i64) (param $1 i32) (param $2 f64) (param $3 f32) (result i32) (call $extern_ijidf (get_local $0) (get_local $1) @@ -142,16 +112,46 @@ (get_local $3) ) ) - (func $__importThunk_extern_struct (; 16 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $__importThunk_extern_struct (; 13 ;) (type $FUNCSIG$vi) (param $0 i32) (call $extern_struct (get_local $0) ) ) - (func $__importThunk_extern_sret (; 17 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $__importThunk_extern_sret (; 14 ;) (type $FUNCSIG$vi) (param $0 i32) (call $extern_sret (get_local $0) ) ) + (func $stackSave (; 15 ;) (result i32) + (i32.load offset=4 + (i32.const 0) + ) + ) + (func $stackAlloc (; 16 ;) (param $0 i32) (result i32) + (local $1 i32) + (set_local $1 + (i32.load offset=4 + (i32.const 0) + ) + ) + (i32.store offset=4 + (i32.const 0) + (i32.and + (i32.sub + (get_local $1) + (get_local $0) + ) + (i32.const -16) + ) + ) + (get_local $1) + ) + (func $stackRestore (; 17 ;) (param $0 i32) + (i32.store offset=4 + (i32.const 0) + (get_local $0) + ) + ) (func $dynCall_fd (; 18 ;) (param $fptr i32) (param $0 f64) (result f32) (call_indirect (type $FUNCSIG$fd) (get_local $0) diff --git a/test/dot_s/initializers.wast b/test/dot_s/initializers.wast index f50b5f5ec..e3e866cc3 100644 --- a/test/dot_s/initializers.wast +++ b/test/dot_s/initializers.wast @@ -1,12 +1,12 @@ (module (import "env" "memory" (memory $0 1)) (table 0 anyfunc) - (export "stackSave" (func $stackSave)) - (export "stackAlloc" (func $stackAlloc)) - (export "stackRestore" (func $stackRestore)) (export "main" (func $main)) (export "f1" (func $f1)) (export "f2" (func $f2)) + (export "stackSave" (func $stackSave)) + (export "stackAlloc" (func $stackAlloc)) + (export "stackRestore" (func $stackRestore)) (func $main (; 0 ;) (result i32) (return (i32.const 5) diff --git a/test/dot_s/local_align.wast b/test/dot_s/local_align.wast index 41e5675e5..046b2b9f6 100644 --- a/test/dot_s/local_align.wast +++ b/test/dot_s/local_align.wast @@ -1,10 +1,10 @@ (module (import "env" "memory" (memory $0 1)) (table 0 anyfunc) + (export "main" (func $main)) (export "stackSave" (func $stackSave)) (export "stackAlloc" (func $stackAlloc)) (export "stackRestore" (func $stackRestore)) - (export "main" (func $main)) (func $foo (; 0 ;) (param $0 i32) ) (func $main (; 1 ;) (result i32) diff --git a/test/dot_s/macClangMetaData.wast b/test/dot_s/macClangMetaData.wast index c24bf3f52..3dcde706c 100644 --- a/test/dot_s/macClangMetaData.wast +++ b/test/dot_s/macClangMetaData.wast @@ -4,10 +4,10 @@ (import "env" "memory" (memory $0 1)) (table 0 anyfunc) (data (i32.const 16) "Hello, World!\00") + (export "main" (func $main)) (export "stackSave" (func $stackSave)) (export "stackAlloc" (func $stackAlloc)) (export "stackRestore" (func $stackRestore)) - (export "main" (func $main)) (func $main (; 1 ;) (param $0 i32) (param $1 i32) (result i32) (drop (call $puts diff --git a/test/dot_s/memops.wast b/test/dot_s/memops.wast index 4d5cba4e7..acb70e511 100644 --- a/test/dot_s/memops.wast +++ b/test/dot_s/memops.wast @@ -4,10 +4,10 @@ (import "env" "emscripten_asm_const_v" (func $emscripten_asm_const_v (param i32))) (table 0 anyfunc) (data (i32.const 16) "{ Module.print(\"hello, world! \" + HEAP32[8>>2]); }\00") + (export "main" (func $main)) (export "stackSave" (func $stackSave)) (export "stackAlloc" (func $stackAlloc)) (export "stackRestore" (func $stackRestore)) - (export "main" (func $main)) (func $_Z6reporti (; 1 ;) (param $0 i32) (i32.store (i32.const 8) diff --git a/test/dot_s/minimal.wast b/test/dot_s/minimal.wast index bbc6971af..ae918b3e5 100644 --- a/test/dot_s/minimal.wast +++ b/test/dot_s/minimal.wast @@ -1,10 +1,10 @@ (module (import "env" "memory" (memory $0 1)) (table 0 anyfunc) + (export "main" (func $main)) (export "stackSave" (func $stackSave)) (export "stackAlloc" (func $stackAlloc)) (export "stackRestore" (func $stackRestore)) - (export "main" (func $main)) (func $main (; 0 ;) (result i32) (return (i32.const 5) diff --git a/test/dot_s/relocation.wast b/test/dot_s/relocation.wast index 4d7d4c4d6..c528efcae 100644 --- a/test/dot_s/relocation.wast +++ b/test/dot_s/relocation.wast @@ -3,10 +3,10 @@ (table 0 anyfunc) (data (i32.const 12) "\10\00\00\00") (data (i32.const 16) "\0c\00\00\00") + (export "main" (func $main)) (export "stackSave" (func $stackSave)) (export "stackAlloc" (func $stackAlloc)) (export "stackRestore" (func $stackRestore)) - (export "main" (func $main)) (func $main (; 0 ;) (result i32) (local $0 i32) (return diff --git a/test/dot_s/return.wast b/test/dot_s/return.wast index 35c373f94..8a527b01a 100644 --- a/test/dot_s/return.wast +++ b/test/dot_s/return.wast @@ -1,11 +1,11 @@ (module (import "env" "memory" (memory $0 1)) (table 0 anyfunc) + (export "return_i32" (func $return_i32)) + (export "return_void" (func $return_void)) (export "stackSave" (func $stackSave)) (export "stackAlloc" (func $stackAlloc)) (export "stackRestore" (func $stackRestore)) - (export "return_i32" (func $return_i32)) - (export "return_void" (func $return_void)) (func $return_i32 (; 0 ;) (result i32) (i32.const 5) ) diff --git a/test/dot_s/start_main0.wast b/test/dot_s/start_main0.wast index 1656e4345..79ab8b217 100644 --- a/test/dot_s/start_main0.wast +++ b/test/dot_s/start_main0.wast @@ -1,19 +1,22 @@ (module (import "env" "memory" (memory $0 1)) (table 0 anyfunc) + (export "main" (func $main)) (export "stackSave" (func $stackSave)) (export "stackAlloc" (func $stackAlloc)) (export "stackRestore" (func $stackRestore)) - (export "main" (func $main)) (start $_start) (func $main (; 0 ;) ) - (func $stackSave (; 1 ;) (result i32) + (func $_start (; 1 ;) + (call $main) + ) + (func $stackSave (; 2 ;) (result i32) (i32.load offset=4 (i32.const 0) ) ) - (func $stackAlloc (; 2 ;) (param $0 i32) (result i32) + (func $stackAlloc (; 3 ;) (param $0 i32) (result i32) (local $1 i32) (set_local $1 (i32.load offset=4 @@ -32,14 +35,11 @@ ) (get_local $1) ) - (func $stackRestore (; 3 ;) (param $0 i32) + (func $stackRestore (; 4 ;) (param $0 i32) (i32.store offset=4 (i32.const 0) (get_local $0) ) ) - (func $_start (; 4 ;) - (call $main) - ) ) ;; METADATA: { "asmConsts": {},"staticBump": 12, "initializers": [] } diff --git a/test/dot_s/start_main2.wast b/test/dot_s/start_main2.wast index ef6b2695e..cd67cdeda 100644 --- a/test/dot_s/start_main2.wast +++ b/test/dot_s/start_main2.wast @@ -1,22 +1,32 @@ (module (import "env" "memory" (memory $0 1)) (table 0 anyfunc) + (export "main" (func $main)) (export "stackSave" (func $stackSave)) (export "stackAlloc" (func $stackAlloc)) (export "stackRestore" (func $stackRestore)) - (export "main" (func $main)) (start $_start) (func $main (; 0 ;) (param $0 i32) (param $1 i32) (result i32) (return (get_local $0) ) ) - (func $stackSave (; 1 ;) (result i32) + (func $_start (; 1 ;) + (local $0 i32) + (local $1 i32) + (drop + (call $main + (get_local $0) + (get_local $1) + ) + ) + ) + (func $stackSave (; 2 ;) (result i32) (i32.load offset=4 (i32.const 0) ) ) - (func $stackAlloc (; 2 ;) (param $0 i32) (result i32) + (func $stackAlloc (; 3 ;) (param $0 i32) (result i32) (local $1 i32) (set_local $1 (i32.load offset=4 @@ -35,21 +45,11 @@ ) (get_local $1) ) - (func $stackRestore (; 3 ;) (param $0 i32) + (func $stackRestore (; 4 ;) (param $0 i32) (i32.store offset=4 (i32.const 0) (get_local $0) ) ) - (func $_start (; 4 ;) - (local $0 i32) - (local $1 i32) - (drop - (call $main - (get_local $0) - (get_local $1) - ) - ) - ) ) ;; METADATA: { "asmConsts": {},"staticBump": 12, "initializers": [] } diff --git a/test/dot_s/symbolic-offset.wast b/test/dot_s/symbolic-offset.wast index 7dfb753db..e9fe0eb0b 100644 --- a/test/dot_s/symbolic-offset.wast +++ b/test/dot_s/symbolic-offset.wast @@ -2,10 +2,10 @@ (import "env" "memory" (memory $0 1)) (table 0 anyfunc) (data (i32.const 12) "\01\00\00\00\00\00\00\00\00\00\00\00") + (export "f" (func $f)) (export "stackSave" (func $stackSave)) (export "stackAlloc" (func $stackAlloc)) (export "stackRestore" (func $stackRestore)) - (export "f" (func $f)) (func $f (; 0 ;) (param $0 i32) (param $1 i32) (i32.store offset=16 (get_local $0) diff --git a/test/dot_s/text_before_type.wast b/test/dot_s/text_before_type.wast index 9971ea5b0..04d8ec806 100644 --- a/test/dot_s/text_before_type.wast +++ b/test/dot_s/text_before_type.wast @@ -1,10 +1,10 @@ (module (import "env" "memory" (memory $0 1)) (table 0 anyfunc) + (export "main" (func $main)) (export "stackSave" (func $stackSave)) (export "stackAlloc" (func $stackAlloc)) (export "stackRestore" (func $stackRestore)) - (export "main" (func $main)) (func $main (; 0 ;) (result i32) (call $foo) (i32.const 0) diff --git a/test/dot_s/traps.clamp.wast b/test/dot_s/traps.clamp.wast index 127fd53f8..7228741bb 100644 --- a/test/dot_s/traps.clamp.wast +++ b/test/dot_s/traps.clamp.wast @@ -1,10 +1,10 @@ (module (import "env" "memory" (memory $0 1)) (table 0 anyfunc) + (export "test_traps" (func $test_traps)) (export "stackSave" (func $stackSave)) (export "stackAlloc" (func $stackAlloc)) (export "stackRestore" (func $stackRestore)) - (export "test_traps" (func $test_traps)) (func $test_traps (; 0 ;) (param $0 f32) (param $1 f64) (result i32) (call $i32u-div (call $f32-to-int diff --git a/test/dot_s/traps.js.wast b/test/dot_s/traps.js.wast index 658301b32..2dd71d29a 100644 --- a/test/dot_s/traps.js.wast +++ b/test/dot_s/traps.js.wast @@ -3,10 +3,10 @@ (import "asm2wasm" "f64-to-int" (func $f64-to-int (param f64) (result i32))) (import "env" "memory" (memory $0 1)) (table 0 anyfunc) + (export "test_traps" (func $test_traps)) (export "stackSave" (func $stackSave)) (export "stackAlloc" (func $stackAlloc)) (export "stackRestore" (func $stackRestore)) - (export "test_traps" (func $test_traps)) (func $test_traps (; 1 ;) (param $0 f32) (param $1 f64) (result i32) (call $i32u-div (call $f64-to-int diff --git a/test/dot_s/traps.wast b/test/dot_s/traps.wast index fbc7d4400..e6371fdaf 100644 --- a/test/dot_s/traps.wast +++ b/test/dot_s/traps.wast @@ -1,10 +1,10 @@ (module (import "env" "memory" (memory $0 1)) (table 0 anyfunc) + (export "test_traps" (func $test_traps)) (export "stackSave" (func $stackSave)) (export "stackAlloc" (func $stackAlloc)) (export "stackRestore" (func $stackRestore)) - (export "test_traps" (func $test_traps)) (func $test_traps (; 0 ;) (param $0 f32) (param $1 f64) (result i32) (i32.div_u (i32.trunc_s/f32 diff --git a/test/dot_s/visibilities.wast b/test/dot_s/visibilities.wast index c81ef1ebe..58442bd37 100644 --- a/test/dot_s/visibilities.wast +++ b/test/dot_s/visibilities.wast @@ -1,12 +1,12 @@ (module (import "env" "memory" (memory $0 1)) (table 0 anyfunc) - (export "stackSave" (func $stackSave)) - (export "stackAlloc" (func $stackAlloc)) - (export "stackRestore" (func $stackRestore)) (export "foo" (func $foo)) (export "bar" (func $bar)) (export "qux" (func $qux)) + (export "stackSave" (func $stackSave)) + (export "stackAlloc" (func $stackAlloc)) + (export "stackRestore" (func $stackRestore)) (func $foo (; 0 ;) (return) ) diff --git a/test/llvm_autogenerated/byval.wast b/test/llvm_autogenerated/byval.wast index 5fd003502..d3eeceb1f 100644 --- a/test/llvm_autogenerated/byval.wast +++ b/test/llvm_autogenerated/byval.wast @@ -12,9 +12,6 @@ (import "env" "memory" (memory $0 1)) (table 0 anyfunc) (data (i32.const 4) "\10\04\00\00") - (export "stackSave" (func $stackSave)) - (export "stackAlloc" (func $stackAlloc)) - (export "stackRestore" (func $stackRestore)) (export "byval_arg" (func $byval_arg)) (export "byval_arg_align8" (func $byval_arg_align8)) (export "byval_arg_double" (func $byval_arg_double)) @@ -22,6 +19,9 @@ (export "byval_empty_caller" (func $byval_empty_caller)) (export "byval_empty_callee" (func $byval_empty_callee)) (export "big_byval" (func $big_byval)) + (export "stackSave" (func $stackSave)) + (export "stackAlloc" (func $stackAlloc)) + (export "stackRestore" (func $stackRestore)) (func $byval_arg (; 8 ;) (param $0 i32) (local $1 i32) (i32.store offset=4 diff --git a/test/llvm_autogenerated/call.wast b/test/llvm_autogenerated/call.wast index 11b6fc306..dc1d2a443 100644 --- a/test/llvm_autogenerated/call.wast +++ b/test/llvm_autogenerated/call.wast @@ -17,9 +17,6 @@ (import "env" "memory" (memory $0 1)) (table 0 anyfunc) (data (i32.const 4) "\10\04\00\00") - (export "stackSave" (func $stackSave)) - (export "stackAlloc" (func $stackAlloc)) - (export "stackRestore" (func $stackRestore)) (export "call_i32_nullary" (func $call_i32_nullary)) (export "call_i64_nullary" (func $call_i64_nullary)) (export "call_float_nullary" (func $call_float_nullary)) @@ -34,6 +31,9 @@ (export "tail_call_void_nullary" (func $tail_call_void_nullary)) (export "fastcc_tail_call_void_nullary" (func $fastcc_tail_call_void_nullary)) (export "coldcc_tail_call_void_nullary" (func $coldcc_tail_call_void_nullary)) + (export "stackSave" (func $stackSave)) + (export "stackAlloc" (func $stackAlloc)) + (export "stackRestore" (func $stackRestore)) (func $call_i32_nullary (; 7 ;) (result i32) (return (call $i32_nullary) diff --git a/test/llvm_autogenerated/cfg-stackify.wast b/test/llvm_autogenerated/cfg-stackify.wast index 14885f4a5..b6b29e8ab 100644 --- a/test/llvm_autogenerated/cfg-stackify.wast +++ b/test/llvm_autogenerated/cfg-stackify.wast @@ -9,9 +9,6 @@ (import "env" "memory" (memory $0 1)) (table 0 anyfunc) (data (i32.const 4) "\10\04\00\00") - (export "stackSave" (func $stackSave)) - (export "stackAlloc" (func $stackAlloc)) - (export "stackRestore" (func $stackRestore)) (export "test0" (func $test0)) (export "test1" (func $test1)) (export "test2" (func $test2)) @@ -37,6 +34,9 @@ (export "test13" (func $test13)) (export "test14" (func $test14)) (export "test15" (func $test15)) + (export "stackSave" (func $stackSave)) + (export "stackAlloc" (func $stackAlloc)) + (export "stackRestore" (func $stackRestore)) (func $test0 (; 5 ;) (param $0 i32) (local $1 i32) (set_local $1 diff --git a/test/llvm_autogenerated/comparisons_f32.wast b/test/llvm_autogenerated/comparisons_f32.wast index 89d0acde4..a46694d64 100644 --- a/test/llvm_autogenerated/comparisons_f32.wast +++ b/test/llvm_autogenerated/comparisons_f32.wast @@ -2,9 +2,6 @@ (import "env" "memory" (memory $0 1)) (table 0 anyfunc) (data (i32.const 4) "\10\04\00\00") - (export "stackSave" (func $stackSave)) - (export "stackAlloc" (func $stackAlloc)) - (export "stackRestore" (func $stackRestore)) (export "ord_f32" (func $ord_f32)) (export "uno_f32" (func $uno_f32)) (export "oeq_f32" (func $oeq_f32)) @@ -19,6 +16,9 @@ (export "ule_f32" (func $ule_f32)) (export "ugt_f32" (func $ugt_f32)) (export "uge_f32" (func $uge_f32)) + (export "stackSave" (func $stackSave)) + (export "stackAlloc" (func $stackAlloc)) + (export "stackRestore" (func $stackRestore)) (func $ord_f32 (; 0 ;) (param $0 f32) (param $1 f32) (result i32) (return (i32.and diff --git a/test/llvm_autogenerated/comparisons_f64.wast b/test/llvm_autogenerated/comparisons_f64.wast index e5b5f109f..cbc254f9c 100644 --- a/test/llvm_autogenerated/comparisons_f64.wast +++ b/test/llvm_autogenerated/comparisons_f64.wast @@ -2,9 +2,6 @@ (import "env" "memory" (memory $0 1)) (table 0 anyfunc) (data (i32.const 4) "\10\04\00\00") - (export "stackSave" (func $stackSave)) - (export "stackAlloc" (func $stackAlloc)) - (export "stackRestore" (func $stackRestore)) (export "ord_f64" (func $ord_f64)) (export "uno_f64" (func $uno_f64)) (export "oeq_f64" (func $oeq_f64)) @@ -19,6 +16,9 @@ (export "ule_f64" (func $ule_f64)) (export "ugt_f64" (func $ugt_f64)) (export "uge_f64" (func $uge_f64)) + (export "stackSave" (func $stackSave)) + (export "stackAlloc" (func $stackAlloc)) + (export "stackRestore" (func $stackRestore)) (func $ord_f64 (; 0 ;) (param $0 f64) (param $1 f64) (result i32) (return (i32.and diff --git a/test/llvm_autogenerated/comparisons_i32.wast b/test/llvm_autogenerated/comparisons_i32.wast index a9330f9a3..e55b7c98b 100644 --- a/test/llvm_autogenerated/comparisons_i32.wast +++ b/test/llvm_autogenerated/comparisons_i32.wast @@ -2,9 +2,6 @@ (import "env" "memory" (memory $0 1)) (table 0 anyfunc) (data (i32.const 4) "\10\04\00\00") - (export "stackSave" (func $stackSave)) - (export "stackAlloc" (func $stackAlloc)) - (export "stackRestore" (func $stackRestore)) (export "eq_i32" (func $eq_i32)) (export "ne_i32" (func $ne_i32)) (export "slt_i32" (func $slt_i32)) @@ -15,6 +12,9 @@ (export "sge_i32" (func $sge_i32)) (export "ugt_i32" (func $ugt_i32)) (export "uge_i32" (func $uge_i32)) + (export "stackSave" (func $stackSave)) + (export "stackAlloc" (func $stackAlloc)) + (export "stackRestore" (func $stackRestore)) (func $eq_i32 (; 0 ;) (param $0 i32) (param $1 i32) (result i32) (return (i32.eq diff --git a/test/llvm_autogenerated/comparisons_i64.wast b/test/llvm_autogenerated/comparisons_i64.wast index 3d4e7662e..c7764d82b 100644 --- a/test/llvm_autogenerated/comparisons_i64.wast +++ b/test/llvm_autogenerated/comparisons_i64.wast @@ -2,9 +2,6 @@ (import "env" "memory" (memory $0 1)) (table 0 anyfunc) (data (i32.const 4) "\10\04\00\00") - (export "stackSave" (func $stackSave)) - (export "stackAlloc" (func $stackAlloc)) - (export "stackRestore" (func $stackRestore)) (export "eq_i64" (func $eq_i64)) (export "ne_i64" (func $ne_i64)) (export "slt_i64" (func $slt_i64)) @@ -15,6 +12,9 @@ (export "sge_i64" (func $sge_i64)) (export "ugt_i64" (func $ugt_i64)) (export "uge_i64" (func $uge_i64)) + (export "stackSave" (func $stackSave)) + (export "stackAlloc" (func $stackAlloc)) + (export "stackRestore" (func $stackRestore)) (func $eq_i64 (; 0 ;) (param $0 i64) (param $1 i64) (result i32) (return (i64.eq diff --git a/test/llvm_autogenerated/conv.wast b/test/llvm_autogenerated/conv.wast index f280c5017..7a59f056d 100644 --- a/test/llvm_autogenerated/conv.wast +++ b/test/llvm_autogenerated/conv.wast @@ -2,9 +2,6 @@ (import "env" "memory" (memory $0 1)) (table 0 anyfunc) (data (i32.const 4) "\10\04\00\00") - (export "stackSave" (func $stackSave)) - (export "stackAlloc" (func $stackAlloc)) - (export "stackRestore" (func $stackRestore)) (export "i32_wrap_i64" (func $i32_wrap_i64)) (export "i64_extend_s_i32" (func $i64_extend_s_i32)) (export "i64_extend_u_i32" (func $i64_extend_u_i32)) @@ -31,6 +28,9 @@ (export "bitcast_float_to_i32" (func $bitcast_float_to_i32)) (export "bitcast_i64_to_double" (func $bitcast_i64_to_double)) (export "bitcast_double_to_i64" (func $bitcast_double_to_i64)) + (export "stackSave" (func $stackSave)) + (export "stackAlloc" (func $stackAlloc)) + (export "stackRestore" (func $stackRestore)) (func $i32_wrap_i64 (; 0 ;) (param $0 i64) (result i32) (return (i32.wrap/i64 diff --git a/test/llvm_autogenerated/copysign-casts.wast b/test/llvm_autogenerated/copysign-casts.wast index 6eb398e2b..b1bcb7d9b 100644 --- a/test/llvm_autogenerated/copysign-casts.wast +++ b/test/llvm_autogenerated/copysign-casts.wast @@ -4,11 +4,11 @@ (import "env" "memory" (memory $0 1)) (table 0 anyfunc) (data (i32.const 4) "\10\04\00\00") + (export "fold_promote" (func $fold_promote)) + (export "fold_demote" (func $fold_demote)) (export "stackSave" (func $stackSave)) (export "stackAlloc" (func $stackAlloc)) (export "stackRestore" (func $stackRestore)) - (export "fold_promote" (func $fold_promote)) - (export "fold_demote" (func $fold_demote)) (func $fold_promote (; 0 ;) (param $0 f64) (param $1 f32) (result f64) (f64.copysign (get_local $0) diff --git a/test/llvm_autogenerated/cpus.wast b/test/llvm_autogenerated/cpus.wast index 808a6e085..fb6b6bd94 100644 --- a/test/llvm_autogenerated/cpus.wast +++ b/test/llvm_autogenerated/cpus.wast @@ -2,10 +2,10 @@ (import "env" "memory" (memory $0 1)) (table 0 anyfunc) (data (i32.const 4) "\10\04\00\00") + (export "f" (func $f)) (export "stackSave" (func $stackSave)) (export "stackAlloc" (func $stackAlloc)) (export "stackRestore" (func $stackRestore)) - (export "f" (func $f)) (func $f (; 0 ;) (param $0 i32) (result i32) (get_local $0) ) diff --git a/test/llvm_autogenerated/dead-vreg.wast b/test/llvm_autogenerated/dead-vreg.wast index a6ea58e02..312b87d3d 100644 --- a/test/llvm_autogenerated/dead-vreg.wast +++ b/test/llvm_autogenerated/dead-vreg.wast @@ -2,10 +2,10 @@ (import "env" "memory" (memory $0 1)) (table 0 anyfunc) (data (i32.const 4) "\10\04\00\00") + (export "foo" (func $foo)) (export "stackSave" (func $stackSave)) (export "stackAlloc" (func $stackAlloc)) (export "stackRestore" (func $stackRestore)) - (export "foo" (func $foo)) (func $foo (; 0 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) diff --git a/test/llvm_autogenerated/divrem-constant.wast b/test/llvm_autogenerated/divrem-constant.wast index a1012fdda..957048e57 100644 --- a/test/llvm_autogenerated/divrem-constant.wast +++ b/test/llvm_autogenerated/divrem-constant.wast @@ -2,9 +2,6 @@ (import "env" "memory" (memory $0 1)) (table 0 anyfunc) (data (i32.const 4) "\10\04\00\00") - (export "stackSave" (func $stackSave)) - (export "stackAlloc" (func $stackAlloc)) - (export "stackRestore" (func $stackRestore)) (export "test_udiv_2" (func $test_udiv_2)) (export "test_udiv_5" (func $test_udiv_5)) (export "test_sdiv_2" (func $test_sdiv_2)) @@ -13,6 +10,9 @@ (export "test_urem_5" (func $test_urem_5)) (export "test_srem_2" (func $test_srem_2)) (export "test_srem_5" (func $test_srem_5)) + (export "stackSave" (func $stackSave)) + (export "stackAlloc" (func $stackAlloc)) + (export "stackRestore" (func $stackRestore)) (func $test_udiv_2 (; 0 ;) (param $0 i32) (result i32) (i32.shr_u (get_local $0) diff --git a/test/llvm_autogenerated/f32.wast b/test/llvm_autogenerated/f32.wast index e01196c49..1904cb357 100644 --- a/test/llvm_autogenerated/f32.wast +++ b/test/llvm_autogenerated/f32.wast @@ -4,9 +4,6 @@ (import "env" "memory" (memory $0 1)) (table 0 anyfunc) (data (i32.const 4) "\10\04\00\00") - (export "stackSave" (func $stackSave)) - (export "stackAlloc" (func $stackAlloc)) - (export "stackRestore" (func $stackRestore)) (export "fadd32" (func $fadd32)) (export "fsub32" (func $fsub32)) (export "fmul32" (func $fmul32)) @@ -23,6 +20,9 @@ (export "fmin32" (func $fmin32)) (export "fmax32" (func $fmax32)) (export "fma32" (func $fma32)) + (export "stackSave" (func $stackSave)) + (export "stackAlloc" (func $stackAlloc)) + (export "stackRestore" (func $stackRestore)) (func $fadd32 (; 1 ;) (param $0 f32) (param $1 f32) (result f32) (return (f32.add diff --git a/test/llvm_autogenerated/f64.wast b/test/llvm_autogenerated/f64.wast index 00c5054da..50ad8aa54 100644 --- a/test/llvm_autogenerated/f64.wast +++ b/test/llvm_autogenerated/f64.wast @@ -4,9 +4,6 @@ (import "env" "memory" (memory $0 1)) (table 0 anyfunc) (data (i32.const 4) "\10\04\00\00") - (export "stackSave" (func $stackSave)) - (export "stackAlloc" (func $stackAlloc)) - (export "stackRestore" (func $stackRestore)) (export "fadd64" (func $fadd64)) (export "fsub64" (func $fsub64)) (export "fmul64" (func $fmul64)) @@ -23,6 +20,9 @@ (export "fmin64" (func $fmin64)) (export "fmax64" (func $fmax64)) (export "fma64" (func $fma64)) + (export "stackSave" (func $stackSave)) + (export "stackAlloc" (func $stackAlloc)) + (export "stackRestore" (func $stackRestore)) (func $fadd64 (; 1 ;) (param $0 f64) (param $1 f64) (result f64) (return (f64.add diff --git a/test/llvm_autogenerated/fast-isel-noreg.wast b/test/llvm_autogenerated/fast-isel-noreg.wast index 8f36c718a..2814ca576 100644 --- a/test/llvm_autogenerated/fast-isel-noreg.wast +++ b/test/llvm_autogenerated/fast-isel-noreg.wast @@ -2,12 +2,12 @@ (import "env" "memory" (memory $0 1)) (table 0 anyfunc) (data (i32.const 4) "\10\04\00\00") - (export "stackSave" (func $stackSave)) - (export "stackAlloc" (func $stackAlloc)) - (export "stackRestore" (func $stackRestore)) (export "a" (func $a)) (export "b" (func $b)) (export "c" (func $c)) + (export "stackSave" (func $stackSave)) + (export "stackAlloc" (func $stackAlloc)) + (export "stackRestore" (func $stackRestore)) (func $a (; 0 ;) (result i32) (return (i32.const 0) diff --git a/test/llvm_autogenerated/fast-isel.wast b/test/llvm_autogenerated/fast-isel.wast index a7d4b6b4c..efe4e1ffc 100644 --- a/test/llvm_autogenerated/fast-isel.wast +++ b/test/llvm_autogenerated/fast-isel.wast @@ -2,15 +2,15 @@ (import "env" "memory" (memory $0 1)) (table 0 anyfunc) (data (i32.const 4) "\10\04\00\00") - (export "stackSave" (func $stackSave)) - (export "stackAlloc" (func $stackAlloc)) - (export "stackRestore" (func $stackRestore)) (export "immediate_f32" (func $immediate_f32)) (export "immediate_f64" (func $immediate_f64)) (export "bitcast_i32_f32" (func $bitcast_i32_f32)) (export "bitcast_f32_i32" (func $bitcast_f32_i32)) (export "bitcast_i64_f64" (func $bitcast_i64_f64)) (export "bitcast_f64_i64" (func $bitcast_f64_i64)) + (export "stackSave" (func $stackSave)) + (export "stackAlloc" (func $stackAlloc)) + (export "stackRestore" (func $stackRestore)) (func $immediate_f32 (; 0 ;) (result f32) (f32.const 2.5) ) diff --git a/test/llvm_autogenerated/frem.wast b/test/llvm_autogenerated/frem.wast index 241b3c47d..75c89b620 100644 --- a/test/llvm_autogenerated/frem.wast +++ b/test/llvm_autogenerated/frem.wast @@ -6,11 +6,11 @@ (import "env" "memory" (memory $0 1)) (table 0 anyfunc) (data (i32.const 4) "\10\04\00\00") + (export "frem32" (func $frem32)) + (export "frem64" (func $frem64)) (export "stackSave" (func $stackSave)) (export "stackAlloc" (func $stackAlloc)) (export "stackRestore" (func $stackRestore)) - (export "frem32" (func $frem32)) - (export "frem64" (func $frem64)) (func $frem32 (; 2 ;) (param $0 f32) (param $1 f32) (result f32) (return (call $fmodf diff --git a/test/llvm_autogenerated/func.wast b/test/llvm_autogenerated/func.wast index 2856007f8..7fbad243a 100644 --- a/test/llvm_autogenerated/func.wast +++ b/test/llvm_autogenerated/func.wast @@ -2,15 +2,15 @@ (import "env" "memory" (memory $0 1)) (table 0 anyfunc) (data (i32.const 4) "\10\04\00\00") - (export "stackSave" (func $stackSave)) - (export "stackAlloc" (func $stackAlloc)) - (export "stackRestore" (func $stackRestore)) (export "f0" (func $f0)) (export "f1" (func $f1)) (export "f2" (func $f2)) (export "f3" (func $f3)) (export "f4" (func $f4)) (export "f5" (func $f5)) + (export "stackSave" (func $stackSave)) + (export "stackAlloc" (func $stackAlloc)) + (export "stackRestore" (func $stackRestore)) (func $f0 (; 0 ;) (return) ) diff --git a/test/llvm_autogenerated/global.wast b/test/llvm_autogenerated/global.wast index 50692de42..05de7a8ef 100644 --- a/test/llvm_autogenerated/global.wast +++ b/test/llvm_autogenerated/global.wast @@ -16,11 +16,11 @@ (data (i32.const 136) "\00\00\00\00\00\00\00@") (data (i32.const 656) "\e0\00\00\00") (data (i32.const 1192) "\a4\04\00\00") + (export "foo" (func $foo)) + (export "call_memcpy" (func $call_memcpy)) (export "stackSave" (func $stackSave)) (export "stackAlloc" (func $stackAlloc)) (export "stackRestore" (func $stackRestore)) - (export "foo" (func $foo)) - (export "call_memcpy" (func $call_memcpy)) (func $foo (; 1 ;) (result i32) (return (i32.load offset=32 diff --git a/test/llvm_autogenerated/globl.wast b/test/llvm_autogenerated/globl.wast index 5fdc9d94f..09fa247fc 100644 --- a/test/llvm_autogenerated/globl.wast +++ b/test/llvm_autogenerated/globl.wast @@ -2,10 +2,10 @@ (import "env" "memory" (memory $0 1)) (table 0 anyfunc) (data (i32.const 4) "\10\04\00\00") + (export "foo" (func $foo)) (export "stackSave" (func $stackSave)) (export "stackAlloc" (func $stackAlloc)) (export "stackRestore" (func $stackRestore)) - (export "foo" (func $foo)) (func $foo (; 0 ;) ) (func $stackSave (; 1 ;) (result i32) diff --git a/test/llvm_autogenerated/i128.wast b/test/llvm_autogenerated/i128.wast index e9e337602..d22b3e8aa 100644 --- a/test/llvm_autogenerated/i128.wast +++ b/test/llvm_autogenerated/i128.wast @@ -12,9 +12,6 @@ (import "env" "memory" (memory $0 1)) (table 0 anyfunc) (data (i32.const 4) "\10\04\00\00") - (export "stackSave" (func $stackSave)) - (export "stackAlloc" (func $stackAlloc)) - (export "stackRestore" (func $stackRestore)) (export "add128" (func $add128)) (export "sub128" (func $sub128)) (export "mul128" (func $mul128)) @@ -38,6 +35,9 @@ (export "masked_rotl" (func $masked_rotl)) (export "rotr" (func $rotr)) (export "masked_rotr" (func $masked_rotr)) + (export "stackSave" (func $stackSave)) + (export "stackAlloc" (func $stackAlloc)) + (export "stackRestore" (func $stackRestore)) (func $add128 (; 8 ;) (param $0 i32) (param $1 i64) (param $2 i64) (param $3 i64) (param $4 i64) (local $5 i64) (i64.store diff --git a/test/llvm_autogenerated/i32-load-store-alignment.wast b/test/llvm_autogenerated/i32-load-store-alignment.wast index 748cf43a3..a48617132 100644 --- a/test/llvm_autogenerated/i32-load-store-alignment.wast +++ b/test/llvm_autogenerated/i32-load-store-alignment.wast @@ -2,9 +2,6 @@ (import "env" "memory" (memory $0 1)) (table 0 anyfunc) (data (i32.const 4) "\10\04\00\00") - (export "stackSave" (func $stackSave)) - (export "stackAlloc" (func $stackAlloc)) - (export "stackRestore" (func $stackRestore)) (export "ldi32_a1" (func $ldi32_a1)) (export "ldi32_a2" (func $ldi32_a2)) (export "ldi32_a4" (func $ldi32_a4)) @@ -25,6 +22,9 @@ (export "sti16_a1" (func $sti16_a1)) (export "sti16_a2" (func $sti16_a2)) (export "sti16_a4" (func $sti16_a4)) + (export "stackSave" (func $stackSave)) + (export "stackAlloc" (func $stackAlloc)) + (export "stackRestore" (func $stackRestore)) (func $ldi32_a1 (; 0 ;) (param $0 i32) (result i32) (return (i32.load align=1 diff --git a/test/llvm_autogenerated/i32.wast b/test/llvm_autogenerated/i32.wast index 5041195f5..63dc81ada 100644 --- a/test/llvm_autogenerated/i32.wast +++ b/test/llvm_autogenerated/i32.wast @@ -2,9 +2,6 @@ (import "env" "memory" (memory $0 1)) (table 0 anyfunc) (data (i32.const 4) "\10\04\00\00") - (export "stackSave" (func $stackSave)) - (export "stackAlloc" (func $stackAlloc)) - (export "stackRestore" (func $stackRestore)) (export "add32" (func $add32)) (export "sub32" (func $sub32)) (export "mul32" (func $mul32)) @@ -28,6 +25,9 @@ (export "masked_rotl" (func $masked_rotl)) (export "rotr" (func $rotr)) (export "masked_rotr" (func $masked_rotr)) + (export "stackSave" (func $stackSave)) + (export "stackAlloc" (func $stackAlloc)) + (export "stackRestore" (func $stackRestore)) (func $add32 (; 0 ;) (param $0 i32) (param $1 i32) (result i32) (return (i32.add diff --git a/test/llvm_autogenerated/i64-load-store-alignment.wast b/test/llvm_autogenerated/i64-load-store-alignment.wast index 1c3a431a3..d7041e5a8 100644 --- a/test/llvm_autogenerated/i64-load-store-alignment.wast +++ b/test/llvm_autogenerated/i64-load-store-alignment.wast @@ -2,9 +2,6 @@ (import "env" "memory" (memory $0 1)) (table 0 anyfunc) (data (i32.const 4) "\10\04\00\00") - (export "stackSave" (func $stackSave)) - (export "stackAlloc" (func $stackAlloc)) - (export "stackRestore" (func $stackRestore)) (export "ldi64_a1" (func $ldi64_a1)) (export "ldi64_a2" (func $ldi64_a2)) (export "ldi64_a4" (func $ldi64_a4)) @@ -35,6 +32,9 @@ (export "sti32_a2" (func $sti32_a2)) (export "sti32_a4" (func $sti32_a4)) (export "sti32_a8" (func $sti32_a8)) + (export "stackSave" (func $stackSave)) + (export "stackAlloc" (func $stackAlloc)) + (export "stackRestore" (func $stackRestore)) (func $ldi64_a1 (; 0 ;) (param $0 i32) (result i64) (return (i64.load align=1 diff --git a/test/llvm_autogenerated/i64.wast b/test/llvm_autogenerated/i64.wast index 7447964c6..ae05aab15 100644 --- a/test/llvm_autogenerated/i64.wast +++ b/test/llvm_autogenerated/i64.wast @@ -2,9 +2,6 @@ (import "env" "memory" (memory $0 1)) (table 0 anyfunc) (data (i32.const 4) "\10\04\00\00") - (export "stackSave" (func $stackSave)) - (export "stackAlloc" (func $stackAlloc)) - (export "stackRestore" (func $stackRestore)) (export "add64" (func $add64)) (export "sub64" (func $sub64)) (export "mul64" (func $mul64)) @@ -28,6 +25,9 @@ (export "masked_rotl" (func $masked_rotl)) (export "rotr" (func $rotr)) (export "masked_rotr" (func $masked_rotr)) + (export "stackSave" (func $stackSave)) + (export "stackAlloc" (func $stackAlloc)) + (export "stackRestore" (func $stackRestore)) (func $add64 (; 0 ;) (param $0 i64) (param $1 i64) (result i64) (return (i64.add diff --git a/test/llvm_autogenerated/immediates.wast b/test/llvm_autogenerated/immediates.wast index 5d1d8abde..285ac387d 100644 --- a/test/llvm_autogenerated/immediates.wast +++ b/test/llvm_autogenerated/immediates.wast @@ -2,9 +2,6 @@ (import "env" "memory" (memory $0 1)) (table 0 anyfunc) (data (i32.const 4) "\10\04\00\00") - (export "stackSave" (func $stackSave)) - (export "stackAlloc" (func $stackAlloc)) - (export "stackRestore" (func $stackRestore)) (export "zero_i32" (func $zero_i32)) (export "one_i32" (func $one_i32)) (export "max_i32" (func $max_i32)) @@ -33,6 +30,9 @@ (export "neginf_f64" (func $neginf_f64)) (export "custom_nan_f64" (func $custom_nan_f64)) (export "custom_nans_f64" (func $custom_nans_f64)) + (export "stackSave" (func $stackSave)) + (export "stackAlloc" (func $stackAlloc)) + (export "stackRestore" (func $stackRestore)) (func $zero_i32 (; 0 ;) (result i32) (return (i32.const 0) diff --git a/test/llvm_autogenerated/indirect-import.wast b/test/llvm_autogenerated/indirect-import.wast index 909c229b6..cc05dad0b 100644 --- a/test/llvm_autogenerated/indirect-import.wast +++ b/test/llvm_autogenerated/indirect-import.wast @@ -15,10 +15,10 @@ (table 7 7 anyfunc) (elem (i32.const 0) $__wasm_nullptr $__importThunk_extern_fd $__importThunk_extern_vj $__importThunk_extern_v $__importThunk_extern_ijidf $__importThunk_extern_struct $__importThunk_extern_sret) (data (i32.const 4) "\10\04\00\00") + (export "bar" (func $bar)) (export "stackSave" (func $stackSave)) (export "stackAlloc" (func $stackAlloc)) (export "stackRestore" (func $stackRestore)) - (export "bar" (func $bar)) (export "dynCall_fd" (func $dynCall_fd)) (export "dynCall_v" (func $dynCall_v)) (export "dynCall_vi" (func $dynCall_vi)) @@ -88,53 +88,23 @@ (get_local $0) ) ) - (func $stackSave (; 7 ;) (result i32) - (i32.load offset=4 - (i32.const 0) - ) - ) - (func $stackAlloc (; 8 ;) (param $0 i32) (result i32) - (local $1 i32) - (set_local $1 - (i32.load offset=4 - (i32.const 0) - ) - ) - (i32.store offset=4 - (i32.const 0) - (i32.and - (i32.sub - (get_local $1) - (get_local $0) - ) - (i32.const -16) - ) - ) - (get_local $1) - ) - (func $stackRestore (; 9 ;) (param $0 i32) - (i32.store offset=4 - (i32.const 0) - (get_local $0) - ) - ) - (func $__wasm_nullptr (; 10 ;) (type $FUNCSIG$v) + (func $__wasm_nullptr (; 7 ;) (type $FUNCSIG$v) (unreachable) ) - (func $__importThunk_extern_fd (; 11 ;) (type $FUNCSIG$fd) (param $0 f64) (result f32) + (func $__importThunk_extern_fd (; 8 ;) (type $FUNCSIG$fd) (param $0 f64) (result f32) (call $extern_fd (get_local $0) ) ) - (func $__importThunk_extern_vj (; 12 ;) (type $FUNCSIG$vj) (param $0 i64) + (func $__importThunk_extern_vj (; 9 ;) (type $FUNCSIG$vj) (param $0 i64) (call $extern_vj (get_local $0) ) ) - (func $__importThunk_extern_v (; 13 ;) (type $FUNCSIG$v) + (func $__importThunk_extern_v (; 10 ;) (type $FUNCSIG$v) (call $extern_v) ) - (func $__importThunk_extern_ijidf (; 14 ;) (type $FUNCSIG$ijidf) (param $0 i64) (param $1 i32) (param $2 f64) (param $3 f32) (result i32) + (func $__importThunk_extern_ijidf (; 11 ;) (type $FUNCSIG$ijidf) (param $0 i64) (param $1 i32) (param $2 f64) (param $3 f32) (result i32) (call $extern_ijidf (get_local $0) (get_local $1) @@ -142,16 +112,46 @@ (get_local $3) ) ) - (func $__importThunk_extern_struct (; 15 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $__importThunk_extern_struct (; 12 ;) (type $FUNCSIG$vi) (param $0 i32) (call $extern_struct (get_local $0) ) ) - (func $__importThunk_extern_sret (; 16 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $__importThunk_extern_sret (; 13 ;) (type $FUNCSIG$vi) (param $0 i32) (call $extern_sret (get_local $0) ) ) + (func $stackSave (; 14 ;) (result i32) + (i32.load offset=4 + (i32.const 0) + ) + ) + (func $stackAlloc (; 15 ;) (param $0 i32) (result i32) + (local $1 i32) + (set_local $1 + (i32.load offset=4 + (i32.const 0) + ) + ) + (i32.store offset=4 + (i32.const 0) + (i32.and + (i32.sub + (get_local $1) + (get_local $0) + ) + (i32.const -16) + ) + ) + (get_local $1) + ) + (func $stackRestore (; 16 ;) (param $0 i32) + (i32.store offset=4 + (i32.const 0) + (get_local $0) + ) + ) (func $dynCall_fd (; 17 ;) (param $fptr i32) (param $0 f64) (result f32) (call_indirect (type $FUNCSIG$fd) (get_local $0) diff --git a/test/llvm_autogenerated/irreducible-cfg.wast b/test/llvm_autogenerated/irreducible-cfg.wast index e05ffaa33..0e9c7a3f2 100644 --- a/test/llvm_autogenerated/irreducible-cfg.wast +++ b/test/llvm_autogenerated/irreducible-cfg.wast @@ -2,11 +2,11 @@ (import "env" "memory" (memory $0 1)) (table 0 anyfunc) (data (i32.const 4) "\10\04\00\00") + (export "test0" (func $test0)) + (export "test1" (func $test1)) (export "stackSave" (func $stackSave)) (export "stackAlloc" (func $stackAlloc)) (export "stackRestore" (func $stackRestore)) - (export "test0" (func $test0)) - (export "test1" (func $test1)) (func $test0 (; 0 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (local $4 f64) (local $5 i32) diff --git a/test/llvm_autogenerated/legalize.wast b/test/llvm_autogenerated/legalize.wast index baef6f3b0..bc4b31728 100644 --- a/test/llvm_autogenerated/legalize.wast +++ b/test/llvm_autogenerated/legalize.wast @@ -5,15 +5,15 @@ (import "env" "memory" (memory $0 1)) (table 0 anyfunc) (data (i32.const 4) "\10\04\00\00") - (export "stackSave" (func $stackSave)) - (export "stackAlloc" (func $stackAlloc)) - (export "stackRestore" (func $stackRestore)) (export "shl_i3" (func $shl_i3)) (export "shl_i53" (func $shl_i53)) (export "sext_in_reg_i32_i64" (func $sext_in_reg_i32_i64)) (export "fpext_f32_f64" (func $fpext_f32_f64)) (export "fpconv_f64_f32" (func $fpconv_f64_f32)) (export "bigshift" (func $bigshift)) + (export "stackSave" (func $stackSave)) + (export "stackAlloc" (func $stackAlloc)) + (export "stackRestore" (func $stackRestore)) (func $shl_i3 (; 2 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (return (i32.shl diff --git a/test/llvm_autogenerated/load-ext.wast b/test/llvm_autogenerated/load-ext.wast index 326af4280..f40690f7a 100644 --- a/test/llvm_autogenerated/load-ext.wast +++ b/test/llvm_autogenerated/load-ext.wast @@ -2,9 +2,6 @@ (import "env" "memory" (memory $0 1)) (table 0 anyfunc) (data (i32.const 4) "\10\04\00\00") - (export "stackSave" (func $stackSave)) - (export "stackAlloc" (func $stackAlloc)) - (export "stackRestore" (func $stackRestore)) (export "sext_i8_i32" (func $sext_i8_i32)) (export "zext_i8_i32" (func $zext_i8_i32)) (export "sext_i16_i32" (func $sext_i16_i32)) @@ -15,6 +12,9 @@ (export "zext_i16_i64" (func $zext_i16_i64)) (export "sext_i32_i64" (func $sext_i32_i64)) (export "zext_i32_i64" (func $zext_i32_i64)) + (export "stackSave" (func $stackSave)) + (export "stackAlloc" (func $stackAlloc)) + (export "stackRestore" (func $stackRestore)) (func $sext_i8_i32 (; 0 ;) (param $0 i32) (result i32) (return (i32.load8_s diff --git a/test/llvm_autogenerated/load-store-i1.wast b/test/llvm_autogenerated/load-store-i1.wast index 0cdd16c43..c7b671300 100644 --- a/test/llvm_autogenerated/load-store-i1.wast +++ b/test/llvm_autogenerated/load-store-i1.wast @@ -2,15 +2,15 @@ (import "env" "memory" (memory $0 1)) (table 0 anyfunc) (data (i32.const 4) "\10\04\00\00") - (export "stackSave" (func $stackSave)) - (export "stackAlloc" (func $stackAlloc)) - (export "stackRestore" (func $stackRestore)) (export "load_u_i1_i32" (func $load_u_i1_i32)) (export "load_s_i1_i32" (func $load_s_i1_i32)) (export "load_u_i1_i64" (func $load_u_i1_i64)) (export "load_s_i1_i64" (func $load_s_i1_i64)) (export "store_i32_i1" (func $store_i32_i1)) (export "store_i64_i1" (func $store_i64_i1)) + (export "stackSave" (func $stackSave)) + (export "stackAlloc" (func $stackAlloc)) + (export "stackRestore" (func $stackRestore)) (func $load_u_i1_i32 (; 0 ;) (param $0 i32) (result i32) (return (i32.load8_u diff --git a/test/llvm_autogenerated/load.wast b/test/llvm_autogenerated/load.wast index 8dadeae3c..173ca3a37 100644 --- a/test/llvm_autogenerated/load.wast +++ b/test/llvm_autogenerated/load.wast @@ -2,13 +2,13 @@ (import "env" "memory" (memory $0 1)) (table 0 anyfunc) (data (i32.const 4) "\10\04\00\00") - (export "stackSave" (func $stackSave)) - (export "stackAlloc" (func $stackAlloc)) - (export "stackRestore" (func $stackRestore)) (export "ldi32" (func $ldi32)) (export "ldi64" (func $ldi64)) (export "ldf32" (func $ldf32)) (export "ldf64" (func $ldf64)) + (export "stackSave" (func $stackSave)) + (export "stackAlloc" (func $stackAlloc)) + (export "stackRestore" (func $stackRestore)) (func $ldi32 (; 0 ;) (param $0 i32) (result i32) (return (i32.load diff --git a/test/llvm_autogenerated/lower-em-ehsjlj-options.wast b/test/llvm_autogenerated/lower-em-ehsjlj-options.wast index 6fc2a9b56..001cbc427 100644 --- a/test/llvm_autogenerated/lower-em-ehsjlj-options.wast +++ b/test/llvm_autogenerated/lower-em-ehsjlj-options.wast @@ -18,13 +18,13 @@ (data (i32.const 12) "\00\00\00\00") (data (i32.const 16) "\00\00\00\00") (data (i32.const 20) "\00\00\00\00") - (export "stackSave" (func $stackSave)) - (export "stackAlloc" (func $stackAlloc)) - (export "stackRestore" (func $stackRestore)) (export "exception" (func $exception)) (export "setjmp_longjmp" (func $setjmp_longjmp)) (export "setThrew" (func $setThrew)) (export "setTempRet0" (func $setTempRet0)) + (export "stackSave" (func $stackSave)) + (export "stackAlloc" (func $stackAlloc)) + (export "stackRestore" (func $stackRestore)) (export "dynCall_v" (func $dynCall_v)) (func $exception (; 7 ;) (local $0 i32) @@ -108,12 +108,18 @@ (get_local $0) ) ) - (func $stackSave (; 11 ;) (result i32) + (func $__wasm_nullptr (; 11 ;) (type $FUNCSIG$v) + (unreachable) + ) + (func $__importThunk_foo (; 12 ;) (type $FUNCSIG$v) + (call $foo) + ) + (func $stackSave (; 13 ;) (result i32) (i32.load offset=4 (i32.const 0) ) ) - (func $stackAlloc (; 12 ;) (param $0 i32) (result i32) + (func $stackAlloc (; 14 ;) (param $0 i32) (result i32) (local $1 i32) (set_local $1 (i32.load offset=4 @@ -132,18 +138,12 @@ ) (get_local $1) ) - (func $stackRestore (; 13 ;) (param $0 i32) + (func $stackRestore (; 15 ;) (param $0 i32) (i32.store offset=4 (i32.const 0) (get_local $0) ) ) - (func $__wasm_nullptr (; 14 ;) (type $FUNCSIG$v) - (unreachable) - ) - (func $__importThunk_foo (; 15 ;) (type $FUNCSIG$v) - (call $foo) - ) (func $dynCall_v (; 16 ;) (param $fptr i32) (call_indirect (type $FUNCSIG$v) (get_local $fptr) diff --git a/test/llvm_autogenerated/mem-intrinsics.wast b/test/llvm_autogenerated/mem-intrinsics.wast index 9bd187713..65ab6a7b9 100644 --- a/test/llvm_autogenerated/mem-intrinsics.wast +++ b/test/llvm_autogenerated/mem-intrinsics.wast @@ -10,9 +10,6 @@ (import "env" "memory" (memory $0 1)) (table 0 anyfunc) (data (i32.const 4) "\10\04\00\00") - (export "stackSave" (func $stackSave)) - (export "stackAlloc" (func $stackAlloc)) - (export "stackRestore" (func $stackRestore)) (export "copy_yes" (func $copy_yes)) (export "copy_no" (func $copy_no)) (export "move_yes" (func $move_yes)) @@ -22,6 +19,9 @@ (export "frame_index" (func $frame_index)) (export "drop_result" (func $drop_result)) (export "tail_dup_to_reuse_result" (func $tail_dup_to_reuse_result)) + (export "stackSave" (func $stackSave)) + (export "stackAlloc" (func $stackAlloc)) + (export "stackRestore" (func $stackRestore)) (func $copy_yes (; 5 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (return (call $memcpy diff --git a/test/llvm_autogenerated/memory-addr32.wast b/test/llvm_autogenerated/memory-addr32.wast index b5559c2bf..180551efa 100644 --- a/test/llvm_autogenerated/memory-addr32.wast +++ b/test/llvm_autogenerated/memory-addr32.wast @@ -2,11 +2,11 @@ (import "env" "memory" (memory $0 1)) (table 0 anyfunc) (data (i32.const 4) "\10\04\00\00") + (export "current_memory" (func $current_memory)) + (export "grow_memory" (func $grow_memory)) (export "stackSave" (func $stackSave)) (export "stackAlloc" (func $stackAlloc)) (export "stackRestore" (func $stackRestore)) - (export "current_memory" (func $current_memory)) - (export "grow_memory" (func $grow_memory)) (func $current_memory (; 0 ;) (result i32) (return (current_memory) diff --git a/test/llvm_autogenerated/negative-base-reg.wast b/test/llvm_autogenerated/negative-base-reg.wast index cc6c2b855..bcac0cc1e 100644 --- a/test/llvm_autogenerated/negative-base-reg.wast +++ b/test/llvm_autogenerated/negative-base-reg.wast @@ -2,10 +2,10 @@ (import "env" "memory" (memory $0 1)) (table 0 anyfunc) (data (i32.const 4) "\90\04\00\00") + (export "main" (func $main)) (export "stackSave" (func $stackSave)) (export "stackAlloc" (func $stackAlloc)) (export "stackRestore" (func $stackRestore)) - (export "main" (func $main)) (func $main (; 0 ;) (result i32) (local $0 i32) (set_local $0 diff --git a/test/llvm_autogenerated/offset.wast b/test/llvm_autogenerated/offset.wast index 53180f8e8..00fa47e43 100644 --- a/test/llvm_autogenerated/offset.wast +++ b/test/llvm_autogenerated/offset.wast @@ -3,9 +3,6 @@ (table 0 anyfunc) (data (i32.const 4) "\10\04\00\00") (data (i32.const 12) "\00\00\00\00") - (export "stackSave" (func $stackSave)) - (export "stackAlloc" (func $stackAlloc)) - (export "stackRestore" (func $stackRestore)) (export "load_i32_with_folded_offset" (func $load_i32_with_folded_offset)) (export "load_i32_with_folded_gep_offset" (func $load_i32_with_folded_gep_offset)) (export "load_i32_with_unfolded_gep_negative_offset" (func $load_i32_with_unfolded_gep_negative_offset)) @@ -41,6 +38,9 @@ (export "aggregate_load_store" (func $aggregate_load_store)) (export "aggregate_return" (func $aggregate_return)) (export "aggregate_return_without_merge" (func $aggregate_return_without_merge)) + (export "stackSave" (func $stackSave)) + (export "stackAlloc" (func $stackAlloc)) + (export "stackRestore" (func $stackRestore)) (func $load_i32_with_folded_offset (; 0 ;) (param $0 i32) (result i32) (i32.load offset=24 (get_local $0) diff --git a/test/llvm_autogenerated/phi.wast b/test/llvm_autogenerated/phi.wast index 2cd3645b4..7ece876cf 100644 --- a/test/llvm_autogenerated/phi.wast +++ b/test/llvm_autogenerated/phi.wast @@ -2,11 +2,11 @@ (import "env" "memory" (memory $0 1)) (table 0 anyfunc) (data (i32.const 4) "\10\04\00\00") + (export "test0" (func $test0)) + (export "test1" (func $test1)) (export "stackSave" (func $stackSave)) (export "stackAlloc" (func $stackAlloc)) (export "stackRestore" (func $stackRestore)) - (export "test0" (func $test0)) - (export "test1" (func $test1)) (func $test0 (; 0 ;) (param $0 i32) (result i32) (block $label$0 (br_if $label$0 diff --git a/test/llvm_autogenerated/reg-stackify.wast b/test/llvm_autogenerated/reg-stackify.wast index 6a490cc7f..7a06425c1 100644 --- a/test/llvm_autogenerated/reg-stackify.wast +++ b/test/llvm_autogenerated/reg-stackify.wast @@ -21,9 +21,6 @@ (table 0 anyfunc) (data (i32.const 4) "\10\04\00\00") (data (i32.const 12) "\00\00\00\00") - (export "stackSave" (func $stackSave)) - (export "stackAlloc" (func $stackAlloc)) - (export "stackRestore" (func $stackRestore)) (export "no0" (func $no0)) (export "no1" (func $no1)) (export "yes0" (func $yes0)) @@ -49,6 +46,9 @@ (export "stackify_indvar" (func $stackify_indvar)) (export "stackpointer_dependency" (func $stackpointer_dependency)) (export "call_indirect_stackify" (func $call_indirect_stackify)) + (export "stackSave" (func $stackSave)) + (export "stackAlloc" (func $stackAlloc)) + (export "stackRestore" (func $stackRestore)) (func $no0 (; 12 ;) (param $0 i32) (param $1 i32) (result i32) (set_local $1 (i32.load diff --git a/test/llvm_autogenerated/return-int32.wast b/test/llvm_autogenerated/return-int32.wast index bb5ae4919..bca1fd03b 100644 --- a/test/llvm_autogenerated/return-int32.wast +++ b/test/llvm_autogenerated/return-int32.wast @@ -2,11 +2,11 @@ (import "env" "memory" (memory $0 1)) (table 0 anyfunc) (data (i32.const 4) "\10\04\00\00") + (export "return_i32" (func $return_i32)) + (export "return_i32_twice" (func $return_i32_twice)) (export "stackSave" (func $stackSave)) (export "stackAlloc" (func $stackAlloc)) (export "stackRestore" (func $stackRestore)) - (export "return_i32" (func $return_i32)) - (export "return_i32_twice" (func $return_i32_twice)) (func $return_i32 (; 0 ;) (param $0 i32) (result i32) (get_local $0) ) diff --git a/test/llvm_autogenerated/return-void.wast b/test/llvm_autogenerated/return-void.wast index 2c62acc79..98f45583e 100644 --- a/test/llvm_autogenerated/return-void.wast +++ b/test/llvm_autogenerated/return-void.wast @@ -2,11 +2,11 @@ (import "env" "memory" (memory $0 1)) (table 0 anyfunc) (data (i32.const 4) "\10\04\00\00") + (export "return_void" (func $return_void)) + (export "return_void_twice" (func $return_void_twice)) (export "stackSave" (func $stackSave)) (export "stackAlloc" (func $stackAlloc)) (export "stackRestore" (func $stackRestore)) - (export "return_void" (func $return_void)) - (export "return_void_twice" (func $return_void_twice)) (func $return_void (; 0 ;) ) (func $return_void_twice (; 1 ;) (param $0 i32) diff --git a/test/llvm_autogenerated/select.wast b/test/llvm_autogenerated/select.wast index 6d116c9d2..6af2dd312 100644 --- a/test/llvm_autogenerated/select.wast +++ b/test/llvm_autogenerated/select.wast @@ -2,9 +2,6 @@ (import "env" "memory" (memory $0 1)) (table 0 anyfunc) (data (i32.const 4) "\10\04\00\00") - (export "stackSave" (func $stackSave)) - (export "stackAlloc" (func $stackAlloc)) - (export "stackRestore" (func $stackRestore)) (export "select_i32_bool" (func $select_i32_bool)) (export "select_i32_eq" (func $select_i32_eq)) (export "select_i32_ne" (func $select_i32_ne)) @@ -17,6 +14,9 @@ (export "select_f64_bool" (func $select_f64_bool)) (export "select_f64_eq" (func $select_f64_eq)) (export "select_f64_ne" (func $select_f64_ne)) + (export "stackSave" (func $stackSave)) + (export "stackAlloc" (func $stackAlloc)) + (export "stackRestore" (func $stackRestore)) (func $select_i32_bool (; 0 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (return (select diff --git a/test/llvm_autogenerated/signext-zeroext.wast b/test/llvm_autogenerated/signext-zeroext.wast index a99e7b870..a3a48cd6b 100644 --- a/test/llvm_autogenerated/signext-zeroext.wast +++ b/test/llvm_autogenerated/signext-zeroext.wast @@ -2,13 +2,13 @@ (import "env" "memory" (memory $0 1)) (table 0 anyfunc) (data (i32.const 4) "\10\04\00\00") - (export "stackSave" (func $stackSave)) - (export "stackAlloc" (func $stackAlloc)) - (export "stackRestore" (func $stackRestore)) (export "z2s_func" (func $z2s_func)) (export "s2z_func" (func $s2z_func)) (export "z2s_call" (func $z2s_call)) (export "s2z_call" (func $s2z_call)) + (export "stackSave" (func $stackSave)) + (export "stackAlloc" (func $stackAlloc)) + (export "stackRestore" (func $stackRestore)) (func $z2s_func (; 0 ;) (param $0 i32) (result i32) (return (i32.shr_s diff --git a/test/llvm_autogenerated/store-trunc.wast b/test/llvm_autogenerated/store-trunc.wast index 0d5bd3149..61b82a41e 100644 --- a/test/llvm_autogenerated/store-trunc.wast +++ b/test/llvm_autogenerated/store-trunc.wast @@ -2,14 +2,14 @@ (import "env" "memory" (memory $0 1)) (table 0 anyfunc) (data (i32.const 4) "\10\04\00\00") - (export "stackSave" (func $stackSave)) - (export "stackAlloc" (func $stackAlloc)) - (export "stackRestore" (func $stackRestore)) (export "trunc_i8_i32" (func $trunc_i8_i32)) (export "trunc_i16_i32" (func $trunc_i16_i32)) (export "trunc_i8_i64" (func $trunc_i8_i64)) (export "trunc_i16_i64" (func $trunc_i16_i64)) (export "trunc_i32_i64" (func $trunc_i32_i64)) + (export "stackSave" (func $stackSave)) + (export "stackAlloc" (func $stackAlloc)) + (export "stackRestore" (func $stackRestore)) (func $trunc_i8_i32 (; 0 ;) (param $0 i32) (param $1 i32) (i32.store8 (get_local $0) diff --git a/test/llvm_autogenerated/store.wast b/test/llvm_autogenerated/store.wast index d3d64189b..2de1adcb9 100644 --- a/test/llvm_autogenerated/store.wast +++ b/test/llvm_autogenerated/store.wast @@ -2,13 +2,13 @@ (import "env" "memory" (memory $0 1)) (table 0 anyfunc) (data (i32.const 4) "\10\04\00\00") - (export "stackSave" (func $stackSave)) - (export "stackAlloc" (func $stackAlloc)) - (export "stackRestore" (func $stackRestore)) (export "sti32" (func $sti32)) (export "sti64" (func $sti64)) (export "stf32" (func $stf32)) (export "stf64" (func $stf64)) + (export "stackSave" (func $stackSave)) + (export "stackAlloc" (func $stackAlloc)) + (export "stackRestore" (func $stackRestore)) (func $sti32 (; 0 ;) (param $0 i32) (param $1 i32) (i32.store (get_local $0) diff --git a/test/llvm_autogenerated/switch.wast b/test/llvm_autogenerated/switch.wast index 5c3de8651..7ea6adf7e 100644 --- a/test/llvm_autogenerated/switch.wast +++ b/test/llvm_autogenerated/switch.wast @@ -9,11 +9,11 @@ (import "env" "memory" (memory $0 1)) (table 0 anyfunc) (data (i32.const 4) "\10\04\00\00") + (export "bar32" (func $bar32)) + (export "bar64" (func $bar64)) (export "stackSave" (func $stackSave)) (export "stackAlloc" (func $stackAlloc)) (export "stackRestore" (func $stackRestore)) - (export "bar32" (func $bar32)) - (export "bar64" (func $bar64)) (func $bar32 (; 6 ;) (param $0 i32) (block $label$0 (br_if $label$0 diff --git a/test/llvm_autogenerated/unreachable.wast b/test/llvm_autogenerated/unreachable.wast index bd5a2ffd1..fc44c2362 100644 --- a/test/llvm_autogenerated/unreachable.wast +++ b/test/llvm_autogenerated/unreachable.wast @@ -4,12 +4,12 @@ (import "env" "memory" (memory $0 1)) (table 0 anyfunc) (data (i32.const 4) "\10\04\00\00") - (export "stackSave" (func $stackSave)) - (export "stackAlloc" (func $stackAlloc)) - (export "stackRestore" (func $stackRestore)) (export "f1" (func $f1)) (export "f2" (func $f2)) (export "f3" (func $f3)) + (export "stackSave" (func $stackSave)) + (export "stackAlloc" (func $stackAlloc)) + (export "stackRestore" (func $stackRestore)) (func $f1 (; 1 ;) (result i32) (call $abort) (unreachable) diff --git a/test/llvm_autogenerated/unused-argument.wast b/test/llvm_autogenerated/unused-argument.wast index 339b13549..d0382d354 100644 --- a/test/llvm_autogenerated/unused-argument.wast +++ b/test/llvm_autogenerated/unused-argument.wast @@ -4,12 +4,12 @@ (import "env" "memory" (memory $0 1)) (table 0 anyfunc) (data (i32.const 4) "\10\04\00\00") - (export "stackSave" (func $stackSave)) - (export "stackAlloc" (func $stackAlloc)) - (export "stackRestore" (func $stackRestore)) (export "unused_first" (func $unused_first)) (export "unused_second" (func $unused_second)) (export "call_something" (func $call_something)) + (export "stackSave" (func $stackSave)) + (export "stackAlloc" (func $stackAlloc)) + (export "stackRestore" (func $stackRestore)) (func $unused_first (; 1 ;) (param $0 i32) (param $1 i32) (result i32) (return (get_local $1) diff --git a/test/llvm_autogenerated/userstack.wast b/test/llvm_autogenerated/userstack.wast index a8ff3b076..4fa702b0e 100644 --- a/test/llvm_autogenerated/userstack.wast +++ b/test/llvm_autogenerated/userstack.wast @@ -6,9 +6,6 @@ (import "env" "memory" (memory $0 1)) (table 0 anyfunc) (data (i32.const 4) "\10\04\00\00") - (export "stackSave" (func $stackSave)) - (export "stackAlloc" (func $stackAlloc)) - (export "stackRestore" (func $stackRestore)) (export "alloca32" (func $alloca32)) (export "alloca3264" (func $alloca3264)) (export "allocarray" (func $allocarray)) @@ -23,6 +20,9 @@ (export "frameaddress_0" (func $frameaddress_0)) (export "frameaddress_1" (func $frameaddress_1)) (export "inline_asm" (func $inline_asm)) + (export "stackSave" (func $stackSave)) + (export "stackAlloc" (func $stackAlloc)) + (export "stackRestore" (func $stackRestore)) (func $alloca32 (; 3 ;) (local $0 i32) (i32.store offset=4 diff --git a/test/llvm_autogenerated/varargs.wast b/test/llvm_autogenerated/varargs.wast index 428433b65..df3ac3e74 100644 --- a/test/llvm_autogenerated/varargs.wast +++ b/test/llvm_autogenerated/varargs.wast @@ -5,9 +5,6 @@ (import "env" "memory" (memory $0 1)) (table 0 anyfunc) (data (i32.const 4) "\10\04\00\00") - (export "stackSave" (func $stackSave)) - (export "stackAlloc" (func $stackAlloc)) - (export "stackRestore" (func $stackRestore)) (export "start" (func $start)) (export "end" (func $end)) (export "copy" (func $copy)) @@ -17,6 +14,9 @@ (export "caller_none" (func $caller_none)) (export "caller_some" (func $caller_some)) (export "startbb" (func $startbb)) + (export "stackSave" (func $stackSave)) + (export "stackAlloc" (func $stackAlloc)) + (export "stackRestore" (func $stackRestore)) (func $start (; 1 ;) (param $0 i32) (param $1 i32) (i32.store (get_local $0) |