summaryrefslogtreecommitdiff
path: root/test/lit/passes/const-hoisting.wast
diff options
context:
space:
mode:
authorThomas Lively <7121787+tlively@users.noreply.github.com>2021-07-15 09:21:50 -0700
committerGitHub <noreply@github.com>2021-07-15 09:21:50 -0700
commita3d6930e59114196f29cb3318e96843dbd0b413c (patch)
treee3a6b15ff1b4bbdfd465f0a8509a747b50b302eb /test/lit/passes/const-hoisting.wast
parent1b70f1e1f53084eae86680afd2c97ef034490197 (diff)
downloadbinaryen-a3d6930e59114196f29cb3318e96843dbd0b413c.tar.gz
binaryen-a3d6930e59114196f29cb3318e96843dbd0b413c.tar.bz2
binaryen-a3d6930e59114196f29cb3318e96843dbd0b413c.zip
Port test/passes/c* to lit (#3988)
Diffstat (limited to 'test/lit/passes/const-hoisting.wast')
-rw-r--r--test/lit/passes/const-hoisting.wast834
1 files changed, 834 insertions, 0 deletions
diff --git a/test/lit/passes/const-hoisting.wast b/test/lit/passes/const-hoisting.wast
new file mode 100644
index 000000000..276cb8045
--- /dev/null
+++ b/test/lit/passes/const-hoisting.wast
@@ -0,0 +1,834 @@
+;; NOTE: Assertions have been generated by update_lit_checks.py --all-items and should not be edited.
+;; NOTE: This test was ported using port_test.py and could be cleaned up.
+
+;; RUN: foreach %s %t wasm-opt --const-hoisting -S -o - | filecheck %s
+
+(module
+ ;; CHECK: (type $none_=>_none (func))
+
+ ;; CHECK: (func $10-of-each
+ ;; CHECK-NEXT: (local $0 i32)
+ ;; CHECK-NEXT: (local $1 i32)
+ ;; CHECK-NEXT: (local $2 i32)
+ ;; CHECK-NEXT: (local $3 i32)
+ ;; CHECK-NEXT: (local $4 i32)
+ ;; CHECK-NEXT: (local $5 i32)
+ ;; CHECK-NEXT: (block
+ ;; CHECK-NEXT: (local.set $0
+ ;; CHECK-NEXT: (i32.const 8192)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (local.set $1
+ ;; CHECK-NEXT: (i32.const 1048575)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (local.set $2
+ ;; CHECK-NEXT: (i32.const 1048576)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (local.set $3
+ ;; CHECK-NEXT: (i32.const -8193)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (local.set $4
+ ;; CHECK-NEXT: (i32.const -1048576)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (local.set $5
+ ;; CHECK-NEXT: (i32.const -1048577)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (block
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i32.const 0)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i32.const 63)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i32.const 64)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i32.const 8191)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (local.get $1)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (local.get $2)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i32.const -64)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i32.const -65)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i32.const -8192)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (local.get $3)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (local.get $4)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (local.get $5)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i32.const 0)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i32.const 63)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i32.const 64)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i32.const 8191)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (local.get $1)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (local.get $2)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i32.const -64)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i32.const -65)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i32.const -8192)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (local.get $3)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (local.get $4)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (local.get $5)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i32.const 0)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i32.const 63)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i32.const 64)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i32.const 8191)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (local.get $1)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (local.get $2)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i32.const -64)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i32.const -65)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i32.const -8192)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (local.get $3)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (local.get $4)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (local.get $5)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i32.const 0)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i32.const 63)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i32.const 64)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i32.const 8191)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (local.get $1)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (local.get $2)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i32.const -64)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i32.const -65)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i32.const -8192)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (local.get $3)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (local.get $4)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (local.get $5)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i32.const 0)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i32.const 63)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i32.const 64)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i32.const 8191)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (local.get $1)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (local.get $2)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i32.const -64)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i32.const -65)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i32.const -8192)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (local.get $3)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (local.get $4)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (local.get $5)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i32.const 0)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i32.const 63)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i32.const 64)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i32.const 8191)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (local.get $1)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (local.get $2)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i32.const -64)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i32.const -65)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i32.const -8192)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (local.get $3)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (local.get $4)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (local.get $5)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i32.const 0)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i32.const 63)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i32.const 64)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i32.const 8191)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (local.get $1)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (local.get $2)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i32.const -64)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i32.const -65)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i32.const -8192)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (local.get $3)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (local.get $4)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (local.get $5)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i32.const 0)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i32.const 63)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i32.const 64)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i32.const 8191)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (local.get $1)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (local.get $2)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i32.const -64)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i32.const -65)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i32.const -8192)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (local.get $3)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (local.get $4)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (local.get $5)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i32.const 0)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i32.const 63)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i32.const 64)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i32.const 8191)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (local.get $1)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (local.get $2)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i32.const -64)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i32.const -65)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i32.const -8192)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (local.get $3)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (local.get $4)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (local.get $5)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i32.const 0)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i32.const 63)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i32.const 64)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i32.const 8191)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (local.get $1)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (local.get $2)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i32.const -64)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i32.const -65)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i32.const -8192)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (local.get $3)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (local.get $4)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (local.get $5)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ (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
+ )
+ ;; CHECK: (func $floats-10-times
+ ;; CHECK-NEXT: (local $0 f32)
+ ;; CHECK-NEXT: (local $1 f64)
+ ;; CHECK-NEXT: (block
+ ;; CHECK-NEXT: (local.set $0
+ ;; CHECK-NEXT: (f32.const 0)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (local.set $1
+ ;; CHECK-NEXT: (f64.const 0)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (block
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (local.get $1)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (local.get $1)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (local.get $1)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (local.get $1)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (local.get $1)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (local.get $1)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (local.get $1)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (local.get $1)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (local.get $1)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (local.get $1)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ (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
+ )
+ ;; CHECK: (func $too-few
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i32.const 8192)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i32.const 8192)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i32.const 8192)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i32.const 8192)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i32.const 8192)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ (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))
+ )
+ ;; CHECK: (func $just-enough
+ ;; CHECK-NEXT: (local $0 i32)
+ ;; CHECK-NEXT: (block
+ ;; CHECK-NEXT: (local.set $0
+ ;; CHECK-NEXT: (i32.const 8192)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (block
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ (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))
+ )
+ ;; CHECK: (func $too-few-b
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i32.const 1048576)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i32.const 1048576)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i32.const 1048576)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ (func $too-few-b
+ (drop (i32.const 1048576)) ;; 4 bytes, need 4 appearances
+ (drop (i32.const 1048576))
+ (drop (i32.const 1048576))
+ )
+ ;; CHECK: (func $enough-b
+ ;; CHECK-NEXT: (local $0 i32)
+ ;; CHECK-NEXT: (block
+ ;; CHECK-NEXT: (local.set $0
+ ;; CHECK-NEXT: (i32.const 1048576)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (block
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ (func $enough-b
+ (drop (i32.const 1048576)) ;; 4 bytes, need 4 appearances
+ (drop (i32.const 1048576))
+ (drop (i32.const 1048576))
+ (drop (i32.const 1048576))
+ )
+ ;; CHECK: (func $too-few-c
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (f32.const 0)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (f32.const 0)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (f32.const 0)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ (func $too-few-c
+ (drop (f32.const 0)) ;; 4 bytes, need 4 appearances
+ (drop (f32.const 0))
+ (drop (f32.const 0))
+ )
+ ;; CHECK: (func $enough-c
+ ;; CHECK-NEXT: (local $0 f32)
+ ;; CHECK-NEXT: (block
+ ;; CHECK-NEXT: (local.set $0
+ ;; CHECK-NEXT: (f32.const 0)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (block
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ (func $enough-c
+ (drop (f32.const 0)) ;; 4 bytes, need 4 appearances
+ (drop (f32.const 0))
+ (drop (f32.const 0))
+ (drop (f32.const 0))
+ )
+ ;; CHECK: (func $too-few-d
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (f64.const 0)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ (func $too-few-d
+ (drop (f64.const 0)) ;; 8 bytes, need 2 appearances
+ )
+ ;; CHECK: (func $enough-d
+ ;; CHECK-NEXT: (local $0 f64)
+ ;; CHECK-NEXT: (block
+ ;; CHECK-NEXT: (local.set $0
+ ;; CHECK-NEXT: (f64.const 0)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (block
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ (func $enough-d
+ (drop (f64.const 0)) ;; 4 bytes, need 4 appearances
+ (drop (f64.const 0))
+ )
+)
+