| ;; NOTE: Assertions have been generated by update_lit_checks.py --all-items and should not be edited. | |
| ;; NOTE: This test was ported using port_passes_tests_to_lit.py and could be cleaned up. | |
| ;; RUN: foreach %s %t wasm-opt --instrument-memory -S -o - | filecheck %s | |
| (module | |
| (memory 256 256) | |
| ;; CHECK: (type $0 (func (param i32 i32) (result i32))) | |
| ;; CHECK: (type $1 (func)) | |
| (type $1 (func)) | |
| ;; CHECK: (type $2 (func (param i32 i32 i32 i32) (result i32))) | |
| ;; CHECK: (type $3 (func (param i32 i64) (result i64))) | |
| ;; CHECK: (type $4 (func (param i32 f32) (result f32))) | |
| ;; CHECK: (type $5 (func (param i32 f64) (result f64))) | |
| ;; CHECK: (import "env" "memory_grow_pre" (func $memory_grow_pre (param i32 i32) (result i32))) | |
| ;; CHECK: (import "env" "memory_grow_post" (func $memory_grow_post (param i32 i32) (result i32))) | |
| ;; CHECK: (import "env" "load_ptr" (func $load_ptr (param i32 i32 i32 i32) (result i32))) | |
| ;; CHECK: (import "env" "load_val_i32" (func $load_val_i32 (param i32 i32) (result i32))) | |
| ;; CHECK: (import "env" "load_val_i64" (func $load_val_i64 (param i32 i64) (result i64))) | |
| ;; CHECK: (import "env" "load_val_f32" (func $load_val_f32 (param i32 f32) (result f32))) | |
| ;; CHECK: (import "env" "load_val_f64" (func $load_val_f64 (param i32 f64) (result f64))) | |
| ;; CHECK: (import "env" "store_ptr" (func $store_ptr (param i32 i32 i32 i32) (result i32))) | |
| ;; CHECK: (import "env" "store_val_i32" (func $store_val_i32 (param i32 i32) (result i32))) | |
| ;; CHECK: (import "env" "store_val_i64" (func $store_val_i64 (param i32 i64) (result i64))) | |
| ;; CHECK: (import "env" "store_val_f32" (func $store_val_f32 (param i32 f32) (result f32))) | |
| ;; CHECK: (import "env" "store_val_f64" (func $store_val_f64 (param i32 f64) (result f64))) | |
| ;; CHECK: (memory $0 256 256) | |
| ;; CHECK: (func $A | |
| ;; CHECK-NEXT: (drop | |
| ;; CHECK-NEXT: (call $load_val_i32 | |
| ;; CHECK-NEXT: (i32.const 1) | |
| ;; CHECK-NEXT: (i32.load8_s | |
| ;; CHECK-NEXT: (call $load_ptr | |
| ;; CHECK-NEXT: (i32.const 1) | |
| ;; CHECK-NEXT: (i32.const 1) | |
| ;; CHECK-NEXT: (i32.const 0) | |
| ;; CHECK-NEXT: (i32.const 0) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: (drop | |
| ;; CHECK-NEXT: (call $load_val_i32 | |
| ;; CHECK-NEXT: (i32.const 2) | |
| ;; CHECK-NEXT: (i32.load8_u | |
| ;; CHECK-NEXT: (call $load_ptr | |
| ;; CHECK-NEXT: (i32.const 2) | |
| ;; CHECK-NEXT: (i32.const 1) | |
| ;; CHECK-NEXT: (i32.const 0) | |
| ;; CHECK-NEXT: (i32.const 0) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: (drop | |
| ;; CHECK-NEXT: (call $load_val_i32 | |
| ;; CHECK-NEXT: (i32.const 3) | |
| ;; CHECK-NEXT: (i32.load16_s | |
| ;; CHECK-NEXT: (call $load_ptr | |
| ;; CHECK-NEXT: (i32.const 3) | |
| ;; CHECK-NEXT: (i32.const 2) | |
| ;; CHECK-NEXT: (i32.const 0) | |
| ;; CHECK-NEXT: (i32.const 0) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: (drop | |
| ;; CHECK-NEXT: (call $load_val_i32 | |
| ;; CHECK-NEXT: (i32.const 4) | |
| ;; CHECK-NEXT: (i32.load16_u | |
| ;; CHECK-NEXT: (call $load_ptr | |
| ;; CHECK-NEXT: (i32.const 4) | |
| ;; CHECK-NEXT: (i32.const 2) | |
| ;; CHECK-NEXT: (i32.const 0) | |
| ;; CHECK-NEXT: (i32.const 0) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: (drop | |
| ;; CHECK-NEXT: (call $load_val_i32 | |
| ;; CHECK-NEXT: (i32.const 5) | |
| ;; CHECK-NEXT: (i32.load | |
| ;; CHECK-NEXT: (call $load_ptr | |
| ;; CHECK-NEXT: (i32.const 5) | |
| ;; CHECK-NEXT: (i32.const 4) | |
| ;; CHECK-NEXT: (i32.const 0) | |
| ;; CHECK-NEXT: (i32.const 0) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: (drop | |
| ;; CHECK-NEXT: (call $load_val_i64 | |
| ;; CHECK-NEXT: (i32.const 6) | |
| ;; CHECK-NEXT: (i64.load8_s | |
| ;; CHECK-NEXT: (call $load_ptr | |
| ;; CHECK-NEXT: (i32.const 6) | |
| ;; CHECK-NEXT: (i32.const 1) | |
| ;; CHECK-NEXT: (i32.const 0) | |
| ;; CHECK-NEXT: (i32.const 0) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: (drop | |
| ;; CHECK-NEXT: (call $load_val_i64 | |
| ;; CHECK-NEXT: (i32.const 7) | |
| ;; CHECK-NEXT: (i64.load8_u | |
| ;; CHECK-NEXT: (call $load_ptr | |
| ;; CHECK-NEXT: (i32.const 7) | |
| ;; CHECK-NEXT: (i32.const 1) | |
| ;; CHECK-NEXT: (i32.const 0) | |
| ;; CHECK-NEXT: (i32.const 0) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: (drop | |
| ;; CHECK-NEXT: (call $load_val_i64 | |
| ;; CHECK-NEXT: (i32.const 8) | |
| ;; CHECK-NEXT: (i64.load16_s | |
| ;; CHECK-NEXT: (call $load_ptr | |
| ;; CHECK-NEXT: (i32.const 8) | |
| ;; CHECK-NEXT: (i32.const 2) | |
| ;; CHECK-NEXT: (i32.const 0) | |
| ;; CHECK-NEXT: (i32.const 0) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: (drop | |
| ;; CHECK-NEXT: (call $load_val_i64 | |
| ;; CHECK-NEXT: (i32.const 9) | |
| ;; CHECK-NEXT: (i64.load16_u | |
| ;; CHECK-NEXT: (call $load_ptr | |
| ;; CHECK-NEXT: (i32.const 9) | |
| ;; CHECK-NEXT: (i32.const 2) | |
| ;; CHECK-NEXT: (i32.const 0) | |
| ;; CHECK-NEXT: (i32.const 0) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: (drop | |
| ;; CHECK-NEXT: (call $load_val_i64 | |
| ;; CHECK-NEXT: (i32.const 10) | |
| ;; CHECK-NEXT: (i64.load32_s | |
| ;; CHECK-NEXT: (call $load_ptr | |
| ;; CHECK-NEXT: (i32.const 10) | |
| ;; CHECK-NEXT: (i32.const 4) | |
| ;; CHECK-NEXT: (i32.const 0) | |
| ;; CHECK-NEXT: (i32.const 0) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: (drop | |
| ;; CHECK-NEXT: (call $load_val_i64 | |
| ;; CHECK-NEXT: (i32.const 11) | |
| ;; CHECK-NEXT: (i64.load32_u | |
| ;; CHECK-NEXT: (call $load_ptr | |
| ;; CHECK-NEXT: (i32.const 11) | |
| ;; CHECK-NEXT: (i32.const 4) | |
| ;; CHECK-NEXT: (i32.const 0) | |
| ;; CHECK-NEXT: (i32.const 0) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: (drop | |
| ;; CHECK-NEXT: (call $load_val_i64 | |
| ;; CHECK-NEXT: (i32.const 12) | |
| ;; CHECK-NEXT: (i64.load | |
| ;; CHECK-NEXT: (call $load_ptr | |
| ;; CHECK-NEXT: (i32.const 12) | |
| ;; CHECK-NEXT: (i32.const 8) | |
| ;; CHECK-NEXT: (i32.const 0) | |
| ;; CHECK-NEXT: (i32.const 0) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: (drop | |
| ;; CHECK-NEXT: (call $load_val_f32 | |
| ;; CHECK-NEXT: (i32.const 13) | |
| ;; CHECK-NEXT: (f32.load | |
| ;; CHECK-NEXT: (call $load_ptr | |
| ;; CHECK-NEXT: (i32.const 13) | |
| ;; CHECK-NEXT: (i32.const 4) | |
| ;; CHECK-NEXT: (i32.const 0) | |
| ;; CHECK-NEXT: (i32.const 0) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: (drop | |
| ;; CHECK-NEXT: (call $load_val_f64 | |
| ;; CHECK-NEXT: (i32.const 14) | |
| ;; CHECK-NEXT: (f64.load | |
| ;; CHECK-NEXT: (call $load_ptr | |
| ;; CHECK-NEXT: (i32.const 14) | |
| ;; CHECK-NEXT: (i32.const 8) | |
| ;; CHECK-NEXT: (i32.const 0) | |
| ;; CHECK-NEXT: (i32.const 0) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: (drop | |
| ;; CHECK-NEXT: (call $load_val_i32 | |
| ;; CHECK-NEXT: (i32.const 15) | |
| ;; CHECK-NEXT: (i32.load8_s offset=1 | |
| ;; CHECK-NEXT: (call $load_ptr | |
| ;; CHECK-NEXT: (i32.const 15) | |
| ;; CHECK-NEXT: (i32.const 1) | |
| ;; CHECK-NEXT: (i32.const 1) | |
| ;; CHECK-NEXT: (i32.const 0) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: (drop | |
| ;; CHECK-NEXT: (call $load_val_i32 | |
| ;; CHECK-NEXT: (i32.const 16) | |
| ;; CHECK-NEXT: (i32.load8_u offset=2 | |
| ;; CHECK-NEXT: (call $load_ptr | |
| ;; CHECK-NEXT: (i32.const 16) | |
| ;; CHECK-NEXT: (i32.const 1) | |
| ;; CHECK-NEXT: (i32.const 2) | |
| ;; CHECK-NEXT: (i32.const 0) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: (drop | |
| ;; CHECK-NEXT: (call $load_val_i32 | |
| ;; CHECK-NEXT: (i32.const 17) | |
| ;; CHECK-NEXT: (i32.load16_s offset=3 align=1 | |
| ;; CHECK-NEXT: (call $load_ptr | |
| ;; CHECK-NEXT: (i32.const 17) | |
| ;; CHECK-NEXT: (i32.const 2) | |
| ;; CHECK-NEXT: (i32.const 3) | |
| ;; CHECK-NEXT: (i32.const 0) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: (drop | |
| ;; CHECK-NEXT: (call $load_val_i32 | |
| ;; CHECK-NEXT: (i32.const 18) | |
| ;; CHECK-NEXT: (i32.load16_u offset=4 align=1 | |
| ;; CHECK-NEXT: (call $load_ptr | |
| ;; CHECK-NEXT: (i32.const 18) | |
| ;; CHECK-NEXT: (i32.const 2) | |
| ;; CHECK-NEXT: (i32.const 4) | |
| ;; CHECK-NEXT: (i32.const 0) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: (drop | |
| ;; CHECK-NEXT: (call $load_val_i32 | |
| ;; CHECK-NEXT: (i32.const 19) | |
| ;; CHECK-NEXT: (i32.load offset=5 align=2 | |
| ;; CHECK-NEXT: (call $load_ptr | |
| ;; CHECK-NEXT: (i32.const 19) | |
| ;; CHECK-NEXT: (i32.const 4) | |
| ;; CHECK-NEXT: (i32.const 5) | |
| ;; CHECK-NEXT: (i32.const 0) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: (drop | |
| ;; CHECK-NEXT: (call $load_val_i64 | |
| ;; CHECK-NEXT: (i32.const 20) | |
| ;; CHECK-NEXT: (i64.load8_s offset=6 | |
| ;; CHECK-NEXT: (call $load_ptr | |
| ;; CHECK-NEXT: (i32.const 20) | |
| ;; CHECK-NEXT: (i32.const 1) | |
| ;; CHECK-NEXT: (i32.const 6) | |
| ;; CHECK-NEXT: (i32.const 0) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: (drop | |
| ;; CHECK-NEXT: (call $load_val_i64 | |
| ;; CHECK-NEXT: (i32.const 21) | |
| ;; CHECK-NEXT: (i64.load8_u offset=7 | |
| ;; CHECK-NEXT: (call $load_ptr | |
| ;; CHECK-NEXT: (i32.const 21) | |
| ;; CHECK-NEXT: (i32.const 1) | |
| ;; CHECK-NEXT: (i32.const 7) | |
| ;; CHECK-NEXT: (i32.const 0) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: (drop | |
| ;; CHECK-NEXT: (call $load_val_i64 | |
| ;; CHECK-NEXT: (i32.const 22) | |
| ;; CHECK-NEXT: (i64.load16_s offset=8 align=1 | |
| ;; CHECK-NEXT: (call $load_ptr | |
| ;; CHECK-NEXT: (i32.const 22) | |
| ;; CHECK-NEXT: (i32.const 2) | |
| ;; CHECK-NEXT: (i32.const 8) | |
| ;; CHECK-NEXT: (i32.const 0) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: (drop | |
| ;; CHECK-NEXT: (call $load_val_i64 | |
| ;; CHECK-NEXT: (i32.const 23) | |
| ;; CHECK-NEXT: (i64.load16_u offset=9 align=1 | |
| ;; CHECK-NEXT: (call $load_ptr | |
| ;; CHECK-NEXT: (i32.const 23) | |
| ;; CHECK-NEXT: (i32.const 2) | |
| ;; CHECK-NEXT: (i32.const 9) | |
| ;; CHECK-NEXT: (i32.const 0) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: (drop | |
| ;; CHECK-NEXT: (call $load_val_i64 | |
| ;; CHECK-NEXT: (i32.const 24) | |
| ;; CHECK-NEXT: (i64.load32_s offset=10 align=2 | |
| ;; CHECK-NEXT: (call $load_ptr | |
| ;; CHECK-NEXT: (i32.const 24) | |
| ;; CHECK-NEXT: (i32.const 4) | |
| ;; CHECK-NEXT: (i32.const 10) | |
| ;; CHECK-NEXT: (i32.const 0) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: (drop | |
| ;; CHECK-NEXT: (call $load_val_i64 | |
| ;; CHECK-NEXT: (i32.const 25) | |
| ;; CHECK-NEXT: (i64.load32_u offset=11 align=2 | |
| ;; CHECK-NEXT: (call $load_ptr | |
| ;; CHECK-NEXT: (i32.const 25) | |
| ;; CHECK-NEXT: (i32.const 4) | |
| ;; CHECK-NEXT: (i32.const 11) | |
| ;; CHECK-NEXT: (i32.const 0) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: (drop | |
| ;; CHECK-NEXT: (call $load_val_i64 | |
| ;; CHECK-NEXT: (i32.const 26) | |
| ;; CHECK-NEXT: (i64.load offset=12 align=2 | |
| ;; CHECK-NEXT: (call $load_ptr | |
| ;; CHECK-NEXT: (i32.const 26) | |
| ;; CHECK-NEXT: (i32.const 8) | |
| ;; CHECK-NEXT: (i32.const 12) | |
| ;; CHECK-NEXT: (i32.const 0) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: (drop | |
| ;; CHECK-NEXT: (call $load_val_f32 | |
| ;; CHECK-NEXT: (i32.const 27) | |
| ;; CHECK-NEXT: (f32.load offset=13 align=2 | |
| ;; CHECK-NEXT: (call $load_ptr | |
| ;; CHECK-NEXT: (i32.const 27) | |
| ;; CHECK-NEXT: (i32.const 4) | |
| ;; CHECK-NEXT: (i32.const 13) | |
| ;; CHECK-NEXT: (i32.const 0) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: (drop | |
| ;; CHECK-NEXT: (call $load_val_f64 | |
| ;; CHECK-NEXT: (i32.const 28) | |
| ;; CHECK-NEXT: (f64.load offset=14 align=2 | |
| ;; CHECK-NEXT: (call $load_ptr | |
| ;; CHECK-NEXT: (i32.const 28) | |
| ;; CHECK-NEXT: (i32.const 8) | |
| ;; CHECK-NEXT: (i32.const 14) | |
| ;; CHECK-NEXT: (i32.const 0) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: ) | |
| (func $A (type $1) | |
| (drop (i32.load8_s (i32.const 0))) | |
| (drop (i32.load8_u (i32.const 0))) | |
| (drop (i32.load16_s (i32.const 0))) | |
| (drop (i32.load16_u (i32.const 0))) | |
| (drop (i32.load (i32.const 0))) | |
| (drop (i64.load8_s (i32.const 0))) | |
| (drop (i64.load8_u (i32.const 0))) | |
| (drop (i64.load16_s (i32.const 0))) | |
| (drop (i64.load16_u (i32.const 0))) | |
| (drop (i64.load32_s (i32.const 0))) | |
| (drop (i64.load32_u (i32.const 0))) | |
| (drop (i64.load (i32.const 0))) | |
| (drop (f32.load (i32.const 0))) | |
| (drop (f64.load (i32.const 0))) | |
| (drop (i32.load8_s offset=1 align=1 (i32.const 0))) | |
| (drop (i32.load8_u offset=2 align=1 (i32.const 0))) | |
| (drop (i32.load16_s offset=3 align=1 (i32.const 0))) | |
| (drop (i32.load16_u offset=4 align=1 (i32.const 0))) | |
| (drop (i32.load offset=5 align=2 (i32.const 0))) | |
| (drop (i64.load8_s offset=6 align=1 (i32.const 0))) | |
| (drop (i64.load8_u offset=7 align=1 (i32.const 0))) | |
| (drop (i64.load16_s offset=8 align=1 (i32.const 0))) | |
| (drop (i64.load16_u offset=9 align=1 (i32.const 0))) | |
| (drop (i64.load32_s offset=10 align=2 (i32.const 0))) | |
| (drop (i64.load32_u offset=11 align=2 (i32.const 0))) | |
| (drop (i64.load offset=12 align=2 (i32.const 0))) | |
| (drop (f32.load offset=13 align=2 (i32.const 0))) | |
| (drop (f64.load offset=14 align=2 (i32.const 0))) | |
| ) | |
| ;; CHECK: (func $B | |
| ;; CHECK-NEXT: (i32.store8 | |
| ;; CHECK-NEXT: (call $store_ptr | |
| ;; CHECK-NEXT: (i32.const 29) | |
| ;; CHECK-NEXT: (i32.const 1) | |
| ;; CHECK-NEXT: (i32.const 0) | |
| ;; CHECK-NEXT: (i32.const 0) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: (call $store_val_i32 | |
| ;; CHECK-NEXT: (i32.const 29) | |
| ;; CHECK-NEXT: (i32.const 1) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: (i32.store16 | |
| ;; CHECK-NEXT: (call $store_ptr | |
| ;; CHECK-NEXT: (i32.const 30) | |
| ;; CHECK-NEXT: (i32.const 2) | |
| ;; CHECK-NEXT: (i32.const 0) | |
| ;; CHECK-NEXT: (i32.const 0) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: (call $store_val_i32 | |
| ;; CHECK-NEXT: (i32.const 30) | |
| ;; CHECK-NEXT: (i32.const 2) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: (i32.store | |
| ;; CHECK-NEXT: (call $store_ptr | |
| ;; CHECK-NEXT: (i32.const 31) | |
| ;; CHECK-NEXT: (i32.const 4) | |
| ;; CHECK-NEXT: (i32.const 0) | |
| ;; CHECK-NEXT: (i32.const 0) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: (call $store_val_i32 | |
| ;; CHECK-NEXT: (i32.const 31) | |
| ;; CHECK-NEXT: (i32.const 3) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: (i64.store8 | |
| ;; CHECK-NEXT: (call $store_ptr | |
| ;; CHECK-NEXT: (i32.const 32) | |
| ;; CHECK-NEXT: (i32.const 1) | |
| ;; CHECK-NEXT: (i32.const 0) | |
| ;; CHECK-NEXT: (i32.const 0) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: (call $store_val_i64 | |
| ;; CHECK-NEXT: (i32.const 32) | |
| ;; CHECK-NEXT: (i64.const 4) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: (i64.store16 | |
| ;; CHECK-NEXT: (call $store_ptr | |
| ;; CHECK-NEXT: (i32.const 33) | |
| ;; CHECK-NEXT: (i32.const 2) | |
| ;; CHECK-NEXT: (i32.const 0) | |
| ;; CHECK-NEXT: (i32.const 0) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: (call $store_val_i64 | |
| ;; CHECK-NEXT: (i32.const 33) | |
| ;; CHECK-NEXT: (i64.const 5) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: (i64.store32 | |
| ;; CHECK-NEXT: (call $store_ptr | |
| ;; CHECK-NEXT: (i32.const 34) | |
| ;; CHECK-NEXT: (i32.const 4) | |
| ;; CHECK-NEXT: (i32.const 0) | |
| ;; CHECK-NEXT: (i32.const 0) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: (call $store_val_i64 | |
| ;; CHECK-NEXT: (i32.const 34) | |
| ;; CHECK-NEXT: (i64.const 6) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: (i64.store | |
| ;; CHECK-NEXT: (call $store_ptr | |
| ;; CHECK-NEXT: (i32.const 35) | |
| ;; CHECK-NEXT: (i32.const 8) | |
| ;; CHECK-NEXT: (i32.const 0) | |
| ;; CHECK-NEXT: (i32.const 0) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: (call $store_val_i64 | |
| ;; CHECK-NEXT: (i32.const 35) | |
| ;; CHECK-NEXT: (i64.const 7) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: (f32.store | |
| ;; CHECK-NEXT: (call $store_ptr | |
| ;; CHECK-NEXT: (i32.const 36) | |
| ;; CHECK-NEXT: (i32.const 4) | |
| ;; CHECK-NEXT: (i32.const 0) | |
| ;; CHECK-NEXT: (i32.const 0) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: (call $store_val_f32 | |
| ;; CHECK-NEXT: (i32.const 36) | |
| ;; CHECK-NEXT: (f32.const 8) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: (f64.store | |
| ;; CHECK-NEXT: (call $store_ptr | |
| ;; CHECK-NEXT: (i32.const 37) | |
| ;; CHECK-NEXT: (i32.const 8) | |
| ;; CHECK-NEXT: (i32.const 0) | |
| ;; CHECK-NEXT: (i32.const 0) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: (call $store_val_f64 | |
| ;; CHECK-NEXT: (i32.const 37) | |
| ;; CHECK-NEXT: (f64.const 9) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: (i32.store8 offset=1 | |
| ;; CHECK-NEXT: (call $store_ptr | |
| ;; CHECK-NEXT: (i32.const 38) | |
| ;; CHECK-NEXT: (i32.const 1) | |
| ;; CHECK-NEXT: (i32.const 1) | |
| ;; CHECK-NEXT: (i32.const 0) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: (call $store_val_i32 | |
| ;; CHECK-NEXT: (i32.const 38) | |
| ;; CHECK-NEXT: (i32.const 1) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: (i32.store16 offset=2 align=1 | |
| ;; CHECK-NEXT: (call $store_ptr | |
| ;; CHECK-NEXT: (i32.const 39) | |
| ;; CHECK-NEXT: (i32.const 2) | |
| ;; CHECK-NEXT: (i32.const 2) | |
| ;; CHECK-NEXT: (i32.const 0) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: (call $store_val_i32 | |
| ;; CHECK-NEXT: (i32.const 39) | |
| ;; CHECK-NEXT: (i32.const 2) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: (i32.store offset=3 align=2 | |
| ;; CHECK-NEXT: (call $store_ptr | |
| ;; CHECK-NEXT: (i32.const 40) | |
| ;; CHECK-NEXT: (i32.const 4) | |
| ;; CHECK-NEXT: (i32.const 3) | |
| ;; CHECK-NEXT: (i32.const 0) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: (call $store_val_i32 | |
| ;; CHECK-NEXT: (i32.const 40) | |
| ;; CHECK-NEXT: (i32.const 3) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: (i64.store8 offset=4 | |
| ;; CHECK-NEXT: (call $store_ptr | |
| ;; CHECK-NEXT: (i32.const 41) | |
| ;; CHECK-NEXT: (i32.const 1) | |
| ;; CHECK-NEXT: (i32.const 4) | |
| ;; CHECK-NEXT: (i32.const 0) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: (call $store_val_i64 | |
| ;; CHECK-NEXT: (i32.const 41) | |
| ;; CHECK-NEXT: (i64.const 4) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: (i64.store16 offset=5 | |
| ;; CHECK-NEXT: (call $store_ptr | |
| ;; CHECK-NEXT: (i32.const 42) | |
| ;; CHECK-NEXT: (i32.const 2) | |
| ;; CHECK-NEXT: (i32.const 5) | |
| ;; CHECK-NEXT: (i32.const 0) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: (call $store_val_i64 | |
| ;; CHECK-NEXT: (i32.const 42) | |
| ;; CHECK-NEXT: (i64.const 5) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: (i64.store32 offset=6 align=2 | |
| ;; CHECK-NEXT: (call $store_ptr | |
| ;; CHECK-NEXT: (i32.const 43) | |
| ;; CHECK-NEXT: (i32.const 4) | |
| ;; CHECK-NEXT: (i32.const 6) | |
| ;; CHECK-NEXT: (i32.const 0) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: (call $store_val_i64 | |
| ;; CHECK-NEXT: (i32.const 43) | |
| ;; CHECK-NEXT: (i64.const 6) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: (i64.store offset=7 align=2 | |
| ;; CHECK-NEXT: (call $store_ptr | |
| ;; CHECK-NEXT: (i32.const 44) | |
| ;; CHECK-NEXT: (i32.const 8) | |
| ;; CHECK-NEXT: (i32.const 7) | |
| ;; CHECK-NEXT: (i32.const 0) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: (call $store_val_i64 | |
| ;; CHECK-NEXT: (i32.const 44) | |
| ;; CHECK-NEXT: (i64.const 7) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: (f32.store offset=8 align=2 | |
| ;; CHECK-NEXT: (call $store_ptr | |
| ;; CHECK-NEXT: (i32.const 45) | |
| ;; CHECK-NEXT: (i32.const 4) | |
| ;; CHECK-NEXT: (i32.const 8) | |
| ;; CHECK-NEXT: (i32.const 0) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: (call $store_val_f32 | |
| ;; CHECK-NEXT: (i32.const 45) | |
| ;; CHECK-NEXT: (f32.const 8) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: (f64.store offset=9 align=2 | |
| ;; CHECK-NEXT: (call $store_ptr | |
| ;; CHECK-NEXT: (i32.const 46) | |
| ;; CHECK-NEXT: (i32.const 8) | |
| ;; CHECK-NEXT: (i32.const 9) | |
| ;; CHECK-NEXT: (i32.const 0) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: (call $store_val_f64 | |
| ;; CHECK-NEXT: (i32.const 46) | |
| ;; CHECK-NEXT: (f64.const 9) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: ) | |
| (func $B (type $1) | |
| (i32.store8 (i32.const 0) (i32.const 1)) | |
| (i32.store16 (i32.const 0) (i32.const 2)) | |
| (i32.store (i32.const 0) (i32.const 3)) | |
| (i64.store8 (i32.const 0) (i64.const 4)) | |
| (i64.store16 (i32.const 0) (i64.const 5)) | |
| (i64.store32 (i32.const 0) (i64.const 6)) | |
| (i64.store (i32.const 0) (i64.const 7)) | |
| (f32.store (i32.const 0) (f32.const 8)) | |
| (f64.store (i32.const 0) (f64.const 9)) | |
| (i32.store8 offset=1 align=1 (i32.const 0) (i32.const 1)) | |
| (i32.store16 offset=2 align=1 (i32.const 0) (i32.const 2)) | |
| (i32.store offset=3 align=2 (i32.const 0) (i32.const 3)) | |
| (i64.store8 offset=4 align=1 (i32.const 0) (i64.const 4)) | |
| (i64.store16 offset=5 align=2 (i32.const 0) (i64.const 5)) | |
| (i64.store32 offset=6 align=2 (i32.const 0) (i64.const 6)) | |
| (i64.store offset=7 align=2 (i32.const 0) (i64.const 7)) | |
| (f32.store offset=8 align=2 (i32.const 0) (f32.const 8)) | |
| (f64.store offset=9 align=2 (i32.const 0) (f64.const 9)) | |
| ) | |
| ;; CHECK: (func $C | |
| ;; CHECK-NEXT: (drop | |
| ;; CHECK-NEXT: (call $memory_grow_post | |
| ;; CHECK-NEXT: (i32.const 47) | |
| ;; CHECK-NEXT: (memory.grow | |
| ;; CHECK-NEXT: (call $memory_grow_pre | |
| ;; CHECK-NEXT: (i32.const 47) | |
| ;; CHECK-NEXT: (i32.const 4) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: ) | |
| (func $C (type $1) | |
| (drop (memory.grow (i32.const 4))) | |
| ) | |
| ) |