~ubuntu-branches/ubuntu/vivid/emscripten/vivid

« back to all changes in this revision

Viewing changes to tools/test-js-optimizer-t2.js

  • Committer: Package Import Robot
  • Author(s): Sylvestre Ledru
  • Date: 2013-05-02 13:11:51 UTC
  • Revision ID: package-import@ubuntu.com-20130502131151-q8dvteqr1ef2x7xz
Tags: upstream-1.4.1~20130504~adb56cb
ImportĀ upstreamĀ versionĀ 1.4.1~20130504~adb56cb

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
// TODO also with >> 1 and >> 3
 
2
//      also HEAP*U*, and HEAP8, 16
 
3
function shifty($id2) {
 
4
  // $id is a non-ssa, $id2 is a param. both should be replaced with a shifted version
 
5
  q(HEAP32[$id >> 2]);
 
6
  q(HEAP32[($id + 40) >> 2]);
 
7
  q(HEAP32[($id + 80 | 0) >> 2]);
 
8
  q(HEAP32[(unknown1 + unknown2 + $id) >> 2]);
 
9
  q(HEAP32[(unknown1 + $id + unknown2) >> 2]); // unknowns should be shifted together
 
10
  var localUnchanged1 = get(1), localUnchanged2 = get(1);
 
11
  q(HEAP32[(localUnchanged1 + $id + localUnchanged2) >> 2]); // unknowns should be shifted together
 
12
  q($id >> _something_); // non-fixed shift
 
13
  $id = q('..');
 
14
  q($id << _somethingElse_); // non-fixed shift
 
15
  pause(-1);
 
16
  q(HEAP32[$id2 >> 1]);
 
17
  q(HEAP32[$id2 >> 1]);
 
18
  q(HEAP32[$id2 >> 1]);
 
19
  q(HEAP32[$id2 >> 1]);
 
20
  q(HEAP32[($id2 + 40) >> 1]);
 
21
  q(HEAP32[($id2 + 80 | 0) >> 1]);
 
22
  var $id3 = get(74);
 
23
  q(HEAP32[$id3 >> 3]);
 
24
  q(HEAP32[($id3 + 40) >> 3]);
 
25
  q(HEAP32[($id3 + 80 | 0) >> 3]);
 
26
  q($id3);
 
27
  pause(0);
 
28
  // similar, but inside another HEAP
 
29
  var _idents = get('abc');
 
30
  q(HEAP32[(HEAP32[_idents >> 2] + 8 | 0) >> 2]);
 
31
  q(HEAP32[(HEAP32[_idents >> 2] + 8 | 0) >> 2]);
 
32
  q(HEAP32[(HEAP32[_idents >> 2] + 8 | 0) >> 2]);
 
33
  pause(1);
 
34
  // $i's shifts should consolidate (the last should be 0..?
 
35
  // since we may have had |0 in the middle!)
 
36
  var $sn_addr = get(12), $a_addr = get(999);
 
37
  var $i = get(112233);
 
38
  q(HEAP32[($a_addr + ((($sn_addr - 1 << 1) + 1 | 0) << 2) | 0) >> 2]);
 
39
  q(HEAP32[($a_addr + ((($i - 1 << 1) + 1 | 0) << 2) | 0) >> 2]);
 
40
  q(HEAP32[($a_addr + (($i << 1 | 0) << 2) | 0) >> 2]);
 
41
  q(HEAP32[($a_addr + ($i << 2)) >> 2]);
 
42
  q($a_addr >> 2, z($a_addr >> 2));
 
43
  pause(2);
 
44
  var $level = HEAP[get(322) >> 2]; // ignore this
 
45
  var _dwt_norms_real = get('a'), $orient = get('cheez');
 
46
  q(HEAP32[(_dwt_norms_real + $orient * 80 + ($level << 3) | 0) >> 2]);
 
47
  q(HEAP32[(_dwt_norms_real + $orient * 80 + ($level << 3) + 4 | 0) >> 2]);
 
48
  q(HEAP32[(_dwt_norms_real + $orient * 80 + ($level << 3) + 8 | 0) >> 2]);
 
49
  pause(3);
 
50
  // reuse $a_addr here
 
51
  var $wavelet38 = get(38);
 
52
  $k = $a_addr;
 
53
  q(HEAPF32[(HEAP32[$wavelet38 >> 2] + ($k << 4) + 8 | 0) >> 2]);
 
54
  q(HEAPF32[(HEAP32[$wavelet38 >> 2] + ($k << 4) + 12 | 0) >> 2]);
 
55
  q(HEAPF32[(HEAP32[$wavelet38 >> 2] + ($k << 4) + 400 | 0) >> 2]);
 
56
  pause(4);
 
57
  // reuse $k, which already reuses $a_addr
 
58
  var $p = $k, $parameters_addr = get('burger')
 
59
  q(HEAP32[($parameters_addr + 5624 + ($p << 2) | 0) >> 2]);
 
60
  q(HEAP32[($parameters_addr + 5644 + ($p << 2) | 0) >> 2]);
 
61
  q(HEAP32[($parameters_addr + 5664 + ($p << 2) | 0) >> 2]);
 
62
  pause(5);
 
63
  // loops count as more uses!
 
64
  var $res_spec242 = get($real), $cp = get('b'), $tileno = arguments[2];
 
65
  q(HEAP32[($parameters_addr + 5624 + (($res_spec242 - 1 | 0) << 2) | 0) >> 2]);
 
66
  q(HEAP32[(HEAP32[($cp + 108 | 0) >> 2] + $tileno * 5588 + 420 | 0) >> 2]);
 
67
  pause(6);
 
68
  q($idx << 1 << 2);
 
69
  q(1 << $idx << 1); // Do not turn this into the slower 1 << $idx + 1 (which is identical though)
 
70
  print(INDENT + "Entering: _main" + "hi"); // this order should not be modified
 
71
  pause(7);
 
72
  var $tp = get('tp');
 
73
  q($tp >> 2);
 
74
  q($tp >> 2);
 
75
  q($tp >> 2);
 
76
  HEAP32[$H400] = $tp;
 
77
  HEAP32[$tp] = 5;
 
78
  HEAP32[$tp >> 2] = 5;
 
79
  HEAP32[HEAP[$tp >> 2]] = 5;
 
80
  HEAP32[HEAP[$tp >> 2] >> 2] = 5;
 
81
  pause(7);
 
82
  q(go() >> 1 << 1);
 
83
  q(go() << 1 >> 1);
 
84
  q(go() >> 1 >> 1);
 
85
  q(go() << 1 << 1);
 
86
  q(go() >> 8 << 8);
 
87
  q(go() << 8 >> 8);
 
88
  q(go() >> 8 >> 8);
 
89
  q(go() << 8 << 8);
 
90
  q((go() + 2) >> 2); // the 2 >> 2 can't be simplified
 
91
}
 
92
// EMSCRIPTEN_GENERATED_FUNCTIONS: ["shifty"]