blob: af2e9cf1bff6e4851f7832000392ddef6958504f [file] [log] [blame]
if (!this.SharedArrayBuffer)
quit(0);
function loadModule_uint16(stdlib, foreign, heap) {
"use asm";
var atomic_add = stdlib.Atomics.add;
var atomic_sub = stdlib.Atomics.sub;
var atomic_and = stdlib.Atomics.and;
var atomic_or = stdlib.Atomics.or;
var atomic_xor = stdlib.Atomics.xor;
var i16a = new stdlib.Uint16Array(heap);
function do_add_i(i) {
i = i|0;
var v = 0;
v = atomic_add(i16a, i>>1, 0x3333)|0;
}
function do_sub_i(i) {
i = i|0;
var v = 0;
v = atomic_sub(i16a, i>>1, 0x3333)|0;
}
function do_and_i(i) {
i = i|0;
var v = 0;
v = atomic_and(i16a, i>>1, 0x3333)|0;
}
function do_or_i(i) {
i = i|0;
var v = 0;
v = atomic_or(i16a, i>>1, 0x3333)|0;
}
function do_xor_i(i) {
i = i|0;
var v = 0;
v = atomic_xor(i16a, i>>1, 0x3333)|0;
}
return { add_i: do_add_i,
sub_i: do_sub_i,
and_i: do_and_i,
or_i: do_or_i,
xor_i: do_xor_i };
}
function test_uint16(heap) {
var i16m = loadModule_uint16(this, {}, heap);
var size = Uint16Array.BYTES_PER_ELEMENT;
i16m.add_i(size*40)
i16m.sub_i(size*40)
i16m.and_i(size*40)
i16m.or_i(size*40)
i16m.xor_i(size*40)
}
var heap = new SharedArrayBuffer(65536);
test_uint16(heap);