summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/passes/const-hoisting.txt630
-rw-r--r--test/passes/const-hoisting.wast201
2 files changed, 831 insertions, 0 deletions
diff --git a/test/passes/const-hoisting.txt b/test/passes/const-hoisting.txt
new file mode 100644
index 000000000..7023a5d6c
--- /dev/null
+++ b/test/passes/const-hoisting.txt
@@ -0,0 +1,630 @@
+(module
+ (type $0 (func))
+ (memory $0 0)
+ (func $10-of-each (type $0)
+ (local $0 i32)
+ (local $1 i32)
+ (local $2 i32)
+ (local $3 i32)
+ (local $4 i32)
+ (local $5 i32)
+ (block
+ (set_local $0
+ (i32.const -1048577)
+ )
+ (set_local $1
+ (i32.const -1048576)
+ )
+ (set_local $2
+ (i32.const -8193)
+ )
+ (set_local $3
+ (i32.const 8192)
+ )
+ (set_local $4
+ (i32.const 1048575)
+ )
+ (set_local $5
+ (i32.const 1048576)
+ )
+ )
+ (block
+ (drop
+ (i32.const 0)
+ )
+ (drop
+ (i32.const 63)
+ )
+ (drop
+ (i32.const 64)
+ )
+ (drop
+ (i32.const 8191)
+ )
+ (drop
+ (get_local $3)
+ )
+ (drop
+ (get_local $4)
+ )
+ (drop
+ (get_local $5)
+ )
+ (drop
+ (i32.const -64)
+ )
+ (drop
+ (i32.const -65)
+ )
+ (drop
+ (i32.const -8192)
+ )
+ (drop
+ (get_local $2)
+ )
+ (drop
+ (get_local $1)
+ )
+ (drop
+ (get_local $0)
+ )
+ (drop
+ (i32.const 0)
+ )
+ (drop
+ (i32.const 63)
+ )
+ (drop
+ (i32.const 64)
+ )
+ (drop
+ (i32.const 8191)
+ )
+ (drop
+ (get_local $3)
+ )
+ (drop
+ (get_local $4)
+ )
+ (drop
+ (get_local $5)
+ )
+ (drop
+ (i32.const -64)
+ )
+ (drop
+ (i32.const -65)
+ )
+ (drop
+ (i32.const -8192)
+ )
+ (drop
+ (get_local $2)
+ )
+ (drop
+ (get_local $1)
+ )
+ (drop
+ (get_local $0)
+ )
+ (drop
+ (i32.const 0)
+ )
+ (drop
+ (i32.const 63)
+ )
+ (drop
+ (i32.const 64)
+ )
+ (drop
+ (i32.const 8191)
+ )
+ (drop
+ (get_local $3)
+ )
+ (drop
+ (get_local $4)
+ )
+ (drop
+ (get_local $5)
+ )
+ (drop
+ (i32.const -64)
+ )
+ (drop
+ (i32.const -65)
+ )
+ (drop
+ (i32.const -8192)
+ )
+ (drop
+ (get_local $2)
+ )
+ (drop
+ (get_local $1)
+ )
+ (drop
+ (get_local $0)
+ )
+ (drop
+ (i32.const 0)
+ )
+ (drop
+ (i32.const 63)
+ )
+ (drop
+ (i32.const 64)
+ )
+ (drop
+ (i32.const 8191)
+ )
+ (drop
+ (get_local $3)
+ )
+ (drop
+ (get_local $4)
+ )
+ (drop
+ (get_local $5)
+ )
+ (drop
+ (i32.const -64)
+ )
+ (drop
+ (i32.const -65)
+ )
+ (drop
+ (i32.const -8192)
+ )
+ (drop
+ (get_local $2)
+ )
+ (drop
+ (get_local $1)
+ )
+ (drop
+ (get_local $0)
+ )
+ (drop
+ (i32.const 0)
+ )
+ (drop
+ (i32.const 63)
+ )
+ (drop
+ (i32.const 64)
+ )
+ (drop
+ (i32.const 8191)
+ )
+ (drop
+ (get_local $3)
+ )
+ (drop
+ (get_local $4)
+ )
+ (drop
+ (get_local $5)
+ )
+ (drop
+ (i32.const -64)
+ )
+ (drop
+ (i32.const -65)
+ )
+ (drop
+ (i32.const -8192)
+ )
+ (drop
+ (get_local $2)
+ )
+ (drop
+ (get_local $1)
+ )
+ (drop
+ (get_local $0)
+ )
+ (drop
+ (i32.const 0)
+ )
+ (drop
+ (i32.const 63)
+ )
+ (drop
+ (i32.const 64)
+ )
+ (drop
+ (i32.const 8191)
+ )
+ (drop
+ (get_local $3)
+ )
+ (drop
+ (get_local $4)
+ )
+ (drop
+ (get_local $5)
+ )
+ (drop
+ (i32.const -64)
+ )
+ (drop
+ (i32.const -65)
+ )
+ (drop
+ (i32.const -8192)
+ )
+ (drop
+ (get_local $2)
+ )
+ (drop
+ (get_local $1)
+ )
+ (drop
+ (get_local $0)
+ )
+ (drop
+ (i32.const 0)
+ )
+ (drop
+ (i32.const 63)
+ )
+ (drop
+ (i32.const 64)
+ )
+ (drop
+ (i32.const 8191)
+ )
+ (drop
+ (get_local $3)
+ )
+ (drop
+ (get_local $4)
+ )
+ (drop
+ (get_local $5)
+ )
+ (drop
+ (i32.const -64)
+ )
+ (drop
+ (i32.const -65)
+ )
+ (drop
+ (i32.const -8192)
+ )
+ (drop
+ (get_local $2)
+ )
+ (drop
+ (get_local $1)
+ )
+ (drop
+ (get_local $0)
+ )
+ (drop
+ (i32.const 0)
+ )
+ (drop
+ (i32.const 63)
+ )
+ (drop
+ (i32.const 64)
+ )
+ (drop
+ (i32.const 8191)
+ )
+ (drop
+ (get_local $3)
+ )
+ (drop
+ (get_local $4)
+ )
+ (drop
+ (get_local $5)
+ )
+ (drop
+ (i32.const -64)
+ )
+ (drop
+ (i32.const -65)
+ )
+ (drop
+ (i32.const -8192)
+ )
+ (drop
+ (get_local $2)
+ )
+ (drop
+ (get_local $1)
+ )
+ (drop
+ (get_local $0)
+ )
+ (drop
+ (i32.const 0)
+ )
+ (drop
+ (i32.const 63)
+ )
+ (drop
+ (i32.const 64)
+ )
+ (drop
+ (i32.const 8191)
+ )
+ (drop
+ (get_local $3)
+ )
+ (drop
+ (get_local $4)
+ )
+ (drop
+ (get_local $5)
+ )
+ (drop
+ (i32.const -64)
+ )
+ (drop
+ (i32.const -65)
+ )
+ (drop
+ (i32.const -8192)
+ )
+ (drop
+ (get_local $2)
+ )
+ (drop
+ (get_local $1)
+ )
+ (drop
+ (get_local $0)
+ )
+ (drop
+ (i32.const 0)
+ )
+ (drop
+ (i32.const 63)
+ )
+ (drop
+ (i32.const 64)
+ )
+ (drop
+ (i32.const 8191)
+ )
+ (drop
+ (get_local $3)
+ )
+ (drop
+ (get_local $4)
+ )
+ (drop
+ (get_local $5)
+ )
+ (drop
+ (i32.const -64)
+ )
+ (drop
+ (i32.const -65)
+ )
+ (drop
+ (i32.const -8192)
+ )
+ (drop
+ (get_local $2)
+ )
+ (drop
+ (get_local $1)
+ )
+ (drop
+ (get_local $0)
+ )
+ )
+ )
+ (func $floats-10-times (type $0)
+ (local $0 f32)
+ (local $1 f64)
+ (block
+ (set_local $0
+ (f32.const 0)
+ )
+ (set_local $1
+ (f64.const 0)
+ )
+ )
+ (block
+ (drop
+ (get_local $0)
+ )
+ (drop
+ (get_local $1)
+ )
+ (drop
+ (get_local $0)
+ )
+ (drop
+ (get_local $1)
+ )
+ (drop
+ (get_local $0)
+ )
+ (drop
+ (get_local $1)
+ )
+ (drop
+ (get_local $0)
+ )
+ (drop
+ (get_local $1)
+ )
+ (drop
+ (get_local $0)
+ )
+ (drop
+ (get_local $1)
+ )
+ (drop
+ (get_local $0)
+ )
+ (drop
+ (get_local $1)
+ )
+ (drop
+ (get_local $0)
+ )
+ (drop
+ (get_local $1)
+ )
+ (drop
+ (get_local $0)
+ )
+ (drop
+ (get_local $1)
+ )
+ (drop
+ (get_local $0)
+ )
+ (drop
+ (get_local $1)
+ )
+ (drop
+ (get_local $0)
+ )
+ (drop
+ (get_local $1)
+ )
+ )
+ )
+ (func $too-few (type $0)
+ (drop
+ (i32.const 8192)
+ )
+ (drop
+ (i32.const 8192)
+ )
+ (drop
+ (i32.const 8192)
+ )
+ (drop
+ (i32.const 8192)
+ )
+ (drop
+ (i32.const 8192)
+ )
+ )
+ (func $just-enough (type $0)
+ (local $0 i32)
+ (block
+ (set_local $0
+ (i32.const 8192)
+ )
+ )
+ (block
+ (drop
+ (get_local $0)
+ )
+ (drop
+ (get_local $0)
+ )
+ (drop
+ (get_local $0)
+ )
+ (drop
+ (get_local $0)
+ )
+ (drop
+ (get_local $0)
+ )
+ (drop
+ (get_local $0)
+ )
+ )
+ )
+ (func $too-few-b (type $0)
+ (drop
+ (i32.const 1048576)
+ )
+ (drop
+ (i32.const 1048576)
+ )
+ (drop
+ (i32.const 1048576)
+ )
+ )
+ (func $enough-b (type $0)
+ (local $0 i32)
+ (block
+ (set_local $0
+ (i32.const 1048576)
+ )
+ )
+ (block
+ (drop
+ (get_local $0)
+ )
+ (drop
+ (get_local $0)
+ )
+ (drop
+ (get_local $0)
+ )
+ (drop
+ (get_local $0)
+ )
+ )
+ )
+ (func $too-few-c (type $0)
+ (drop
+ (f32.const 0)
+ )
+ (drop
+ (f32.const 0)
+ )
+ (drop
+ (f32.const 0)
+ )
+ )
+ (func $enough-c (type $0)
+ (local $0 f32)
+ (block
+ (set_local $0
+ (f32.const 0)
+ )
+ )
+ (block
+ (drop
+ (get_local $0)
+ )
+ (drop
+ (get_local $0)
+ )
+ (drop
+ (get_local $0)
+ )
+ (drop
+ (get_local $0)
+ )
+ )
+ )
+ (func $too-few-d (type $0)
+ (drop
+ (f64.const 0)
+ )
+ )
+ (func $enough-d (type $0)
+ (local $0 f64)
+ (block
+ (set_local $0
+ (f64.const 0)
+ )
+ )
+ (block
+ (drop
+ (get_local $0)
+ )
+ (drop
+ (get_local $0)
+ )
+ )
+ )
+)
diff --git a/test/passes/const-hoisting.wast b/test/passes/const-hoisting.wast
new file mode 100644
index 000000000..66f79bc14
--- /dev/null
+++ b/test/passes/const-hoisting.wast
@@ -0,0 +1,201 @@
+(module
+ (func $10-of-each
+ (drop (i32.const 0)) ;; 1 byte
+ (drop (i32.const 63)) ;; 1 byte
+ (drop (i32.const 64)) ;; 2 bytes
+ (drop (i32.const 8191)) ;; 2 bytes
+ (drop (i32.const 8192)) ;; 3 bytes
+ (drop (i32.const 1048575)) ;; 3 bytes
+ (drop (i32.const 1048576)) ;; 4 bytes
+ (drop (i32.const -64)) ;; 1 byte
+ (drop (i32.const -65)) ;; 2 bytes
+ (drop (i32.const -8192)) ;; 2 bytes
+ (drop (i32.const -8193)) ;; 3 bytes
+ (drop (i32.const -1048576)) ;; 3 bytes
+ (drop (i32.const -1048577)) ;; 4 bytes
+ (drop (i32.const 0)) ;; 1 byte
+ (drop (i32.const 63)) ;; 1 byte
+ (drop (i32.const 64)) ;; 2 bytes
+ (drop (i32.const 8191)) ;; 2 bytes
+ (drop (i32.const 8192)) ;; 3 bytes
+ (drop (i32.const 1048575)) ;; 3 bytes
+ (drop (i32.const 1048576)) ;; 4 bytes
+ (drop (i32.const -64)) ;; 1 byte
+ (drop (i32.const -65)) ;; 2 bytes
+ (drop (i32.const -8192)) ;; 2 bytes
+ (drop (i32.const -8193)) ;; 3 bytes
+ (drop (i32.const -1048576)) ;; 3 bytes
+ (drop (i32.const -1048577)) ;; 4 bytes
+ (drop (i32.const 0)) ;; 1 byte
+ (drop (i32.const 63)) ;; 1 byte
+ (drop (i32.const 64)) ;; 2 bytes
+ (drop (i32.const 8191)) ;; 2 bytes
+ (drop (i32.const 8192)) ;; 3 bytes
+ (drop (i32.const 1048575)) ;; 3 bytes
+ (drop (i32.const 1048576)) ;; 4 bytes
+ (drop (i32.const -64)) ;; 1 byte
+ (drop (i32.const -65)) ;; 2 bytes
+ (drop (i32.const -8192)) ;; 2 bytes
+ (drop (i32.const -8193)) ;; 3 bytes
+ (drop (i32.const -1048576)) ;; 3 bytes
+ (drop (i32.const -1048577)) ;; 4 bytes
+ (drop (i32.const 0)) ;; 1 byte
+ (drop (i32.const 63)) ;; 1 byte
+ (drop (i32.const 64)) ;; 2 bytes
+ (drop (i32.const 8191)) ;; 2 bytes
+ (drop (i32.const 8192)) ;; 3 bytes
+ (drop (i32.const 1048575)) ;; 3 bytes
+ (drop (i32.const 1048576)) ;; 4 bytes
+ (drop (i32.const -64)) ;; 1 byte
+ (drop (i32.const -65)) ;; 2 bytes
+ (drop (i32.const -8192)) ;; 2 bytes
+ (drop (i32.const -8193)) ;; 3 bytes
+ (drop (i32.const -1048576)) ;; 3 bytes
+ (drop (i32.const -1048577)) ;; 4 bytes
+ (drop (i32.const 0)) ;; 1 byte
+ (drop (i32.const 63)) ;; 1 byte
+ (drop (i32.const 64)) ;; 2 bytes
+ (drop (i32.const 8191)) ;; 2 bytes
+ (drop (i32.const 8192)) ;; 3 bytes
+ (drop (i32.const 1048575)) ;; 3 bytes
+ (drop (i32.const 1048576)) ;; 4 bytes
+ (drop (i32.const -64)) ;; 1 byte
+ (drop (i32.const -65)) ;; 2 bytes
+ (drop (i32.const -8192)) ;; 2 bytes
+ (drop (i32.const -8193)) ;; 3 bytes
+ (drop (i32.const -1048576)) ;; 3 bytes
+ (drop (i32.const -1048577)) ;; 4 bytes
+ (drop (i32.const 0)) ;; 1 byte
+ (drop (i32.const 63)) ;; 1 byte
+ (drop (i32.const 64)) ;; 2 bytes
+ (drop (i32.const 8191)) ;; 2 bytes
+ (drop (i32.const 8192)) ;; 3 bytes
+ (drop (i32.const 1048575)) ;; 3 bytes
+ (drop (i32.const 1048576)) ;; 4 bytes
+ (drop (i32.const -64)) ;; 1 byte
+ (drop (i32.const -65)) ;; 2 bytes
+ (drop (i32.const -8192)) ;; 2 bytes
+ (drop (i32.const -8193)) ;; 3 bytes
+ (drop (i32.const -1048576)) ;; 3 bytes
+ (drop (i32.const -1048577)) ;; 4 bytes
+ (drop (i32.const 0)) ;; 1 byte
+ (drop (i32.const 63)) ;; 1 byte
+ (drop (i32.const 64)) ;; 2 bytes
+ (drop (i32.const 8191)) ;; 2 bytes
+ (drop (i32.const 8192)) ;; 3 bytes
+ (drop (i32.const 1048575)) ;; 3 bytes
+ (drop (i32.const 1048576)) ;; 4 bytes
+ (drop (i32.const -64)) ;; 1 byte
+ (drop (i32.const -65)) ;; 2 bytes
+ (drop (i32.const -8192)) ;; 2 bytes
+ (drop (i32.const -8193)) ;; 3 bytes
+ (drop (i32.const -1048576)) ;; 3 bytes
+ (drop (i32.const -1048577)) ;; 4 bytes
+ (drop (i32.const 0)) ;; 1 byte
+ (drop (i32.const 63)) ;; 1 byte
+ (drop (i32.const 64)) ;; 2 bytes
+ (drop (i32.const 8191)) ;; 2 bytes
+ (drop (i32.const 8192)) ;; 3 bytes
+ (drop (i32.const 1048575)) ;; 3 bytes
+ (drop (i32.const 1048576)) ;; 4 bytes
+ (drop (i32.const -64)) ;; 1 byte
+ (drop (i32.const -65)) ;; 2 bytes
+ (drop (i32.const -8192)) ;; 2 bytes
+ (drop (i32.const -8193)) ;; 3 bytes
+ (drop (i32.const -1048576)) ;; 3 bytes
+ (drop (i32.const -1048577)) ;; 4 bytes
+ (drop (i32.const 0)) ;; 1 byte
+ (drop (i32.const 63)) ;; 1 byte
+ (drop (i32.const 64)) ;; 2 bytes
+ (drop (i32.const 8191)) ;; 2 bytes
+ (drop (i32.const 8192)) ;; 3 bytes
+ (drop (i32.const 1048575)) ;; 3 bytes
+ (drop (i32.const 1048576)) ;; 4 bytes
+ (drop (i32.const -64)) ;; 1 byte
+ (drop (i32.const -65)) ;; 2 bytes
+ (drop (i32.const -8192)) ;; 2 bytes
+ (drop (i32.const -8193)) ;; 3 bytes
+ (drop (i32.const -1048576)) ;; 3 bytes
+ (drop (i32.const -1048577)) ;; 4 bytes
+ (drop (i32.const 0)) ;; 1 byte
+ (drop (i32.const 63)) ;; 1 byte
+ (drop (i32.const 64)) ;; 2 bytes
+ (drop (i32.const 8191)) ;; 2 bytes
+ (drop (i32.const 8192)) ;; 3 bytes
+ (drop (i32.const 1048575)) ;; 3 bytes
+ (drop (i32.const 1048576)) ;; 4 bytes
+ (drop (i32.const -64)) ;; 1 byte
+ (drop (i32.const -65)) ;; 2 bytes
+ (drop (i32.const -8192)) ;; 2 bytes
+ (drop (i32.const -8193)) ;; 3 bytes
+ (drop (i32.const -1048576)) ;; 3 bytes
+ (drop (i32.const -1048577)) ;; 4 bytes
+ )
+ (func $floats-10-times
+ (drop (f32.const 0)) ;; 4 bytes
+ (drop (f64.const 0)) ;; 8 bytes
+ (drop (f32.const 0)) ;; 4 bytes
+ (drop (f64.const 0)) ;; 8 bytes
+ (drop (f32.const 0)) ;; 4 bytes
+ (drop (f64.const 0)) ;; 8 bytes
+ (drop (f32.const 0)) ;; 4 bytes
+ (drop (f64.const 0)) ;; 8 bytes
+ (drop (f32.const 0)) ;; 4 bytes
+ (drop (f64.const 0)) ;; 8 bytes
+ (drop (f32.const 0)) ;; 4 bytes
+ (drop (f64.const 0)) ;; 8 bytes
+ (drop (f32.const 0)) ;; 4 bytes
+ (drop (f64.const 0)) ;; 8 bytes
+ (drop (f32.const 0)) ;; 4 bytes
+ (drop (f64.const 0)) ;; 8 bytes
+ (drop (f32.const 0)) ;; 4 bytes
+ (drop (f64.const 0)) ;; 8 bytes
+ (drop (f32.const 0)) ;; 4 bytes
+ (drop (f64.const 0)) ;; 8 bytes
+ )
+ (func $too-few
+ (drop (i32.const 8192)) ;; 3 bytes, need 6 appearances
+ (drop (i32.const 8192))
+ (drop (i32.const 8192))
+ (drop (i32.const 8192))
+ (drop (i32.const 8192))
+ )
+ (func $just-enough
+ (drop (i32.const 8192)) ;; 3 bytes, need 6 appearances
+ (drop (i32.const 8192))
+ (drop (i32.const 8192))
+ (drop (i32.const 8192))
+ (drop (i32.const 8192))
+ (drop (i32.const 8192))
+ )
+ (func $too-few-b
+ (drop (i32.const 1048576)) ;; 4 bytes, need 4 appearances
+ (drop (i32.const 1048576))
+ (drop (i32.const 1048576))
+ )
+ (func $enough-b
+ (drop (i32.const 1048576)) ;; 4 bytes, need 4 appearances
+ (drop (i32.const 1048576))
+ (drop (i32.const 1048576))
+ (drop (i32.const 1048576))
+ )
+ (func $too-few-c
+ (drop (f32.const 0)) ;; 4 bytes, need 4 appearances
+ (drop (f32.const 0))
+ (drop (f32.const 0))
+ )
+ (func $enough-c
+ (drop (f32.const 0)) ;; 4 bytes, need 4 appearances
+ (drop (f32.const 0))
+ (drop (f32.const 0))
+ (drop (f32.const 0))
+ )
+ (func $too-few-d
+ (drop (f64.const 0)) ;; 8 bytes, need 2 appearances
+ )
+ (func $enough-d
+ (drop (f64.const 0)) ;; 4 bytes, need 4 appearances
+ (drop (f64.const 0))
+ )
+)
+