summaryrefslogtreecommitdiff
path: root/test/binaryen.js
diff options
context:
space:
mode:
authorDaniel Wirtz <dcode@dcode.io>2017-08-24 18:31:15 +0200
committerAlon Zakai <alonzakai@gmail.com>2017-08-24 09:31:15 -0700
commitb07fafcebebab82dba46012256edc6445862cfce (patch)
treed819f110386bfe6ce3dab4aee6daeefc7f1a81ca /test/binaryen.js
parentac8ee6c9e7c43c80d8fb2c8166fd73f23e212069 (diff)
downloadbinaryen-b07fafcebebab82dba46012256edc6445862cfce.tar.gz
binaryen-b07fafcebebab82dba46012256edc6445862cfce.tar.bz2
binaryen-b07fafcebebab82dba46012256edc6445862cfce.zip
Initial asm.js output for binaryen-c / binaryen.js (#1136)
* Added BinaryenModulePrintAsmjs (using wasm2asm) + Module#emitAsmjs JS binding
Diffstat (limited to 'test/binaryen.js')
-rw-r--r--test/binaryen.js/emit_asmjs.js11
-rw-r--r--test/binaryen.js/emit_asmjs.js.txt62
2 files changed, 73 insertions, 0 deletions
diff --git a/test/binaryen.js/emit_asmjs.js b/test/binaryen.js/emit_asmjs.js
new file mode 100644
index 000000000..6848f5f01
--- /dev/null
+++ b/test/binaryen.js/emit_asmjs.js
@@ -0,0 +1,11 @@
+var module = new Binaryen.Module();
+
+var signature = module.addFunctionType("ii", Binaryen.i32, [ Binaryen.i32 ]);
+
+module.addFunction("main", signature, [], module.getLocal(0, Binaryen.i32));
+
+module.addExport("main", "main");
+
+module.validate(); // should validate before calling emitAsmjs
+
+console.log(module.emitAsmjs());
diff --git a/test/binaryen.js/emit_asmjs.js.txt b/test/binaryen.js/emit_asmjs.js.txt
new file mode 100644
index 000000000..870017763
--- /dev/null
+++ b/test/binaryen.js/emit_asmjs.js.txt
@@ -0,0 +1,62 @@
+function asmFunc(global, env, buffer) {
+ "use asm";
+ 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 Math_imul = global.Math.imul;
+ var Math_fround = global.Math.fround;
+ var Math_abs = global.Math.abs;
+ var Math_clz32 = global.Math.clz32;
+ function main($$0) {
+ $$0 = $$0 | 0;
+ return $$0 | 0;
+ }
+
+ function __wasm_ctz_i32(x) {
+ x = x | 0;
+ var wasm2asm_i32$0 = 0;
+ if ((x | 0) == (0 | 0)) wasm2asm_i32$0 = 32; else wasm2asm_i32$0 = 31 - Math_clz32(x ^ (x - 1 | 0) | 0) | 0;
+ return wasm2asm_i32$0 | 0;
+ }
+
+ function __wasm_popcnt_i32(x) {
+ x = x | 0;
+ var count = 0, wasm2asm_i32$0 = 0;
+ count = 0;
+ b : {
+ l : do {
+ if ((x | 0) == (0 | 0)) {
+ wasm2asm_i32$0 = count;
+ break b;
+ }
+ x = x & (x - 1 | 0) | 0;
+ count = count + 1 | 0;
+ continue l;
+ break l;
+ } while (1);
+ };
+ return wasm2asm_i32$0 | 0;
+ }
+
+ function __wasm_rotl_i32(x, k) {
+ x = x | 0;
+ k = k | 0;
+ return ((4294967295 >>> (k & 31 | 0) | 0) & x | 0) << (k & 31 | 0) | 0 | (((4294967295 << (32 - (k & 31 | 0) | 0) | 0) & x | 0) >>> (32 - (k & 31 | 0) | 0) | 0) | 0 | 0;
+ }
+
+ function __wasm_rotr_i32(x, k) {
+ x = x | 0;
+ k = k | 0;
+ return ((4294967295 << (k & 31 | 0) | 0) & x | 0) >>> (k & 31 | 0) | 0 | (((4294967295 >>> (32 - (k & 31 | 0) | 0) | 0) & x | 0) << (32 - (k & 31 | 0) | 0) | 0) | 0 | 0;
+ }
+
+ return {
+ main: main
+ };
+}
+