summaryrefslogtreecommitdiff
path: root/test/lit/ref_cast_test.wast
diff options
context:
space:
mode:
Diffstat (limited to 'test/lit/ref_cast_test.wast')
-rw-r--r--test/lit/ref_cast_test.wast173
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)
+ )
+ )
+ )
+)