diff options
Diffstat (limited to 'test/unit.asm.js')
-rw-r--r-- | test/unit.asm.js | 811 |
1 files changed, 0 insertions, 811 deletions
diff --git a/test/unit.asm.js b/test/unit.asm.js deleted file mode 100644 index 405701ee6..000000000 --- a/test/unit.asm.js +++ /dev/null @@ -1,811 +0,0 @@ -function asm(global, env, buffer) { - "use asm"; - - var t = global.NaN, u = global.Infinity; - var Int = 0; - var Double = 0.0; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_ceil = global.Math.ceil; - var Math_max = global.Math.max; - var Math_min = global.Math.min; - var Math_sqrt = global.Math.sqrt; - var tempDoublePtr = env.tempDoublePtr | 0; - var n = env.gb | 0; - var STACKTOP = env.STACKTOP | 0; - var setTempRet0=env.setTempRet0; - - var abort = env.abort; - var print = env.print; - var h = env.h; - var return_int = env.return_int; - var emscripten_log = env.emscripten_log; - - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - - var nonZero = 1337; - - function big_negative() { - var temp = 0.0; - temp = +-2147483648; - temp = -2147483648.0; - temp = -21474836480.0; - temp = 0.039625; - temp = -0.039625; - } - function importedDoubles() { - var temp = 0.0; - temp = t + u + (-u) + (-t); - if ((Int | 0) > 0) return -3.4; - if (Double > 0.0) return 5.6; - return 1.2; - } - function doubleCompares(x, y) { - x = +x; - y = +y; - var t = 0.0; - var Int = 0.0, Double = 0; // confusing with globals - if (x > 0.0) return 1.2; - Int = x; - Double = n; - if (Int > 0.0) return -3.4; - if ((Double|0) > 0) return 5.6; - if (x < y) return +x; - return +y; - } - function intOps(x) { - x = x | 0; - return (!x) | 0; - } - function hexLiterals() { - var i = 0; - i = 0x0 + 0x12ABCdef + 0xFEDcba90 | 0; - } - function conversions(i, d, f) { - i = i | 0; - d = +d; - f = Math_fround(f); - i = ~~d; - i = ~~f; - d = +(i | 0); - d = +(i >>> 0); - } - function seq() { - var J = 0.0; - J = (0.1, 5.1) - (3.2, 4.2); - } - function switcher(x) { - x = x | 0; - var waka = 0; - switch (x | 0) { - case 1: return 1; - case 2: return 2; - } - switch (x | 0) { - case 12: return 121; - case 5: return 51; - } - Lout: switch (x | 0) { - case 12: break; - case 10: break Lout; - case 5: { - while (1) { - break; - } - break; - } - case 2: { - while (1) { - break Lout; - } - break; - } - } - - L1 : while (1) { - L3 : while (1) switch (x | 0) { - case -1: - { - break L1; - break; - } - case 116: - { - waka = 1; - break; - } - case 110: - { - break L3; - break; - } - default: - { - break L1; - } - } - h(120); - } - - return 0; - } - function blocker() { - L: { - break L; - } - } - function frem() { - return +(5.5 % 1.2); - } - function frem_float() { - return Math_fround(Math_fround(5.5) % Math_fround(1.2)); - } - function big_uint_div_u() { - var x = 0; - x = (4294967295 / 2)&-1; - return x | 0; - } - function trapping_sint_div_s() { - var x = 0; - x = (-2147483648 / -1); - return x | 0; - } - function fr(x) { - x = Math_fround(x); - var y = Math_fround(0), z = 0.0; - Math_fround(z); - Math_fround(y); - Math_fround(5); - Math_fround(0); - Math_fround(5.0); - Math_fround(0.0); - } - function negZero() { - return +-0; - } - function abs() { - var x = 0, y = 0.0, z = Math_fround(0); - x = Math_abs(0) | 0; - y = +Math_abs(0.0); - z = Math_fround(Math_abs(Math_fround(0))); - } - function minmax() { - var x = 0.0, y = 0.0, z = Math_fround(0), w = Math_fround(0); - x = +Math_min(+x, +y); - y = +Math_max(+x, +y); - z = Math_fround(Math_min(Math_fround(z), Math_fround(w))); - w = Math_fround(Math_max(Math_fround(z), Math_fround(w))); - } - function neg() { - var x = Math_fround(0); - x = Math_fround(-x); - FUNCTION_TABLE_c[1 & 7](x); - } - function cneg(x) { - x = Math_fround(x); - FUNCTION_TABLE_c[1 & 7](x); - } - function ___syscall_ret() { - var $0 = 0; - ($0>>>0) > 4294963200; // -4096 - } - function smallCompare(i, j) { - i = i | 0; - j = j | 0; - if ((i | 0) < (j | 0)) i = i + 1 | 0; - if ((i >>> 0) < (j >>> 0)) i = i + 1 | 0; - return i | 0; - } - function cneg_nosemicolon() { - FUNCTION_TABLE_vi[1 & 7](1) // no semicolon - } - function forLoop() { - var i = 0; - for (i = 1; (i | 0) < 200; i = i + 1 | 0) { - h(i | 0); - } - } - function ceiling_32_64(u, B) { - u = Math_fround(u); - B = +B; - var temp = Math_fround(0); - temp = Math_fround(Math_ceil(B)); - temp = Math_fround(u * Math_fround(Math_ceil(Math_fround(B)))); - } - function aborts() { - abort(); - abort(55); - abort(); - abort(12.34); - abort(+Math_fround(56.78)); - } - function continues() { - while (1) { - print(1); - do { - print(5); - if (return_int() | 0) continue; - } while (0); - print(2); - } - } - function bitcasts(i, f) { - i = i | 0; - f = Math_fround(f); - var d = 0.0; - (HEAP32[tempDoublePtr >> 2] = i, Math_fround(HEAPF32[tempDoublePtr >> 2])); // i32->f32 - (HEAP32[tempDoublePtr >> 2] = i, +HEAPF32[tempDoublePtr >> 2]); // i32->f32, no fround - (HEAPF32[tempDoublePtr >> 2] = f, HEAP32[tempDoublePtr >> 2] | 0); // f32->i32 - (HEAPF32[tempDoublePtr >> 2] = d, HEAP32[tempDoublePtr >> 2] | 0); // f64 with implict f32 conversion, ->i32 - } - function recursiveBlockMerging(x) { - x = x | 0; - lb((1, x) + (2, 3) + (((4, 5), 6), 7) + (8, (9, (10, (11, 12)))) | 0) | 0; - x = (lb(1) | 0, x) + (lb(2) | 0, lb(3) | 0) + (((lb(4) | 0, lb(5) | 0), lb(6) | 0), lb(7) | 0) + (lb(8) | 0, (lb(9) | 0, (lb(10) | 0, (lb(11) | 0, lb(12) | 0)))) | 0; - return x | 0; - } - - function lb(a) { - a = a | 0; - HEAP32[a >> 2] = n + 136 + 8; - return 0; - } - - function forgetMe() { - 123.456; - } - function exportMe() { - -3.14159; - } - - function zeroInit(x) { - x = x | 0; - var y = 0; // reusing this with x is dangerous - x has a value, and y needs to start at 0! - if (lb(0) | 0) { - if (lb(1) | 0) y = 3; - } else { - y = 3; - } - if ((y | 0) == 3) { - lb(2) | 0; - } - } - - function phi() { - var x = 0; - do { - if (lb(1) | 0) { - x = 0; - break; - } - x = 1; - } while (0); - return x | 0; - } - - function smallIf() { - do { - if (return_int() | 0) { - lb(3) | 0; - } else { - break; - } - } while (0); - } - - function dropCall() { - if (return_int() | 0) { - phi() | 0; // drop this - setTempRet0(10); // this too - zeroInit(setTempRet0(10) | 0); - } - return phi() | 0; - } - - function useGlobalSet() { - var x = 0; - x = (Int = 10); - Int = 20; - return (Int = 30) | 0; - } - - function usesGlobalSet2() { - return (Int = 40, 50) | 0; - } - - function breakThroughMany($s) { - $s = $s|0; - L1: do { - if ($s) { - while(1) { - if (!($s)) { - break L1; - } - zeroInit(0); - } - } else { - 1337; - } - } while(0); - } - - function ifChainEmpty(label) { - label = label | 0; - if ((label|0) == 4) { - return 0; - } - else if ((label|0) == 7) { - // unreachable; - } - return 0; - } - - function heap8NoShift(x) { - x = x | 0; - return HEAP8[x | 0] | 0; - } - - function conditionalTypeFun() { - var x = 0, y = 0.0; - x = return_int() | 0 ? abort(5) | 0 : 2; - y = return_int() | 0 ? +abort(7) : 4.5; - } - - function loadSigned(x) { - x = x | 0; - loadSigned(HEAP8[x >> 0] << 24 >> 24); - loadSigned(HEAPU8[x >> 0] << 24 >> 24); - loadSigned(HEAP16[x >> 1] << 16 >> 16); - loadSigned(HEAPU16[x >> 1] << 16 >> 16); - loadSigned(HEAP8[x >> 0] << 24 >> 16); - loadSigned(HEAPU8[x >> 0] << 16 >> 24); - loadSigned(HEAP16[x >> 1] << 16 >> 24); - loadSigned(HEAPU16[x >> 1] << 24 >> 16); - } - - function z(x) { - x = Math_fround(x); - } - function w() { - return 0.0; - } - - function globalOpts() { - var x = 0, y = 0.0; - x = Int; - y = Double; - HEAP8[13] = HEAP32[3]; // access memory, should not confuse the global writes - Double = y; - Int = x; - globalOpts(); - x = Int; - if (return_int() | 0) Int = 20; // but this does interfere - Int = x; - globalOpts(); - x = Int; - globalOpts(); // this too - Int = x; - } - - function dropCallImport() { - if (return_int() | 0) return_int() | 0; - } - - function loophi(x, y) { - x = x | 0; - y = y | 0; - var temp = 0, inc = 0, loopvar = 0; // this order matters - loopvar = x; - while(1) { - loophi(loopvar | 0, 0); - temp = loopvar; - if (temp) { - if (temp) { - break; - } - } - inc = loopvar + 1 | 0; - if ((inc|0) == (y|0)) { - loopvar = inc; - } else { - break; - } - } - } - - function loophi2() { - var jnc = 0, i = 0, i$lcssa = 0, temp = 0, j = 0; - i = 0; - L7: while(1) { - j = 0; - while(1) { - temp = j; - if (return_int() | 0) { - if (temp) { - i$lcssa = i; - break L7; - } - } - jnc = j + 1 | 0; - if (jnc) { - j = jnc; - } else { - break; - } - } - } - return i$lcssa | 0 - } - - function loophi2b() { - var jnc = 0, i = 0, i$lcssa = 0, temp = 0, j = 0; - i = 0; - L7: while(1) { - j = 0; - while(1) { - temp = j; - if (return_int() | 0) { - if (temp) { - i$lcssa = j; - break L7; - } - } - jnc = j + 1 | 0; - if (jnc) { - j = jnc; - } else { - break; - } - } - } - return i$lcssa | 0 - } - - function relooperJumpThreading(x) { - x = x | 0; - var label = 0; - // from if - if (x) { - h(0); - label = 1; - } - if ((label|0) == 1) { - h(1); - } - h(-1); - // from loop - while (1) { - x = x + 1 | 0; - if (x) { - h(2); - label = 2; - break; - } - } - if ((label|0) == 2) { - h(3); - } - h(-2); - // if-else afterward - if (x) { - h(4); - if ((x|0) == 3) { - label = 3; - } else { - label = 4; - } - } - if ((label|0) == 3) { - h(5); - } else if ((label|0) == 4) { - h(6); - } - h(-3); - // two ifs afterward - if (x) { - h(7); - if ((x|0) == 5) { - label = 5; - } else { - label = 6; - } - } - if ((label|0) == 5) { - h(8); - if ((x|0) == 6) { - label = 6; - } - } - if ((label|0) == 6) { - h(9); - } - h(-4); - // labeled if after - if (x) { - h(10); - label = 7; - } - L1: do { - if ((label|0) == 7) { - h(11); - break L1; - } - } while (0); - h(-5); - // labeled if after normal if - if (x) { - h(12); - if ((x|0) == 8) { - label = 8; - } else { - label = 9; - } - } - if ((label|0) == 8) { - h(13); - if (x) label = 9; - } - L1: do { - if ((label|0) == 9) { - h(14); - break L1; - } - } while (0); - h(-6); - // TODO - // labeled if after a first if - // do-enclosed if after (?) - // test multiple labels, some should be ignored initially by JumpUpdater - return x | 0; - } - - function relooperJumpThreading__ZN4game14preloadweaponsEv($12, $14, $or$cond8, $or$cond6, $vararg_ptr5, $11, $exitcond) { - $12 = $12 | 0; - $14 = $14 | 0; - $or$cond8 = $or$cond8 | 0; - $or$cond6 = $or$cond6 | 0; - $vararg_ptr5 = $vararg_ptr5 | 0; - $11 = $11 | 0; - $exitcond = $exitcond | 0; - var label = 0; - while(1) { - if ($14) { - if ($or$cond8) { - label = 7; - } else { - label = 8; - } - } else { - if ($or$cond6) { - label = 7; - } else { - label = 8; - } - } - if ((label|0) == 7) { - label = 0; - } - else if ((label|0) == 8) { - label = 0; - HEAP32[$vararg_ptr5>>2] = $11; - } - } - } - - function relooperJumpThreading_irreducible(x) { - x = x | 0; - var label = 0; - if ((x|0) == 100) { - label = 1; - } else { - label = 10; - } - if ((label|0) == 1) { - while (1) { - relooperJumpThreading_irreducible(1337); - label = 1; // this is ok - the if means the body of the if begins with the block for 1. so a setting inside the body of the if must return to the top of the if - } - } - // too many settings, we just look one back, so this one will not be optimized - if ((x|0) == 200) { - label = 2; - } else { - label = 10; - } - if ((x|0) == 300) { - label = 2; - } - if ((label|0) == 2) { - relooperJumpThreading_irreducible(1448); - } - if ((label|0) == 10) { - relooperJumpThreading_irreducible(2000); - } - } - - function __Z12multi_varargiz($0, $$06$i4, $exitcond$i6, $2) { - $0 = $0|0; - $$06$i4 = $$06$i4 | 0; - $exitcond$i6 = $exitcond$i6 | 0; - $2 = $2 | 0; - var $12 = 0, $20 = 0; - if ($2) { - while(1) { - $12 = $$06$i4; - if ($exitcond$i6) { - break; - } else { - $$06$i4 = $20; - } - } - } else { - lb(1) | 0; // returns a value, and the while is unreachable - } - } - - function jumpThreadDrop() { - var label = 0, temp = 0; - temp = return_int() | 0; - while (1) { - label = 14; - break; - } - if ((label | 0) == 10) { - } else if ((label | 0) == 12) { - return_int() | 0; // drop in the middle of an if-else chain for threading - } else if ((label | 0) == 14) { - } - return temp | 0; - } - - function dropIgnoredImportInIf($0,$1,$2) { - $0 = $0|0; - $1 = $1|0; - $2 = $2|0; - do { - if ($0) { - $0 = 1; - lb($2 | 0) | 0; - } else { - break; - } - } while(0); - return; - } - - function big_fround() { - return Math_fround(4294967295); - } - - function dropIgnoredImportsInIf($0,$1,$2) { - $0 = $0|0; - $1 = $1|0; - $2 = $2|0; - do { - if ($0) { - lb($1 | 0) | 0; - } else { - lb($2 | 0) | 0; - } - } while(0); - return; - } - - function f32_ucast(x) { - x = x | 0; - return Math_fround(x>>>0); - } - function f32_scast(x) { - x = x | 0; - return Math_fround(x|0); - } - - function store_fround(x) { - x = x | 0; - HEAPF64[10] = Math_fround(x|0); - } - - function relocatableAndModules() { - ftCall_v(10); // function table call - mftCall_v(20); // possible inter-module function table call - return ftCall_idi(30, 1.5, 200) | 0; // with args - } - - function exported_f32_user(x, y, z) { - x = x | 0; - y = Math_fround(y); - z = +z; - return Math_fround(y); - } - - function sqrts(x) { - x = +x; - return +(+Math_sqrt(x) + +Math_fround(Math_sqrt(Math_fround(x)))); - } - - function f2u(x) { - x = +x; - return (~~x>>>0) | 0; - } - function f2s(x) { - x = +x; - return (~~x) | 0; - } - - function autoDrop(x) { - x = x | 0; - while (1) { - if ((x | 0) == 17) { - return 5; - autoDrop(1) | 0; - } else { - break; - x = autoDrop(2) | 0; - } - } - return x | 0; - } - - function indirectInSequence() { - var i1 = 0; - // this indirect call should have the right type, vi - i1 = (FUNCTION_TABLE_vi[1 & 7](0), 1); - } - - function emterpretify_assertions_safeHeap() { - var i1 = 0; - // assignment into the function table param, optimizer can do things there - FUNCTION_TABLE_vi[(Int = 1) & 7](i1 | 0); - } - - function call_emscripten_log() { - // emscripten_log has no return value, don't let the conditional after the comma confuse you - emscripten_log(), 2 ? abort() | 0 : 3; - } - - function mod_detectSign(d1, d2, d8) { - d1 = +d1; - d2 = +d2; - d8 = +d8; - return ~~(d2 - d8 % d1 / d1 * d2); - } - - function keepAlive() { - sqrts(3.14159); - sqrts(2.18281); // don't inline it either - f2u(100.0); - f2s(100.0); - autoDrop(52) | 0; - indirectInSequence(); - emterpretify_assertions_safeHeap(); - call_emscripten_log(); - mod_detectSign(1.0, 2.31, 9.78); - nonZero = nonZero + 1 | 0; - } - - function v() { - } - function vi(x) { - x = x | 0; - } - function ii(x) { - x = x | 0; - return x | 0; - } - - var FUNCTION_TABLE_a = [ v, big_negative, v, v ]; - var FUNCTION_TABLE_b = [ w, w, importedDoubles, w ]; - var FUNCTION_TABLE_c = [ z, cneg, z, z, z, z, z, z ]; - var FUNCTION_TABLE_vi = [ vi, vi, vi, vi, vi, vi, vi, vi ]; - var FUNCTION_TABLE_ii = [ ii ]; - - return { big_negative: big_negative, pick: forgetMe, pick: exportMe, doubleCompares: doubleCompares, intOps: intOps, conversions: conversions, switcher: switcher, frem: frem, frem_float: frem_float, big_uint_div_u: big_uint_div_u, trapping_sint_div_s: trapping_sint_div_s, fr: fr, negZero: negZero, neg: neg, smallCompare: smallCompare, cneg_nosemicolon: cneg_nosemicolon, forLoop: forLoop, ceiling_32_64: ceiling_32_64, aborts: aborts, continues: continues, bitcasts: bitcasts, recursiveBlockMerging: recursiveBlockMerging, lb: lb, zeroInit: zeroInit, phi: phi, smallIf: smallIf, dropCall: dropCall, useGlobalSet: useGlobalSet, usesGlobalSet2: usesGlobalSet2, breakThroughMany: breakThroughMany, ifChainEmpty: ifChainEmpty, heap8NoShift: heap8NoShift, conditionalTypeFun: conditionalTypeFun, loadSigned: loadSigned, globalOpts: globalOpts, dropCallImport: dropCallImport, loophi: loophi, loophi2: loophi2, loophi2b: loophi2b, relooperJumpThreading: relooperJumpThreading, relooperJumpThreading__ZN4game14preloadweaponsEv: relooperJumpThreading__ZN4game14preloadweaponsEv, __Z12multi_varargiz: __Z12multi_varargiz, jumpThreadDrop: jumpThreadDrop, dropIgnoredImportInIf: dropIgnoredImportInIf, dropIgnoredImportsInIf: dropIgnoredImportsInIf, relooperJumpThreading_irreducible: relooperJumpThreading_irreducible, store_fround: store_fround, exportedNumber: 42, relocatableAndModules: relocatableAndModules, exported_f32_user: exported_f32_user, keepAlive: keepAlive }; -} - |