...

Text file src/github.com/tetratelabs/wazero/internal/integration_test/spectest/v1/testdata/memory.wast

Documentation: github.com/tetratelabs/wazero/internal/integration_test/spectest/v1/testdata

     1;; Test memory section structure
     2
     3(module (memory 0 0))
     4(module (memory 0 1))
     5(module (memory 1 256))
     6(module (memory 0 65536))
     7
     8(assert_invalid (module (memory 0) (memory 0)) "multiple memories")
     9(assert_invalid (module (memory (import "spectest" "memory") 0) (memory 0)) "multiple memories")
    10
    11(module (memory (data)) (func (export "memsize") (result i32) (memory.size)))
    12(assert_return (invoke "memsize") (i32.const 0))
    13(module (memory (data "")) (func (export "memsize") (result i32) (memory.size)))
    14(assert_return (invoke "memsize") (i32.const 0))
    15(module (memory (data "x")) (func (export "memsize") (result i32) (memory.size)))
    16(assert_return (invoke "memsize") (i32.const 1))
    17
    18(assert_invalid (module (data (i32.const 0))) "unknown memory")
    19(assert_invalid (module (data (i32.const 0) "")) "unknown memory")
    20(assert_invalid (module (data (i32.const 0) "x")) "unknown memory")
    21
    22(assert_invalid
    23  (module (func (drop (f32.load (i32.const 0)))))
    24  "unknown memory"
    25)
    26(assert_invalid
    27  (module (func (f32.store (i32.const 0) (f32.const 0))))
    28  "unknown memory"
    29)
    30(assert_invalid
    31  (module (func (drop (i32.load8_s (i32.const 0)))))
    32  "unknown memory"
    33)
    34(assert_invalid
    35  (module (func (i32.store8 (i32.const 0) (i32.const 0))))
    36  "unknown memory"
    37)
    38(assert_invalid
    39  (module (func (drop (memory.size))))
    40  "unknown memory"
    41)
    42(assert_invalid
    43  (module (func (drop (memory.grow (i32.const 0)))))
    44  "unknown memory"
    45)
    46
    47
    48(assert_invalid
    49  (module (memory 1 0))
    50  "size minimum must not be greater than maximum"
    51)
    52(assert_invalid
    53  (module (memory 65537))
    54  "memory size must be at most 65536 pages (4GiB)"
    55)
    56(assert_invalid
    57  (module (memory 2147483648))
    58  "memory size must be at most 65536 pages (4GiB)"
    59)
    60(assert_invalid
    61  (module (memory 4294967295))
    62  "memory size must be at most 65536 pages (4GiB)"
    63)
    64(assert_invalid
    65  (module (memory 0 65537))
    66  "memory size must be at most 65536 pages (4GiB)"
    67)
    68(assert_invalid
    69  (module (memory 0 2147483648))
    70  "memory size must be at most 65536 pages (4GiB)"
    71)
    72(assert_invalid
    73  (module (memory 0 4294967295))
    74  "memory size must be at most 65536 pages (4GiB)"
    75)
    76
    77(module
    78  (memory 1)
    79  (data (i32.const 0) "ABC\a7D") (data (i32.const 20) "WASM")
    80
    81  ;; Data section
    82  (func (export "data") (result i32)
    83    (i32.and
    84      (i32.and
    85        (i32.and
    86          (i32.eq (i32.load8_u (i32.const 0)) (i32.const 65))
    87          (i32.eq (i32.load8_u (i32.const 3)) (i32.const 167))
    88        )
    89        (i32.and
    90          (i32.eq (i32.load8_u (i32.const 6)) (i32.const 0))
    91          (i32.eq (i32.load8_u (i32.const 19)) (i32.const 0))
    92        )
    93      )
    94      (i32.and
    95        (i32.and
    96          (i32.eq (i32.load8_u (i32.const 20)) (i32.const 87))
    97          (i32.eq (i32.load8_u (i32.const 23)) (i32.const 77))
    98        )
    99        (i32.and
   100          (i32.eq (i32.load8_u (i32.const 24)) (i32.const 0))
   101          (i32.eq (i32.load8_u (i32.const 1023)) (i32.const 0))
   102        )
   103      )
   104    )
   105  )
   106
   107  ;; Memory cast
   108  (func (export "cast") (result f64)
   109    (i64.store (i32.const 8) (i64.const -12345))
   110    (if
   111      (f64.eq
   112        (f64.load (i32.const 8))
   113        (f64.reinterpret_i64 (i64.const -12345))
   114      )
   115      (then (return (f64.const 0)))
   116    )
   117    (i64.store align=1 (i32.const 9) (i64.const 0))
   118    (i32.store16 align=1 (i32.const 15) (i32.const 16453))
   119    (f64.load align=1 (i32.const 9))
   120  )
   121
   122  ;; Sign and zero extending memory loads
   123  (func (export "i32_load8_s") (param $i i32) (result i32)
   124	(i32.store8 (i32.const 8) (local.get $i))
   125	(i32.load8_s (i32.const 8))
   126  )
   127  (func (export "i32_load8_u") (param $i i32) (result i32)
   128	(i32.store8 (i32.const 8) (local.get $i))
   129	(i32.load8_u (i32.const 8))
   130  )
   131  (func (export "i32_load16_s") (param $i i32) (result i32)
   132	(i32.store16 (i32.const 8) (local.get $i))
   133	(i32.load16_s (i32.const 8))
   134  )
   135  (func (export "i32_load16_u") (param $i i32) (result i32)
   136	(i32.store16 (i32.const 8) (local.get $i))
   137	(i32.load16_u (i32.const 8))
   138  )
   139  (func (export "i64_load8_s") (param $i i64) (result i64)
   140	(i64.store8 (i32.const 8) (local.get $i))
   141	(i64.load8_s (i32.const 8))
   142  )
   143  (func (export "i64_load8_u") (param $i i64) (result i64)
   144	(i64.store8 (i32.const 8) (local.get $i))
   145	(i64.load8_u (i32.const 8))
   146  )
   147  (func (export "i64_load16_s") (param $i i64) (result i64)
   148	(i64.store16 (i32.const 8) (local.get $i))
   149	(i64.load16_s (i32.const 8))
   150  )
   151  (func (export "i64_load16_u") (param $i i64) (result i64)
   152	(i64.store16 (i32.const 8) (local.get $i))
   153	(i64.load16_u (i32.const 8))
   154  )
   155  (func (export "i64_load32_s") (param $i i64) (result i64)
   156	(i64.store32 (i32.const 8) (local.get $i))
   157	(i64.load32_s (i32.const 8))
   158  )
   159  (func (export "i64_load32_u") (param $i i64) (result i64)
   160	(i64.store32 (i32.const 8) (local.get $i))
   161	(i64.load32_u (i32.const 8))
   162  )
   163)
   164
   165(assert_return (invoke "data") (i32.const 1))
   166(assert_return (invoke "cast") (f64.const 42.0))
   167
   168(assert_return (invoke "i32_load8_s" (i32.const -1)) (i32.const -1))
   169(assert_return (invoke "i32_load8_u" (i32.const -1)) (i32.const 255))
   170(assert_return (invoke "i32_load16_s" (i32.const -1)) (i32.const -1))
   171(assert_return (invoke "i32_load16_u" (i32.const -1)) (i32.const 65535))
   172
   173(assert_return (invoke "i32_load8_s" (i32.const 100)) (i32.const 100))
   174(assert_return (invoke "i32_load8_u" (i32.const 200)) (i32.const 200))
   175(assert_return (invoke "i32_load16_s" (i32.const 20000)) (i32.const 20000))
   176(assert_return (invoke "i32_load16_u" (i32.const 40000)) (i32.const 40000))
   177
   178(assert_return (invoke "i32_load8_s" (i32.const 0xfedc6543)) (i32.const 0x43))
   179(assert_return (invoke "i32_load8_s" (i32.const 0x3456cdef)) (i32.const 0xffffffef))
   180(assert_return (invoke "i32_load8_u" (i32.const 0xfedc6543)) (i32.const 0x43))
   181(assert_return (invoke "i32_load8_u" (i32.const 0x3456cdef)) (i32.const 0xef))
   182(assert_return (invoke "i32_load16_s" (i32.const 0xfedc6543)) (i32.const 0x6543))
   183(assert_return (invoke "i32_load16_s" (i32.const 0x3456cdef)) (i32.const 0xffffcdef))
   184(assert_return (invoke "i32_load16_u" (i32.const 0xfedc6543)) (i32.const 0x6543))
   185(assert_return (invoke "i32_load16_u" (i32.const 0x3456cdef)) (i32.const 0xcdef))
   186
   187(assert_return (invoke "i64_load8_s" (i64.const -1)) (i64.const -1))
   188(assert_return (invoke "i64_load8_u" (i64.const -1)) (i64.const 255))
   189(assert_return (invoke "i64_load16_s" (i64.const -1)) (i64.const -1))
   190(assert_return (invoke "i64_load16_u" (i64.const -1)) (i64.const 65535))
   191(assert_return (invoke "i64_load32_s" (i64.const -1)) (i64.const -1))
   192(assert_return (invoke "i64_load32_u" (i64.const -1)) (i64.const 4294967295))
   193
   194(assert_return (invoke "i64_load8_s" (i64.const 100)) (i64.const 100))
   195(assert_return (invoke "i64_load8_u" (i64.const 200)) (i64.const 200))
   196(assert_return (invoke "i64_load16_s" (i64.const 20000)) (i64.const 20000))
   197(assert_return (invoke "i64_load16_u" (i64.const 40000)) (i64.const 40000))
   198(assert_return (invoke "i64_load32_s" (i64.const 20000)) (i64.const 20000))
   199(assert_return (invoke "i64_load32_u" (i64.const 40000)) (i64.const 40000))
   200
   201(assert_return (invoke "i64_load8_s" (i64.const 0xfedcba9856346543)) (i64.const 0x43))
   202(assert_return (invoke "i64_load8_s" (i64.const 0x3456436598bacdef)) (i64.const 0xffffffffffffffef))
   203(assert_return (invoke "i64_load8_u" (i64.const 0xfedcba9856346543)) (i64.const 0x43))
   204(assert_return (invoke "i64_load8_u" (i64.const 0x3456436598bacdef)) (i64.const 0xef))
   205(assert_return (invoke "i64_load16_s" (i64.const 0xfedcba9856346543)) (i64.const 0x6543))
   206(assert_return (invoke "i64_load16_s" (i64.const 0x3456436598bacdef)) (i64.const 0xffffffffffffcdef))
   207(assert_return (invoke "i64_load16_u" (i64.const 0xfedcba9856346543)) (i64.const 0x6543))
   208(assert_return (invoke "i64_load16_u" (i64.const 0x3456436598bacdef)) (i64.const 0xcdef))
   209(assert_return (invoke "i64_load32_s" (i64.const 0xfedcba9856346543)) (i64.const 0x56346543))
   210(assert_return (invoke "i64_load32_s" (i64.const 0x3456436598bacdef)) (i64.const 0xffffffff98bacdef))
   211(assert_return (invoke "i64_load32_u" (i64.const 0xfedcba9856346543)) (i64.const 0x56346543))
   212(assert_return (invoke "i64_load32_u" (i64.const 0x3456436598bacdef)) (i64.const 0x98bacdef))

View as plain text