blob: 7db2648b80077936e1851d098339a3f1410d4d29 [file] [log] [blame]
;; 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 $func.0 (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))
)
)