1;;! multi_memory = true 2;;! threads = true 3;;! memory64 = true 4;;! custom_page_sizes = true 5 6;; generate the cross product of: 7;; 8;; * maximum listed: {no, yes} 9;; * page size: {1<<16, 1} 10;; * shared: {no, yes} 11;; * index type: {i32, i64} 12(module 13 (memory $m1 1) 14 (memory $m2 1 65536) 15 (memory $m3 1 (pagesize 1)) 16 (memory $m4 1 0xffff_ffff (pagesize 1)) 17 18 ;; (memory $m5 1 shared) - skipped since shared requires max size 19 (memory $m6 1 65536 shared) 20 ;; (memory $m7 1 (pagesize 1)) - skipped since shared requires max size 21 (memory $m8 1 0xffff_ffff shared (pagesize 1)) 22 23 (memory $m9 i64 1) 24 (memory $m10 i64 1 65536) 25 (memory $m11 i64 1 (pagesize 1)) 26 (memory $m12 i64 1 0xffff_ffff (pagesize 1)) 27 28 ;; (memory $m13 1 shared) - skipped since shared requires max size 29 (memory $m14 i64 1 65536 shared) 30 ;; (memory $m16 1 (pagesize 1)) - skipped since shared requires max size 31 (memory $m16 i64 1 0xffff_ffff shared (pagesize 1)) 32 33 (func (export "load_m1") (param i32) (result i32) (i32.load8_u $m1 (local.get 0))) 34 (func (export "load_m2") (param i32) (result i32) (i32.load8_u $m2 (local.get 0))) 35 (func (export "load_m3") (param i32) (result i32) (i32.load8_u $m3 (local.get 0))) 36 (func (export "load_m4") (param i32) (result i32) (i32.load8_u $m4 (local.get 0))) 37 (func (export "load_m6") (param i32) (result i32) (i32.load8_u $m6 (local.get 0))) 38 (func (export "load_m8") (param i32) (result i32) (i32.load8_u $m8 (local.get 0))) 39 (func (export "load_m9") (param i64) (result i32) (i32.load8_u $m9 (local.get 0))) 40 (func (export "load_m10") (param i64) (result i32) (i32.load8_u $m10 (local.get 0))) 41 (func (export "load_m11") (param i64) (result i32) (i32.load8_u $m11 (local.get 0))) 42 (func (export "load_m12") (param i64) (result i32) (i32.load8_u $m12 (local.get 0))) 43 (func (export "load_m14") (param i64) (result i32) (i32.load8_u $m14 (local.get 0))) 44 (func (export "load_m16") (param i64) (result i32) (i32.load8_u $m16 (local.get 0))) 45 46 (func (export "store_m1") (param i32 i32) (i32.store8 $m1 (local.get 0) (local.get 1))) 47 (func (export "store_m2") (param i32 i32) (i32.store8 $m2 (local.get 0) (local.get 1))) 48 (func (export "store_m3") (param i32 i32) (i32.store8 $m3 (local.get 0) (local.get 1))) 49 (func (export "store_m4") (param i32 i32) (i32.store8 $m4 (local.get 0) (local.get 1))) 50 (func (export "store_m6") (param i32 i32) (i32.store8 $m6 (local.get 0) (local.get 1))) 51 (func (export "store_m8") (param i32 i32) (i32.store8 $m8 (local.get 0) (local.get 1))) 52 (func (export "store_m9") (param i64 i32) (i32.store8 $m9 (local.get 0) (local.get 1))) 53 (func (export "store_m10") (param i64 i32) (i32.store8 $m10 (local.get 0) (local.get 1))) 54 (func (export "store_m11") (param i64 i32) (i32.store8 $m11 (local.get 0) (local.get 1))) 55 (func (export "store_m12") (param i64 i32) (i32.store8 $m12 (local.get 0) (local.get 1))) 56 (func (export "store_m14") (param i64 i32) (i32.store8 $m14 (local.get 0) (local.get 1))) 57 (func (export "store_m16") (param i64 i32) (i32.store8 $m16 (local.get 0) (local.get 1))) 58 59 (func (export "grow_m1") (param i32) (result i32) (memory.grow $m1 (local.get 0))) 60 (func (export "grow_m2") (param i32) (result i32) (memory.grow $m2 (local.get 0))) 61 (func (export "grow_m3") (param i32) (result i32) (memory.grow $m3 (local.get 0))) 62 (func (export "grow_m4") (param i32) (result i32) (memory.grow $m4 (local.get 0))) 63 (func (export "grow_m6") (param i32) (result i32) (memory.grow $m6 (local.get 0))) 64 (func (export "grow_m8") (param i32) (result i32) (memory.grow $m8 (local.get 0))) 65 (func (export "grow_m9") (param i64) (result i64) (memory.grow $m9 (local.get 0))) 66 (func (export "grow_m10") (param i64) (result i64) (memory.grow $m10 (local.get 0))) 67 (func (export "grow_m11") (param i64) (result i64) (memory.grow $m11 (local.get 0))) 68 (func (export "grow_m12") (param i64) (result i64) (memory.grow $m12 (local.get 0))) 69 (func (export "grow_m14") (param i64) (result i64) (memory.grow $m14 (local.get 0))) 70 (func (export "grow_m16") (param i64) (result i64) (memory.grow $m16 (local.get 0))) 71 72 (func (export "size_m1") (result i32) (memory.size $m1)) 73 (func (export "size_m2") (result i32) (memory.size $m2)) 74 (func (export "size_m3") (result i32) (memory.size $m3)) 75 (func (export "size_m4") (result i32) (memory.size $m4)) 76 (func (export "size_m6") (result i32) (memory.size $m6)) 77 (func (export "size_m8") (result i32) (memory.size $m8)) 78 (func (export "size_m9") (result i64) (memory.size $m9)) 79 (func (export "size_m10") (result i64) (memory.size $m10)) 80 (func (export "size_m11") (result i64) (memory.size $m11)) 81 (func (export "size_m12") (result i64) (memory.size $m12)) 82 (func (export "size_m14") (result i64) (memory.size $m14)) 83 (func (export "size_m16") (result i64) (memory.size $m16)) 84) 85 86(assert_return (invoke "load_m1" (i32.const 0)) (i32.const 0)) 87(assert_return (invoke "store_m1" (i32.const 0) (i32.const 1))) 88(assert_return (invoke "load_m1" (i32.const 0)) (i32.const 1)) 89(assert_return (invoke "size_m1") (i32.const 1)) 90(assert_trap (invoke "load_m1" (i32.const 65536)) "out of bounds memory access") 91(assert_trap (invoke "store_m1" (i32.const 65536) (i32.const 0)) "out of bounds memory access") 92(assert_trap (invoke "load_m1" (i32.const -1)) "out of bounds memory access") 93(assert_trap (invoke "store_m1" (i32.const -1) (i32.const 0)) "out of bounds memory access") 94(assert_return (invoke "grow_m1" (i32.const 1)) (i32.const 1)) 95(assert_return (invoke "size_m1") (i32.const 2)) 96(assert_return (invoke "grow_m1" (i32.const -1)) (i32.const -1)) 97(assert_return (invoke "load_m1" (i32.const 65536)) (i32.const 0)) 98(assert_return (invoke "store_m1" (i32.const 65536) (i32.const 1))) 99(assert_return (invoke "load_m1" (i32.const 65536)) (i32.const 1)) 100(assert_trap (invoke "load_m1" (i32.const -1)) "out of bounds memory access") 101(assert_trap (invoke "store_m1" (i32.const -1) (i32.const 0)) "out of bounds memory access") 102 103(assert_return (invoke "load_m2" (i32.const 0)) (i32.const 0)) 104(assert_return (invoke "store_m2" (i32.const 0) (i32.const 1))) 105(assert_return (invoke "load_m2" (i32.const 0)) (i32.const 1)) 106(assert_return (invoke "size_m2") (i32.const 1)) 107(assert_trap (invoke "load_m2" (i32.const 65536)) "out of bounds memory access") 108(assert_trap (invoke "store_m2" (i32.const 65536) (i32.const 0)) "out of bounds memory access") 109(assert_trap (invoke "load_m2" (i32.const -1)) "out of bounds memory access") 110(assert_trap (invoke "store_m2" (i32.const -1) (i32.const 0)) "out of bounds memory access") 111(assert_return (invoke "grow_m2" (i32.const 1)) (i32.const 1)) 112(assert_return (invoke "size_m2") (i32.const 2)) 113(assert_return (invoke "grow_m2" (i32.const -1)) (i32.const -1)) 114(assert_return (invoke "load_m2" (i32.const 65536)) (i32.const 0)) 115(assert_return (invoke "store_m2" (i32.const 65536) (i32.const 1))) 116(assert_return (invoke "load_m2" (i32.const 65536)) (i32.const 1)) 117(assert_trap (invoke "load_m2" (i32.const -1)) "out of bounds memory access") 118(assert_trap (invoke "store_m2" (i32.const -1) (i32.const 0)) "out of bounds memory access") 119 120(assert_return (invoke "load_m3" (i32.const 0)) (i32.const 0)) 121(assert_return (invoke "store_m3" (i32.const 0) (i32.const 1))) 122(assert_return (invoke "load_m3" (i32.const 0)) (i32.const 1)) 123(assert_return (invoke "size_m3") (i32.const 1)) 124(assert_trap (invoke "load_m3" (i32.const 1)) "out of bounds memory access") 125(assert_trap (invoke "store_m3" (i32.const 1) (i32.const 0)) "out of bounds memory access") 126(assert_trap (invoke "load_m3" (i32.const -1)) "out of bounds memory access") 127(assert_trap (invoke "store_m3" (i32.const -1) (i32.const 0)) "out of bounds memory access") 128(assert_return (invoke "grow_m3" (i32.const 1)) (i32.const 1)) 129(assert_return (invoke "size_m3") (i32.const 2)) 130(assert_return (invoke "grow_m3" (i32.const -1)) (i32.const -1)) 131(assert_return (invoke "load_m3" (i32.const 1)) (i32.const 0)) 132(assert_return (invoke "store_m3" (i32.const 1) (i32.const 1))) 133(assert_return (invoke "load_m3" (i32.const 1)) (i32.const 1)) 134(assert_trap (invoke "load_m3" (i32.const -1)) "out of bounds memory access") 135(assert_trap (invoke "store_m3" (i32.const -1) (i32.const 0)) "out of bounds memory access") 136 137(assert_return (invoke "load_m4" (i32.const 0)) (i32.const 0)) 138(assert_return (invoke "store_m4" (i32.const 0) (i32.const 1))) 139(assert_return (invoke "load_m4" (i32.const 0)) (i32.const 1)) 140(assert_return (invoke "size_m4") (i32.const 1)) 141(assert_trap (invoke "load_m4" (i32.const 1)) "out of bounds memory access") 142(assert_trap (invoke "store_m4" (i32.const 1) (i32.const 0)) "out of bounds memory access") 143(assert_trap (invoke "load_m4" (i32.const -1)) "out of bounds memory access") 144(assert_trap (invoke "store_m4" (i32.const -1) (i32.const 0)) "out of bounds memory access") 145(assert_return (invoke "grow_m4" (i32.const 1)) (i32.const 1)) 146(assert_return (invoke "size_m4") (i32.const 2)) 147(assert_return (invoke "grow_m4" (i32.const -1)) (i32.const -1)) 148(assert_return (invoke "load_m4" (i32.const 1)) (i32.const 0)) 149(assert_return (invoke "store_m4" (i32.const 1) (i32.const 1))) 150(assert_return (invoke "load_m4" (i32.const 1)) (i32.const 1)) 151(assert_trap (invoke "load_m4" (i32.const -1)) "out of bounds memory access") 152(assert_trap (invoke "store_m4" (i32.const -1) (i32.const 0)) "out of bounds memory access") 153 154(assert_return (invoke "load_m6" (i32.const 0)) (i32.const 0)) 155(assert_return (invoke "store_m6" (i32.const 0) (i32.const 1))) 156(assert_return (invoke "load_m6" (i32.const 0)) (i32.const 1)) 157(assert_return (invoke "size_m6") (i32.const 1)) 158(assert_trap (invoke "load_m6" (i32.const 65536)) "out of bounds memory access") 159(assert_trap (invoke "store_m6" (i32.const 65536) (i32.const 0)) "out of bounds memory access") 160(assert_trap (invoke "load_m6" (i32.const -1)) "out of bounds memory access") 161(assert_trap (invoke "store_m6" (i32.const -1) (i32.const 0)) "out of bounds memory access") 162(assert_return (invoke "grow_m6" (i32.const 1)) (i32.const 1)) 163(assert_return (invoke "size_m6") (i32.const 2)) 164(assert_return (invoke "grow_m6" (i32.const -1)) (i32.const -1)) 165(assert_return (invoke "load_m6" (i32.const 65536)) (i32.const 0)) 166(assert_return (invoke "store_m6" (i32.const 65536) (i32.const 1))) 167(assert_return (invoke "load_m6" (i32.const 65536)) (i32.const 1)) 168(assert_trap (invoke "load_m6" (i32.const -1)) "out of bounds memory access") 169(assert_trap (invoke "store_m6" (i32.const -1) (i32.const 0)) "out of bounds memory access") 170 171(assert_return (invoke "load_m8" (i32.const 0)) (i32.const 0)) 172(assert_return (invoke "store_m8" (i32.const 0) (i32.const 1))) 173(assert_return (invoke "load_m8" (i32.const 0)) (i32.const 1)) 174(assert_return (invoke "size_m8") (i32.const 1)) 175(assert_trap (invoke "load_m8" (i32.const 1)) "out of bounds memory access") 176(assert_trap (invoke "store_m8" (i32.const 1) (i32.const 0)) "out of bounds memory access") 177(assert_trap (invoke "load_m8" (i32.const -1)) "out of bounds memory access") 178(assert_trap (invoke "store_m8" (i32.const -1) (i32.const 0)) "out of bounds memory access") 179(assert_return (invoke "grow_m8" (i32.const 1)) (i32.const 1)) 180(assert_return (invoke "size_m8") (i32.const 2)) 181(assert_return (invoke "grow_m8" (i32.const -1)) (i32.const -1)) 182(assert_return (invoke "load_m8" (i32.const 1)) (i32.const 0)) 183(assert_return (invoke "store_m8" (i32.const 1) (i32.const 1))) 184(assert_return (invoke "load_m8" (i32.const 1)) (i32.const 1)) 185(assert_trap (invoke "load_m8" (i32.const -1)) "out of bounds memory access") 186(assert_trap (invoke "store_m8" (i32.const -1) (i32.const 0)) "out of bounds memory access") 187 188(assert_return (invoke "load_m9" (i64.const 0)) (i32.const 0)) 189(assert_return (invoke "store_m9" (i64.const 0) (i32.const 1))) 190(assert_return (invoke "load_m9" (i64.const 0)) (i32.const 1)) 191(assert_return (invoke "size_m9") (i64.const 1)) 192(assert_trap (invoke "load_m9" (i64.const 65536)) "out of bounds memory access") 193(assert_trap (invoke "store_m9" (i64.const 65536) (i32.const 0)) "out of bounds memory access") 194(assert_trap (invoke "load_m9" (i64.const -1)) "out of bounds memory access") 195(assert_trap (invoke "store_m9" (i64.const -1) (i32.const 0)) "out of bounds memory access") 196(assert_return (invoke "grow_m9" (i64.const 1)) (i64.const 1)) 197(assert_return (invoke "size_m9") (i64.const 2)) 198(assert_return (invoke "grow_m9" (i64.const -1)) (i64.const -1)) 199(assert_return (invoke "load_m9" (i64.const 65536)) (i32.const 0)) 200(assert_return (invoke "store_m9" (i64.const 65536) (i32.const 1))) 201(assert_return (invoke "load_m9" (i64.const 65536)) (i32.const 1)) 202(assert_trap (invoke "load_m9" (i64.const -1)) "out of bounds memory access") 203(assert_trap (invoke "store_m9" (i64.const -1) (i32.const 0)) "out of bounds memory access") 204 205(assert_return (invoke "load_m10" (i64.const 0)) (i32.const 0)) 206(assert_return (invoke "store_m10" (i64.const 0) (i32.const 1))) 207(assert_return (invoke "load_m10" (i64.const 0)) (i32.const 1)) 208(assert_return (invoke "size_m10") (i64.const 1)) 209(assert_trap (invoke "load_m10" (i64.const 65536)) "out of bounds memory access") 210(assert_trap (invoke "store_m10" (i64.const 65536) (i32.const 0)) "out of bounds memory access") 211(assert_trap (invoke "load_m10" (i64.const -1)) "out of bounds memory access") 212(assert_trap (invoke "store_m10" (i64.const -1) (i32.const 0)) "out of bounds memory access") 213(assert_return (invoke "grow_m10" (i64.const 1)) (i64.const 1)) 214(assert_return (invoke "size_m10") (i64.const 2)) 215(assert_return (invoke "grow_m10" (i64.const -1)) (i64.const -1)) 216(assert_return (invoke "load_m10" (i64.const 65536)) (i32.const 0)) 217(assert_return (invoke "store_m10" (i64.const 65536) (i32.const 1))) 218(assert_return (invoke "load_m10" (i64.const 65536)) (i32.const 1)) 219(assert_trap (invoke "load_m10" (i64.const -1)) "out of bounds memory access") 220(assert_trap (invoke "store_m10" (i64.const -1) (i32.const 0)) "out of bounds memory access") 221 222(assert_return (invoke "load_m11" (i64.const 0)) (i32.const 0)) 223(assert_return (invoke "store_m11" (i64.const 0) (i32.const 1))) 224(assert_return (invoke "load_m11" (i64.const 0)) (i32.const 1)) 225(assert_return (invoke "size_m11") (i64.const 1)) 226(assert_trap (invoke "load_m11" (i64.const 1)) "out of bounds memory access") 227(assert_trap (invoke "store_m11" (i64.const 1) (i32.const 0)) "out of bounds memory access") 228(assert_trap (invoke "load_m11" (i64.const -1)) "out of bounds memory access") 229(assert_trap (invoke "store_m11" (i64.const -1) (i32.const 0)) "out of bounds memory access") 230(assert_return (invoke "grow_m11" (i64.const 1)) (i64.const 1)) 231(assert_return (invoke "size_m11") (i64.const 2)) 232(assert_return (invoke "grow_m11" (i64.const -1)) (i64.const -1)) 233(assert_return (invoke "load_m11" (i64.const 1)) (i32.const 0)) 234(assert_return (invoke "store_m11" (i64.const 1) (i32.const 1))) 235(assert_return (invoke "load_m11" (i64.const 1)) (i32.const 1)) 236(assert_trap (invoke "load_m11" (i64.const -1)) "out of bounds memory access") 237(assert_trap (invoke "store_m11" (i64.const -1) (i32.const 0)) "out of bounds memory access") 238 239(assert_return (invoke "load_m12" (i64.const 0)) (i32.const 0)) 240(assert_return (invoke "store_m12" (i64.const 0) (i32.const 1))) 241(assert_return (invoke "load_m12" (i64.const 0)) (i32.const 1)) 242(assert_return (invoke "size_m12") (i64.const 1)) 243(assert_trap (invoke "load_m12" (i64.const 1)) "out of bounds memory access") 244(assert_trap (invoke "store_m12" (i64.const 1) (i32.const 0)) "out of bounds memory access") 245(assert_trap (invoke "load_m12" (i64.const -1)) "out of bounds memory access") 246(assert_trap (invoke "store_m12" (i64.const -1) (i32.const 0)) "out of bounds memory access") 247(assert_return (invoke "grow_m12" (i64.const 1)) (i64.const 1)) 248(assert_return (invoke "size_m12") (i64.const 2)) 249(assert_return (invoke "grow_m12" (i64.const -1)) (i64.const -1)) 250(assert_return (invoke "load_m12" (i64.const 1)) (i32.const 0)) 251(assert_return (invoke "store_m12" (i64.const 1) (i32.const 1))) 252(assert_return (invoke "load_m12" (i64.const 1)) (i32.const 1)) 253(assert_trap (invoke "load_m12" (i64.const -1)) "out of bounds memory access") 254(assert_trap (invoke "store_m12" (i64.const -1) (i32.const 0)) "out of bounds memory access") 255 256(assert_return (invoke "load_m14" (i64.const 0)) (i32.const 0)) 257(assert_return (invoke "store_m14" (i64.const 0) (i32.const 1))) 258(assert_return (invoke "load_m14" (i64.const 0)) (i32.const 1)) 259(assert_return (invoke "size_m14") (i64.const 1)) 260(assert_trap (invoke "load_m14" (i64.const 65536)) "out of bounds memory access") 261(assert_trap (invoke "store_m14" (i64.const 65536) (i32.const 0)) "out of bounds memory access") 262(assert_trap (invoke "load_m14" (i64.const -1)) "out of bounds memory access") 263(assert_trap (invoke "store_m14" (i64.const -1) (i32.const 0)) "out of bounds memory access") 264(assert_return (invoke "grow_m14" (i64.const 1)) (i64.const 1)) 265(assert_return (invoke "size_m14") (i64.const 2)) 266(assert_return (invoke "grow_m14" (i64.const -1)) (i64.const -1)) 267(assert_return (invoke "load_m14" (i64.const 65536)) (i32.const 0)) 268(assert_return (invoke "store_m14" (i64.const 65536) (i32.const 1))) 269(assert_return (invoke "load_m14" (i64.const 65536)) (i32.const 1)) 270(assert_trap (invoke "load_m14" (i64.const -1)) "out of bounds memory access") 271(assert_trap (invoke "store_m14" (i64.const -1) (i32.const 0)) "out of bounds memory access") 272 273(assert_return (invoke "load_m16" (i64.const 0)) (i32.const 0)) 274(assert_return (invoke "store_m16" (i64.const 0) (i32.const 1))) 275(assert_return (invoke "load_m16" (i64.const 0)) (i32.const 1)) 276(assert_return (invoke "size_m16") (i64.const 1)) 277(assert_trap (invoke "load_m16" (i64.const 1)) "out of bounds memory access") 278(assert_trap (invoke "store_m16" (i64.const 1) (i32.const 0)) "out of bounds memory access") 279(assert_trap (invoke "load_m16" (i64.const -1)) "out of bounds memory access") 280(assert_trap (invoke "store_m16" (i64.const -1) (i32.const 0)) "out of bounds memory access") 281(assert_return (invoke "grow_m16" (i64.const 1)) (i64.const 1)) 282(assert_return (invoke "size_m16") (i64.const 2)) 283(assert_return (invoke "grow_m16" (i64.const -1)) (i64.const -1)) 284(assert_return (invoke "load_m16" (i64.const 1)) (i32.const 0)) 285(assert_return (invoke "store_m16" (i64.const 1) (i32.const 1))) 286(assert_return (invoke "load_m16" (i64.const 1)) (i32.const 1)) 287(assert_trap (invoke "load_m16" (i64.const -1)) "out of bounds memory access") 288(assert_trap (invoke "store_m16" (i64.const -1) (i32.const 0)) "out of bounds memory access") 289