1;; make sure everything codegens correctly and has no cranelift verifier errors 2(module 3 (memory i64 1) 4 (func (export "run") 5 i64.const 0 i32.atomic.load drop 6 i64.const 0 i64.atomic.load drop 7 i64.const 0 i32.atomic.load8_u drop 8 i64.const 0 i32.atomic.load16_u drop 9 i64.const 0 i64.atomic.load8_u drop 10 i64.const 0 i64.atomic.load16_u drop 11 i64.const 0 i64.atomic.load32_u drop 12 i64.const 0 i32.const 0 i32.atomic.store 13 i64.const 0 i64.const 0 i64.atomic.store 14 i64.const 0 i32.const 0 i32.atomic.store8 15 i64.const 0 i32.const 0 i32.atomic.store16 16 i64.const 0 i64.const 0 i64.atomic.store8 17 i64.const 0 i64.const 0 i64.atomic.store16 18 i64.const 0 i64.const 0 i64.atomic.store32 19 i64.const 0 i32.const 0 i32.atomic.rmw.add drop 20 i64.const 0 i64.const 0 i64.atomic.rmw.add drop 21 i64.const 0 i32.const 0 i32.atomic.rmw8.add_u drop 22 i64.const 0 i32.const 0 i32.atomic.rmw16.add_u drop 23 i64.const 0 i64.const 0 i64.atomic.rmw8.add_u drop 24 i64.const 0 i64.const 0 i64.atomic.rmw16.add_u drop 25 i64.const 0 i64.const 0 i64.atomic.rmw32.add_u drop 26 i64.const 0 i32.const 0 i32.atomic.rmw.sub drop 27 i64.const 0 i64.const 0 i64.atomic.rmw.sub drop 28 i64.const 0 i32.const 0 i32.atomic.rmw8.sub_u drop 29 i64.const 0 i32.const 0 i32.atomic.rmw16.sub_u drop 30 i64.const 0 i64.const 0 i64.atomic.rmw8.sub_u drop 31 i64.const 0 i64.const 0 i64.atomic.rmw16.sub_u drop 32 i64.const 0 i64.const 0 i64.atomic.rmw32.sub_u drop 33 i64.const 0 i32.const 0 i32.atomic.rmw.and drop 34 i64.const 0 i64.const 0 i64.atomic.rmw.and drop 35 i64.const 0 i32.const 0 i32.atomic.rmw8.and_u drop 36 i64.const 0 i32.const 0 i32.atomic.rmw16.and_u drop 37 i64.const 0 i64.const 0 i64.atomic.rmw8.and_u drop 38 i64.const 0 i64.const 0 i64.atomic.rmw16.and_u drop 39 i64.const 0 i64.const 0 i64.atomic.rmw32.and_u drop 40 i64.const 0 i32.const 0 i32.atomic.rmw.or drop 41 i64.const 0 i64.const 0 i64.atomic.rmw.or drop 42 i64.const 0 i32.const 0 i32.atomic.rmw8.or_u drop 43 i64.const 0 i32.const 0 i32.atomic.rmw16.or_u drop 44 i64.const 0 i64.const 0 i64.atomic.rmw8.or_u drop 45 i64.const 0 i64.const 0 i64.atomic.rmw16.or_u drop 46 i64.const 0 i64.const 0 i64.atomic.rmw32.or_u drop 47 i64.const 0 i32.const 0 i32.atomic.rmw.xor drop 48 i64.const 0 i64.const 0 i64.atomic.rmw.xor drop 49 i64.const 0 i32.const 0 i32.atomic.rmw8.xor_u drop 50 i64.const 0 i32.const 0 i32.atomic.rmw16.xor_u drop 51 i64.const 0 i64.const 0 i64.atomic.rmw8.xor_u drop 52 i64.const 0 i64.const 0 i64.atomic.rmw16.xor_u drop 53 i64.const 0 i64.const 0 i64.atomic.rmw32.xor_u drop 54 i64.const 0 i32.const 0 i32.atomic.rmw.xchg drop 55 i64.const 0 i64.const 0 i64.atomic.rmw.xchg drop 56 i64.const 0 i32.const 0 i32.atomic.rmw8.xchg_u drop 57 i64.const 0 i32.const 0 i32.atomic.rmw16.xchg_u drop 58 i64.const 0 i64.const 0 i64.atomic.rmw8.xchg_u drop 59 i64.const 0 i64.const 0 i64.atomic.rmw16.xchg_u drop 60 i64.const 0 i64.const 0 i64.atomic.rmw32.xchg_u drop 61 i64.const 0 i32.const 0 i32.const 0 i32.atomic.rmw.cmpxchg drop 62 i64.const 0 i64.const 0 i64.const 0 i64.atomic.rmw.cmpxchg drop 63 i64.const 0 i32.const 0 i32.const 0 i32.atomic.rmw8.cmpxchg_u drop 64 i64.const 0 i32.const 0 i32.const 0 i32.atomic.rmw16.cmpxchg_u drop 65 i64.const 0 i64.const 0 i64.const 0 i64.atomic.rmw8.cmpxchg_u drop 66 i64.const 0 i64.const 0 i64.const 0 i64.atomic.rmw16.cmpxchg_u drop 67 i64.const 0 i64.const 0 i64.const 0 i64.atomic.rmw32.cmpxchg_u drop 68 ) 69 70 ;; these are unimplemented intrinsics that trap at runtime so just make sure 71 ;; we can codegen instead of also testing execution. 72 (func $just_validate_codegen 73 i64.const 0 i32.const 0 memory.atomic.notify drop 74 i64.const 0 i32.const 0 i64.const 0 memory.atomic.wait32 drop 75 i64.const 0 i64.const 0 i64.const 0 memory.atomic.wait64 drop 76 ) 77) 78 79(assert_return (invoke "run")) 80