aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2012-07-09 18:23:50 -0700
committerAlon Zakai <alonzakai@gmail.com>2012-07-09 18:23:50 -0700
commit58a4bc170ffbcdb94c6226fe1a947ab0405b62c0 (patch)
tree377dea913f324fe68c3ae136e7f678889664f805
parent6ea2d1851cc6217c32d6621f1bdbc64fb33699ec (diff)
llvm umul|add intrinsics
-rw-r--r--src/library.js26
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;