diff options
Diffstat (limited to 'test')
-rw-r--r-- | test/passes/const-hoisting.txt | 630 | ||||
-rw-r--r-- | test/passes/const-hoisting.wast | 201 |
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)) + ) +) + |