Add CoreMark

extensions
Volodymyr Shymanskyy 5 years ago
parent 7da2f963a1
commit fb1b99c497

@ -0,0 +1,35 @@
# CoreMark
The `coremark` files in this directory were produced by:
```sh
$ make compile PORT_DIR=linux CC=emcc EXE=.html XCFLAGS="-O3 --llvm-lto 3 --closure 1"
$ make compile PORT_DIR=linux CC=wasicc EXE=-wasi.wasm XCFLAGS="-Ofast -flto"
```
### Running
```sh
export ENGINES_PATH=/opt/wasm_engines
# WAC => 101.895252
$ENGINES_PATH/wac/wax coremark-wasi.wasm
# wasm-micro-runtime => [fails]
#$ENGINES_PATH/wasm-micro-runtime/core/iwasm/products/linux/build/iwasm coremark-wasi.wasm
# Wasmer => 7126.660188
wasmer run coremark-wasi.wasm
# V8 (Node.js) => 10962.508222
node ./coremark.js
# WAVM => 20273.009866
$ENGINES_PATH/wasm-jit-prototype/_build/bin/wavm run coremark-wasi.wasm
# Native on the same machine => 26704.052340
make compile PORT_DIR=linux64 CC=gcc EXE=.elf XCFLAGS="-O3 -flto"
./coremark.elf
```

File diff suppressed because one or more lines are too long

@ -0,0 +1,19 @@
var b;b||(b=typeof Module !== 'undefined' ? Module : {});var l={},n;for(n in b)b.hasOwnProperty(n)&&(l[n]=b[n]);var p=[],r="./this.program";function t(a,c){throw c;}var u=!1,v=!1,w=!1,ca=!1,da=!1;u="object"===typeof window;v="function"===typeof importScripts;w=(ca="object"===typeof process&&"object"===typeof process.versions&&"string"===typeof process.versions.node)&&!u&&!v;da=!u&&!w&&!v;var x="",B,C;
if(w){x=__dirname+"/";var D,E;B=function(a,c){D||(D=require("fs"));E||(E=require("path"));a=E.normalize(a);a=D.readFileSync(a);return c?a:a.toString()};C=function(a){a=B(a,!0);a.buffer||(a=new Uint8Array(a));a.buffer||F("Assertion failed: undefined");return a};1<process.argv.length&&(r=process.argv[1].replace(/\\/g,"/"));p=process.argv.slice(2);"undefined"!==typeof module&&(module.exports=b);process.on("uncaughtException",function(a){if(!(a instanceof G))throw a;});process.on("unhandledRejection",
F);t=function(a){process.exit(a)};b.inspect=function(){return"[Emscripten Module object]"}}else if(da)"undefined"!=typeof read&&(B=function(a){return read(a)}),C=function(a){if("function"===typeof readbuffer)return new Uint8Array(readbuffer(a));a=read(a,"binary");"object"===typeof a||F("Assertion failed: undefined");return a},"undefined"!=typeof scriptArgs?p=scriptArgs:"undefined"!=typeof arguments&&(p=arguments),"function"===typeof quit&&(t=function(a){quit(a)}),"undefined"!==typeof print&&("undefined"===
typeof console&&(console={}),console.log=print,console.warn=console.error="undefined"!==typeof printErr?printErr:print);else if(u||v)v?x=self.location.href:document.currentScript&&(x=document.currentScript.src),x=0!==x.indexOf("blob:")?x.substr(0,x.lastIndexOf("/")+1):"",B=function(a){var c=new XMLHttpRequest;c.open("GET",a,!1);c.send(null);return c.responseText},v&&(C=function(a){var c=new XMLHttpRequest;c.open("GET",a,!1);c.responseType="arraybuffer";c.send(null);return new Uint8Array(c.response)});
var ea=b.print||console.log.bind(console),H=b.printErr||console.warn.bind(console);for(n in l)l.hasOwnProperty(n)&&(b[n]=l[n]);l=null;b.arguments&&(p=b.arguments);b.thisProgram&&(r=b.thisProgram);b.quit&&(t=b.quit);var I;b.wasmBinary&&(I=b.wasmBinary);var J;b.noExitRuntime&&(J=b.noExitRuntime);"object"!==typeof WebAssembly&&H("no native wasm support detected");var K,fa=new WebAssembly.Table({initial:5,maximum:5,element:"anyfunc"}),L=!1,ha="undefined"!==typeof TextDecoder?new TextDecoder("utf8"):void 0;
"undefined"!==typeof TextDecoder&&new TextDecoder("utf-16le");
function ia(a){for(var c=0,d=0;d<a.length;++d){var e=a.charCodeAt(d);55296<=e&&57343>=e&&(e=65536+((e&1023)<<10)|a.charCodeAt(++d)&1023);127>=e?++c:c=2047>=e?c+2:65535>=e?c+3:c+4}var g=c+1;c=ja(g);d=c;e=ka;if(0<g){g=d+g-1;for(var h=0;h<a.length;++h){var f=a.charCodeAt(h);if(55296<=f&&57343>=f){var k=a.charCodeAt(++h);f=65536+((f&1023)<<10)|k&1023}if(127>=f){if(d>=g)break;e[d++]=f}else{if(2047>=f){if(d+1>=g)break;e[d++]=192|f>>6}else{if(65535>=f){if(d+2>=g)break;e[d++]=224|f>>12}else{if(d+3>=g)break;
e[d++]=240|f>>18;e[d++]=128|f>>12&63}e[d++]=128|f>>6&63}e[d++]=128|f&63}}e[d]=0}return c}var buffer,ka,M,N,O=b.TOTAL_MEMORY||16777216;b.wasmMemory?K=b.wasmMemory:K=new WebAssembly.Memory({initial:O/65536,maximum:O/65536});K&&(buffer=K.buffer);O=buffer.byteLength;var P=buffer;buffer=P;b.HEAP8=ka=new Int8Array(P);b.HEAP16=new Int16Array(P);b.HEAP32=N=new Int32Array(P);b.HEAPU8=M=new Uint8Array(P);b.HEAPU16=new Uint16Array(P);b.HEAPU32=new Uint32Array(P);b.HEAPF32=new Float32Array(P);b.HEAPF64=new Float64Array(P);
N[1292]=5248240;function Q(a){for(;0<a.length;){var c=a.shift();if("function"==typeof c)c();else{var d=c.j;"number"===typeof d?void 0===c.i?b.dynCall_v(d):b.dynCall_vi(d,c.i):d(void 0===c.i?null:c.i)}}}var la=[],ma=[],na=[],oa=[];function pa(){var a=b.preRun.shift();la.unshift(a)}var R=0,S=null,T=null;b.preloadedImages={};b.preloadedAudios={};function F(a){if(b.onAbort)b.onAbort(a);ea(a);H(a);L=!0;throw"abort("+a+"). Build with -s ASSERTIONS=1 for more info.";}
function ta(){var a=U;return String.prototype.startsWith?a.startsWith("data:application/octet-stream;base64,"):0===a.indexOf("data:application/octet-stream;base64,")}var U="coremark.wasm";if(!ta()){var ua=U;U=b.locateFile?b.locateFile(ua,x):x+ua}function va(){try{if(I)return new Uint8Array(I);if(C)return C(U);throw"both async and sync fetching of the wasm failed";}catch(a){F(a)}}
function wa(){return I||!u&&!v||"function"!==typeof fetch?new Promise(function(a){a(va())}):fetch(U,{credentials:"same-origin"}).then(function(a){if(!a.ok)throw"failed to load wasm binary file at '"+U+"'";return a.arrayBuffer()}).catch(function(){return va()})}ma.push({j:function(){xa()}});function V(){F()}var ya=[null,[],[]];
w?V=function(){var a=process.hrtime();return 1E3*a[0]+a[1]/1E6}:"undefined"!==typeof dateNow?V=dateNow:"object"===typeof performance&&performance&&"function"===typeof performance.now?V=function(){return performance.now()}:V=Date.now;
var za={a:function(a,c){if(0===a)a=Date.now();else if(1===a&&(w||"undefined"!==typeof dateNow||"object"===typeof performance&&performance&&"function"===typeof performance.now))a=V();else return b.___errno_location&&(N[b.___errno_location()>>2]=28),-1;N[c>>2]=a/1E3|0;N[c+4>>2]=a%1E3*1E6|0;return 0},b:function(a,c,d){M.set(M.subarray(c,c+d),a)},c:function(){F("OOM")},d:function(a,c,d,e){try{for(var g=0,h=0;h<d;h++){for(var f=N[c+8*h>>2],k=N[c+(8*h+4)>>2],X=0;X<k;X++){var Y=M[f+X],Z=ya[a];if(0===Y||
10===Y){var Da=1===a?ea:H;for(var y=Z,q=0,z=q+void 0,A=q;y[A]&&!(A>=z);)++A;if(16<A-q&&y.subarray&&ha)var qa=ha.decode(y.subarray(q,A));else{for(z="";q<A;){var m=y[q++];if(m&128){var aa=y[q++]&63;if(192==(m&224))z+=String.fromCharCode((m&31)<<6|aa);else{var ra=y[q++]&63;m=224==(m&240)?(m&15)<<12|aa<<6|ra:(m&7)<<18|aa<<12|ra<<6|y[q++]&63;if(65536>m)z+=String.fromCharCode(m);else{var sa=m-65536;z+=String.fromCharCode(55296|sa>>10,56320|sa&1023)}}}else z+=String.fromCharCode(m)}qa=z}Da(qa);Z.length=
0}else Z.push(Y)}g+=k}N[e>>2]=g;return 0}catch(ba){return"undefined"!==typeof FS&&ba instanceof FS.l||F(ba),ba.m}},memory:K,table:fa},Aa=function(){function a(a){b.asm=a.exports;R--;b.monitorRunDependencies&&b.monitorRunDependencies(R);0==R&&(null!==S&&(clearInterval(S),S=null),T&&(a=T,T=null,a()))}function c(c){a(c.instance)}function d(a){return wa().then(function(a){return WebAssembly.instantiate(a,e)}).then(a,function(a){H("failed to asynchronously prepare wasm: "+a);F(a)})}var e={env:za,wasi_unstable:za};
R++;b.monitorRunDependencies&&b.monitorRunDependencies(R);if(b.instantiateWasm)try{return b.instantiateWasm(e,a)}catch(g){return H("Module.instantiateWasm callback failed with error: "+g),!1}(function(){if(I||"function"!==typeof WebAssembly.instantiateStreaming||ta()||"function"!==typeof fetch)return d(c);fetch(U,{credentials:"same-origin"}).then(function(a){return WebAssembly.instantiateStreaming(a,e).then(c,function(a){H("wasm streaming compile failed: "+a);H("falling back to ArrayBuffer instantiation");
d(c)})})})();return{}}();b.asm=Aa;var xa=b.___wasm_call_ctors=function(){return b.asm.e.apply(null,arguments)};b._main=function(){return b.asm.f.apply(null,arguments)};b.___errno_location=function(){return b.asm.g.apply(null,arguments)};var ja=b.stackAlloc=function(){return b.asm.h.apply(null,arguments)};b.asm=Aa;var W;function G(a){this.name="ExitStatus";this.message="Program terminated with exit("+a+")";this.status=a}T=function Ba(){W||Ca();W||(T=Ba)};
function Ca(a){function c(){if(!W&&(W=!0,!L)){Q(ma);Q(na);if(b.onRuntimeInitialized)b.onRuntimeInitialized();if(Ea){var c=a;c=c||[];var e=c.length+1,g=ja(4*(e+1));N[g>>2]=ia(r);for(var h=1;h<e;h++)N[(g>>2)+h]=ia(c[h-1]);N[(g>>2)+e]=0;try{var f=b._main(e,g);if(!J||0!==f){if(!J&&(L=!0,b.onExit))b.onExit(f);t(f,new G(f))}}catch(k){k instanceof G||("SimulateInfiniteLoop"==k?J=!0:((c=k)&&"object"===typeof k&&k.stack&&(c=[k,k.stack]),H("exception thrown: "+c),t(1,k)))}finally{}}if(b.postRun)for("function"==
typeof b.postRun&&(b.postRun=[b.postRun]);b.postRun.length;)c=b.postRun.shift(),oa.unshift(c);Q(oa)}}a=a||p;if(!(0<R)){if(b.preRun)for("function"==typeof b.preRun&&(b.preRun=[b.preRun]);b.preRun.length;)pa();Q(la);0<R||(b.setStatus?(b.setStatus("Running..."),setTimeout(function(){setTimeout(function(){b.setStatus("")},1);c()},1)):c())}}b.run=Ca;if(b.preInit)for("function"==typeof b.preInit&&(b.preInit=[b.preInit]);0<b.preInit.length;)b.preInit.pop()();var Ea=!0;b.noInitialRun&&(Ea=!1);J=!0;Ca();
Loading…
Cancel
Save