blob: bef48f4c22a9629a2541b8e445066f37b9e03358 [file] [log] [blame]
function (global, env, buffer) {
"use asm";
var c = new global.Int32Array(buffer);
var g = new global.Float32Array(buffer);
var fr = global.Math.fround;
var tDP = env.tempDoublePtr | 0;
var ctz32 = env._llvm_cttz_i32;
var h8 = new global.Int8Array(buffer);
var h16 = new global.Int16Array(buffer);
var h32 = new global.Int32Array(buffer);
var hU8 = new global.Uint8Array(buffer);
var hU16 = new global.Uint16Array(buffer);
var hU32 = new global.Uint32Array(buffer);
var hF32 = new global.Float32Array(buffer);
var hF64 = new global.Float64Array(buffer);
var M = 0; // tempRet
function floats(f) {
f = fr(f);
var t = fr(0);
return fr(t + f);
}
function neg(k, p) {
k = k | 0;
p = p | 0;
var n = fr(0);
n = fr(-(c[k >> 2] = p, fr(g[k >> 2])));
return n;
}
function bitcasts(i, f) {
i = i | 0;
f = Math_fround(f);
(h32[tDP >> 2] = i, fr(hF32[tDP >> 2])); // i32->f32
(h32[tDP >> 2] = i, +hF32[tDP >> 2]); // i32->f32, no fround
(hF32[tDP >> 2] = f, h32[tDP >> 2] | 0); // f32->i32
}
function ctzzzz() {
return ctz32(0x1234) | 0;
}
function ub() {
ub(); // emterpreter assertions mode might add some code here
return M | 0;
}
return { floats: floats, getTempRet0: ub };
}