Skip to content

Instantly share code, notes, and snippets.

@dominictarr
Created April 15, 2020 07:16
Show Gist options
  • Select an option

  • Save dominictarr/ff00c27a6ce48c23bc36dfb0a25c5496 to your computer and use it in GitHub Desktop.

Select an option

Save dominictarr/ff00c27a6ce48c23bc36dfb0a25c5496 to your computer and use it in GitHub Desktop.
(module
;; an operation defined inside a macro
(def op_mac (mac (a b) (block
&[i32_load (mod a 1000)]
)))
;;a function that contains that macro
(def op_fun (fun (a b) (op_mac a b) ))
(def N 10000000)
;;do the function call inside a loop
(export calls (fun () {block
(def i 0)
(loop
(lt i N)
(block
(def i (add i 1))
(op_fun i 10) ;;call a small function
)
)
}))
;;inline the op into the loop (so no calls)
(export inlines (fun () {block
(def i 0)
(loop
(lt i N)
(block
(def i (add i 1))
(op_mac i 0)
)
)
}))
;; macro to inline N ops
(def unroll (mac R [n op]
(if n
(block
(def n (sub n 1))
&(block (R n op) op)
)
op
)))
;; a loop with the op inlined in batches of 100
(export unrolled (fun () {block
(def i 0)
(loop
(lt i N)
(block
(def i (add i 100))
;;(op_mac)
(unroll 100 (op_mac i 0))
0
)
)
}))
)
(module (memory (export "memory")
1)
(global $FREE (mut i32) (i32.const 0))
(func (result i32)
(local $i i32)
(local $batch i32)
(local $1 i32)
(local.set $i (i32.const 0))
(local.set $batch (i32.const 1000))
(loop (if
(i32.lt_s (local.get $i) (i32.const 10000000))
(then
(local.set $i (i32.add (local.get $i) (i32.const 100)))
(i32.load (i32.rem_s (local.get $i) (i32.const 1000)))
(i32.load (i32.rem_s (local.get $i) (i32.const 1000)))
(i32.load (i32.rem_s (local.get $i) (i32.const 1000)))
(i32.load (i32.rem_s (local.get $i) (i32.const 1000)))
(i32.load (i32.rem_s (local.get $i) (i32.const 1000)))
(i32.load (i32.rem_s (local.get $i) (i32.const 1000)))
(i32.load (i32.rem_s (local.get $i) (i32.const 1000)))
(i32.load (i32.rem_s (local.get $i) (i32.const 1000)))
(i32.load (i32.rem_s (local.get $i) (i32.const 1000)))
(i32.load (i32.rem_s (local.get $i) (i32.const 1000)))
(i32.load (i32.rem_s (local.get $i) (i32.const 1000)))
(i32.load (i32.rem_s (local.get $i) (i32.const 1000)))
(i32.load (i32.rem_s (local.get $i) (i32.const 1000)))
(i32.load (i32.rem_s (local.get $i) (i32.const 1000)))
(i32.load (i32.rem_s (local.get $i) (i32.const 1000)))
(i32.load (i32.rem_s (local.get $i) (i32.const 1000)))
(i32.load (i32.rem_s (local.get $i) (i32.const 1000)))
(i32.load (i32.rem_s (local.get $i) (i32.const 1000)))
(i32.load (i32.rem_s (local.get $i) (i32.const 1000)))
(i32.load (i32.rem_s (local.get $i) (i32.const 1000)))
(i32.load (i32.rem_s (local.get $i) (i32.const 1000)))
(i32.load (i32.rem_s (local.get $i) (i32.const 1000)))
(i32.load (i32.rem_s (local.get $i) (i32.const 1000)))
(i32.load (i32.rem_s (local.get $i) (i32.const 1000)))
(i32.load (i32.rem_s (local.get $i) (i32.const 1000)))
(i32.load (i32.rem_s (local.get $i) (i32.const 1000)))
(i32.load (i32.rem_s (local.get $i) (i32.const 1000)))
(i32.load (i32.rem_s (local.get $i) (i32.const 1000)))
(i32.load (i32.rem_s (local.get $i) (i32.const 1000)))
(i32.load (i32.rem_s (local.get $i) (i32.const 1000)))
(i32.load (i32.rem_s (local.get $i) (i32.const 1000)))
(i32.load (i32.rem_s (local.get $i) (i32.const 1000)))
(i32.load (i32.rem_s (local.get $i) (i32.const 1000)))
(i32.load (i32.rem_s (local.get $i) (i32.const 1000)))
(i32.load (i32.rem_s (local.get $i) (i32.const 1000)))
(i32.load (i32.rem_s (local.get $i) (i32.const 1000)))
(i32.load (i32.rem_s (local.get $i) (i32.const 1000)))
(i32.load (i32.rem_s (local.get $i) (i32.const 1000)))
(i32.load (i32.rem_s (local.get $i) (i32.const 1000)))
(i32.load (i32.rem_s (local.get $i) (i32.const 1000)))
(i32.load (i32.rem_s (local.get $i) (i32.const 1000)))
(i32.load (i32.rem_s (local.get $i) (i32.const 1000)))
(i32.load (i32.rem_s (local.get $i) (i32.const 1000)))
(i32.load (i32.rem_s (local.get $i) (i32.const 1000)))
(i32.load (i32.rem_s (local.get $i) (i32.const 1000)))
(i32.load (i32.rem_s (local.get $i) (i32.const 1000)))
(i32.load (i32.rem_s (local.get $i) (i32.const 1000)))
(i32.load (i32.rem_s (local.get $i) (i32.const 1000)))
(i32.load (i32.rem_s (local.get $i) (i32.const 1000)))
(i32.load (i32.rem_s (local.get $i) (i32.const 1000)))
(i32.load (i32.rem_s (local.get $i) (i32.const 1000)))
(i32.load (i32.rem_s (local.get $i) (i32.const 1000)))
(i32.load (i32.rem_s (local.get $i) (i32.const 1000)))
(i32.load (i32.rem_s (local.get $i) (i32.const 1000)))
(i32.load (i32.rem_s (local.get $i) (i32.const 1000)))
(i32.load (i32.rem_s (local.get $i) (i32.const 1000)))
(i32.load (i32.rem_s (local.get $i) (i32.const 1000)))
(i32.load (i32.rem_s (local.get $i) (i32.const 1000)))
(i32.load (i32.rem_s (local.get $i) (i32.const 1000)))
(i32.load (i32.rem_s (local.get $i) (i32.const 1000)))
(i32.load (i32.rem_s (local.get $i) (i32.const 1000)))
(i32.load (i32.rem_s (local.get $i) (i32.const 1000)))
(i32.load (i32.rem_s (local.get $i) (i32.const 1000)))
(i32.load (i32.rem_s (local.get $i) (i32.const 1000)))
(i32.load (i32.rem_s (local.get $i) (i32.const 1000)))
(i32.load (i32.rem_s (local.get $i) (i32.const 1000)))
(i32.load (i32.rem_s (local.get $i) (i32.const 1000)))
(i32.load (i32.rem_s (local.get $i) (i32.const 1000)))
(i32.load (i32.rem_s (local.get $i) (i32.const 1000)))
(i32.load (i32.rem_s (local.get $i) (i32.const 1000)))
(i32.load (i32.rem_s (local.get $i) (i32.const 1000)))
(i32.load (i32.rem_s (local.get $i) (i32.const 1000)))
(i32.load (i32.rem_s (local.get $i) (i32.const 1000)))
(i32.load (i32.rem_s (local.get $i) (i32.const 1000)))
(i32.load (i32.rem_s (local.get $i) (i32.const 1000)))
(i32.load (i32.rem_s (local.get $i) (i32.const 1000)))
(i32.load (i32.rem_s (local.get $i) (i32.const 1000)))
(i32.load (i32.rem_s (local.get $i) (i32.const 1000)))
(i32.load (i32.rem_s (local.get $i) (i32.const 1000)))
(i32.load (i32.rem_s (local.get $i) (i32.const 1000)))
(i32.load (i32.rem_s (local.get $i) (i32.const 1000)))
(i32.load (i32.rem_s (local.get $i) (i32.const 1000)))
(i32.load (i32.rem_s (local.get $i) (i32.const 1000)))
(i32.load (i32.rem_s (local.get $i) (i32.const 1000)))
(i32.load (i32.rem_s (local.get $i) (i32.const 1000)))
(i32.load (i32.rem_s (local.get $i) (i32.const 1000)))
(i32.load (i32.rem_s (local.get $i) (i32.const 1000)))
(i32.load (i32.rem_s (local.get $i) (i32.const 1000)))
(i32.load (i32.rem_s (local.get $i) (i32.const 1000)))
(i32.load (i32.rem_s (local.get $i) (i32.const 1000)))
(i32.load (i32.rem_s (local.get $i) (i32.const 1000)))
(i32.load (i32.rem_s (local.get $i) (i32.const 1000)))
(i32.load (i32.rem_s (local.get $i) (i32.const 1000)))
(i32.load (i32.rem_s (local.get $i) (i32.const 1000)))
(i32.load (i32.rem_s (local.get $i) (i32.const 1000)))
(i32.load (i32.rem_s (local.get $i) (i32.const 1000)))
(i32.load (i32.rem_s (local.get $i) (i32.const 1000)))
(i32.load (i32.rem_s (local.get $i) (i32.const 1000)))
(i32.load (i32.rem_s (local.get $i) (i32.const 1000)))
(i32.load (i32.rem_s (local.get $i) (i32.const 1000)))
(i32.load (i32.rem_s (local.get $i) (i32.const 1000)))
(local.set $1 (i32.const 0))
(br 1))))
(local.get $1)
)
(func (result i32)
(local $i i32)
(local $1 i32)
(local.set $i (i32.const 0))
(loop (if
(i32.lt_s (local.get $i) (i32.const 10000000))
(then
(local.set $i (i32.add (local.get $i) (i32.const 1)))
(local.set
$1 (i32.load (i32.rem_s (local.get $i) (i32.const 1000))))
(br 1))))
(local.get $1))
(func (param $a i32) (param $b i32) (result i32)
(i32.load (i32.rem_s (local.get $a) (i32.const 1000))))
(func (result i32)
(local $i i32)
(local $1 i32)
(local.set $i (i32.const 0))
(loop (if
(i32.lt_s (local.get $i) (i32.const 10000000))
(then
(local.set $i (i32.add (local.get $i) (i32.const 1)))
(local.set $1
(call 2
(local.get $i)
(i32.const 10)))
(br 1))))
(local.get $1))
(export "calls" (func 3))
(export "inlines" (func 1))
(export "unrolled" (func 0))
)
@minmin886
Copy link
Copy Markdown

https://sprunkiphase3.com/sprunki-phase-2.html
Built for fans of chaotic gameplay and unpredictable challenges, Sprunki Phase 2 keeps you engaged with its strange physics, over-the-top effects, and hilariously frustrating level design.

@digital88t
Copy link
Copy Markdown

People try out ideas or have fun programming, and over time those small pieces of code end up being used by thousands of people. When that happens, maintenance can become an unexpected responsibility. fresko catalogo

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment