diff options
author | Alon Zakai <alonzakai@gmail.com> | 2012-02-20 11:44:10 -0800 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2012-02-20 11:44:10 -0800 |
commit | e6c060a3e0d27d75ef0bd1cc742147a198aef83e (patch) | |
tree | afa4397bd391758fb117dc1ad2cf7c79bac3a2ed | |
parent | 2ab6820706ba72f333b710b4c097a745d5ea13a8 (diff) |
generate signed legalized 32-bit chunks
-rw-r--r-- | src/analyzer.js | 2 | ||||
-rwxr-xr-x | tests/runner.py | 24 |
2 files changed, 25 insertions, 1 deletions
diff --git a/src/analyzer.js b/src/analyzer.js index 14a4f7de..593b4650 100644 --- a/src/analyzer.js +++ b/src/analyzer.js @@ -140,7 +140,7 @@ function analyzer(data, sidePass) { var ret = new Array(Math.ceil(bits/32)); var i = 0; while (bits > 0) { - ret[i] = { ident: parsed[i].toString(), bits: Math.min(32, bits) }; + ret[i] = { ident: (parsed[i]|0).toString(), bits: Math.min(32, bits) }; // resign all values bits -= 32; i++; } diff --git a/tests/runner.py b/tests/runner.py index 2a389348..217a34bf 100755 --- a/tests/runner.py +++ b/tests/runner.py @@ -678,6 +678,30 @@ if 'benchmark' not in str(sys.argv) and 'sanity' not in str(sys.argv): self.do_run(src, '*1329409676000000,1329412005509675,3663280683,309527*\n') + def test_i64_cmp(self): + if Settings.USE_TYPED_ARRAYS != 2: return self.skip('full i64 stuff only in ta2') + + src = r''' + #include <stdio.h> + + typedef long long int64; + + bool compare(int64 val) { + return val == -12; + } + + bool compare2(int64 val) { + return val < -12; + } + + int main(int argc, char * argv[]) { + printf("*%d,%d,%d,%d,%d,%d*\n", argc, compare(argc-1-12), compare(1000+argc), compare2(argc-1-10), compare2(argc-1-14), compare2(argc+1000)); + return 0; + } + ''' + + self.do_run(src, '*1,1,0,0,1,0*\n') + def test_unaligned(self): if Settings.QUANTUM_SIZE == 1: return self.skip('No meaning to unaligned addresses in q1') |