| // |
| // Test wasm-only builds. In this case, fastcomp emits code that is |
| // not asm.js, it will only ever run as wasm, and contains special intrinsics for |
| // asm2wasm that map LLVM IR into i64s. |
| // |
| |
| function asm(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 STACKTOP = env.STACKTOP | 0; |
| |
| var fround = global.Math.fround; |
| var Math_imul = global.Math.imul; |
| |
| var illegalImport = env.illegalImport; |
| var illegalImportResult = env.illegalImportResult; |
| |
| var _fabsf = env._fabsf; |
| var do_i64 = env.do_i64; |
| var abort = env.abort; |
| |
| function test64() { |
| var x = i64(), y = i64(), z = 0; // define i64 variables using special intrinsic |
| var int32 = 0, float32 = fround(0), float64 = +0; |
| i64_atomics_store(4656, i64_const(92, 0))|0; |
| x = i64_atomics_load(4656); |
| y = i64_atomics_add(int32, i64_const(26, 0))|0; |
| x = i64_atomics_sub(1024, y)|0; |
| y = i64_atomics_and(1024, x)|0; |
| x = i64_atomics_or(1024, y)|0; |
| y = i64_atomics_xor(1024, x)|0; |
| x = i64_atomics_exchange(1024, y)|0; |
| y = i64_atomics_compareExchange(1024, x, y)|0; |
| return x; |
| } |
| |
| return { test64: test64 }; |
| } |
| |