diff options
author | Alon Zakai <alonzakai@gmail.com> | 2012-07-09 18:23:50 -0700 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2012-07-09 18:23:50 -0700 |
commit | 58a4bc170ffbcdb94c6226fe1a947ab0405b62c0 (patch) | |
tree | 377dea913f324fe68c3ae136e7f678889664f805 | |
parent | 6ea2d1851cc6217c32d6621f1bdbc64fb33699ec (diff) |
llvm umul|add intrinsics
-rw-r--r-- | src/library.js | 26 |
1 files changed, 22 insertions, 4 deletions
diff --git a/src/library.js b/src/library.js index 679cdd6d..104b0dc4 100644 --- a/src/library.js +++ b/src/library.js @@ -4772,23 +4772,41 @@ LibraryManager.library = { _ZTIPv: [0], llvm_uadd_with_overflow_i8: function(x, y) { - x = (x>>>0) & 0xff; - y = (y>>>0) & 0xff; + x = x & 0xff; + y = y & 0xff; return { f0: (x+y) & 0xff, f1: x+y > 255 }; }, + llvm_umul_with_overflow_i8: function(x, y) { + x = x & 0xff; + y = y & 0xff; + return { + f0: (x*y) & 0xff, + f1: x*y > 255 + }; + }, + llvm_uadd_with_overflow_i16: function(x, y) { - x = (x>>>0) & 0xffff; - y = (y>>>0) & 0xffff; + x = x & 0xffff; + y = y & 0xffff; return { f0: (x+y) & 0xffff, f1: x+y > 65535 }; }, + llvm_umul_with_overflow_i16: function(x, y) { + x = x & 0xffff; + y = y & 0xffff; + return { + f0: (x*y) & 0xffff, + f1: x*y > 65535 + }; + }, + llvm_uadd_with_overflow_i32: function(x, y) { x = x>>>0; y = y>>>0; |