]> git.proxmox.com Git - rustc.git/blob - src/binaryen/test/threads.wasm-only.asm.js
New upstream version 1.23.0+dfsg1
[rustc.git] / src / binaryen / test / threads.wasm-only.asm.js
1 //
2 // Test wasm-only builds. In this case, fastcomp emits code that is
3 // not asm.js, it will only ever run as wasm, and contains special intrinsics for
4 // asm2wasm that map LLVM IR into i64s.
5 //
6
7 function asm(global, env, buffer) {
8 "use asm";
9
10 var HEAP8 = new global.Int8Array(buffer);
11 var HEAP16 = new global.Int16Array(buffer);
12 var HEAP32 = new global.Int32Array(buffer);
13 var HEAPU8 = new global.Uint8Array(buffer);
14 var HEAPU16 = new global.Uint16Array(buffer);
15 var HEAPU32 = new global.Uint32Array(buffer);
16 var HEAPF32 = new global.Float32Array(buffer);
17 var HEAPF64 = new global.Float64Array(buffer);
18
19 var STACKTOP = env.STACKTOP | 0;
20
21 var fround = global.Math.fround;
22 var Math_imul = global.Math.imul;
23
24 var illegalImport = env.illegalImport;
25 var illegalImportResult = env.illegalImportResult;
26
27 var _fabsf = env._fabsf;
28 var do_i64 = env.do_i64;
29 var abort = env.abort;
30
31 function test64() {
32 var x = i64(), y = i64(), z = 0; // define i64 variables using special intrinsic
33 var int32 = 0, float32 = fround(0), float64 = +0;
34 i64_atomics_store(4656, i64_const(92, 0))|0;
35 x = i64_atomics_load(4656);
36 y = i64_atomics_add(int32, i64_const(26, 0))|0;
37 x = i64_atomics_sub(1024, y)|0;
38 y = i64_atomics_and(1024, x)|0;
39 x = i64_atomics_or(1024, y)|0;
40 y = i64_atomics_xor(1024, x)|0;
41 x = i64_atomics_exchange(1024, y)|0;
42 y = i64_atomics_compareExchange(1024, x, y)|0;
43 return x;
44 }
45
46 return { test64: test64 };
47 }
48