...

Text file src/github.com/tetratelabs/wazero/internal/integration_test/spectest/v2/testdata/address.wast

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

     1;; Load i32 data with different offset/align arguments
     2
     3(module
     4  (memory 1)
     5  (data (i32.const 0) "abcdefghijklmnopqrstuvwxyz")
     6
     7  (func (export "8u_good1") (param $i i32) (result i32)
     8    (i32.load8_u offset=0 (local.get $i))                   ;; 97 'a'
     9  )
    10  (func (export "8u_good2") (param $i i32) (result i32)
    11    (i32.load8_u align=1 (local.get $i))                    ;; 97 'a'
    12  )
    13  (func (export "8u_good3") (param $i i32) (result i32)
    14    (i32.load8_u offset=1 align=1 (local.get $i))           ;; 98 'b'
    15  )
    16  (func (export "8u_good4") (param $i i32) (result i32)
    17    (i32.load8_u offset=2 align=1 (local.get $i))           ;; 99 'c'
    18  )
    19  (func (export "8u_good5") (param $i i32) (result i32)
    20    (i32.load8_u offset=25 align=1 (local.get $i))          ;; 122 'z'
    21  )
    22
    23  (func (export "8s_good1") (param $i i32) (result i32)
    24    (i32.load8_s offset=0 (local.get $i))                   ;; 97 'a'
    25  )
    26  (func (export "8s_good2") (param $i i32) (result i32)
    27    (i32.load8_s align=1 (local.get $i))                    ;; 97 'a'
    28  )
    29  (func (export "8s_good3") (param $i i32) (result i32)
    30    (i32.load8_s offset=1 align=1 (local.get $i))           ;; 98 'b'
    31  )
    32  (func (export "8s_good4") (param $i i32) (result i32)
    33    (i32.load8_s offset=2 align=1 (local.get $i))           ;; 99 'c'
    34  )
    35  (func (export "8s_good5") (param $i i32) (result i32)
    36    (i32.load8_s offset=25 align=1 (local.get $i))          ;; 122 'z'
    37  )
    38
    39  (func (export "16u_good1") (param $i i32) (result i32)
    40    (i32.load16_u offset=0 (local.get $i))                  ;; 25185 'ab'
    41  )
    42  (func (export "16u_good2") (param $i i32) (result i32)
    43    (i32.load16_u align=1 (local.get $i))                   ;; 25185 'ab'
    44  )
    45  (func (export "16u_good3") (param $i i32) (result i32)
    46    (i32.load16_u offset=1 align=1 (local.get $i))          ;; 25442 'bc'
    47  )
    48  (func (export "16u_good4") (param $i i32) (result i32)
    49    (i32.load16_u offset=2 align=2 (local.get $i))          ;; 25699 'cd'
    50  )
    51  (func (export "16u_good5") (param $i i32) (result i32)
    52    (i32.load16_u offset=25 align=2 (local.get $i))         ;; 122 'z\0'
    53  )
    54
    55  (func (export "16s_good1") (param $i i32) (result i32)
    56    (i32.load16_s offset=0 (local.get $i))                  ;; 25185 'ab'
    57  )
    58  (func (export "16s_good2") (param $i i32) (result i32)
    59    (i32.load16_s align=1 (local.get $i))                   ;; 25185 'ab'
    60  )
    61  (func (export "16s_good3") (param $i i32) (result i32)
    62    (i32.load16_s offset=1 align=1 (local.get $i))          ;; 25442 'bc'
    63  )
    64  (func (export "16s_good4") (param $i i32) (result i32)
    65    (i32.load16_s offset=2 align=2 (local.get $i))          ;; 25699 'cd'
    66  )
    67  (func (export "16s_good5") (param $i i32) (result i32)
    68    (i32.load16_s offset=25 align=2 (local.get $i))         ;; 122 'z\0'
    69  )
    70
    71  (func (export "32_good1") (param $i i32) (result i32)
    72    (i32.load offset=0 (local.get $i))                      ;; 1684234849 'abcd'
    73  )
    74  (func (export "32_good2") (param $i i32) (result i32)
    75    (i32.load align=1 (local.get $i))                       ;; 1684234849 'abcd'
    76  )
    77  (func (export "32_good3") (param $i i32) (result i32)
    78    (i32.load offset=1 align=1 (local.get $i))              ;; 1701077858 'bcde'
    79  )
    80  (func (export "32_good4") (param $i i32) (result i32)
    81    (i32.load offset=2 align=2 (local.get $i))              ;; 1717920867 'cdef'
    82  )
    83  (func (export "32_good5") (param $i i32) (result i32)
    84    (i32.load offset=25 align=4 (local.get $i))             ;; 122 'z\0\0\0'
    85  )
    86
    87  (func (export "8u_bad") (param $i i32)
    88    (drop (i32.load8_u offset=4294967295 (local.get $i)))
    89  )
    90  (func (export "8s_bad") (param $i i32)
    91    (drop (i32.load8_s offset=4294967295 (local.get $i)))
    92  )
    93  (func (export "16u_bad") (param $i i32)
    94    (drop (i32.load16_u offset=4294967295 (local.get $i)))
    95  )
    96  (func (export "16s_bad") (param $i i32)
    97    (drop (i32.load16_s offset=4294967295 (local.get $i)))
    98  )
    99  (func (export "32_bad") (param $i i32)
   100    (drop (i32.load offset=4294967295 (local.get $i)))
   101  )
   102)
   103
   104(assert_return (invoke "8u_good1" (i32.const 0)) (i32.const 97))
   105(assert_return (invoke "8u_good2" (i32.const 0)) (i32.const 97))
   106(assert_return (invoke "8u_good3" (i32.const 0)) (i32.const 98))
   107(assert_return (invoke "8u_good4" (i32.const 0)) (i32.const 99))
   108(assert_return (invoke "8u_good5" (i32.const 0)) (i32.const 122))
   109
   110(assert_return (invoke "8s_good1" (i32.const 0)) (i32.const 97))
   111(assert_return (invoke "8s_good2" (i32.const 0)) (i32.const 97))
   112(assert_return (invoke "8s_good3" (i32.const 0)) (i32.const 98))
   113(assert_return (invoke "8s_good4" (i32.const 0)) (i32.const 99))
   114(assert_return (invoke "8s_good5" (i32.const 0)) (i32.const 122))
   115
   116(assert_return (invoke "16u_good1" (i32.const 0)) (i32.const 25185))
   117(assert_return (invoke "16u_good2" (i32.const 0)) (i32.const 25185))
   118(assert_return (invoke "16u_good3" (i32.const 0)) (i32.const 25442))
   119(assert_return (invoke "16u_good4" (i32.const 0)) (i32.const 25699))
   120(assert_return (invoke "16u_good5" (i32.const 0)) (i32.const 122))
   121
   122(assert_return (invoke "16s_good1" (i32.const 0)) (i32.const 25185))
   123(assert_return (invoke "16s_good2" (i32.const 0)) (i32.const 25185))
   124(assert_return (invoke "16s_good3" (i32.const 0)) (i32.const 25442))
   125(assert_return (invoke "16s_good4" (i32.const 0)) (i32.const 25699))
   126(assert_return (invoke "16s_good5" (i32.const 0)) (i32.const 122))
   127
   128(assert_return (invoke "32_good1" (i32.const 0)) (i32.const 1684234849))
   129(assert_return (invoke "32_good2" (i32.const 0)) (i32.const 1684234849))
   130(assert_return (invoke "32_good3" (i32.const 0)) (i32.const 1701077858))
   131(assert_return (invoke "32_good4" (i32.const 0)) (i32.const 1717920867))
   132(assert_return (invoke "32_good5" (i32.const 0)) (i32.const 122))
   133
   134(assert_return (invoke "8u_good1" (i32.const 65507)) (i32.const 0))
   135(assert_return (invoke "8u_good2" (i32.const 65507)) (i32.const 0))
   136(assert_return (invoke "8u_good3" (i32.const 65507)) (i32.const 0))
   137(assert_return (invoke "8u_good4" (i32.const 65507)) (i32.const 0))
   138(assert_return (invoke "8u_good5" (i32.const 65507)) (i32.const 0))
   139
   140(assert_return (invoke "8s_good1" (i32.const 65507)) (i32.const 0))
   141(assert_return (invoke "8s_good2" (i32.const 65507)) (i32.const 0))
   142(assert_return (invoke "8s_good3" (i32.const 65507)) (i32.const 0))
   143(assert_return (invoke "8s_good4" (i32.const 65507)) (i32.const 0))
   144(assert_return (invoke "8s_good5" (i32.const 65507)) (i32.const 0))
   145
   146(assert_return (invoke "16u_good1" (i32.const 65507)) (i32.const 0))
   147(assert_return (invoke "16u_good2" (i32.const 65507)) (i32.const 0))
   148(assert_return (invoke "16u_good3" (i32.const 65507)) (i32.const 0))
   149(assert_return (invoke "16u_good4" (i32.const 65507)) (i32.const 0))
   150(assert_return (invoke "16u_good5" (i32.const 65507)) (i32.const 0))
   151
   152(assert_return (invoke "16s_good1" (i32.const 65507)) (i32.const 0))
   153(assert_return (invoke "16s_good2" (i32.const 65507)) (i32.const 0))
   154(assert_return (invoke "16s_good3" (i32.const 65507)) (i32.const 0))
   155(assert_return (invoke "16s_good4" (i32.const 65507)) (i32.const 0))
   156(assert_return (invoke "16s_good5" (i32.const 65507)) (i32.const 0))
   157
   158(assert_return (invoke "32_good1" (i32.const 65507)) (i32.const 0))
   159(assert_return (invoke "32_good2" (i32.const 65507)) (i32.const 0))
   160(assert_return (invoke "32_good3" (i32.const 65507)) (i32.const 0))
   161(assert_return (invoke "32_good4" (i32.const 65507)) (i32.const 0))
   162(assert_return (invoke "32_good5" (i32.const 65507)) (i32.const 0))
   163
   164(assert_return (invoke "8u_good1" (i32.const 65508)) (i32.const 0))
   165(assert_return (invoke "8u_good2" (i32.const 65508)) (i32.const 0))
   166(assert_return (invoke "8u_good3" (i32.const 65508)) (i32.const 0))
   167(assert_return (invoke "8u_good4" (i32.const 65508)) (i32.const 0))
   168(assert_return (invoke "8u_good5" (i32.const 65508)) (i32.const 0))
   169
   170(assert_return (invoke "8s_good1" (i32.const 65508)) (i32.const 0))
   171(assert_return (invoke "8s_good2" (i32.const 65508)) (i32.const 0))
   172(assert_return (invoke "8s_good3" (i32.const 65508)) (i32.const 0))
   173(assert_return (invoke "8s_good4" (i32.const 65508)) (i32.const 0))
   174(assert_return (invoke "8s_good5" (i32.const 65508)) (i32.const 0))
   175
   176(assert_return (invoke "16u_good1" (i32.const 65508)) (i32.const 0))
   177(assert_return (invoke "16u_good2" (i32.const 65508)) (i32.const 0))
   178(assert_return (invoke "16u_good3" (i32.const 65508)) (i32.const 0))
   179(assert_return (invoke "16u_good4" (i32.const 65508)) (i32.const 0))
   180(assert_return (invoke "16u_good5" (i32.const 65508)) (i32.const 0))
   181
   182(assert_return (invoke "16s_good1" (i32.const 65508)) (i32.const 0))
   183(assert_return (invoke "16s_good2" (i32.const 65508)) (i32.const 0))
   184(assert_return (invoke "16s_good3" (i32.const 65508)) (i32.const 0))
   185(assert_return (invoke "16s_good4" (i32.const 65508)) (i32.const 0))
   186(assert_return (invoke "16s_good5" (i32.const 65508)) (i32.const 0))
   187
   188(assert_return (invoke "32_good1" (i32.const 65508)) (i32.const 0))
   189(assert_return (invoke "32_good2" (i32.const 65508)) (i32.const 0))
   190(assert_return (invoke "32_good3" (i32.const 65508)) (i32.const 0))
   191(assert_return (invoke "32_good4" (i32.const 65508)) (i32.const 0))
   192(assert_trap (invoke "32_good5" (i32.const 65508)) "out of bounds memory access")
   193
   194(assert_trap (invoke "8u_good3" (i32.const -1)) "out of bounds memory access")
   195(assert_trap (invoke "8s_good3" (i32.const -1)) "out of bounds memory access")
   196(assert_trap (invoke "16u_good3" (i32.const -1)) "out of bounds memory access")
   197(assert_trap (invoke "16s_good3" (i32.const -1)) "out of bounds memory access")
   198(assert_trap (invoke "32_good3" (i32.const -1)) "out of bounds memory access")
   199(assert_trap (invoke "32_good3" (i32.const -1)) "out of bounds memory access")
   200
   201(assert_trap (invoke "8u_bad" (i32.const 0)) "out of bounds memory access")
   202(assert_trap (invoke "8s_bad" (i32.const 0)) "out of bounds memory access")
   203(assert_trap (invoke "16u_bad" (i32.const 0)) "out of bounds memory access")
   204(assert_trap (invoke "16s_bad" (i32.const 0)) "out of bounds memory access")
   205(assert_trap (invoke "32_bad" (i32.const 0)) "out of bounds memory access")
   206
   207(assert_trap (invoke "8u_bad" (i32.const 1)) "out of bounds memory access")
   208(assert_trap (invoke "8s_bad" (i32.const 1)) "out of bounds memory access")
   209(assert_trap (invoke "16u_bad" (i32.const 1)) "out of bounds memory access")
   210(assert_trap (invoke "16s_bad" (i32.const 1)) "out of bounds memory access")
   211(assert_trap (invoke "32_bad" (i32.const 1)) "out of bounds memory access")
   212
   213(assert_malformed
   214  (module quote
   215    "(memory 1)"
   216    "(func (drop (i32.load offset=4294967296 (i32.const 0))))"
   217  )
   218  "i32 constant"
   219)
   220
   221;; Load i64 data with different offset/align arguments
   222
   223(module
   224  (memory 1)
   225  (data (i32.const 0) "abcdefghijklmnopqrstuvwxyz")
   226
   227  (func (export "8u_good1") (param $i i32) (result i64)
   228    (i64.load8_u offset=0 (local.get $i))                   ;; 97 'a'
   229  )
   230  (func (export "8u_good2") (param $i i32) (result i64)
   231    (i64.load8_u align=1 (local.get $i))                    ;; 97 'a'
   232  )
   233  (func (export "8u_good3") (param $i i32) (result i64)
   234    (i64.load8_u offset=1 align=1 (local.get $i))           ;; 98 'b'
   235  )
   236  (func (export "8u_good4") (param $i i32) (result i64)
   237    (i64.load8_u offset=2 align=1 (local.get $i))           ;; 99 'c'
   238  )
   239  (func (export "8u_good5") (param $i i32) (result i64)
   240    (i64.load8_u offset=25 align=1 (local.get $i))          ;; 122 'z'
   241  )
   242
   243  (func (export "8s_good1") (param $i i32) (result i64)
   244    (i64.load8_s offset=0 (local.get $i))                   ;; 97 'a'
   245  )
   246  (func (export "8s_good2") (param $i i32) (result i64)
   247    (i64.load8_s align=1 (local.get $i))                    ;; 97 'a'
   248  )
   249  (func (export "8s_good3") (param $i i32) (result i64)
   250    (i64.load8_s offset=1 align=1 (local.get $i))           ;; 98 'b'
   251  )
   252  (func (export "8s_good4") (param $i i32) (result i64)
   253    (i64.load8_s offset=2 align=1 (local.get $i))           ;; 99 'c'
   254  )
   255  (func (export "8s_good5") (param $i i32) (result i64)
   256    (i64.load8_s offset=25 align=1 (local.get $i))          ;; 122 'z'
   257  )
   258
   259  (func (export "16u_good1") (param $i i32) (result i64)
   260    (i64.load16_u offset=0 (local.get $i))                 ;; 25185 'ab'
   261  )
   262  (func (export "16u_good2") (param $i i32) (result i64)
   263    (i64.load16_u align=1 (local.get $i))                  ;; 25185 'ab'
   264  )
   265  (func (export "16u_good3") (param $i i32) (result i64)
   266    (i64.load16_u offset=1 align=1 (local.get $i))         ;; 25442 'bc'
   267  )
   268  (func (export "16u_good4") (param $i i32) (result i64)
   269    (i64.load16_u offset=2 align=2 (local.get $i))         ;; 25699 'cd'
   270  )
   271  (func (export "16u_good5") (param $i i32) (result i64)
   272    (i64.load16_u offset=25 align=2 (local.get $i))        ;; 122 'z\0'
   273  )
   274
   275  (func (export "16s_good1") (param $i i32) (result i64)
   276    (i64.load16_s offset=0 (local.get $i))                 ;; 25185 'ab'
   277  )
   278  (func (export "16s_good2") (param $i i32) (result i64)
   279    (i64.load16_s align=1 (local.get $i))                  ;; 25185 'ab'
   280  )
   281  (func (export "16s_good3") (param $i i32) (result i64)
   282    (i64.load16_s offset=1 align=1 (local.get $i))         ;; 25442 'bc'
   283  )
   284  (func (export "16s_good4") (param $i i32) (result i64)
   285    (i64.load16_s offset=2 align=2 (local.get $i))         ;; 25699 'cd'
   286  )
   287  (func (export "16s_good5") (param $i i32) (result i64)
   288    (i64.load16_s offset=25 align=2 (local.get $i))        ;; 122 'z\0'
   289  )
   290
   291  (func (export "32u_good1") (param $i i32) (result i64)
   292    (i64.load32_u offset=0 (local.get $i))                 ;; 1684234849 'abcd'
   293  )
   294  (func (export "32u_good2") (param $i i32) (result i64)
   295    (i64.load32_u align=1 (local.get $i))                  ;; 1684234849 'abcd'
   296  )
   297  (func (export "32u_good3") (param $i i32) (result i64)
   298    (i64.load32_u offset=1 align=1 (local.get $i))         ;; 1701077858 'bcde'
   299  )
   300  (func (export "32u_good4") (param $i i32) (result i64)
   301    (i64.load32_u offset=2 align=2 (local.get $i))         ;; 1717920867 'cdef'
   302  )
   303  (func (export "32u_good5") (param $i i32) (result i64)
   304    (i64.load32_u offset=25 align=4 (local.get $i))        ;; 122 'z\0\0\0'
   305  )
   306
   307  (func (export "32s_good1") (param $i i32) (result i64)
   308    (i64.load32_s offset=0 (local.get $i))                 ;; 1684234849 'abcd'
   309  )
   310  (func (export "32s_good2") (param $i i32) (result i64)
   311    (i64.load32_s align=1 (local.get $i))                  ;; 1684234849 'abcd'
   312  )
   313  (func (export "32s_good3") (param $i i32) (result i64)
   314    (i64.load32_s offset=1 align=1 (local.get $i))         ;; 1701077858 'bcde'
   315  )
   316  (func (export "32s_good4") (param $i i32) (result i64)
   317    (i64.load32_s offset=2 align=2 (local.get $i))         ;; 1717920867 'cdef'
   318  )
   319  (func (export "32s_good5") (param $i i32) (result i64)
   320    (i64.load32_s offset=25 align=4 (local.get $i))        ;; 122 'z\0\0\0'
   321  )
   322
   323  (func (export "64_good1") (param $i i32) (result i64)
   324    (i64.load offset=0 (local.get $i))                     ;; 0x6867666564636261 'abcdefgh'
   325  )
   326  (func (export "64_good2") (param $i i32) (result i64)
   327    (i64.load align=1 (local.get $i))                      ;; 0x6867666564636261 'abcdefgh'
   328  )
   329  (func (export "64_good3") (param $i i32) (result i64)
   330    (i64.load offset=1 align=1 (local.get $i))             ;; 0x6968676665646362 'bcdefghi'
   331  )
   332  (func (export "64_good4") (param $i i32) (result i64)
   333    (i64.load offset=2 align=2 (local.get $i))             ;; 0x6a69686766656463 'cdefghij'
   334  )
   335  (func (export "64_good5") (param $i i32) (result i64)
   336    (i64.load offset=25 align=8 (local.get $i))            ;; 122 'z\0\0\0\0\0\0\0'
   337  )
   338
   339  (func (export "8u_bad") (param $i i32)
   340    (drop (i64.load8_u offset=4294967295 (local.get $i)))
   341  )
   342  (func (export "8s_bad") (param $i i32)
   343    (drop (i64.load8_s offset=4294967295 (local.get $i)))
   344  )
   345  (func (export "16u_bad") (param $i i32)
   346    (drop (i64.load16_u offset=4294967295 (local.get $i)))
   347  )
   348  (func (export "16s_bad") (param $i i32)
   349    (drop (i64.load16_s offset=4294967295 (local.get $i)))
   350  )
   351  (func (export "32u_bad") (param $i i32)
   352    (drop (i64.load32_u offset=4294967295 (local.get $i)))
   353  )
   354  (func (export "32s_bad") (param $i i32)
   355    (drop (i64.load32_s offset=4294967295 (local.get $i)))
   356  )
   357  (func (export "64_bad") (param $i i32)
   358    (drop (i64.load offset=4294967295 (local.get $i)))
   359  )
   360)
   361
   362(assert_return (invoke "8u_good1" (i32.const 0)) (i64.const 97))
   363(assert_return (invoke "8u_good2" (i32.const 0)) (i64.const 97))
   364(assert_return (invoke "8u_good3" (i32.const 0)) (i64.const 98))
   365(assert_return (invoke "8u_good4" (i32.const 0)) (i64.const 99))
   366(assert_return (invoke "8u_good5" (i32.const 0)) (i64.const 122))
   367
   368(assert_return (invoke "8s_good1" (i32.const 0)) (i64.const 97))
   369(assert_return (invoke "8s_good2" (i32.const 0)) (i64.const 97))
   370(assert_return (invoke "8s_good3" (i32.const 0)) (i64.const 98))
   371(assert_return (invoke "8s_good4" (i32.const 0)) (i64.const 99))
   372(assert_return (invoke "8s_good5" (i32.const 0)) (i64.const 122))
   373
   374(assert_return (invoke "16u_good1" (i32.const 0)) (i64.const 25185))
   375(assert_return (invoke "16u_good2" (i32.const 0)) (i64.const 25185))
   376(assert_return (invoke "16u_good3" (i32.const 0)) (i64.const 25442))
   377(assert_return (invoke "16u_good4" (i32.const 0)) (i64.const 25699))
   378(assert_return (invoke "16u_good5" (i32.const 0)) (i64.const 122))
   379
   380(assert_return (invoke "16s_good1" (i32.const 0)) (i64.const 25185))
   381(assert_return (invoke "16s_good2" (i32.const 0)) (i64.const 25185))
   382(assert_return (invoke "16s_good3" (i32.const 0)) (i64.const 25442))
   383(assert_return (invoke "16s_good4" (i32.const 0)) (i64.const 25699))
   384(assert_return (invoke "16s_good5" (i32.const 0)) (i64.const 122))
   385
   386(assert_return (invoke "32u_good1" (i32.const 0)) (i64.const 1684234849))
   387(assert_return (invoke "32u_good2" (i32.const 0)) (i64.const 1684234849))
   388(assert_return (invoke "32u_good3" (i32.const 0)) (i64.const 1701077858))
   389(assert_return (invoke "32u_good4" (i32.const 0)) (i64.const 1717920867))
   390(assert_return (invoke "32u_good5" (i32.const 0)) (i64.const 122))
   391
   392(assert_return (invoke "32s_good1" (i32.const 0)) (i64.const 1684234849))
   393(assert_return (invoke "32s_good2" (i32.const 0)) (i64.const 1684234849))
   394(assert_return (invoke "32s_good3" (i32.const 0)) (i64.const 1701077858))
   395(assert_return (invoke "32s_good4" (i32.const 0)) (i64.const 1717920867))
   396(assert_return (invoke "32s_good5" (i32.const 0)) (i64.const 122))
   397
   398(assert_return (invoke "64_good1" (i32.const 0)) (i64.const 0x6867666564636261))
   399(assert_return (invoke "64_good2" (i32.const 0)) (i64.const 0x6867666564636261))
   400(assert_return (invoke "64_good3" (i32.const 0)) (i64.const 0x6968676665646362))
   401(assert_return (invoke "64_good4" (i32.const 0)) (i64.const 0x6a69686766656463))
   402(assert_return (invoke "64_good5" (i32.const 0)) (i64.const 122))
   403
   404(assert_return (invoke "8u_good1" (i32.const 65503)) (i64.const 0))
   405(assert_return (invoke "8u_good2" (i32.const 65503)) (i64.const 0))
   406(assert_return (invoke "8u_good3" (i32.const 65503)) (i64.const 0))
   407(assert_return (invoke "8u_good4" (i32.const 65503)) (i64.const 0))
   408(assert_return (invoke "8u_good5" (i32.const 65503)) (i64.const 0))
   409
   410(assert_return (invoke "8s_good1" (i32.const 65503)) (i64.const 0))
   411(assert_return (invoke "8s_good2" (i32.const 65503)) (i64.const 0))
   412(assert_return (invoke "8s_good3" (i32.const 65503)) (i64.const 0))
   413(assert_return (invoke "8s_good4" (i32.const 65503)) (i64.const 0))
   414(assert_return (invoke "8s_good5" (i32.const 65503)) (i64.const 0))
   415
   416(assert_return (invoke "16u_good1" (i32.const 65503)) (i64.const 0))
   417(assert_return (invoke "16u_good2" (i32.const 65503)) (i64.const 0))
   418(assert_return (invoke "16u_good3" (i32.const 65503)) (i64.const 0))
   419(assert_return (invoke "16u_good4" (i32.const 65503)) (i64.const 0))
   420(assert_return (invoke "16u_good5" (i32.const 65503)) (i64.const 0))
   421
   422(assert_return (invoke "16s_good1" (i32.const 65503)) (i64.const 0))
   423(assert_return (invoke "16s_good2" (i32.const 65503)) (i64.const 0))
   424(assert_return (invoke "16s_good3" (i32.const 65503)) (i64.const 0))
   425(assert_return (invoke "16s_good4" (i32.const 65503)) (i64.const 0))
   426(assert_return (invoke "16s_good5" (i32.const 65503)) (i64.const 0))
   427
   428(assert_return (invoke "32u_good1" (i32.const 65503)) (i64.const 0))
   429(assert_return (invoke "32u_good2" (i32.const 65503)) (i64.const 0))
   430(assert_return (invoke "32u_good3" (i32.const 65503)) (i64.const 0))
   431(assert_return (invoke "32u_good4" (i32.const 65503)) (i64.const 0))
   432(assert_return (invoke "32u_good5" (i32.const 65503)) (i64.const 0))
   433
   434(assert_return (invoke "32s_good1" (i32.const 65503)) (i64.const 0))
   435(assert_return (invoke "32s_good2" (i32.const 65503)) (i64.const 0))
   436(assert_return (invoke "32s_good3" (i32.const 65503)) (i64.const 0))
   437(assert_return (invoke "32s_good4" (i32.const 65503)) (i64.const 0))
   438(assert_return (invoke "32s_good5" (i32.const 65503)) (i64.const 0))
   439
   440(assert_return (invoke "64_good1" (i32.const 65503)) (i64.const 0))
   441(assert_return (invoke "64_good2" (i32.const 65503)) (i64.const 0))
   442(assert_return (invoke "64_good3" (i32.const 65503)) (i64.const 0))
   443(assert_return (invoke "64_good4" (i32.const 65503)) (i64.const 0))
   444(assert_return (invoke "64_good5" (i32.const 65503)) (i64.const 0))
   445
   446(assert_return (invoke "8u_good1" (i32.const 65504)) (i64.const 0))
   447(assert_return (invoke "8u_good2" (i32.const 65504)) (i64.const 0))
   448(assert_return (invoke "8u_good3" (i32.const 65504)) (i64.const 0))
   449(assert_return (invoke "8u_good4" (i32.const 65504)) (i64.const 0))
   450(assert_return (invoke "8u_good5" (i32.const 65504)) (i64.const 0))
   451
   452(assert_return (invoke "8s_good1" (i32.const 65504)) (i64.const 0))
   453(assert_return (invoke "8s_good2" (i32.const 65504)) (i64.const 0))
   454(assert_return (invoke "8s_good3" (i32.const 65504)) (i64.const 0))
   455(assert_return (invoke "8s_good4" (i32.const 65504)) (i64.const 0))
   456(assert_return (invoke "8s_good5" (i32.const 65504)) (i64.const 0))
   457
   458(assert_return (invoke "16u_good1" (i32.const 65504)) (i64.const 0))
   459(assert_return (invoke "16u_good2" (i32.const 65504)) (i64.const 0))
   460(assert_return (invoke "16u_good3" (i32.const 65504)) (i64.const 0))
   461(assert_return (invoke "16u_good4" (i32.const 65504)) (i64.const 0))
   462(assert_return (invoke "16u_good5" (i32.const 65504)) (i64.const 0))
   463
   464(assert_return (invoke "16s_good1" (i32.const 65504)) (i64.const 0))
   465(assert_return (invoke "16s_good2" (i32.const 65504)) (i64.const 0))
   466(assert_return (invoke "16s_good3" (i32.const 65504)) (i64.const 0))
   467(assert_return (invoke "16s_good4" (i32.const 65504)) (i64.const 0))
   468(assert_return (invoke "16s_good5" (i32.const 65504)) (i64.const 0))
   469
   470(assert_return (invoke "32u_good1" (i32.const 65504)) (i64.const 0))
   471(assert_return (invoke "32u_good2" (i32.const 65504)) (i64.const 0))
   472(assert_return (invoke "32u_good3" (i32.const 65504)) (i64.const 0))
   473(assert_return (invoke "32u_good4" (i32.const 65504)) (i64.const 0))
   474(assert_return (invoke "32u_good5" (i32.const 65504)) (i64.const 0))
   475
   476(assert_return (invoke "32s_good1" (i32.const 65504)) (i64.const 0))
   477(assert_return (invoke "32s_good2" (i32.const 65504)) (i64.const 0))
   478(assert_return (invoke "32s_good3" (i32.const 65504)) (i64.const 0))
   479(assert_return (invoke "32s_good4" (i32.const 65504)) (i64.const 0))
   480(assert_return (invoke "32s_good5" (i32.const 65504)) (i64.const 0))
   481
   482(assert_return (invoke "64_good1" (i32.const 65504)) (i64.const 0))
   483(assert_return (invoke "64_good2" (i32.const 65504)) (i64.const 0))
   484(assert_return (invoke "64_good3" (i32.const 65504)) (i64.const 0))
   485(assert_return (invoke "64_good4" (i32.const 65504)) (i64.const 0))
   486(assert_trap (invoke "64_good5" (i32.const 65504)) "out of bounds memory access")
   487
   488(assert_trap (invoke "8u_good3" (i32.const -1)) "out of bounds memory access")
   489(assert_trap (invoke "8s_good3" (i32.const -1)) "out of bounds memory access")
   490(assert_trap (invoke "16u_good3" (i32.const -1)) "out of bounds memory access")
   491(assert_trap (invoke "16s_good3" (i32.const -1)) "out of bounds memory access")
   492(assert_trap (invoke "32u_good3" (i32.const -1)) "out of bounds memory access")
   493(assert_trap (invoke "32s_good3" (i32.const -1)) "out of bounds memory access")
   494(assert_trap (invoke "64_good3" (i32.const -1)) "out of bounds memory access")
   495
   496(assert_trap (invoke "8u_bad" (i32.const 0)) "out of bounds memory access")
   497(assert_trap (invoke "8s_bad" (i32.const 0)) "out of bounds memory access")
   498(assert_trap (invoke "16u_bad" (i32.const 0)) "out of bounds memory access")
   499(assert_trap (invoke "16s_bad" (i32.const 0)) "out of bounds memory access")
   500(assert_trap (invoke "32u_bad" (i32.const 0)) "out of bounds memory access")
   501(assert_trap (invoke "32s_bad" (i32.const 0)) "out of bounds memory access")
   502(assert_trap (invoke "64_bad" (i32.const 0)) "out of bounds memory access")
   503
   504(assert_trap (invoke "8u_bad" (i32.const 1)) "out of bounds memory access")
   505(assert_trap (invoke "8s_bad" (i32.const 1)) "out of bounds memory access")
   506(assert_trap (invoke "16u_bad" (i32.const 1)) "out of bounds memory access")
   507(assert_trap (invoke "16s_bad" (i32.const 1)) "out of bounds memory access")
   508(assert_trap (invoke "32u_bad" (i32.const 0)) "out of bounds memory access")
   509(assert_trap (invoke "32s_bad" (i32.const 0)) "out of bounds memory access")
   510(assert_trap (invoke "64_bad" (i32.const 1)) "out of bounds memory access")
   511
   512;; Load f32 data with different offset/align arguments
   513
   514(module
   515  (memory 1)
   516  (data (i32.const 0) "\00\00\00\00\00\00\a0\7f\01\00\d0\7f")
   517
   518  (func (export "32_good1") (param $i i32) (result f32)
   519    (f32.load offset=0 (local.get $i))                   ;; 0.0 '\00\00\00\00'
   520  )
   521  (func (export "32_good2") (param $i i32) (result f32)
   522    (f32.load align=1 (local.get $i))                    ;; 0.0 '\00\00\00\00'
   523  )
   524  (func (export "32_good3") (param $i i32) (result f32)
   525    (f32.load offset=1 align=1 (local.get $i))           ;; 0.0 '\00\00\00\00'
   526  )
   527  (func (export "32_good4") (param $i i32) (result f32)
   528    (f32.load offset=2 align=2 (local.get $i))           ;; 0.0 '\00\00\00\00'
   529  )
   530  (func (export "32_good5") (param $i i32) (result f32)
   531    (f32.load offset=8 align=4 (local.get $i))           ;; nan:0x500001 '\01\00\d0\7f'
   532  )
   533  (func (export "32_bad") (param $i i32)
   534    (drop (f32.load offset=4294967295 (local.get $i)))
   535  )
   536)
   537
   538(assert_return (invoke "32_good1" (i32.const 0)) (f32.const 0.0))
   539(assert_return (invoke "32_good2" (i32.const 0)) (f32.const 0.0))
   540(assert_return (invoke "32_good3" (i32.const 0)) (f32.const 0.0))
   541(assert_return (invoke "32_good4" (i32.const 0)) (f32.const 0.0))
   542(assert_return (invoke "32_good5" (i32.const 0)) (f32.const nan:0x500001))
   543
   544(assert_return (invoke "32_good1" (i32.const 65524)) (f32.const 0.0))
   545(assert_return (invoke "32_good2" (i32.const 65524)) (f32.const 0.0))
   546(assert_return (invoke "32_good3" (i32.const 65524)) (f32.const 0.0))
   547(assert_return (invoke "32_good4" (i32.const 65524)) (f32.const 0.0))
   548(assert_return (invoke "32_good5" (i32.const 65524)) (f32.const 0.0))
   549
   550(assert_return (invoke "32_good1" (i32.const 65525)) (f32.const 0.0))
   551(assert_return (invoke "32_good2" (i32.const 65525)) (f32.const 0.0))
   552(assert_return (invoke "32_good3" (i32.const 65525)) (f32.const 0.0))
   553(assert_return (invoke "32_good4" (i32.const 65525)) (f32.const 0.0))
   554(assert_trap (invoke "32_good5" (i32.const 65525)) "out of bounds memory access")
   555
   556(assert_trap (invoke "32_good3" (i32.const -1)) "out of bounds memory access")
   557(assert_trap (invoke "32_good3" (i32.const -1)) "out of bounds memory access")
   558
   559(assert_trap (invoke "32_bad" (i32.const 0)) "out of bounds memory access")
   560(assert_trap (invoke "32_bad" (i32.const 1)) "out of bounds memory access")
   561
   562;; Load f64 data with different offset/align arguments
   563
   564(module
   565  (memory 1)
   566  (data (i32.const 0) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\f4\7f\01\00\00\00\00\00\fc\7f")
   567
   568  (func (export "64_good1") (param $i i32) (result f64)
   569    (f64.load offset=0 (local.get $i))                     ;; 0.0 '\00\00\00\00\00\00\00\00'
   570  )
   571  (func (export "64_good2") (param $i i32) (result f64)
   572    (f64.load align=1 (local.get $i))                      ;; 0.0 '\00\00\00\00\00\00\00\00'
   573  )
   574  (func (export "64_good3") (param $i i32) (result f64)
   575    (f64.load offset=1 align=1 (local.get $i))             ;; 0.0 '\00\00\00\00\00\00\00\00'
   576  )
   577  (func (export "64_good4") (param $i i32) (result f64)
   578    (f64.load offset=2 align=2 (local.get $i))             ;; 0.0 '\00\00\00\00\00\00\00\00'
   579  )
   580  (func (export "64_good5") (param $i i32) (result f64)
   581    (f64.load offset=18 align=8 (local.get $i))            ;; nan:0xc000000000001 '\01\00\00\00\00\00\fc\7f'
   582  )
   583  (func (export "64_bad") (param $i i32)
   584    (drop (f64.load offset=4294967295 (local.get $i)))
   585  )
   586)
   587
   588(assert_return (invoke "64_good1" (i32.const 0)) (f64.const 0.0))
   589(assert_return (invoke "64_good2" (i32.const 0)) (f64.const 0.0))
   590(assert_return (invoke "64_good3" (i32.const 0)) (f64.const 0.0))
   591(assert_return (invoke "64_good4" (i32.const 0)) (f64.const 0.0))
   592(assert_return (invoke "64_good5" (i32.const 0)) (f64.const nan:0xc000000000001))
   593
   594(assert_return (invoke "64_good1" (i32.const 65510)) (f64.const 0.0))
   595(assert_return (invoke "64_good2" (i32.const 65510)) (f64.const 0.0))
   596(assert_return (invoke "64_good3" (i32.const 65510)) (f64.const 0.0))
   597(assert_return (invoke "64_good4" (i32.const 65510)) (f64.const 0.0))
   598(assert_return (invoke "64_good5" (i32.const 65510)) (f64.const 0.0))
   599
   600(assert_return (invoke "64_good1" (i32.const 65511)) (f64.const 0.0))
   601(assert_return (invoke "64_good2" (i32.const 65511)) (f64.const 0.0))
   602(assert_return (invoke "64_good3" (i32.const 65511)) (f64.const 0.0))
   603(assert_return (invoke "64_good4" (i32.const 65511)) (f64.const 0.0))
   604(assert_trap (invoke "64_good5" (i32.const 65511)) "out of bounds memory access")
   605
   606(assert_trap (invoke "64_good3" (i32.const -1)) "out of bounds memory access")
   607(assert_trap (invoke "64_good3" (i32.const -1)) "out of bounds memory access")
   608
   609(assert_trap (invoke "64_bad" (i32.const 0)) "out of bounds memory access")
   610(assert_trap (invoke "64_bad" (i32.const 1)) "out of bounds memory access")

View as plain text