| ;; NOTE: Assertions have been generated by update_lit_checks.py and should not be edited. |
| |
| ;; RUN: wasm-opt -all %s -S -o - | filecheck %s |
| ;; RUN: wasm-opt -all %s --roundtrip -S -o - | filecheck %s |
| |
| (module |
| ;; CHECK: (type $struct (struct (field (mut i32)))) |
| (type $struct (struct (field (mut i32)))) |
| ;; CHECK: (type $packed (struct (field (mut i8)))) |
| (type $packed (struct (field (mut i8)))) |
| ;; CHECK: (type $array (array (mut i32))) |
| (type $array (array (mut i32))) |
| ;; CHECK: (type $array-packed (array (mut i8))) |
| (type $array-packed (array (mut i8))) |
| |
| ;; CHECK: (func $get (type $1) (param $0 (ref null $struct)) (result i32) |
| ;; CHECK-NEXT: (struct.atomic.get $struct 0 |
| ;; CHECK-NEXT: (local.get $0) |
| ;; CHECK-NEXT: ) |
| ;; CHECK-NEXT: ) |
| (func $get (param (ref null $struct)) (result i32) |
| (struct.atomic.get $struct 0 |
| (local.get 0) |
| ) |
| ) |
| |
| ;; CHECK: (func $get-seqcst (type $1) (param $0 (ref null $struct)) (result i32) |
| ;; CHECK-NEXT: (struct.atomic.get $struct 0 |
| ;; CHECK-NEXT: (local.get $0) |
| ;; CHECK-NEXT: ) |
| ;; CHECK-NEXT: ) |
| (func $get-seqcst (param (ref null $struct)) (result i32) |
| (struct.atomic.get seqcst $struct 0 |
| (local.get 0) |
| ) |
| ) |
| |
| ;; CHECK: (func $get-acqrel (type $1) (param $0 (ref null $struct)) (result i32) |
| ;; CHECK-NEXT: (struct.atomic.get acqrel $struct 0 |
| ;; CHECK-NEXT: (local.get $0) |
| ;; CHECK-NEXT: ) |
| ;; CHECK-NEXT: ) |
| (func $get-acqrel (param (ref null $struct)) (result i32) |
| (struct.atomic.get acqrel $struct 0 |
| (local.get 0) |
| ) |
| ) |
| |
| ;; CHECK: (func $get-s (type $5) (param $0 (ref null $packed)) (result i32) |
| ;; CHECK-NEXT: (struct.atomic.get_s $packed 0 |
| ;; CHECK-NEXT: (local.get $0) |
| ;; CHECK-NEXT: ) |
| ;; CHECK-NEXT: ) |
| (func $get-s (param (ref null $packed)) (result i32) |
| (struct.atomic.get_s $packed 0 |
| (local.get 0) |
| ) |
| ) |
| |
| ;; CHECK: (func $get-s-seqcst (type $5) (param $0 (ref null $packed)) (result i32) |
| ;; CHECK-NEXT: (struct.atomic.get_s $packed 0 |
| ;; CHECK-NEXT: (local.get $0) |
| ;; CHECK-NEXT: ) |
| ;; CHECK-NEXT: ) |
| (func $get-s-seqcst (param (ref null $packed)) (result i32) |
| (struct.atomic.get_s seqcst $packed 0 |
| (local.get 0) |
| ) |
| ) |
| |
| ;; CHECK: (func $get-s-acqrel (type $5) (param $0 (ref null $packed)) (result i32) |
| ;; CHECK-NEXT: (struct.atomic.get_s acqrel $packed 0 |
| ;; CHECK-NEXT: (local.get $0) |
| ;; CHECK-NEXT: ) |
| ;; CHECK-NEXT: ) |
| (func $get-s-acqrel (param (ref null $packed)) (result i32) |
| (struct.atomic.get_s acqrel $packed 0 |
| (local.get 0) |
| ) |
| ) |
| |
| ;; CHECK: (func $get-u (type $5) (param $0 (ref null $packed)) (result i32) |
| ;; CHECK-NEXT: (struct.atomic.get_u $packed 0 |
| ;; CHECK-NEXT: (local.get $0) |
| ;; CHECK-NEXT: ) |
| ;; CHECK-NEXT: ) |
| (func $get-u (param (ref null $packed)) (result i32) |
| (struct.atomic.get_u $packed 0 |
| (local.get 0) |
| ) |
| ) |
| |
| ;; CHECK: (func $get-u-seqcst (type $5) (param $0 (ref null $packed)) (result i32) |
| ;; CHECK-NEXT: (struct.atomic.get_u $packed 0 |
| ;; CHECK-NEXT: (local.get $0) |
| ;; CHECK-NEXT: ) |
| ;; CHECK-NEXT: ) |
| (func $get-u-seqcst (param (ref null $packed)) (result i32) |
| (struct.atomic.get_u seqcst $packed 0 |
| (local.get 0) |
| ) |
| ) |
| |
| ;; CHECK: (func $get-u-acqrel (type $5) (param $0 (ref null $packed)) (result i32) |
| ;; CHECK-NEXT: (struct.atomic.get_u acqrel $packed 0 |
| ;; CHECK-NEXT: (local.get $0) |
| ;; CHECK-NEXT: ) |
| ;; CHECK-NEXT: ) |
| (func $get-u-acqrel (param (ref null $packed)) (result i32) |
| (struct.atomic.get_u acqrel $packed 0 |
| (local.get 0) |
| ) |
| ) |
| |
| ;; CHECK: (func $set (type $7) (param $0 (ref null $struct)) |
| ;; CHECK-NEXT: (struct.atomic.set $struct 0 |
| ;; CHECK-NEXT: (local.get $0) |
| ;; CHECK-NEXT: (i32.const 0) |
| ;; CHECK-NEXT: ) |
| ;; CHECK-NEXT: ) |
| (func $set (param (ref null $struct)) |
| (struct.atomic.set $struct 0 |
| (local.get 0) |
| (i32.const 0) |
| ) |
| ) |
| |
| ;; CHECK: (func $set-seqcst (type $7) (param $0 (ref null $struct)) |
| ;; CHECK-NEXT: (struct.atomic.set $struct 0 |
| ;; CHECK-NEXT: (local.get $0) |
| ;; CHECK-NEXT: (i32.const 0) |
| ;; CHECK-NEXT: ) |
| ;; CHECK-NEXT: ) |
| (func $set-seqcst (param (ref null $struct)) |
| (struct.atomic.set seqcst $struct 0 |
| (local.get 0) |
| (i32.const 0) |
| ) |
| ) |
| |
| ;; CHECK: (func $set-acqrel (type $7) (param $0 (ref null $struct)) |
| ;; CHECK-NEXT: (struct.atomic.set acqrel $struct 0 |
| ;; CHECK-NEXT: (local.get $0) |
| ;; CHECK-NEXT: (i32.const 0) |
| ;; CHECK-NEXT: ) |
| ;; CHECK-NEXT: ) |
| (func $set-acqrel (param (ref null $struct)) |
| (struct.atomic.set acqrel $struct 0 |
| (local.get 0) |
| (i32.const 0) |
| ) |
| ) |
| |
| ;; CHECK: (func $rmw-add (type $1) (param $0 (ref null $struct)) (result i32) |
| ;; CHECK-NEXT: (struct.atomic.rmw.add $struct 0 |
| ;; CHECK-NEXT: (local.get $0) |
| ;; CHECK-NEXT: (i32.const 1) |
| ;; CHECK-NEXT: ) |
| ;; CHECK-NEXT: ) |
| (func $rmw-add (param (ref null $struct)) (result i32) |
| (struct.atomic.rmw.add $struct 0 |
| (local.get 0) |
| (i32.const 1) |
| ) |
| ) |
| |
| ;; CHECK: (func $rmw-add-seqcst (type $1) (param $0 (ref null $struct)) (result i32) |
| ;; CHECK-NEXT: (struct.atomic.rmw.add $struct 0 |
| ;; CHECK-NEXT: (local.get $0) |
| ;; CHECK-NEXT: (i32.const 1) |
| ;; CHECK-NEXT: ) |
| ;; CHECK-NEXT: ) |
| (func $rmw-add-seqcst (param (ref null $struct)) (result i32) |
| (struct.atomic.rmw.add seqcst seqcst $struct 0 |
| (local.get 0) |
| (i32.const 1) |
| ) |
| ) |
| |
| ;; CHECK: (func $rmw-add-acqrel (type $1) (param $0 (ref null $struct)) (result i32) |
| ;; CHECK-NEXT: (struct.atomic.rmw.add acqrel acqrel $struct 0 |
| ;; CHECK-NEXT: (local.get $0) |
| ;; CHECK-NEXT: (i32.const 1) |
| ;; CHECK-NEXT: ) |
| ;; CHECK-NEXT: ) |
| (func $rmw-add-acqrel (param (ref null $struct)) (result i32) |
| (struct.atomic.rmw.add acqrel acqrel $struct 0 |
| (local.get 0) |
| (i32.const 1) |
| ) |
| ) |
| |
| ;; CHECK: (func $rmw-sub (type $1) (param $0 (ref null $struct)) (result i32) |
| ;; CHECK-NEXT: (struct.atomic.rmw.sub $struct 0 |
| ;; CHECK-NEXT: (local.get $0) |
| ;; CHECK-NEXT: (i32.const 1) |
| ;; CHECK-NEXT: ) |
| ;; CHECK-NEXT: ) |
| (func $rmw-sub (param (ref null $struct)) (result i32) |
| (struct.atomic.rmw.sub $struct 0 |
| (local.get 0) |
| (i32.const 1) |
| ) |
| ) |
| |
| ;; CHECK: (func $rmw-sub-seqcst (type $1) (param $0 (ref null $struct)) (result i32) |
| ;; CHECK-NEXT: (struct.atomic.rmw.sub $struct 0 |
| ;; CHECK-NEXT: (local.get $0) |
| ;; CHECK-NEXT: (i32.const 1) |
| ;; CHECK-NEXT: ) |
| ;; CHECK-NEXT: ) |
| (func $rmw-sub-seqcst (param (ref null $struct)) (result i32) |
| (struct.atomic.rmw.sub seqcst seqcst $struct 0 |
| (local.get 0) |
| (i32.const 1) |
| ) |
| ) |
| |
| ;; CHECK: (func $rmw-sub-acqrel (type $1) (param $0 (ref null $struct)) (result i32) |
| ;; CHECK-NEXT: (struct.atomic.rmw.sub acqrel acqrel $struct 0 |
| ;; CHECK-NEXT: (local.get $0) |
| ;; CHECK-NEXT: (i32.const 1) |
| ;; CHECK-NEXT: ) |
| ;; CHECK-NEXT: ) |
| (func $rmw-sub-acqrel (param (ref null $struct)) (result i32) |
| (struct.atomic.rmw.sub acqrel acqrel $struct 0 |
| (local.get 0) |
| (i32.const 1) |
| ) |
| ) |
| |
| ;; CHECK: (func $rmw-and (type $1) (param $0 (ref null $struct)) (result i32) |
| ;; CHECK-NEXT: (struct.atomic.rmw.and $struct 0 |
| ;; CHECK-NEXT: (local.get $0) |
| ;; CHECK-NEXT: (i32.const 1) |
| ;; CHECK-NEXT: ) |
| ;; CHECK-NEXT: ) |
| (func $rmw-and (param (ref null $struct)) (result i32) |
| (struct.atomic.rmw.and $struct 0 |
| (local.get 0) |
| (i32.const 1) |
| ) |
| ) |
| |
| ;; CHECK: (func $rmw-and-seqcst (type $1) (param $0 (ref null $struct)) (result i32) |
| ;; CHECK-NEXT: (struct.atomic.rmw.and $struct 0 |
| ;; CHECK-NEXT: (local.get $0) |
| ;; CHECK-NEXT: (i32.const 1) |
| ;; CHECK-NEXT: ) |
| ;; CHECK-NEXT: ) |
| (func $rmw-and-seqcst (param (ref null $struct)) (result i32) |
| (struct.atomic.rmw.and seqcst seqcst $struct 0 |
| (local.get 0) |
| (i32.const 1) |
| ) |
| ) |
| |
| ;; CHECK: (func $rmw-and-acqrel (type $1) (param $0 (ref null $struct)) (result i32) |
| ;; CHECK-NEXT: (struct.atomic.rmw.and acqrel acqrel $struct 0 |
| ;; CHECK-NEXT: (local.get $0) |
| ;; CHECK-NEXT: (i32.const 1) |
| ;; CHECK-NEXT: ) |
| ;; CHECK-NEXT: ) |
| (func $rmw-and-acqrel (param (ref null $struct)) (result i32) |
| (struct.atomic.rmw.and acqrel acqrel $struct 0 |
| (local.get 0) |
| (i32.const 1) |
| ) |
| ) |
| |
| ;; CHECK: (func $rmw-or (type $1) (param $0 (ref null $struct)) (result i32) |
| ;; CHECK-NEXT: (struct.atomic.rmw.or $struct 0 |
| ;; CHECK-NEXT: (local.get $0) |
| ;; CHECK-NEXT: (i32.const 1) |
| ;; CHECK-NEXT: ) |
| ;; CHECK-NEXT: ) |
| (func $rmw-or (param (ref null $struct)) (result i32) |
| (struct.atomic.rmw.or $struct 0 |
| (local.get 0) |
| (i32.const 1) |
| ) |
| ) |
| |
| ;; CHECK: (func $rmw-or-seqcst (type $1) (param $0 (ref null $struct)) (result i32) |
| ;; CHECK-NEXT: (struct.atomic.rmw.or $struct 0 |
| ;; CHECK-NEXT: (local.get $0) |
| ;; CHECK-NEXT: (i32.const 1) |
| ;; CHECK-NEXT: ) |
| ;; CHECK-NEXT: ) |
| (func $rmw-or-seqcst (param (ref null $struct)) (result i32) |
| (struct.atomic.rmw.or seqcst seqcst $struct 0 |
| (local.get 0) |
| (i32.const 1) |
| ) |
| ) |
| |
| ;; CHECK: (func $rmw-or-acqrel (type $1) (param $0 (ref null $struct)) (result i32) |
| ;; CHECK-NEXT: (struct.atomic.rmw.or acqrel acqrel $struct 0 |
| ;; CHECK-NEXT: (local.get $0) |
| ;; CHECK-NEXT: (i32.const 1) |
| ;; CHECK-NEXT: ) |
| ;; CHECK-NEXT: ) |
| (func $rmw-or-acqrel (param (ref null $struct)) (result i32) |
| (struct.atomic.rmw.or acqrel acqrel $struct 0 |
| (local.get 0) |
| (i32.const 1) |
| ) |
| ) |
| |
| ;; CHECK: (func $rmw-xor (type $1) (param $0 (ref null $struct)) (result i32) |
| ;; CHECK-NEXT: (struct.atomic.rmw.xor $struct 0 |
| ;; CHECK-NEXT: (local.get $0) |
| ;; CHECK-NEXT: (i32.const 1) |
| ;; CHECK-NEXT: ) |
| ;; CHECK-NEXT: ) |
| (func $rmw-xor (param (ref null $struct)) (result i32) |
| (struct.atomic.rmw.xor $struct 0 |
| (local.get 0) |
| (i32.const 1) |
| ) |
| ) |
| |
| ;; CHECK: (func $rmw-xor-seqcst (type $1) (param $0 (ref null $struct)) (result i32) |
| ;; CHECK-NEXT: (struct.atomic.rmw.xor $struct 0 |
| ;; CHECK-NEXT: (local.get $0) |
| ;; CHECK-NEXT: (i32.const 1) |
| ;; CHECK-NEXT: ) |
| ;; CHECK-NEXT: ) |
| (func $rmw-xor-seqcst (param (ref null $struct)) (result i32) |
| (struct.atomic.rmw.xor seqcst seqcst $struct 0 |
| (local.get 0) |
| (i32.const 1) |
| ) |
| ) |
| |
| ;; CHECK: (func $rmw-xor-acqrel (type $1) (param $0 (ref null $struct)) (result i32) |
| ;; CHECK-NEXT: (struct.atomic.rmw.xor acqrel acqrel $struct 0 |
| ;; CHECK-NEXT: (local.get $0) |
| ;; CHECK-NEXT: (i32.const 1) |
| ;; CHECK-NEXT: ) |
| ;; CHECK-NEXT: ) |
| (func $rmw-xor-acqrel (param (ref null $struct)) (result i32) |
| (struct.atomic.rmw.xor acqrel acqrel $struct 0 |
| (local.get 0) |
| (i32.const 1) |
| ) |
| ) |
| |
| ;; CHECK: (func $rmw-xchg (type $1) (param $0 (ref null $struct)) (result i32) |
| ;; CHECK-NEXT: (struct.atomic.rmw.xchg $struct 0 |
| ;; CHECK-NEXT: (local.get $0) |
| ;; CHECK-NEXT: (i32.const 1) |
| ;; CHECK-NEXT: ) |
| ;; CHECK-NEXT: ) |
| (func $rmw-xchg (param (ref null $struct)) (result i32) |
| (struct.atomic.rmw.xchg $struct 0 |
| (local.get 0) |
| (i32.const 1) |
| ) |
| ) |
| |
| ;; CHECK: (func $rmw-xchg-seqcst (type $1) (param $0 (ref null $struct)) (result i32) |
| ;; CHECK-NEXT: (struct.atomic.rmw.xchg $struct 0 |
| ;; CHECK-NEXT: (local.get $0) |
| ;; CHECK-NEXT: (i32.const 1) |
| ;; CHECK-NEXT: ) |
| ;; CHECK-NEXT: ) |
| (func $rmw-xchg-seqcst (param (ref null $struct)) (result i32) |
| (struct.atomic.rmw.xchg seqcst seqcst $struct 0 |
| (local.get 0) |
| (i32.const 1) |
| ) |
| ) |
| |
| ;; CHECK: (func $rmw-xchg-acqrel (type $1) (param $0 (ref null $struct)) (result i32) |
| ;; CHECK-NEXT: (struct.atomic.rmw.xchg acqrel acqrel $struct 0 |
| ;; CHECK-NEXT: (local.get $0) |
| ;; CHECK-NEXT: (i32.const 1) |
| ;; CHECK-NEXT: ) |
| ;; CHECK-NEXT: ) |
| (func $rmw-xchg-acqrel (param (ref null $struct)) (result i32) |
| (struct.atomic.rmw.xchg acqrel acqrel $struct 0 |
| (local.get 0) |
| (i32.const 1) |
| ) |
| ) |
| |
| ;; CHECK: (func $rmw-cmpxchg (type $1) (param $0 (ref null $struct)) (result i32) |
| ;; CHECK-NEXT: (struct.atomic.rmw.cmpxchg $struct 0 |
| ;; CHECK-NEXT: (local.get $0) |
| ;; CHECK-NEXT: (i32.const 1) |
| ;; CHECK-NEXT: (i32.const 2) |
| ;; CHECK-NEXT: ) |
| ;; CHECK-NEXT: ) |
| (func $rmw-cmpxchg (param (ref null $struct)) (result i32) |
| (struct.atomic.rmw.cmpxchg $struct 0 |
| (local.get 0) |
| (i32.const 1) |
| (i32.const 2) |
| ) |
| ) |
| |
| ;; CHECK: (func $rmw-cmpxchg-seqcst (type $1) (param $0 (ref null $struct)) (result i32) |
| ;; CHECK-NEXT: (struct.atomic.rmw.cmpxchg $struct 0 |
| ;; CHECK-NEXT: (local.get $0) |
| ;; CHECK-NEXT: (i32.const 1) |
| ;; CHECK-NEXT: (i32.const 2) |
| ;; CHECK-NEXT: ) |
| ;; CHECK-NEXT: ) |
| (func $rmw-cmpxchg-seqcst (param (ref null $struct)) (result i32) |
| (struct.atomic.rmw.cmpxchg seqcst seqcst $struct 0 |
| (local.get 0) |
| (i32.const 1) |
| (i32.const 2) |
| ) |
| ) |
| |
| ;; CHECK: (func $rmw-cmpxchg-acqrel (type $1) (param $0 (ref null $struct)) (result i32) |
| ;; CHECK-NEXT: (struct.atomic.rmw.cmpxchg acqrel acqrel $struct 0 |
| ;; CHECK-NEXT: (local.get $0) |
| ;; CHECK-NEXT: (i32.const 1) |
| ;; CHECK-NEXT: (i32.const 2) |
| ;; CHECK-NEXT: ) |
| ;; CHECK-NEXT: ) |
| (func $rmw-cmpxchg-acqrel (param (ref null $struct)) (result i32) |
| (struct.atomic.rmw.cmpxchg acqrel acqrel $struct 0 |
| (local.get 0) |
| (i32.const 1) |
| (i32.const 2) |
| ) |
| ) |
| |
| ;; CHECK: (func $array.get (type $4) (param $0 (ref null $array)) (result i32) |
| ;; CHECK-NEXT: (array.atomic.get $array |
| ;; CHECK-NEXT: (local.get $0) |
| ;; CHECK-NEXT: (i32.const 42) |
| ;; CHECK-NEXT: ) |
| ;; CHECK-NEXT: ) |
| (func $array.get (param (ref null $array)) (result i32) |
| (array.atomic.get $array |
| (local.get 0) |
| (i32.const 42) |
| ) |
| ) |
| |
| ;; CHECK: (func $array.get_s (type $8) (param $0 (ref null $array-packed)) (result i32) |
| ;; CHECK-NEXT: (array.atomic.get_s $array-packed |
| ;; CHECK-NEXT: (local.get $0) |
| ;; CHECK-NEXT: (i32.const 42) |
| ;; CHECK-NEXT: ) |
| ;; CHECK-NEXT: ) |
| (func $array.get_s (param (ref null $array-packed)) (result i32) |
| (array.atomic.get_s seqcst $array-packed |
| (local.get 0) |
| (i32.const 42) |
| ) |
| ) |
| |
| ;; CHECK: (func $array.get_u (type $8) (param $0 (ref null $array-packed)) (result i32) |
| ;; CHECK-NEXT: (array.atomic.get_u acqrel $array-packed |
| ;; CHECK-NEXT: (local.get $0) |
| ;; CHECK-NEXT: (i32.const 42) |
| ;; CHECK-NEXT: ) |
| ;; CHECK-NEXT: ) |
| (func $array.get_u (param (ref null $array-packed)) (result i32) |
| (array.atomic.get_u acqrel $array-packed |
| (local.get 0) |
| (i32.const 42) |
| ) |
| ) |
| |
| ;; CHECK: (func $array.set (type $9) (param $0 (ref null $array)) |
| ;; CHECK-NEXT: (array.atomic.set acqrel $array |
| ;; CHECK-NEXT: (local.get $0) |
| ;; CHECK-NEXT: (i32.const 42) |
| ;; CHECK-NEXT: (i32.const 1337) |
| ;; CHECK-NEXT: ) |
| ;; CHECK-NEXT: ) |
| (func $array.set (param (ref null $array)) |
| (array.atomic.set acqrel $array |
| (local.get 0) |
| (i32.const 42) |
| (i32.const 1337) |
| ) |
| ) |
| |
| ;; CHECK: (func $array-rmw-add (type $4) (param $0 (ref null $array)) (result i32) |
| ;; CHECK-NEXT: (array.atomic.rmw.add $array |
| ;; CHECK-NEXT: (local.get $0) |
| ;; CHECK-NEXT: (i32.const 1) |
| ;; CHECK-NEXT: (i32.const 2) |
| ;; CHECK-NEXT: ) |
| ;; CHECK-NEXT: ) |
| (func $array-rmw-add (param (ref null $array)) (result i32) |
| (array.atomic.rmw.add $array |
| (local.get 0) |
| (i32.const 1) |
| (i32.const 2) |
| ) |
| ) |
| |
| ;; CHECK: (func $array-rmw-sub (type $4) (param $0 (ref null $array)) (result i32) |
| ;; CHECK-NEXT: (array.atomic.rmw.sub $array |
| ;; CHECK-NEXT: (local.get $0) |
| ;; CHECK-NEXT: (i32.const 1) |
| ;; CHECK-NEXT: (i32.const 2) |
| ;; CHECK-NEXT: ) |
| ;; CHECK-NEXT: ) |
| (func $array-rmw-sub (param (ref null $array)) (result i32) |
| (array.atomic.rmw.sub $array |
| (local.get 0) |
| (i32.const 1) |
| (i32.const 2) |
| ) |
| ) |
| |
| ;; CHECK: (func $array-rmw-and (type $4) (param $0 (ref null $array)) (result i32) |
| ;; CHECK-NEXT: (array.atomic.rmw.and $array |
| ;; CHECK-NEXT: (local.get $0) |
| ;; CHECK-NEXT: (i32.const 1) |
| ;; CHECK-NEXT: (i32.const 2) |
| ;; CHECK-NEXT: ) |
| ;; CHECK-NEXT: ) |
| (func $array-rmw-and (param (ref null $array)) (result i32) |
| (array.atomic.rmw.and $array |
| (local.get 0) |
| (i32.const 1) |
| (i32.const 2) |
| ) |
| ) |
| |
| ;; CHECK: (func $array-rmw-or (type $4) (param $0 (ref null $array)) (result i32) |
| ;; CHECK-NEXT: (array.atomic.rmw.or $array |
| ;; CHECK-NEXT: (local.get $0) |
| ;; CHECK-NEXT: (i32.const 1) |
| ;; CHECK-NEXT: (i32.const 2) |
| ;; CHECK-NEXT: ) |
| ;; CHECK-NEXT: ) |
| (func $array-rmw-or (param (ref null $array)) (result i32) |
| (array.atomic.rmw.or $array |
| (local.get 0) |
| (i32.const 1) |
| (i32.const 2) |
| ) |
| ) |
| |
| ;; CHECK: (func $array-rmw-xor (type $4) (param $0 (ref null $array)) (result i32) |
| ;; CHECK-NEXT: (array.atomic.rmw.xor $array |
| ;; CHECK-NEXT: (local.get $0) |
| ;; CHECK-NEXT: (i32.const 1) |
| ;; CHECK-NEXT: (i32.const 2) |
| ;; CHECK-NEXT: ) |
| ;; CHECK-NEXT: ) |
| (func $array-rmw-xor (param (ref null $array)) (result i32) |
| (array.atomic.rmw.xor $array |
| (local.get 0) |
| (i32.const 1) |
| (i32.const 2) |
| ) |
| ) |
| |
| ;; CHECK: (func $array-rmw-xchg (type $4) (param $0 (ref null $array)) (result i32) |
| ;; CHECK-NEXT: (array.atomic.rmw.xchg $array |
| ;; CHECK-NEXT: (local.get $0) |
| ;; CHECK-NEXT: (i32.const 1) |
| ;; CHECK-NEXT: (i32.const 2) |
| ;; CHECK-NEXT: ) |
| ;; CHECK-NEXT: ) |
| (func $array-rmw-xchg (param (ref null $array)) (result i32) |
| (array.atomic.rmw.xchg $array |
| (local.get 0) |
| (i32.const 1) |
| (i32.const 2) |
| ) |
| ) |
| |
| ;; CHECK: (func $array-rmw-xchg-acqrel (type $4) (param $0 (ref null $array)) (result i32) |
| ;; CHECK-NEXT: (array.atomic.rmw.xchg acqrel acqrel $array |
| ;; CHECK-NEXT: (local.get $0) |
| ;; CHECK-NEXT: (i32.const 1) |
| ;; CHECK-NEXT: (i32.const 2) |
| ;; CHECK-NEXT: ) |
| ;; CHECK-NEXT: ) |
| (func $array-rmw-xchg-acqrel (param (ref null $array)) (result i32) |
| (array.atomic.rmw.xchg acqrel acqrel $array |
| (local.get 0) |
| (i32.const 1) |
| (i32.const 2) |
| ) |
| ) |
| |
| ;; CHECK: (func $array-rmw-cmpxchg (type $4) (param $0 (ref null $array)) (result i32) |
| ;; CHECK-NEXT: (array.atomic.rmw.cmpxchg $array |
| ;; CHECK-NEXT: (local.get $0) |
| ;; CHECK-NEXT: (i32.const 1) |
| ;; CHECK-NEXT: (i32.const 2) |
| ;; CHECK-NEXT: (i32.const 3) |
| ;; CHECK-NEXT: ) |
| ;; CHECK-NEXT: ) |
| (func $array-rmw-cmpxchg (param (ref null $array)) (result i32) |
| (array.atomic.rmw.cmpxchg $array |
| (local.get 0) |
| (i32.const 1) |
| (i32.const 2) |
| (i32.const 3) |
| ) |
| ) |
| |
| ;; CHECK: (func $array-rmw-cmpxchg-acqrel (type $4) (param $0 (ref null $array)) (result i32) |
| ;; CHECK-NEXT: (array.atomic.rmw.cmpxchg acqrel acqrel $array |
| ;; CHECK-NEXT: (local.get $0) |
| ;; CHECK-NEXT: (i32.const 1) |
| ;; CHECK-NEXT: (i32.const 2) |
| ;; CHECK-NEXT: (i32.const 3) |
| ;; CHECK-NEXT: ) |
| ;; CHECK-NEXT: ) |
| (func $array-rmw-cmpxchg-acqrel (param (ref null $array)) (result i32) |
| (array.atomic.rmw.cmpxchg acqrel acqrel $array |
| (local.get 0) |
| (i32.const 1) |
| (i32.const 2) |
| (i32.const 3) |
| ) |
| ) |
| ) |