diff options
Diffstat (limited to 'test/lit/ref_cast_test.wast')
-rw-r--r-- | test/lit/ref_cast_test.wast | 173 |
1 files changed, 173 insertions, 0 deletions
diff --git a/test/lit/ref_cast_test.wast b/test/lit/ref_cast_test.wast new file mode 100644 index 000000000..c44278c13 --- /dev/null +++ b/test/lit/ref_cast_test.wast @@ -0,0 +1,173 @@ +;; NOTE: Assertions have been generated by update_lit_checks.py and should not be edited. +;; RUN: wasm-opt -all %s -S -o - | filecheck %s + +;; Check that both the legacy and the standard syntax for ref.test and +;; ref.cast work +(module + ;; CHECK: (type $array (array i32)) + (type $array (array i32)) + ;; CHECK: (func $test (type $eqref_=>_none) (param $0 eqref) + ;; CHECK-NEXT: (drop + ;; CHECK-NEXT: (ref.cast $array + ;; CHECK-NEXT: (local.get $0) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: (drop + ;; CHECK-NEXT: (ref.cast null $array + ;; CHECK-NEXT: (local.get $0) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: (drop + ;; CHECK-NEXT: (ref.cast i31 + ;; CHECK-NEXT: (local.get $0) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: (drop + ;; CHECK-NEXT: (ref.cast null i31 + ;; CHECK-NEXT: (local.get $0) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: (drop + ;; CHECK-NEXT: (ref.cast $array + ;; CHECK-NEXT: (local.get $0) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: (drop + ;; CHECK-NEXT: (ref.cast null $array + ;; CHECK-NEXT: (local.get $0) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: (drop + ;; CHECK-NEXT: (ref.cast i31 + ;; CHECK-NEXT: (local.get $0) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: (drop + ;; CHECK-NEXT: (ref.cast null i31 + ;; CHECK-NEXT: (local.get $0) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: (drop + ;; CHECK-NEXT: (ref.test $array + ;; CHECK-NEXT: (local.get $0) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: (drop + ;; CHECK-NEXT: (ref.test null $array + ;; CHECK-NEXT: (local.get $0) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: (drop + ;; CHECK-NEXT: (ref.test i31 + ;; CHECK-NEXT: (local.get $0) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: (drop + ;; CHECK-NEXT: (ref.test null i31 + ;; CHECK-NEXT: (local.get $0) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: (drop + ;; CHECK-NEXT: (ref.test $array + ;; CHECK-NEXT: (local.get $0) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: (drop + ;; CHECK-NEXT: (ref.test null $array + ;; CHECK-NEXT: (local.get $0) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: (drop + ;; CHECK-NEXT: (ref.test i31 + ;; CHECK-NEXT: (local.get $0) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: (drop + ;; CHECK-NEXT: (ref.test null i31 + ;; CHECK-NEXT: (local.get $0) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: ) + (func $test (param eqref) + (drop + (ref.cast $array + (local.get 0) + ) + ) + (drop + (ref.cast null $array + (local.get 0) + ) + ) + (drop + (ref.cast i31 + (local.get 0) + ) + ) + (drop + (ref.cast null i31 + (local.get 0) + ) + ) + (drop + (ref.cast (ref $array) + (local.get 0) + ) + ) + (drop + (ref.cast (ref null $array) + (local.get 0) + ) + ) + (drop + (ref.cast (ref i31) + (local.get 0) + ) + ) + (drop + (ref.cast i31ref + (local.get 0) + ) + ) + (drop + (ref.test $array + (local.get 0) + ) + ) + (drop + (ref.test null $array + (local.get 0) + ) + ) + (drop + (ref.test i31 + (local.get 0) + ) + ) + (drop + (ref.test null i31 + (local.get 0) + ) + ) + (drop + (ref.test (ref $array) + (local.get 0) + ) + ) + (drop + (ref.test (ref null $array) + (local.get 0) + ) + ) + (drop + (ref.test (ref i31) + (local.get 0) + ) + ) + (drop + (ref.test i31ref + (local.get 0) + ) + ) + ) +) |