|
1 load(libdir + "asm.js"); |
|
2 |
|
3 var body = |
|
4 ' "use asm";\ |
|
5 var i8=new global.Int8Array(buffer);\ |
|
6 function g(i,j,k) {\ |
|
7 i=i|0;\ |
|
8 j=j|0;\ |
|
9 k=k|0;\ |
|
10 var a=0,b=0,c=0,d=0,e=0,f=0;\ |
|
11 a=(i+j)|0;\ |
|
12 b=(k+j)|0;\ |
|
13 c=(i+k)|0;\ |
|
14 b=(a+b)|0;\ |
|
15 d=(b+c+i+j)|0;\ |
|
16 e=(a+j+c)|0;\ |
|
17 f=(a+i+k)|0;\ |
|
18 i8[i] = f;\ |
|
19 return (a+b+c+d+e+f)|0;\ |
|
20 }\ |
|
21 return g;'; |
|
22 |
|
23 var buf=new ArrayBuffer(4096); |
|
24 var g = asmLink(asmCompile('global','foreign','buffer',body), this, null, buf); |
|
25 assertEq(g(1,2,3), 46); |
|
26 assertEq(new Int8Array(buf)[1], 7); |
|
27 |
|
28 var body = |
|
29 ' "use asm";\ |
|
30 var i8=new global.Int8Array(buffer);\ |
|
31 function g(i,j,k) {\ |
|
32 i=i|0;\ |
|
33 j=j|0;\ |
|
34 k=k|0;\ |
|
35 var a=0,b=0,c=0,d=0,e=0,f=0;\ |
|
36 a=(i+j)|0;\ |
|
37 b=(k+j)|0;\ |
|
38 c=(i+k)|0;\ |
|
39 b=(a+b)|0;\ |
|
40 d=(b+c+i+j)|0;\ |
|
41 e=(a+j+c)|0;\ |
|
42 f=(a+i+k)|0;\ |
|
43 i8[i] = e;\ |
|
44 return (a+b+c+d+e+f)|0;\ |
|
45 }\ |
|
46 return g;'; |
|
47 |
|
48 var buf=new ArrayBuffer(4096); |
|
49 var g = asmLink(asmCompile('global','foreign','buffer',body), this, null, buf); |
|
50 assertEq(g(1,2,3), 46); |
|
51 assertEq(new Int8Array(buf)[1], 9); |
|
52 |
|
53 var body = |
|
54 ' "use asm";\ |
|
55 var i8=new global.Int8Array(buffer);\ |
|
56 function g(i,j,k) {\ |
|
57 i=i|0;\ |
|
58 j=j|0;\ |
|
59 k=k|0;\ |
|
60 var a=0,b=0,c=0,d=0,e=0,f=0,g=0;\ |
|
61 a=(i+j)|0;\ |
|
62 b=(k+j)|0;\ |
|
63 c=(i+k)|0;\ |
|
64 b=(a+b)|0;\ |
|
65 d=(b+c+i+j)|0;\ |
|
66 e=(a+j+c)|0;\ |
|
67 f=(a+i+k)|0;\ |
|
68 g=(f+j+b)|0;\ |
|
69 i8[i] = g;\ |
|
70 return (a+b+c+d+e+f+g)|0;\ |
|
71 }\ |
|
72 return g;'; |
|
73 |
|
74 var buf=new ArrayBuffer(4096); |
|
75 var g = asmLink(asmCompile('global','foreign','buffer',body), this, null, buf); |
|
76 assertEq(g(1,2,3), 63); |
|
77 assertEq(new Int8Array(buf)[1], 17); |