diff options
author | Adrian Taylor <adrian.taylor@realvnc.com> | 2012-05-29 11:43:49 +0100 |
---|---|---|
committer | Adrian Taylor <adrian.taylor@realvnc.com> | 2012-05-31 16:29:26 +0100 |
commit | 60766db449b7ceef9a5f0fecde2b2abf146b5926 (patch) | |
tree | d0284d624fee715f71d7dacb9360a67605b97d89 /src | |
parent | f842201acec3c1edafb2916a76a8eb8d75474c2b (diff) |
Adding LLVM intrinsic llvm_uadd_with_overflow_i16.
With -O1, sometimes LLVM generates code which calls its intrinsic
llvm_uadd_with_overflow_i16, which was previously missing in
emscripten's library.
This commit adds that intrinsic, and also adds a test which
causes LLVM to call that intrinsic (only in 'o1'). This test
previously failed in 'o1' but now passes.
Diffstat (limited to 'src')
-rw-r--r-- | src/library.js | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/src/library.js b/src/library.js index 8d68251f..1cb4dd2a 100644 --- a/src/library.js +++ b/src/library.js @@ -4759,6 +4759,15 @@ LibraryManager.library = { // type_info for void*. _ZTIPv: [0], + llvm_uadd_with_overflow_i16: function(x, y) { + x = (x>>>0) & 0xffff; + y = (y>>>0) & 0xffff; + return { + f0: (x+y) & 0xffff, + f1: x+y > 65535 + }; + }, + llvm_uadd_with_overflow_i32: function(x, y) { x = x>>>0; y = y>>>0; |