diff --git a/examples/game-of-life/assembly/index.ts b/examples/game-of-life/assembly/index.ts index e93a4f65..cb628af1 100644 --- a/examples/game-of-life/assembly/index.ts +++ b/examples/game-of-life/assembly/index.ts @@ -25,7 +25,7 @@ function set_fade(x: u32, y: u32, v: u32): void { } /** Initializes width and height. Called once from JS. */ -export function init(width: i32, height: i32, seed: f64): void { +export function init(width: i32, height: i32): void { w = width; h = height; s = width * height; @@ -46,7 +46,6 @@ export function step(): void { // The universe of the Game of Life is an infinite two-dimensional orthogonal grid of square // "cells", each of which is in one of two possible states, alive or dead. for (let y = 0; y < h; ++y) { - let ym1 = y == 0 ? hm1 : y - 1, yp1 = y == hm1 ? 0 : y + 1; for (let x = 0; x < w; ++x) { @@ -74,15 +73,14 @@ export function step(): void { let alive = mm & 1; if (alive) { - // A live cell with fewer than 2 live neighbors dies, as if caused by underpopulation. - // A live cell with more than 3 live neighbors dies, as if by overpopulation. - if (aliveNeighbors < 2 || aliveNeighbors > 3) set(x, y, RGB_DEAD | 0xff000000); // A live cell with 2 or 3 live neighbors lives on to the next generation. - else set_fade(x, y, mm); + if ((aliveNeighbors & 0b1110) == 0b0010) set_fade(x, y, mm); + // A live cell with fewer than 2 or more than 3 live neighbors dies. + else set(x, y, RGB_DEAD | 0xff000000); } else { - // A dead cell with exactly 3 live neighbors becomes a live cell, as if by reproduction. + // A dead cell with exactly 3 live neighbors becomes a live cell. if (aliveNeighbors == 3) set(x, y, RGB_ALIVE | 0xff000000); - // Otherwise the dead cell remains dead. + // A dead cell with fewer or more than 3 live neighbors remains dead. else set_fade(x, y, mm); } } diff --git a/examples/game-of-life/build/optimized.wasm b/examples/game-of-life/build/optimized.wasm index 49e11dc9..deb061db 100644 Binary files a/examples/game-of-life/build/optimized.wasm and b/examples/game-of-life/build/optimized.wasm differ diff --git a/examples/game-of-life/build/optimized.wat b/examples/game-of-life/build/optimized.wat index be9fa7da..8efb9954 100644 --- a/examples/game-of-life/build/optimized.wat +++ b/examples/game-of-life/build/optimized.wat @@ -158,73 +158,73 @@ ) (block (set_local $5 - ;;@ assembly/index.ts:50:14 + ;;@ assembly/index.ts:49:14 (if (result i32) (get_local $0) - ;;@ assembly/index.ts:50:29 + ;;@ assembly/index.ts:49:29 (i32.sub (get_local $0) - ;;@ assembly/index.ts:50:33 + ;;@ assembly/index.ts:49:33 (i32.const 1) ) - ;;@ assembly/index.ts:50:23 + ;;@ assembly/index.ts:49:23 (get_local $7) ) ) (set_local $6 - ;;@ assembly/index.ts:51:14 + ;;@ assembly/index.ts:50:14 (if (result i32) (i32.eq (get_local $0) - ;;@ assembly/index.ts:51:19 + ;;@ assembly/index.ts:50:19 (get_local $7) ) - ;;@ assembly/index.ts:51:25 + ;;@ assembly/index.ts:50:25 (i32.const 0) - ;;@ assembly/index.ts:51:29 + ;;@ assembly/index.ts:50:29 (i32.add (get_local $0) - ;;@ assembly/index.ts:51:33 + ;;@ assembly/index.ts:50:33 (i32.const 1) ) ) ) - ;;@ assembly/index.ts:52:9 + ;;@ assembly/index.ts:51:9 (set_local $1 - ;;@ assembly/index.ts:52:17 + ;;@ assembly/index.ts:51:17 (i32.const 0) ) (loop $continue|1 (if - ;;@ assembly/index.ts:52:20 + ;;@ assembly/index.ts:51:20 (i32.lt_s (get_local $1) - ;;@ assembly/index.ts:52:24 + ;;@ assembly/index.ts:51:24 (get_global $assembly/index/w) ) (block - ;;@ assembly/index.ts:62:6 - (set_local $4 + ;;@ assembly/index.ts:61:6 + (set_local $3 (i32.load (i32.shl (i32.add (i32.mul - ;;@ assembly/index.ts:62:24 + ;;@ assembly/index.ts:61:24 (get_local $0) (get_global $assembly/index/w) ) - ;;@ assembly/index.ts:62:19 + ;;@ assembly/index.ts:61:19 (get_local $1) ) (i32.const 2) ) ) ) - ;;@ assembly/index.ts:69:6 + ;;@ assembly/index.ts:68:6 (set_local $2 - ;;@ assembly/index.ts:69:27 + ;;@ assembly/index.ts:68:27 (i32.add - ;;@ assembly/index.ts:70:8 + ;;@ assembly/index.ts:69:8 (i32.add (i32.add (i32.add @@ -236,21 +236,21 @@ (i32.shl (i32.add (i32.mul - ;;@ assembly/index.ts:58:24 + ;;@ assembly/index.ts:57:24 (get_local $5) (get_global $assembly/index/w) ) (tee_local $2 - ;;@ assembly/index.ts:53:16 + ;;@ assembly/index.ts:52:16 (if (result i32) (get_local $1) - ;;@ assembly/index.ts:53:31 + ;;@ assembly/index.ts:52:31 (i32.sub (get_local $1) - ;;@ assembly/index.ts:53:35 + ;;@ assembly/index.ts:52:35 (i32.const 1) ) - ;;@ assembly/index.ts:53:25 + ;;@ assembly/index.ts:52:25 (get_local $8) ) ) @@ -258,53 +258,53 @@ (i32.const 2) ) ) - ;;@ assembly/index.ts:70:14 + ;;@ assembly/index.ts:69:14 (i32.const 1) ) - ;;@ assembly/index.ts:70:19 + ;;@ assembly/index.ts:69:19 (i32.and (i32.load (i32.shl (i32.add (i32.mul - ;;@ assembly/index.ts:59:24 + ;;@ assembly/index.ts:58:24 (get_local $5) (get_global $assembly/index/w) ) - ;;@ assembly/index.ts:59:19 + ;;@ assembly/index.ts:58:19 (get_local $1) ) (i32.const 2) ) ) - ;;@ assembly/index.ts:70:25 + ;;@ assembly/index.ts:69:25 (i32.const 1) ) ) - ;;@ assembly/index.ts:70:30 + ;;@ assembly/index.ts:69:30 (i32.and (i32.load (i32.shl (i32.add (i32.mul - ;;@ assembly/index.ts:60:24 + ;;@ assembly/index.ts:59:24 (get_local $5) (get_global $assembly/index/w) ) - (tee_local $3 - ;;@ assembly/index.ts:54:16 + (tee_local $4 + ;;@ assembly/index.ts:53:16 (if (result i32) (i32.eq (get_local $1) - ;;@ assembly/index.ts:54:21 + ;;@ assembly/index.ts:53:21 (get_local $8) ) - ;;@ assembly/index.ts:54:27 + ;;@ assembly/index.ts:53:27 (i32.const 0) - ;;@ assembly/index.ts:54:31 + ;;@ assembly/index.ts:53:31 (i32.add (get_local $1) - ;;@ assembly/index.ts:54:35 + ;;@ assembly/index.ts:53:35 (i32.const 1) ) ) @@ -313,91 +313,91 @@ (i32.const 2) ) ) - ;;@ assembly/index.ts:70:36 + ;;@ assembly/index.ts:69:36 (i32.const 1) ) ) - ;;@ assembly/index.ts:71:8 + ;;@ assembly/index.ts:70:8 (i32.and (i32.load (i32.shl (i32.add (i32.mul - ;;@ assembly/index.ts:61:24 + ;;@ assembly/index.ts:60:24 (get_local $0) (get_global $assembly/index/w) ) - ;;@ assembly/index.ts:61:19 + ;;@ assembly/index.ts:60:19 (get_local $2) ) (i32.const 2) ) ) - ;;@ assembly/index.ts:71:14 + ;;@ assembly/index.ts:70:14 (i32.const 1) ) ) - ;;@ assembly/index.ts:71:30 + ;;@ assembly/index.ts:70:30 (i32.and (i32.load (i32.shl (i32.add (i32.mul - ;;@ assembly/index.ts:63:24 + ;;@ assembly/index.ts:62:24 (get_local $0) (get_global $assembly/index/w) ) - ;;@ assembly/index.ts:63:19 - (get_local $3) + ;;@ assembly/index.ts:62:19 + (get_local $4) ) (i32.const 2) ) ) - ;;@ assembly/index.ts:71:36 + ;;@ assembly/index.ts:70:36 (i32.const 1) ) ) - ;;@ assembly/index.ts:72:8 + ;;@ assembly/index.ts:71:8 (i32.and (i32.load (i32.shl (i32.add (i32.mul - ;;@ assembly/index.ts:64:24 + ;;@ assembly/index.ts:63:24 (get_local $6) (get_global $assembly/index/w) ) - ;;@ assembly/index.ts:64:19 + ;;@ assembly/index.ts:63:19 (get_local $2) ) (i32.const 2) ) ) - ;;@ assembly/index.ts:72:14 + ;;@ assembly/index.ts:71:14 (i32.const 1) ) ) - ;;@ assembly/index.ts:72:19 + ;;@ assembly/index.ts:71:19 (i32.and (i32.load (i32.shl (i32.add (i32.mul - ;;@ assembly/index.ts:65:24 + ;;@ assembly/index.ts:64:24 (get_local $6) (get_global $assembly/index/w) ) - ;;@ assembly/index.ts:65:19 + ;;@ assembly/index.ts:64:19 (get_local $1) ) (i32.const 2) ) ) - ;;@ assembly/index.ts:72:25 + ;;@ assembly/index.ts:71:25 (i32.const 1) ) ) - ;;@ assembly/index.ts:72:30 + ;;@ assembly/index.ts:71:30 (i32.and ;;@ assembly/index.ts:11:9 (i32.load @@ -406,52 +406,43 @@ (i32.add ;;@ assembly/index.ts:11:20 (i32.mul - ;;@ assembly/index.ts:66:24 + ;;@ assembly/index.ts:65:24 (get_local $6) ;;@ assembly/index.ts:11:24 (get_global $assembly/index/w) ) - ;;@ assembly/index.ts:66:19 - (get_local $3) + ;;@ assembly/index.ts:65:19 + (get_local $4) ) ;;@ assembly/index.ts:11:34 (i32.const 2) ) ) - ;;@ assembly/index.ts:72:36 + ;;@ assembly/index.ts:71:36 (i32.const 1) ) ) ) - ;;@ assembly/index.ts:76:6 + ;;@ assembly/index.ts:75:6 (if - ;;@ assembly/index.ts:75:18 + ;;@ assembly/index.ts:74:18 (i32.and - (get_local $4) - ;;@ assembly/index.ts:75:23 + (get_local $3) + ;;@ assembly/index.ts:74:23 (i32.const 1) ) - ;;@ assembly/index.ts:79:8 + ;;@ assembly/index.ts:77:8 (if - ;;@ assembly/index.ts:79:12 - (i32.and - (if (result i32) - (tee_local $3 - (i32.lt_u - (get_local $2) - ;;@ assembly/index.ts:79:29 - (i32.const 2) - ) - ) - (get_local $3) - ;;@ assembly/index.ts:79:34 - (i32.gt_u - (get_local $2) - ;;@ assembly/index.ts:79:51 - (i32.const 3) - ) + ;;@ assembly/index.ts:77:12 + (i32.eq + (i32.and + ;;@ assembly/index.ts:77:13 + (get_local $2) + ;;@ assembly/index.ts:77:30 + (i32.const 14) ) - (i32.const 1) + ;;@ assembly/index.ts:77:41 + (i32.const 2) ) (i32.store (i32.shl @@ -459,55 +450,37 @@ (i32.add (get_global $assembly/index/s) (i32.mul - ;;@ assembly/index.ts:79:61 + ;;@ assembly/index.ts:77:61 (get_local $0) (get_global $assembly/index/w) ) ) - ;;@ assembly/index.ts:79:58 - (get_local $1) - ) - (i32.const 2) - ) - (i32.const -8053850) - ) - (i32.store - (i32.shl - (i32.add - (i32.add - (get_global $assembly/index/s) - (i32.mul - ;;@ assembly/index.ts:81:25 - (get_local $0) - (get_global $assembly/index/w) - ) - ) - ;;@ assembly/index.ts:81:22 + ;;@ assembly/index.ts:77:58 (get_local $1) ) (i32.const 2) ) (i32.or (i32.shl - (tee_local $4 + (tee_local $3 (select - (tee_local $4 + (tee_local $3 (i32.sub (i32.shr_u - (tee_local $3 - ;;@ assembly/index.ts:81:28 - (get_local $4) + (tee_local $2 + ;;@ assembly/index.ts:77:64 + (get_local $3) ) (i32.const 24) ) (i32.const 7) ) ) - (tee_local $2 + (tee_local $4 (i32.const 0) ) (i32.gt_s - (get_local $4) + (get_local $3) (i32.const 0) ) ) @@ -515,18 +488,36 @@ (i32.const 24) ) (i32.and - (get_local $3) + (get_local $2) (i32.const 16777215) ) ) ) + (i32.store + (i32.shl + (i32.add + (i32.add + (get_global $assembly/index/s) + (i32.mul + ;;@ assembly/index.ts:79:20 + (get_local $0) + (get_global $assembly/index/w) + ) + ) + ;;@ assembly/index.ts:79:17 + (get_local $1) + ) + (i32.const 2) + ) + (i32.const -8053850) + ) ) - ;;@ assembly/index.ts:84:8 + ;;@ assembly/index.ts:82:8 (if - ;;@ assembly/index.ts:84:12 + ;;@ assembly/index.ts:82:12 (i32.eq (get_local $2) - ;;@ assembly/index.ts:84:30 + ;;@ assembly/index.ts:82:30 (i32.const 3) ) (i32.store @@ -535,12 +526,12 @@ (i32.add (get_global $assembly/index/s) (i32.mul - ;;@ assembly/index.ts:84:40 + ;;@ assembly/index.ts:82:40 (get_local $0) (get_global $assembly/index/w) ) ) - ;;@ assembly/index.ts:84:37 + ;;@ assembly/index.ts:82:37 (get_local $1) ) (i32.const 2) @@ -557,13 +548,13 @@ (get_global $assembly/index/s) ;;@ assembly/index.ts:17:18 (i32.mul - ;;@ assembly/index.ts:86:25 + ;;@ assembly/index.ts:84:25 (get_local $0) ;;@ assembly/index.ts:17:22 (get_global $assembly/index/w) ) ) - ;;@ assembly/index.ts:86:22 + ;;@ assembly/index.ts:84:22 (get_local $1) ) ;;@ assembly/index.ts:17:32 @@ -580,8 +571,8 @@ ;;@ assembly/index.ts:23:19 (i32.sub (i32.shr_u - ;;@ assembly/index.ts:86:28 - (get_local $4) + ;;@ assembly/index.ts:84:28 + (get_local $3) ;;@ assembly/index.ts:23:26 (i32.const 24) ) @@ -589,7 +580,7 @@ (i32.const 7) ) ) - (tee_local $3 + (tee_local $4 ;;@ assembly/index.ts:23:35 (i32.const 0) ) @@ -605,7 +596,7 @@ ;;@ assembly/index.ts:24:24 (i32.and ;;@ assembly/index.ts:24:25 - (get_local $4) + (get_local $3) ;;@ assembly/index.ts:24:29 (i32.const 16777215) ) @@ -613,10 +604,10 @@ ) ) ) - ;;@ assembly/index.ts:52:27 + ;;@ assembly/index.ts:51:27 (set_local $1 (i32.add - ;;@ assembly/index.ts:52:29 + ;;@ assembly/index.ts:51:29 (get_local $1) (i32.const 1) ) diff --git a/examples/game-of-life/build/untouched.wat b/examples/game-of-life/build/untouched.wat index 691d24a7..e9c37874 100644 --- a/examples/game-of-life/build/untouched.wat +++ b/examples/game-of-life/build/untouched.wat @@ -222,107 +222,107 @@ (block (block (set_local $3 + ;;@ assembly/index.ts:49:14 + (if (result i32) + (i32.eq + (get_local $2) + ;;@ assembly/index.ts:49:19 + (i32.const 0) + ) + ;;@ assembly/index.ts:49:23 + (get_local $0) + ;;@ assembly/index.ts:49:29 + (i32.sub + (get_local $2) + ;;@ assembly/index.ts:49:33 + (i32.const 1) + ) + ) + ) + (set_local $4 ;;@ assembly/index.ts:50:14 (if (result i32) (i32.eq (get_local $2) ;;@ assembly/index.ts:50:19 - (i32.const 0) + (get_local $0) ) - ;;@ assembly/index.ts:50:23 - (get_local $0) + ;;@ assembly/index.ts:50:25 + (i32.const 0) ;;@ assembly/index.ts:50:29 - (i32.sub + (i32.add (get_local $2) ;;@ assembly/index.ts:50:33 (i32.const 1) ) ) ) - (set_local $4 - ;;@ assembly/index.ts:51:14 - (if (result i32) - (i32.eq - (get_local $2) - ;;@ assembly/index.ts:51:19 - (get_local $0) - ) - ;;@ assembly/index.ts:51:25 - (i32.const 0) - ;;@ assembly/index.ts:51:29 - (i32.add - (get_local $2) - ;;@ assembly/index.ts:51:33 - (i32.const 1) - ) - ) - ) ) - ;;@ assembly/index.ts:52:4 + ;;@ assembly/index.ts:51:4 (block $break|1 - ;;@ assembly/index.ts:52:9 + ;;@ assembly/index.ts:51:9 (set_local $5 - ;;@ assembly/index.ts:52:17 + ;;@ assembly/index.ts:51:17 (i32.const 0) ) (loop $continue|1 (if - ;;@ assembly/index.ts:52:20 + ;;@ assembly/index.ts:51:20 (i32.lt_s (get_local $5) - ;;@ assembly/index.ts:52:24 + ;;@ assembly/index.ts:51:24 (get_global $assembly/index/w) ) (block (block (block (set_local $6 + ;;@ assembly/index.ts:52:16 + (if (result i32) + (i32.eq + (get_local $5) + ;;@ assembly/index.ts:52:21 + (i32.const 0) + ) + ;;@ assembly/index.ts:52:25 + (get_local $1) + ;;@ assembly/index.ts:52:31 + (i32.sub + (get_local $5) + ;;@ assembly/index.ts:52:35 + (i32.const 1) + ) + ) + ) + (set_local $7 ;;@ assembly/index.ts:53:16 (if (result i32) (i32.eq (get_local $5) ;;@ assembly/index.ts:53:21 - (i32.const 0) + (get_local $1) ) - ;;@ assembly/index.ts:53:25 - (get_local $1) + ;;@ assembly/index.ts:53:27 + (i32.const 0) ;;@ assembly/index.ts:53:31 - (i32.sub + (i32.add (get_local $5) ;;@ assembly/index.ts:53:35 (i32.const 1) ) ) ) - (set_local $7 - ;;@ assembly/index.ts:54:16 - (if (result i32) - (i32.eq - (get_local $5) - ;;@ assembly/index.ts:54:21 - (get_local $1) - ) - ;;@ assembly/index.ts:54:27 - (i32.const 0) - ;;@ assembly/index.ts:54:31 - (i32.add - (get_local $5) - ;;@ assembly/index.ts:54:35 - (i32.const 1) - ) - ) - ) ) - ;;@ assembly/index.ts:58:6 + ;;@ assembly/index.ts:57:6 (set_local $9 - ;;@ assembly/index.ts:58:15 + ;;@ assembly/index.ts:57:15 (block $assembly/index/get|inlined.0 (result i32) (set_local $8 - ;;@ assembly/index.ts:58:19 + ;;@ assembly/index.ts:57:19 (get_local $6) ) (set_local $9 - ;;@ assembly/index.ts:58:24 + ;;@ assembly/index.ts:57:24 (get_local $3) ) (br $assembly/index/get|inlined.0 @@ -341,16 +341,16 @@ ) ) ) - ;;@ assembly/index.ts:59:6 + ;;@ assembly/index.ts:58:6 (set_local $10 - ;;@ assembly/index.ts:59:15 + ;;@ assembly/index.ts:58:15 (block $assembly/index/get|inlined.1 (result i32) (set_local $8 - ;;@ assembly/index.ts:59:19 + ;;@ assembly/index.ts:58:19 (get_local $5) ) (set_local $10 - ;;@ assembly/index.ts:59:24 + ;;@ assembly/index.ts:58:24 (get_local $3) ) (br $assembly/index/get|inlined.1 @@ -369,16 +369,16 @@ ) ) ) - ;;@ assembly/index.ts:60:6 + ;;@ assembly/index.ts:59:6 (set_local $11 - ;;@ assembly/index.ts:60:15 + ;;@ assembly/index.ts:59:15 (block $assembly/index/get|inlined.2 (result i32) (set_local $8 - ;;@ assembly/index.ts:60:19 + ;;@ assembly/index.ts:59:19 (get_local $7) ) (set_local $11 - ;;@ assembly/index.ts:60:24 + ;;@ assembly/index.ts:59:24 (get_local $3) ) (br $assembly/index/get|inlined.2 @@ -397,16 +397,16 @@ ) ) ) - ;;@ assembly/index.ts:61:6 + ;;@ assembly/index.ts:60:6 (set_local $12 - ;;@ assembly/index.ts:61:15 + ;;@ assembly/index.ts:60:15 (block $assembly/index/get|inlined.3 (result i32) (set_local $8 - ;;@ assembly/index.ts:61:19 + ;;@ assembly/index.ts:60:19 (get_local $6) ) (set_local $12 - ;;@ assembly/index.ts:61:24 + ;;@ assembly/index.ts:60:24 (get_local $2) ) (br $assembly/index/get|inlined.3 @@ -425,16 +425,16 @@ ) ) ) - ;;@ assembly/index.ts:62:6 + ;;@ assembly/index.ts:61:6 (set_local $13 - ;;@ assembly/index.ts:62:15 + ;;@ assembly/index.ts:61:15 (block $assembly/index/get|inlined.4 (result i32) (set_local $8 - ;;@ assembly/index.ts:62:19 + ;;@ assembly/index.ts:61:19 (get_local $5) ) (set_local $13 - ;;@ assembly/index.ts:62:24 + ;;@ assembly/index.ts:61:24 (get_local $2) ) (br $assembly/index/get|inlined.4 @@ -453,16 +453,16 @@ ) ) ) - ;;@ assembly/index.ts:63:6 + ;;@ assembly/index.ts:62:6 (set_local $14 - ;;@ assembly/index.ts:63:15 + ;;@ assembly/index.ts:62:15 (block $assembly/index/get|inlined.5 (result i32) (set_local $8 - ;;@ assembly/index.ts:63:19 + ;;@ assembly/index.ts:62:19 (get_local $7) ) (set_local $14 - ;;@ assembly/index.ts:63:24 + ;;@ assembly/index.ts:62:24 (get_local $2) ) (br $assembly/index/get|inlined.5 @@ -481,16 +481,16 @@ ) ) ) - ;;@ assembly/index.ts:64:6 + ;;@ assembly/index.ts:63:6 (set_local $15 - ;;@ assembly/index.ts:64:15 + ;;@ assembly/index.ts:63:15 (block $assembly/index/get|inlined.6 (result i32) (set_local $8 - ;;@ assembly/index.ts:64:19 + ;;@ assembly/index.ts:63:19 (get_local $6) ) (set_local $15 - ;;@ assembly/index.ts:64:24 + ;;@ assembly/index.ts:63:24 (get_local $4) ) (br $assembly/index/get|inlined.6 @@ -509,16 +509,16 @@ ) ) ) - ;;@ assembly/index.ts:65:6 + ;;@ assembly/index.ts:64:6 (set_local $16 - ;;@ assembly/index.ts:65:15 + ;;@ assembly/index.ts:64:15 (block $assembly/index/get|inlined.7 (result i32) (set_local $8 - ;;@ assembly/index.ts:65:19 + ;;@ assembly/index.ts:64:19 (get_local $5) ) (set_local $16 - ;;@ assembly/index.ts:65:24 + ;;@ assembly/index.ts:64:24 (get_local $4) ) (br $assembly/index/get|inlined.7 @@ -537,16 +537,16 @@ ) ) ) - ;;@ assembly/index.ts:66:6 + ;;@ assembly/index.ts:65:6 (set_local $17 - ;;@ assembly/index.ts:66:15 + ;;@ assembly/index.ts:65:15 (block $assembly/index/get|inlined.8 (result i32) (set_local $8 - ;;@ assembly/index.ts:66:19 + ;;@ assembly/index.ts:65:19 (get_local $7) ) (set_local $17 - ;;@ assembly/index.ts:66:24 + ;;@ assembly/index.ts:65:24 (get_local $4) ) ;;@ assembly/index.ts:11:35 @@ -572,11 +572,11 @@ ) ) ) - ;;@ assembly/index.ts:69:6 + ;;@ assembly/index.ts:68:6 (set_local $8 - ;;@ assembly/index.ts:69:27 + ;;@ assembly/index.ts:68:27 (i32.add - ;;@ assembly/index.ts:70:8 + ;;@ assembly/index.ts:69:8 (i32.add (i32.add (i32.add @@ -584,150 +584,106 @@ (i32.add (i32.add (i32.and - ;;@ assembly/index.ts:70:9 + ;;@ assembly/index.ts:69:9 (get_local $9) - ;;@ assembly/index.ts:70:14 + ;;@ assembly/index.ts:69:14 (i32.const 1) ) - ;;@ assembly/index.ts:70:19 + ;;@ assembly/index.ts:69:19 (i32.and - ;;@ assembly/index.ts:70:20 + ;;@ assembly/index.ts:69:20 (get_local $10) - ;;@ assembly/index.ts:70:25 + ;;@ assembly/index.ts:69:25 (i32.const 1) ) ) - ;;@ assembly/index.ts:70:30 + ;;@ assembly/index.ts:69:30 (i32.and - ;;@ assembly/index.ts:70:31 + ;;@ assembly/index.ts:69:31 (get_local $11) - ;;@ assembly/index.ts:70:36 + ;;@ assembly/index.ts:69:36 (i32.const 1) ) ) - ;;@ assembly/index.ts:71:8 + ;;@ assembly/index.ts:70:8 (i32.and - ;;@ assembly/index.ts:71:9 + ;;@ assembly/index.ts:70:9 (get_local $12) - ;;@ assembly/index.ts:71:14 + ;;@ assembly/index.ts:70:14 (i32.const 1) ) ) - ;;@ assembly/index.ts:71:30 + ;;@ assembly/index.ts:70:30 (i32.and - ;;@ assembly/index.ts:71:31 + ;;@ assembly/index.ts:70:31 (get_local $14) - ;;@ assembly/index.ts:71:36 + ;;@ assembly/index.ts:70:36 (i32.const 1) ) ) - ;;@ assembly/index.ts:72:8 + ;;@ assembly/index.ts:71:8 (i32.and - ;;@ assembly/index.ts:72:9 + ;;@ assembly/index.ts:71:9 (get_local $15) - ;;@ assembly/index.ts:72:14 + ;;@ assembly/index.ts:71:14 (i32.const 1) ) ) - ;;@ assembly/index.ts:72:19 + ;;@ assembly/index.ts:71:19 (i32.and - ;;@ assembly/index.ts:72:20 + ;;@ assembly/index.ts:71:20 (get_local $16) - ;;@ assembly/index.ts:72:25 + ;;@ assembly/index.ts:71:25 (i32.const 1) ) ) - ;;@ assembly/index.ts:72:30 + ;;@ assembly/index.ts:71:30 (i32.and - ;;@ assembly/index.ts:72:31 + ;;@ assembly/index.ts:71:31 (get_local $17) - ;;@ assembly/index.ts:72:36 + ;;@ assembly/index.ts:71:36 (i32.const 1) ) ) ) - ;;@ assembly/index.ts:75:6 + ;;@ assembly/index.ts:74:6 (set_local $18 - ;;@ assembly/index.ts:75:18 + ;;@ assembly/index.ts:74:18 (i32.and (get_local $13) - ;;@ assembly/index.ts:75:23 + ;;@ assembly/index.ts:74:23 (i32.const 1) ) ) - ;;@ assembly/index.ts:76:6 + ;;@ assembly/index.ts:75:6 (if - ;;@ assembly/index.ts:76:10 + ;;@ assembly/index.ts:75:10 (get_local $18) - ;;@ assembly/index.ts:79:8 + ;;@ assembly/index.ts:77:8 (if - ;;@ assembly/index.ts:79:12 - (i32.and - (if (result i32) - (tee_local $19 - (i32.lt_u - (get_local $8) - ;;@ assembly/index.ts:79:29 - (i32.const 2) - ) - ) - (get_local $19) - ;;@ assembly/index.ts:79:34 - (i32.gt_u - (get_local $8) - ;;@ assembly/index.ts:79:51 - (i32.const 3) - ) + ;;@ assembly/index.ts:77:12 + (i32.eq + (i32.and + ;;@ assembly/index.ts:77:13 + (get_local $8) + ;;@ assembly/index.ts:77:30 + (i32.const 14) ) - (i32.const 1) + ;;@ assembly/index.ts:77:41 + (i32.const 2) ) - ;;@ assembly/index.ts:79:54 - (block $assembly/index/set|inlined.1 - (set_local $19 - ;;@ assembly/index.ts:79:58 - (get_local $5) - ) - (set_local $20 - ;;@ assembly/index.ts:79:61 - (get_local $2) - ) - (set_local $21 - ;;@ assembly/index.ts:79:64 - (i32.or - (i32.const 8723366) - ;;@ assembly/index.ts:79:75 - (i32.const -16777216) - ) - ) - (i32.store - (i32.shl - (i32.add - (i32.add - (get_global $assembly/index/s) - (i32.mul - (get_local $20) - (get_global $assembly/index/w) - ) - ) - (get_local $19) - ) - (i32.const 2) - ) - (get_local $21) - ) - ) - ;;@ assembly/index.ts:81:13 + ;;@ assembly/index.ts:77:49 (block $assembly/index/set_fade|inlined.0 - (set_local $21 - ;;@ assembly/index.ts:81:22 + (set_local $19 + ;;@ assembly/index.ts:77:58 (get_local $5) ) (set_local $20 - ;;@ assembly/index.ts:81:25 + ;;@ assembly/index.ts:77:61 (get_local $2) ) - (set_local $19 - ;;@ assembly/index.ts:81:28 + (set_local $21 + ;;@ assembly/index.ts:77:64 (get_local $13) ) (set_local $22 @@ -735,7 +691,7 @@ (tee_local $22 (i32.sub (i32.shr_u - (get_local $19) + (get_local $21) (i32.const 24) ) (i32.const 7) @@ -750,9 +706,9 @@ ) ) ) - (block $assembly/index/set|inlined.2 + (block $assembly/index/set|inlined.1 (set_local $23 - (get_local $21) + (get_local $19) ) (set_local $24 (get_local $20) @@ -764,7 +720,7 @@ (i32.const 24) ) (i32.and - (get_local $19) + (get_local $21) (i32.const 16777215) ) ) @@ -787,30 +743,21 @@ ) ) ) - ) - ;;@ assembly/index.ts:84:8 - (if - ;;@ assembly/index.ts:84:12 - (i32.eq - (get_local $8) - ;;@ assembly/index.ts:84:30 - (i32.const 3) - ) - ;;@ assembly/index.ts:84:33 - (block $assembly/index/set|inlined.3 + ;;@ assembly/index.ts:79:13 + (block $assembly/index/set|inlined.2 (set_local $22 - ;;@ assembly/index.ts:84:37 + ;;@ assembly/index.ts:79:17 (get_local $5) ) - (set_local $19 - ;;@ assembly/index.ts:84:40 + (set_local $21 + ;;@ assembly/index.ts:79:20 (get_local $2) ) (set_local $20 - ;;@ assembly/index.ts:84:43 + ;;@ assembly/index.ts:79:23 (i32.or - (i32.const 15110867) - ;;@ assembly/index.ts:84:55 + (i32.const 8723366) + ;;@ assembly/index.ts:79:34 (i32.const -16777216) ) ) @@ -820,7 +767,7 @@ (i32.add (get_global $assembly/index/s) (i32.mul - (get_local $19) + (get_local $21) (get_global $assembly/index/w) ) ) @@ -831,30 +778,74 @@ (get_local $20) ) ) - ;;@ assembly/index.ts:86:13 - (block $assembly/index/set_fade|inlined.1 + ) + ;;@ assembly/index.ts:82:8 + (if + ;;@ assembly/index.ts:82:12 + (i32.eq + (get_local $8) + ;;@ assembly/index.ts:82:30 + (i32.const 3) + ) + ;;@ assembly/index.ts:82:33 + (block $assembly/index/set|inlined.3 (set_local $20 - ;;@ assembly/index.ts:86:22 + ;;@ assembly/index.ts:82:37 (get_local $5) ) - (set_local $19 - ;;@ assembly/index.ts:86:25 + (set_local $21 + ;;@ assembly/index.ts:82:40 (get_local $2) ) (set_local $22 - ;;@ assembly/index.ts:86:28 + ;;@ assembly/index.ts:82:43 + (i32.or + (i32.const 15110867) + ;;@ assembly/index.ts:82:55 + (i32.const -16777216) + ) + ) + (i32.store + (i32.shl + (i32.add + (i32.add + (get_global $assembly/index/s) + (i32.mul + (get_local $21) + (get_global $assembly/index/w) + ) + ) + (get_local $20) + ) + (i32.const 2) + ) + (get_local $22) + ) + ) + ;;@ assembly/index.ts:84:13 + (block $assembly/index/set_fade|inlined.1 + (set_local $22 + ;;@ assembly/index.ts:84:22 + (get_local $5) + ) + (set_local $21 + ;;@ assembly/index.ts:84:25 + (get_local $2) + ) + (set_local $20 + ;;@ assembly/index.ts:84:28 (get_local $13) ) ;;@ assembly/index.ts:23:2 - (set_local $21 + (set_local $19 ;;@ assembly/index.ts:23:10 (select - (tee_local $21 + (tee_local $19 ;;@ assembly/index.ts:23:19 (i32.sub (i32.shr_u ;;@ assembly/index.ts:23:20 - (get_local $22) + (get_local $20) ;;@ assembly/index.ts:23:26 (i32.const 24) ) @@ -867,7 +858,7 @@ (i32.const 0) ) (i32.gt_s - (get_local $21) + (get_local $19) (get_local $25) ) ) @@ -876,25 +867,25 @@ (block $assembly/index/set|inlined.4 (set_local $25 ;;@ assembly/index.ts:24:6 - (get_local $20) + (get_local $22) ) (set_local $24 ;;@ assembly/index.ts:24:9 - (get_local $19) + (get_local $21) ) (set_local $23 ;;@ assembly/index.ts:24:12 (i32.or (i32.shl ;;@ assembly/index.ts:24:13 - (get_local $21) + (get_local $19) ;;@ assembly/index.ts:24:18 (i32.const 24) ) ;;@ assembly/index.ts:24:24 (i32.and ;;@ assembly/index.ts:24:25 - (get_local $22) + (get_local $20) ;;@ assembly/index.ts:24:29 (i32.const 16777215) ) @@ -929,10 +920,10 @@ ) ) ) - ;;@ assembly/index.ts:52:27 + ;;@ assembly/index.ts:51:27 (set_local $5 (i32.add - ;;@ assembly/index.ts:52:29 + ;;@ assembly/index.ts:51:29 (get_local $5) (i32.const 1) ) diff --git a/examples/game-of-life/index.html b/examples/game-of-life/index.html index 22d41bc9..b341fd11 100644 --- a/examples/game-of-life/index.html +++ b/examples/game-of-life/index.html @@ -1,7 +1,7 @@ -Conway's Game Of Life - AssemblyScript +Conway's Game of Life - AssemblyScript