Skip to content

Instantly share code, notes, and snippets.

@eholk
Created January 12, 2017 00:33
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save eholk/098eb194392bb04d80db561fe228c849 to your computer and use it in GitHub Desktop.
Save eholk/098eb194392bb04d80db561fe228c849 to your computer and use it in GitHub Desktop.
// beginning a Binaryen API trace
#include <math.h>
#include <map>
#include "src/binaryen-c.h"
int main() {
std::map<size_t, BinaryenFunctionTypeRef> functionTypes;
std::map<size_t, BinaryenExpressionRef> expressions;
std::map<size_t, BinaryenFunctionRef> functions;
std::map<size_t, RelooperBlockRef> relooperBlocks;
BinaryenModuleRef the_module = NULL;
RelooperRef the_relooper = NULL;
the_module = BinaryenModuleCreate();
expressions[size_t(NULL)] = BinaryenExpressionRef(NULL);
BinaryenModuleAutoDrop(the_module);
{
const char* segments[] = { 0 };
BinaryenExpressionRef segmentOffsets[] = { 0 };
BinaryenIndex segmentSizes[] = { 0 };
BinaryenSetMemory(the_module, 256, 256, "memory", segments, segmentOffsets, segmentSizes, 0);
}
the_relooper = RelooperCreate();
expressions[1] = BinaryenGetLocal(the_module, 0, 1);
expressions[2] = BinaryenSetLocal(the_module, 1, expressions[1]);
expressions[3] = BinaryenGetLocal(the_module, 1, 1);
expressions[4] = BinaryenSetLocal(the_module, 4, expressions[3]);
expressions[5] = BinaryenGetLocal(the_module, 4, 1);
expressions[6] = BinaryenConst(the_module, BinaryenLiteralInt32(0));
expressions[7] = BinaryenBinary(the_module, 15, expressions[5], expressions[6]);
expressions[8] = BinaryenSetLocal(the_module, 3, expressions[7]);
{
BinaryenExpressionRef children[] = { expressions[2], expressions[4], expressions[8] };
expressions[9] = BinaryenBlock(the_module, "bb0", children, 3);
}
relooperBlocks[0] = RelooperAddBlock(the_relooper, expressions[9]);
expressions[10] = BinaryenConst(the_module, BinaryenLiteralInt32(1));
expressions[11] = BinaryenSetLocal(the_module, 2, expressions[10]);
{
BinaryenExpressionRef children[] = { expressions[11] };
expressions[12] = BinaryenBlock(the_module, "bb1", children, 1);
}
relooperBlocks[1] = RelooperAddBlock(the_relooper, expressions[12]);
expressions[13] = BinaryenConst(the_module, BinaryenLiteralInt32(0));
expressions[14] = BinaryenSetLocal(the_module, 2, expressions[13]);
{
BinaryenExpressionRef children[] = { expressions[14] };
expressions[15] = BinaryenBlock(the_module, "bb2", children, 1);
}
relooperBlocks[2] = RelooperAddBlock(the_relooper, expressions[15]);
expressions[16] = BinaryenGetLocal(the_module, 1, 1);
expressions[17] = BinaryenSetLocal(the_module, 6, expressions[16]);
expressions[18] = BinaryenGetLocal(the_module, 6, 1);
expressions[19] = BinaryenConst(the_module, BinaryenLiteralInt32(1));
expressions[20] = BinaryenBinary(the_module, 15, expressions[18], expressions[19]);
expressions[21] = BinaryenSetLocal(the_module, 5, expressions[20]);
{
BinaryenExpressionRef children[] = { expressions[17], expressions[21] };
expressions[22] = BinaryenBlock(the_module, "bb3", children, 2);
}
relooperBlocks[3] = RelooperAddBlock(the_relooper, expressions[22]);
{
BinaryenExpressionRef children[] = { 0 };
expressions[23] = BinaryenBlock(the_module, "bb4", children, 0);
}
relooperBlocks[4] = RelooperAddBlock(the_relooper, expressions[23]);
expressions[24] = BinaryenGetLocal(the_module, 1, 1);
expressions[25] = BinaryenSetLocal(the_module, 7, expressions[24]);
expressions[26] = BinaryenGetLocal(the_module, 7, 1);
expressions[27] = BinaryenSetLocal(the_module, 17, expressions[26]);
{
BinaryenExpressionRef children[] = { expressions[25], expressions[27] };
expressions[28] = BinaryenBlock(the_module, "bb5", children, 2);
}
relooperBlocks[5] = RelooperAddBlock(the_relooper, expressions[28]);
expressions[29] = BinaryenGetLocal(the_module, 1, 1);
expressions[30] = BinaryenSetLocal(the_module, 10, expressions[29]);
expressions[31] = BinaryenGetLocal(the_module, 10, 1);
expressions[32] = BinaryenConst(the_module, BinaryenLiteralInt32(1));
expressions[33] = BinaryenUnary(the_module, 22, expressions[31]);
expressions[34] = BinaryenUnary(the_module, 22, expressions[32]);
expressions[35] = BinaryenBinary(the_module, 26, expressions[33], expressions[34]);
expressions[36] = BinaryenSetLocal(the_module, 20, expressions[35]);
expressions[37] = BinaryenGetLocal(the_module, 20, 2);
expressions[38] = BinaryenUnary(the_module, 24, expressions[37]);
expressions[39] = BinaryenConst(the_module, BinaryenLiteralInt64(32));
expressions[40] = BinaryenGetLocal(the_module, 20, 2);
expressions[41] = BinaryenBinary(the_module, 36, expressions[40], expressions[39]);
expressions[42] = BinaryenUnary(the_module, 24, expressions[41]);
expressions[43] = BinaryenConst(the_module, BinaryenLiteralInt32(0));
expressions[44] = BinaryenLoad(the_module, 4, 0, 0, 0, 1, expressions[43]);
expressions[45] = BinaryenConst(the_module, BinaryenLiteralInt32(64));
expressions[46] = BinaryenBinary(the_module, 1, expressions[44], expressions[45]);
expressions[47] = BinaryenTeeLocal(the_module, 11, expressions[46]);
expressions[48] = BinaryenStore(the_module, 4, 0, 0, expressions[43], expressions[47], 1);
expressions[49] = BinaryenGetLocal(the_module, 11, 1);
expressions[50] = BinaryenStore(the_module, 4, 0, 0, expressions[49], expressions[38], 1);
expressions[51] = BinaryenStore(the_module, 4, 4, 0, expressions[49], expressions[42], 1);
{
BinaryenExpressionRef children[] = { expressions[30], expressions[36], expressions[48], expressions[50], expressions[51] };
expressions[52] = BinaryenBlock(the_module, "bb6", children, 5);
}
relooperBlocks[6] = RelooperAddBlock(the_relooper, expressions[52]);
expressions[53] = BinaryenGetLocal(the_module, 11, 1);
expressions[54] = BinaryenLoad(the_module, 4, 0, 0, 0, 1, expressions[53]);
expressions[55] = BinaryenSetLocal(the_module, 9, expressions[54]);
expressions[56] = BinaryenGetLocal(the_module, 9, 1);
{
BinaryenExpressionRef operands[] = { expressions[56] };
expressions[57] = BinaryenCall(the_module, "fibonacci_recursive", operands, 1, 1);
}
expressions[58] = BinaryenSetLocal(the_module, 8, expressions[57]);
{
BinaryenExpressionRef children[] = { expressions[55], expressions[58] };
expressions[59] = BinaryenBlock(the_module, "bb7", children, 2);
}
relooperBlocks[7] = RelooperAddBlock(the_relooper, expressions[59]);
expressions[60] = BinaryenGetLocal(the_module, 1, 1);
expressions[61] = BinaryenSetLocal(the_module, 14, expressions[60]);
expressions[62] = BinaryenGetLocal(the_module, 14, 1);
expressions[63] = BinaryenConst(the_module, BinaryenLiteralInt32(2));
expressions[64] = BinaryenUnary(the_module, 22, expressions[62]);
expressions[65] = BinaryenUnary(the_module, 22, expressions[63]);
expressions[66] = BinaryenBinary(the_module, 26, expressions[64], expressions[65]);
expressions[67] = BinaryenSetLocal(the_module, 20, expressions[66]);
expressions[68] = BinaryenGetLocal(the_module, 20, 2);
expressions[69] = BinaryenUnary(the_module, 24, expressions[68]);
expressions[70] = BinaryenConst(the_module, BinaryenLiteralInt64(32));
expressions[71] = BinaryenGetLocal(the_module, 20, 2);
expressions[72] = BinaryenBinary(the_module, 36, expressions[71], expressions[70]);
expressions[73] = BinaryenUnary(the_module, 24, expressions[72]);
expressions[74] = BinaryenConst(the_module, BinaryenLiteralInt32(0));
expressions[75] = BinaryenLoad(the_module, 4, 0, 0, 0, 1, expressions[74]);
expressions[76] = BinaryenConst(the_module, BinaryenLiteralInt32(64));
expressions[77] = BinaryenBinary(the_module, 1, expressions[75], expressions[76]);
expressions[78] = BinaryenTeeLocal(the_module, 15, expressions[77]);
expressions[79] = BinaryenStore(the_module, 4, 0, 0, expressions[74], expressions[78], 1);
expressions[80] = BinaryenGetLocal(the_module, 15, 1);
expressions[81] = BinaryenStore(the_module, 4, 0, 0, expressions[80], expressions[69], 1);
expressions[82] = BinaryenStore(the_module, 4, 4, 0, expressions[80], expressions[73], 1);
{
BinaryenExpressionRef children[] = { expressions[61], expressions[67], expressions[79], expressions[81], expressions[82] };
expressions[83] = BinaryenBlock(the_module, "bb8", children, 5);
}
relooperBlocks[8] = RelooperAddBlock(the_relooper, expressions[83]);
expressions[84] = BinaryenGetLocal(the_module, 15, 1);
expressions[85] = BinaryenLoad(the_module, 4, 0, 0, 0, 1, expressions[84]);
expressions[86] = BinaryenSetLocal(the_module, 13, expressions[85]);
expressions[87] = BinaryenGetLocal(the_module, 13, 1);
{
BinaryenExpressionRef operands[] = { expressions[87] };
expressions[88] = BinaryenCall(the_module, "fibonacci_recursive", operands, 1, 1);
}
expressions[89] = BinaryenSetLocal(the_module, 12, expressions[88]);
{
BinaryenExpressionRef children[] = { expressions[86], expressions[89] };
expressions[90] = BinaryenBlock(the_module, "bb9", children, 2);
}
relooperBlocks[9] = RelooperAddBlock(the_relooper, expressions[90]);
expressions[91] = BinaryenGetLocal(the_module, 8, 1);
expressions[92] = BinaryenGetLocal(the_module, 12, 1);
expressions[93] = BinaryenUnary(the_module, 22, expressions[91]);
expressions[94] = BinaryenUnary(the_module, 22, expressions[92]);
expressions[95] = BinaryenBinary(the_module, 25, expressions[93], expressions[94]);
expressions[96] = BinaryenSetLocal(the_module, 20, expressions[95]);
expressions[97] = BinaryenGetLocal(the_module, 20, 2);
expressions[98] = BinaryenUnary(the_module, 24, expressions[97]);
expressions[99] = BinaryenConst(the_module, BinaryenLiteralInt64(32));
expressions[100] = BinaryenGetLocal(the_module, 20, 2);
expressions[101] = BinaryenBinary(the_module, 36, expressions[100], expressions[99]);
expressions[102] = BinaryenUnary(the_module, 24, expressions[101]);
expressions[103] = BinaryenConst(the_module, BinaryenLiteralInt32(0));
expressions[104] = BinaryenLoad(the_module, 4, 0, 0, 0, 1, expressions[103]);
expressions[105] = BinaryenConst(the_module, BinaryenLiteralInt32(64));
expressions[106] = BinaryenBinary(the_module, 1, expressions[104], expressions[105]);
expressions[107] = BinaryenTeeLocal(the_module, 16, expressions[106]);
expressions[108] = BinaryenStore(the_module, 4, 0, 0, expressions[103], expressions[107], 1);
expressions[109] = BinaryenGetLocal(the_module, 16, 1);
expressions[110] = BinaryenStore(the_module, 4, 0, 0, expressions[109], expressions[98], 1);
expressions[111] = BinaryenStore(the_module, 4, 4, 0, expressions[109], expressions[102], 1);
{
BinaryenExpressionRef children[] = { expressions[96], expressions[108], expressions[110], expressions[111] };
expressions[112] = BinaryenBlock(the_module, "bb10", children, 4);
}
relooperBlocks[10] = RelooperAddBlock(the_relooper, expressions[112]);
expressions[113] = BinaryenGetLocal(the_module, 16, 1);
expressions[114] = BinaryenLoad(the_module, 4, 0, 0, 0, 1, expressions[113]);
expressions[115] = BinaryenSetLocal(the_module, 17, expressions[114]);
{
BinaryenExpressionRef children[] = { expressions[115] };
expressions[116] = BinaryenBlock(the_module, "bb11", children, 1);
}
relooperBlocks[11] = RelooperAddBlock(the_relooper, expressions[116]);
expressions[117] = BinaryenGetLocal(the_module, 18, 1);
expressions[118] = BinaryenConst(the_module, BinaryenLiteralInt32(0));
expressions[119] = BinaryenStore(the_module, 4, 0, 0, expressions[118], expressions[117], 1);
expressions[120] = BinaryenGetLocal(the_module, 17, 1);
expressions[121] = BinaryenReturn(the_module, expressions[120]);
{
BinaryenExpressionRef children[] = { expressions[119], expressions[121] };
expressions[122] = BinaryenBlock(the_module, "bb12", children, 2);
}
relooperBlocks[12] = RelooperAddBlock(the_relooper, expressions[122]);
expressions[123] = BinaryenGetLocal(the_module, 3, 1);
RelooperAddBranch(relooperBlocks[0], relooperBlocks[1], expressions[123], expressions[0]);
RelooperAddBranch(relooperBlocks[0], relooperBlocks[3], expressions[0], expressions[0]);
RelooperAddBranch(relooperBlocks[1], relooperBlocks[4], expressions[0], expressions[0]);
RelooperAddBranch(relooperBlocks[2], relooperBlocks[4], expressions[0], expressions[0]);
expressions[124] = BinaryenGetLocal(the_module, 5, 1);
RelooperAddBranch(relooperBlocks[3], relooperBlocks[1], expressions[124], expressions[0]);
RelooperAddBranch(relooperBlocks[3], relooperBlocks[2], expressions[0], expressions[0]);
expressions[125] = BinaryenGetLocal(the_module, 2, 1);
RelooperAddBranch(relooperBlocks[4], relooperBlocks[5], expressions[125], expressions[0]);
RelooperAddBranch(relooperBlocks[4], relooperBlocks[6], expressions[0], expressions[0]);
RelooperAddBranch(relooperBlocks[5], relooperBlocks[12], expressions[0], expressions[0]);
RelooperAddBranch(relooperBlocks[6], relooperBlocks[7], expressions[0], expressions[0]);
RelooperAddBranch(relooperBlocks[7], relooperBlocks[8], expressions[0], expressions[0]);
RelooperAddBranch(relooperBlocks[8], relooperBlocks[9], expressions[0], expressions[0]);
RelooperAddBranch(relooperBlocks[9], relooperBlocks[10], expressions[0], expressions[0]);
RelooperAddBranch(relooperBlocks[10], relooperBlocks[11], expressions[0], expressions[0]);
RelooperAddBranch(relooperBlocks[11], relooperBlocks[12], expressions[0], expressions[0]);
{
BinaryenIndex paramTypes[] = { 1 };
functionTypes[0] = BinaryenAddFunctionType(the_module, "rustfn-0-2", 1, paramTypes, 1);
}
expressions[126] = BinaryenConst(the_module, BinaryenLiteralInt32(0));
expressions[127] = BinaryenLoad(the_module, 4, 0, 0, 0, 1, expressions[126]);
expressions[128] = BinaryenSetLocal(the_module, 18, expressions[127]);
relooperBlocks[13] = RelooperAddBlock(the_relooper, expressions[128]);
RelooperAddBranch(relooperBlocks[13], relooperBlocks[0], expressions[0], expressions[0]);
expressions[129] = RelooperRenderAndDispose(the_relooper, relooperBlocks[13], 19, the_module);
{
BinaryenType varTypes[] = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2 };
functions[0] = BinaryenAddFunction(the_module, "fibonacci_recursive", functionTypes[0], varTypes, 20, expressions[129]);
}
BinaryenAddExport(the_module, "fibonacci_recursive", "fibonacci_recursive");
the_relooper = RelooperCreate();
{
BinaryenExpressionRef children[] = { 0 };
expressions[130] = BinaryenBlock(the_module, "bb0", children, 0);
}
relooperBlocks[0] = RelooperAddBlock(the_relooper, expressions[130]);
{
BinaryenExpressionRef children[] = { 0 };
expressions[131] = BinaryenBlock(the_module, "bb1", children, 0);
}
relooperBlocks[1] = RelooperAddBlock(the_relooper, expressions[131]);
RelooperAddBranch(relooperBlocks[0], relooperBlocks[1], expressions[0], expressions[0]);
RelooperAddBranch(relooperBlocks[1], relooperBlocks[1], expressions[0], expressions[0]);
{
BinaryenIndex paramTypes[] = { 0 };
functionTypes[1] = BinaryenAddFunctionType(the_module, "rustfn-0-4", 0, paramTypes, 0);
}
expressions[132] = BinaryenUnreachable(the_module);
{
BinaryenType varTypes[] = { 1, 1, 2 };
functions[1] = BinaryenAddFunction(the_module, "panic", functionTypes[1], varTypes, 3, expressions[132]);
}
the_relooper = RelooperCreate();
expressions[133] = BinaryenConst(the_module, BinaryenLiteralInt32(10));
{
BinaryenExpressionRef operands[] = { expressions[133] };
expressions[134] = BinaryenCall(the_module, "fibonacci_recursive", operands, 1, 1);
}
expressions[135] = BinaryenSetLocal(the_module, 0, expressions[134]);
{
BinaryenExpressionRef children[] = { expressions[135] };
expressions[136] = BinaryenBlock(the_module, "bb0", children, 1);
}
relooperBlocks[2] = RelooperAddBlock(the_relooper, expressions[136]);
expressions[137] = BinaryenGetLocal(the_module, 0, 1);
expressions[138] = BinaryenSetLocal(the_module, 3, expressions[137]);
expressions[139] = BinaryenGetLocal(the_module, 3, 1);
expressions[140] = BinaryenConst(the_module, BinaryenLiteralInt32(55));
expressions[141] = BinaryenBinary(the_module, 15, expressions[139], expressions[140]);
expressions[142] = BinaryenSetLocal(the_module, 2, expressions[141]);
expressions[143] = BinaryenGetLocal(the_module, 2, 1);
expressions[144] = BinaryenUnary(the_module, 20, expressions[143]);
expressions[145] = BinaryenSetLocal(the_module, 1, expressions[144]);
{
BinaryenExpressionRef children[] = { expressions[138], expressions[142], expressions[145] };
expressions[146] = BinaryenBlock(the_module, "bb1", children, 3);
}
relooperBlocks[3] = RelooperAddBlock(the_relooper, expressions[146]);
{
BinaryenExpressionRef operands[] = { 0 };
expressions[147] = BinaryenCall(the_module, "panic", operands, 0, 1);
}
expressions[148] = BinaryenUnreachable(the_module);
{
BinaryenExpressionRef children[] = { expressions[147], expressions[148] };
expressions[149] = BinaryenBlock(the_module, "bb2", children, 2);
}
relooperBlocks[4] = RelooperAddBlock(the_relooper, expressions[149]);
expressions[150] = BinaryenGetLocal(the_module, 4, 1);
expressions[151] = BinaryenConst(the_module, BinaryenLiteralInt32(0));
expressions[152] = BinaryenStore(the_module, 4, 0, 0, expressions[151], expressions[150], 1);
expressions[153] = BinaryenReturn(the_module, expressions[0]);
{
BinaryenExpressionRef children[] = { expressions[152], expressions[153] };
expressions[154] = BinaryenBlock(the_module, "bb3", children, 2);
}
relooperBlocks[5] = RelooperAddBlock(the_relooper, expressions[154]);
RelooperAddBranch(relooperBlocks[2], relooperBlocks[3], expressions[0], expressions[0]);
expressions[155] = BinaryenGetLocal(the_module, 1, 1);
RelooperAddBranch(relooperBlocks[3], relooperBlocks[4], expressions[155], expressions[0]);
RelooperAddBranch(relooperBlocks[3], relooperBlocks[5], expressions[0], expressions[0]);
{
BinaryenIndex paramTypes[] = { 0 };
functionTypes[2] = BinaryenAddFunctionType(the_module, "rustfn-0-5", 0, paramTypes, 0);
}
expressions[156] = BinaryenConst(the_module, BinaryenLiteralInt32(0));
expressions[157] = BinaryenLoad(the_module, 4, 0, 0, 0, 1, expressions[156]);
expressions[158] = BinaryenSetLocal(the_module, 4, expressions[157]);
relooperBlocks[6] = RelooperAddBlock(the_relooper, expressions[158]);
RelooperAddBranch(relooperBlocks[6], relooperBlocks[2], expressions[0], expressions[0]);
expressions[159] = RelooperRenderAndDispose(the_relooper, relooperBlocks[6], 5, the_module);
{
BinaryenType varTypes[] = { 1, 1, 1, 1, 1, 1, 2 };
functions[2] = BinaryenAddFunction(the_module, "main", functionTypes[2], varTypes, 7, expressions[159]);
}
BinaryenAddExport(the_module, "main", "main");
{
BinaryenIndex paramTypes[] = { 0 };
functionTypes[3] = BinaryenAddFunctionType(the_module, "__wasm_start", 0, paramTypes, 0);
}
{
const char* segments[] = { 0 };
BinaryenExpressionRef segmentOffsets[] = { 0 };
BinaryenIndex segmentSizes[] = { 0 };
BinaryenSetMemory(the_module, 1024, 1024, NULL, segments, segmentOffsets, segmentSizes, 0);
}
expressions[160] = BinaryenConst(the_module, BinaryenLiteralInt32(65535));
expressions[161] = BinaryenConst(the_module, BinaryenLiteralInt32(0));
expressions[162] = BinaryenStore(the_module, 4, 0, 0, expressions[161], expressions[160], 1);
{
BinaryenExpressionRef operands[] = { 0 };
expressions[163] = BinaryenCall(the_module, "main", operands, 0, 0);
}
{
BinaryenExpressionRef children[] = { expressions[162], expressions[163] };
expressions[164] = BinaryenBlock(the_module, NULL, children, 2);
}
BinaryenAddExport(the_module, "__wasm_start", "rust_entry");
{
BinaryenType varTypes[] = { 0 };
functions[3] = BinaryenAddFunction(the_module, "__wasm_start", functionTypes[3], varTypes, 0, expressions[164]);
}
BinaryenSetStart(the_module, functions[3]);
the_relooper = RelooperCreate();
expressions[165] = BinaryenGetLocal(the_module, 0, 1);
expressions[166] = BinaryenSetLocal(the_module, 2, expressions[165]);
expressions[167] = BinaryenGetLocal(the_module, 1, 1);
expressions[168] = BinaryenSetLocal(the_module, 3, expressions[167]);
expressions[169] = BinaryenGetLocal(the_module, 2, 1);
expressions[170] = BinaryenSetLocal(the_module, 4, expressions[169]);
expressions[171] = BinaryenGetLocal(the_module, 3, 1);
expressions[172] = BinaryenSetLocal(the_module, 5, expressions[171]);
expressions[173] = BinaryenGetLocal(the_module, 4, 1);
expressions[174] = BinaryenGetLocal(the_module, 5, 1);
expressions[175] = BinaryenBinary(the_module, 15, expressions[173], expressions[174]);
expressions[176] = BinaryenSetLocal(the_module, 6, expressions[175]);
{
BinaryenExpressionRef children[] = { expressions[166], expressions[168], expressions[170], expressions[172], expressions[176] };
expressions[177] = BinaryenBlock(the_module, "bb0", children, 5);
}
relooperBlocks[0] = RelooperAddBlock(the_relooper, expressions[177]);
expressions[178] = BinaryenGetLocal(the_module, 7, 1);
expressions[179] = BinaryenConst(the_module, BinaryenLiteralInt32(0));
expressions[180] = BinaryenStore(the_module, 4, 0, 0, expressions[179], expressions[178], 1);
expressions[181] = BinaryenGetLocal(the_module, 6, 1);
expressions[182] = BinaryenReturn(the_module, expressions[181]);
{
BinaryenExpressionRef children[] = { expressions[180], expressions[182] };
expressions[183] = BinaryenBlock(the_module, "bb1", children, 2);
}
relooperBlocks[1] = RelooperAddBlock(the_relooper, expressions[183]);
RelooperAddBranch(relooperBlocks[0], relooperBlocks[1], expressions[0], expressions[0]);
{
BinaryenIndex paramTypes[] = { 1, 1 };
functionTypes[4] = BinaryenAddFunctionType(the_module, "rustfn-0-19", 1, paramTypes, 2);
}
expressions[184] = BinaryenConst(the_module, BinaryenLiteralInt32(0));
expressions[185] = BinaryenLoad(the_module, 4, 0, 0, 0, 1, expressions[184]);
expressions[186] = BinaryenSetLocal(the_module, 7, expressions[185]);
relooperBlocks[2] = RelooperAddBlock(the_relooper, expressions[186]);
RelooperAddBranch(relooperBlocks[2], relooperBlocks[0], expressions[0], expressions[0]);
expressions[187] = RelooperRenderAndDispose(the_relooper, relooperBlocks[2], 8, the_module);
{
BinaryenType varTypes[] = { 1, 1, 1, 1, 1, 1, 1, 2 };
functions[4] = BinaryenAddFunction(the_module, "_i32_as_PartialEq_::eq", functionTypes[4], varTypes, 8, expressions[187]);
}
BinaryenAddExport(the_module, "_i32_as_PartialEq_::eq", "_i32_as_PartialEq_::eq");
the_relooper = RelooperCreate();
expressions[188] = BinaryenGetLocal(the_module, 0, 1);
expressions[189] = BinaryenSetLocal(the_module, 2, expressions[188]);
expressions[190] = BinaryenGetLocal(the_module, 1, 1);
expressions[191] = BinaryenSetLocal(the_module, 3, expressions[190]);
expressions[192] = BinaryenGetLocal(the_module, 2, 1);
expressions[193] = BinaryenSetLocal(the_module, 4, expressions[192]);
expressions[194] = BinaryenGetLocal(the_module, 3, 1);
expressions[195] = BinaryenSetLocal(the_module, 5, expressions[194]);
expressions[196] = BinaryenGetLocal(the_module, 4, 1);
expressions[197] = BinaryenGetLocal(the_module, 5, 1);
expressions[198] = BinaryenBinary(the_module, 16, expressions[196], expressions[197]);
expressions[199] = BinaryenSetLocal(the_module, 6, expressions[198]);
{
BinaryenExpressionRef children[] = { expressions[189], expressions[191], expressions[193], expressions[195], expressions[199] };
expressions[200] = BinaryenBlock(the_module, "bb0", children, 5);
}
relooperBlocks[0] = RelooperAddBlock(the_relooper, expressions[200]);
expressions[201] = BinaryenGetLocal(the_module, 7, 1);
expressions[202] = BinaryenConst(the_module, BinaryenLiteralInt32(0));
expressions[203] = BinaryenStore(the_module, 4, 0, 0, expressions[202], expressions[201], 1);
expressions[204] = BinaryenGetLocal(the_module, 6, 1);
expressions[205] = BinaryenReturn(the_module, expressions[204]);
{
BinaryenExpressionRef children[] = { expressions[203], expressions[205] };
expressions[206] = BinaryenBlock(the_module, "bb1", children, 2);
}
relooperBlocks[1] = RelooperAddBlock(the_relooper, expressions[206]);
RelooperAddBranch(relooperBlocks[0], relooperBlocks[1], expressions[0], expressions[0]);
expressions[207] = BinaryenConst(the_module, BinaryenLiteralInt32(0));
expressions[208] = BinaryenLoad(the_module, 4, 0, 0, 0, 1, expressions[207]);
expressions[209] = BinaryenSetLocal(the_module, 7, expressions[208]);
relooperBlocks[2] = RelooperAddBlock(the_relooper, expressions[209]);
RelooperAddBranch(relooperBlocks[2], relooperBlocks[0], expressions[0], expressions[0]);
expressions[210] = RelooperRenderAndDispose(the_relooper, relooperBlocks[2], 8, the_module);
{
BinaryenType varTypes[] = { 1, 1, 1, 1, 1, 1, 1, 2 };
functions[5] = BinaryenAddFunction(the_module, "_i32_as_PartialEq_::ne", functionTypes[4], varTypes, 8, expressions[210]);
}
BinaryenAddExport(the_module, "_i32_as_PartialEq_::ne", "_i32_as_PartialEq_::ne");
the_relooper = RelooperCreate();
expressions[211] = BinaryenGetLocal(the_module, 0, 1);
expressions[212] = BinaryenSetLocal(the_module, 2, expressions[211]);
expressions[213] = BinaryenGetLocal(the_module, 1, 1);
expressions[214] = BinaryenSetLocal(the_module, 3, expressions[213]);
expressions[215] = BinaryenGetLocal(the_module, 2, 1);
expressions[216] = BinaryenSetLocal(the_module, 4, expressions[215]);
expressions[217] = BinaryenGetLocal(the_module, 3, 1);
expressions[218] = BinaryenSetLocal(the_module, 5, expressions[217]);
expressions[219] = BinaryenGetLocal(the_module, 4, 1);
expressions[220] = BinaryenGetLocal(the_module, 5, 1);
expressions[221] = BinaryenUnary(the_module, 22, expressions[219]);
expressions[222] = BinaryenUnary(the_module, 22, expressions[220]);
expressions[223] = BinaryenBinary(the_module, 25, expressions[221], expressions[222]);
expressions[224] = BinaryenSetLocal(the_module, 10, expressions[223]);
expressions[225] = BinaryenGetLocal(the_module, 10, 2);
expressions[226] = BinaryenUnary(the_module, 24, expressions[225]);
expressions[227] = BinaryenConst(the_module, BinaryenLiteralInt64(32));
expressions[228] = BinaryenGetLocal(the_module, 10, 2);
expressions[229] = BinaryenBinary(the_module, 36, expressions[228], expressions[227]);
expressions[230] = BinaryenUnary(the_module, 24, expressions[229]);
expressions[231] = BinaryenConst(the_module, BinaryenLiteralInt32(0));
expressions[232] = BinaryenLoad(the_module, 4, 0, 0, 0, 1, expressions[231]);
expressions[233] = BinaryenConst(the_module, BinaryenLiteralInt32(64));
expressions[234] = BinaryenBinary(the_module, 1, expressions[232], expressions[233]);
expressions[235] = BinaryenTeeLocal(the_module, 6, expressions[234]);
expressions[236] = BinaryenStore(the_module, 4, 0, 0, expressions[231], expressions[235], 1);
expressions[237] = BinaryenGetLocal(the_module, 6, 1);
expressions[238] = BinaryenStore(the_module, 4, 0, 0, expressions[237], expressions[226], 1);
expressions[239] = BinaryenStore(the_module, 4, 4, 0, expressions[237], expressions[230], 1);
{
BinaryenExpressionRef children[] = { expressions[212], expressions[214], expressions[216], expressions[218], expressions[224], expressions[236], expressions[238], expressions[239] };
expressions[240] = BinaryenBlock(the_module, "bb0", children, 8);
}
relooperBlocks[0] = RelooperAddBlock(the_relooper, expressions[240]);
expressions[241] = BinaryenGetLocal(the_module, 6, 1);
expressions[242] = BinaryenLoad(the_module, 4, 0, 0, 0, 1, expressions[241]);
expressions[243] = BinaryenSetLocal(the_module, 7, expressions[242]);
expressions[244] = BinaryenGetLocal(the_module, 8, 1);
expressions[245] = BinaryenConst(the_module, BinaryenLiteralInt32(0));
expressions[246] = BinaryenStore(the_module, 4, 0, 0, expressions[245], expressions[244], 1);
expressions[247] = BinaryenGetLocal(the_module, 7, 1);
expressions[248] = BinaryenReturn(the_module, expressions[247]);
{
BinaryenExpressionRef children[] = { expressions[243], expressions[246], expressions[248] };
expressions[249] = BinaryenBlock(the_module, "bb1", children, 3);
}
relooperBlocks[1] = RelooperAddBlock(the_relooper, expressions[249]);
RelooperAddBranch(relooperBlocks[0], relooperBlocks[1], expressions[0], expressions[0]);
{
BinaryenIndex paramTypes[] = { 1, 1 };
functionTypes[5] = BinaryenAddFunctionType(the_module, "rustfn-0-33", 1, paramTypes, 2);
}
expressions[250] = BinaryenConst(the_module, BinaryenLiteralInt32(0));
expressions[251] = BinaryenLoad(the_module, 4, 0, 0, 0, 1, expressions[250]);
expressions[252] = BinaryenSetLocal(the_module, 8, expressions[251]);
relooperBlocks[2] = RelooperAddBlock(the_relooper, expressions[252]);
RelooperAddBranch(relooperBlocks[2], relooperBlocks[0], expressions[0], expressions[0]);
expressions[253] = RelooperRenderAndDispose(the_relooper, relooperBlocks[2], 9, the_module);
{
BinaryenType varTypes[] = { 1, 1, 1, 1, 1, 1, 1, 1, 2 };
functions[6] = BinaryenAddFunction(the_module, "_i32_as_Add_::add", functionTypes[5], varTypes, 9, expressions[253]);
}
BinaryenAddExport(the_module, "_i32_as_Add_::add", "_i32_as_Add_::add");
the_relooper = RelooperCreate();
expressions[254] = BinaryenGetLocal(the_module, 0, 1);
expressions[255] = BinaryenSetLocal(the_module, 2, expressions[254]);
expressions[256] = BinaryenGetLocal(the_module, 1, 1);
expressions[257] = BinaryenSetLocal(the_module, 3, expressions[256]);
expressions[258] = BinaryenGetLocal(the_module, 2, 1);
expressions[259] = BinaryenSetLocal(the_module, 4, expressions[258]);
expressions[260] = BinaryenGetLocal(the_module, 3, 1);
expressions[261] = BinaryenSetLocal(the_module, 5, expressions[260]);
expressions[262] = BinaryenGetLocal(the_module, 4, 1);
expressions[263] = BinaryenGetLocal(the_module, 5, 1);
expressions[264] = BinaryenUnary(the_module, 22, expressions[262]);
expressions[265] = BinaryenUnary(the_module, 22, expressions[263]);
expressions[266] = BinaryenBinary(the_module, 26, expressions[264], expressions[265]);
expressions[267] = BinaryenSetLocal(the_module, 10, expressions[266]);
expressions[268] = BinaryenGetLocal(the_module, 10, 2);
expressions[269] = BinaryenUnary(the_module, 24, expressions[268]);
expressions[270] = BinaryenConst(the_module, BinaryenLiteralInt64(32));
expressions[271] = BinaryenGetLocal(the_module, 10, 2);
expressions[272] = BinaryenBinary(the_module, 36, expressions[271], expressions[270]);
expressions[273] = BinaryenUnary(the_module, 24, expressions[272]);
expressions[274] = BinaryenConst(the_module, BinaryenLiteralInt32(0));
expressions[275] = BinaryenLoad(the_module, 4, 0, 0, 0, 1, expressions[274]);
expressions[276] = BinaryenConst(the_module, BinaryenLiteralInt32(64));
expressions[277] = BinaryenBinary(the_module, 1, expressions[275], expressions[276]);
expressions[278] = BinaryenTeeLocal(the_module, 6, expressions[277]);
expressions[279] = BinaryenStore(the_module, 4, 0, 0, expressions[274], expressions[278], 1);
expressions[280] = BinaryenGetLocal(the_module, 6, 1);
expressions[281] = BinaryenStore(the_module, 4, 0, 0, expressions[280], expressions[269], 1);
expressions[282] = BinaryenStore(the_module, 4, 4, 0, expressions[280], expressions[273], 1);
{
BinaryenExpressionRef children[] = { expressions[255], expressions[257], expressions[259], expressions[261], expressions[267], expressions[279], expressions[281], expressions[282] };
expressions[283] = BinaryenBlock(the_module, "bb0", children, 8);
}
relooperBlocks[0] = RelooperAddBlock(the_relooper, expressions[283]);
expressions[284] = BinaryenGetLocal(the_module, 6, 1);
expressions[285] = BinaryenLoad(the_module, 4, 0, 0, 0, 1, expressions[284]);
expressions[286] = BinaryenSetLocal(the_module, 7, expressions[285]);
expressions[287] = BinaryenGetLocal(the_module, 8, 1);
expressions[288] = BinaryenConst(the_module, BinaryenLiteralInt32(0));
expressions[289] = BinaryenStore(the_module, 4, 0, 0, expressions[288], expressions[287], 1);
expressions[290] = BinaryenGetLocal(the_module, 7, 1);
expressions[291] = BinaryenReturn(the_module, expressions[290]);
{
BinaryenExpressionRef children[] = { expressions[286], expressions[289], expressions[291] };
expressions[292] = BinaryenBlock(the_module, "bb1", children, 3);
}
relooperBlocks[1] = RelooperAddBlock(the_relooper, expressions[292]);
RelooperAddBranch(relooperBlocks[0], relooperBlocks[1], expressions[0], expressions[0]);
{
BinaryenIndex paramTypes[] = { 1, 1 };
functionTypes[6] = BinaryenAddFunctionType(the_module, "rustfn-0-44", 1, paramTypes, 2);
}
expressions[293] = BinaryenConst(the_module, BinaryenLiteralInt32(0));
expressions[294] = BinaryenLoad(the_module, 4, 0, 0, 0, 1, expressions[293]);
expressions[295] = BinaryenSetLocal(the_module, 8, expressions[294]);
relooperBlocks[2] = RelooperAddBlock(the_relooper, expressions[295]);
RelooperAddBranch(relooperBlocks[2], relooperBlocks[0], expressions[0], expressions[0]);
expressions[296] = RelooperRenderAndDispose(the_relooper, relooperBlocks[2], 9, the_module);
{
BinaryenType varTypes[] = { 1, 1, 1, 1, 1, 1, 1, 1, 2 };
functions[7] = BinaryenAddFunction(the_module, "_i32_as_Sub_::sub", functionTypes[6], varTypes, 9, expressions[296]);
}
BinaryenAddExport(the_module, "_i32_as_Sub_::sub", "_i32_as_Sub_::sub");
the_relooper = RelooperCreate();
expressions[297] = BinaryenGetLocal(the_module, 0, 1);
expressions[298] = BinaryenSetLocal(the_module, 2, expressions[297]);
expressions[299] = BinaryenGetLocal(the_module, 1, 1);
expressions[300] = BinaryenSetLocal(the_module, 3, expressions[299]);
expressions[301] = BinaryenGetLocal(the_module, 3, 1);
expressions[302] = BinaryenSetLocal(the_module, 4, expressions[301]);
expressions[303] = BinaryenGetLocal(the_module, 2, 1);
expressions[304] = BinaryenGetLocal(the_module, 4, 1);
expressions[305] = BinaryenUnary(the_module, 22, expressions[303]);
expressions[306] = BinaryenUnary(the_module, 22, expressions[304]);
expressions[307] = BinaryenBinary(the_module, 25, expressions[305], expressions[306]);
expressions[308] = BinaryenSetLocal(the_module, 8, expressions[307]);
expressions[309] = BinaryenGetLocal(the_module, 8, 2);
expressions[310] = BinaryenUnary(the_module, 24, expressions[309]);
expressions[311] = BinaryenConst(the_module, BinaryenLiteralInt64(32));
expressions[312] = BinaryenGetLocal(the_module, 8, 2);
expressions[313] = BinaryenBinary(the_module, 36, expressions[312], expressions[311]);
expressions[314] = BinaryenUnary(the_module, 24, expressions[313]);
expressions[315] = BinaryenConst(the_module, BinaryenLiteralInt32(0));
expressions[316] = BinaryenLoad(the_module, 4, 0, 0, 0, 1, expressions[315]);
expressions[317] = BinaryenConst(the_module, BinaryenLiteralInt32(64));
expressions[318] = BinaryenBinary(the_module, 1, expressions[316], expressions[317]);
expressions[319] = BinaryenTeeLocal(the_module, 5, expressions[318]);
expressions[320] = BinaryenStore(the_module, 4, 0, 0, expressions[315], expressions[319], 1);
expressions[321] = BinaryenGetLocal(the_module, 5, 1);
expressions[322] = BinaryenStore(the_module, 4, 0, 0, expressions[321], expressions[310], 1);
expressions[323] = BinaryenStore(the_module, 4, 4, 0, expressions[321], expressions[314], 1);
{
BinaryenExpressionRef children[] = { expressions[298], expressions[300], expressions[302], expressions[308], expressions[320], expressions[322], expressions[323] };
expressions[324] = BinaryenBlock(the_module, "bb0", children, 7);
}
relooperBlocks[0] = RelooperAddBlock(the_relooper, expressions[324]);
expressions[325] = BinaryenGetLocal(the_module, 5, 1);
expressions[326] = BinaryenLoad(the_module, 4, 0, 0, 0, 1, expressions[325]);
expressions[327] = BinaryenSetLocal(the_module, 2, expressions[326]);
expressions[328] = BinaryenGetLocal(the_module, 6, 1);
expressions[329] = BinaryenConst(the_module, BinaryenLiteralInt32(0));
expressions[330] = BinaryenStore(the_module, 4, 0, 0, expressions[329], expressions[328], 1);
expressions[331] = BinaryenReturn(the_module, expressions[0]);
{
BinaryenExpressionRef children[] = { expressions[327], expressions[330], expressions[331] };
expressions[332] = BinaryenBlock(the_module, "bb1", children, 3);
}
relooperBlocks[1] = RelooperAddBlock(the_relooper, expressions[332]);
RelooperAddBranch(relooperBlocks[0], relooperBlocks[1], expressions[0], expressions[0]);
{
BinaryenIndex paramTypes[] = { 1, 1 };
functionTypes[7] = BinaryenAddFunctionType(the_module, "rustfn-0-53", 0, paramTypes, 2);
}
expressions[333] = BinaryenConst(the_module, BinaryenLiteralInt32(0));
expressions[334] = BinaryenLoad(the_module, 4, 0, 0, 0, 1, expressions[333]);
expressions[335] = BinaryenSetLocal(the_module, 6, expressions[334]);
relooperBlocks[2] = RelooperAddBlock(the_relooper, expressions[335]);
RelooperAddBranch(relooperBlocks[2], relooperBlocks[0], expressions[0], expressions[0]);
expressions[336] = RelooperRenderAndDispose(the_relooper, relooperBlocks[2], 7, the_module);
{
BinaryenType varTypes[] = { 1, 1, 1, 1, 1, 1, 2 };
functions[8] = BinaryenAddFunction(the_module, "_i32_as_AddAssign_::add_assign", functionTypes[7], varTypes, 7, expressions[336]);
}
BinaryenAddExport(the_module, "_i32_as_AddAssign_::add_assign", "_i32_as_AddAssign_::add_assign");
BinaryenModuleValidate(the_module);
BinaryenModuleDispose(the_module);
functionTypes.clear();
expressions.clear();
functions.clear();
relooperBlocks.clear();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment