mirror of
https://github.com/KevinMidboe/linguist.git
synced 2025-10-29 17:50:22 +00:00
Add recognition and classification of WebAssembly (#3650)
This commit is contained in:
164
samples/WebAssembly/local-cse.wast
Normal file
164
samples/WebAssembly/local-cse.wast
Normal file
@@ -0,0 +1,164 @@
|
||||
(module
|
||||
(memory 100 100)
|
||||
(func $basics
|
||||
(local $x i32)
|
||||
(local $y i32)
|
||||
(drop
|
||||
(i32.add (i32.const 1) (i32.const 2))
|
||||
)
|
||||
(drop
|
||||
(i32.add (i32.const 1) (i32.const 2))
|
||||
)
|
||||
(if (i32.const 0) (nop))
|
||||
(drop ;; we can't do this yet, non-linear
|
||||
(i32.add (i32.const 1) (i32.const 2))
|
||||
)
|
||||
(drop
|
||||
(i32.add (get_local $x) (get_local $y))
|
||||
)
|
||||
(drop
|
||||
(i32.add (get_local $x) (get_local $y))
|
||||
)
|
||||
(drop
|
||||
(i32.add (get_local $x) (get_local $y))
|
||||
)
|
||||
(call $basics) ;; side effects, but no matter for our locals
|
||||
(drop
|
||||
(i32.add (get_local $x) (get_local $y))
|
||||
)
|
||||
(set_local $x (i32.const 100))
|
||||
(drop ;; x was changed!
|
||||
(i32.add (get_local $x) (get_local $y))
|
||||
)
|
||||
)
|
||||
(func $recursive1
|
||||
(local $x i32)
|
||||
(local $y i32)
|
||||
(drop
|
||||
(i32.add
|
||||
(i32.const 1)
|
||||
(i32.add
|
||||
(i32.const 2)
|
||||
(i32.const 3)
|
||||
)
|
||||
)
|
||||
)
|
||||
(drop
|
||||
(i32.add
|
||||
(i32.const 1)
|
||||
(i32.add
|
||||
(i32.const 2)
|
||||
(i32.const 3)
|
||||
)
|
||||
)
|
||||
)
|
||||
(drop
|
||||
(i32.add
|
||||
(i32.const 2)
|
||||
(i32.const 3)
|
||||
)
|
||||
)
|
||||
)
|
||||
(func $recursive2
|
||||
(local $x i32)
|
||||
(local $y i32)
|
||||
(drop
|
||||
(i32.add
|
||||
(i32.const 1)
|
||||
(i32.add
|
||||
(i32.const 2)
|
||||
(i32.const 3)
|
||||
)
|
||||
)
|
||||
)
|
||||
(drop
|
||||
(i32.add
|
||||
(i32.const 2)
|
||||
(i32.const 3)
|
||||
)
|
||||
)
|
||||
(drop
|
||||
(i32.add
|
||||
(i32.const 1)
|
||||
(i32.add
|
||||
(i32.const 2)
|
||||
(i32.const 3)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(func $self
|
||||
(local $x i32)
|
||||
(local $y i32)
|
||||
(drop
|
||||
(i32.add
|
||||
(i32.add
|
||||
(i32.const 2)
|
||||
(i32.const 3)
|
||||
)
|
||||
(i32.add
|
||||
(i32.const 2)
|
||||
(i32.const 3)
|
||||
)
|
||||
)
|
||||
)
|
||||
(drop
|
||||
(i32.add
|
||||
(i32.const 2)
|
||||
(i32.const 3)
|
||||
)
|
||||
)
|
||||
)
|
||||
(func $loads
|
||||
(drop
|
||||
(i32.load (i32.const 10))
|
||||
)
|
||||
(drop
|
||||
(i32.load (i32.const 10)) ;; implicit traps, sad
|
||||
)
|
||||
)
|
||||
(func $8 (param $var$0 i32) (result i32)
|
||||
(local $var$1 i32)
|
||||
(local $var$2 i32)
|
||||
(local $var$3 i32)
|
||||
(block $label$0 i32
|
||||
(i32.store
|
||||
(tee_local $var$2
|
||||
(i32.add
|
||||
(get_local $var$1)
|
||||
(i32.const 4)
|
||||
)
|
||||
)
|
||||
(i32.and
|
||||
(i32.load
|
||||
(get_local $var$2)
|
||||
)
|
||||
(i32.xor
|
||||
(tee_local $var$2
|
||||
(i32.const 74)
|
||||
)
|
||||
(i32.const -1)
|
||||
)
|
||||
)
|
||||
)
|
||||
(i32.store
|
||||
(tee_local $var$1
|
||||
(i32.add
|
||||
(get_local $var$1)
|
||||
(i32.const 4)
|
||||
)
|
||||
)
|
||||
(i32.or
|
||||
(i32.load
|
||||
(get_local $var$1)
|
||||
)
|
||||
(i32.and
|
||||
(get_local $var$2)
|
||||
(i32.const 8)
|
||||
)
|
||||
)
|
||||
)
|
||||
(i32.const 0)
|
||||
)
|
||||
)
|
||||
)
|
||||
Reference in New Issue
Block a user