diff --git a/benchmark/rule-110/rule110.sa b/benchmark/rule-110/rule110.sa new file mode 100644 index 0000000..750cac7 --- /dev/null +++ b/benchmark/rule-110/rule110.sa @@ -0,0 +1,34 @@ +external import { + fn fd_write(fd: i32, iovs: i32, iovs_len: i32, nwritten: i32): i32; +} from "wasix_32v1"; + +struct BoxInt { + value: i32; +} + +fn print(str: i32): i32 { + let ptr: BoxInt = [ .value = 0 ]; + fd_write(1, str, 1, ptr); + + return ptr.value; +} + +fn main(): i32 { + let board: linear#[bool, 30] = [ none ]; + + for (let i=0; i<30-2; i++) { + for (let j=0; j<30; j++) { + if board[j] print("*"); + else print(" "); + } + print("\n"); + + let pattern = (board[0] << 1) | board[1]; + for (let j=1; j<30-1; j++) { + pattern = ((pattern << 1) & 7) | board[j + 1]; + board[j] = (110 >> pattern) & 1; + } + } + + return 0; +} \ No newline at end of file