diff options
author | Alon Zakai <alonzakai@gmail.com> | 2012-01-23 17:32:52 -0800 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2012-01-23 17:32:52 -0800 |
commit | 76a81417feb8297e33ebca5982b90ac9ab3032f0 (patch) | |
tree | 92bbfb56f842dd29f0c00613c9568aca667e8c7e /src/preamble.js | |
parent | 4f33436231371f7fe5402c0c0a22076820aa76b8 (diff) |
unaligned loads and stores for floats and doubles
Diffstat (limited to 'src/preamble.js')
-rw-r--r-- | src/preamble.js | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/src/preamble.js b/src/preamble.js index d86cd745..24359b18 100644 --- a/src/preamble.js +++ b/src/preamble.js @@ -644,6 +644,24 @@ STACK_MAX = STACK_ROOT + TOTAL_STACK; var tempDoublePtr = Runtime.alignMemory(STACK_MAX, 8); var tempDoubleI32 = HEAP32.subarray(tempDoublePtr >> 2); var tempDoubleF64 = new Float64Array(tempDoubleI32.buffer); +var tempDoubleF32 = new Float32Array(tempDoubleI32.buffer); +var tempDoubleI8 = new Int8Array(tempDoubleI32.buffer); +function copyTempFloat(ptr) { // functions, because inlining this code is increases code size too much + tempDoubleI8[0] = HEAP8[ptr]; + tempDoubleI8[1] = HEAP8[ptr+1]; + tempDoubleI8[2] = HEAP8[ptr+2]; + tempDoubleI8[3] = HEAP8[ptr+3]; +} +function copyTempDouble(ptr) { + tempDoubleI8[0] = HEAP8[ptr]; + tempDoubleI8[1] = HEAP8[ptr+1]; + tempDoubleI8[2] = HEAP8[ptr+2]; + tempDoubleI8[3] = HEAP8[ptr+3]; + tempDoubleI8[4] = HEAP8[ptr+4]; + tempDoubleI8[5] = HEAP8[ptr+5]; + tempDoubleI8[6] = HEAP8[ptr+6]; + tempDoubleI8[7] = HEAP8[ptr+7]; +} STACK_MAX = tempDoublePtr + 8; #endif #endif |