summaryrefslogtreecommitdiff
path: root/test/lit
diff options
context:
space:
mode:
Diffstat (limited to 'test/lit')
-rw-r--r--test/lit/ctor-eval/extern.wast8
-rw-r--r--test/lit/exec/i31.wast8
-rw-r--r--test/lit/i31-new.wast18
-rw-r--r--test/lit/passes/coalesce-locals-gc.wast8
-rw-r--r--test/lit/passes/dae-gc.wast10
-rw-r--r--test/lit/passes/dae_all-features.wast2
-rw-r--r--test/lit/passes/dce_all-features.wast8
-rw-r--r--test/lit/passes/global-refining.wast6
-rw-r--r--test/lit/passes/gufa-refs.wast16
-rw-r--r--test/lit/passes/local-subtyping.wast28
-rw-r--r--test/lit/passes/remove-unused-brs-gc.wast4
-rw-r--r--test/lit/passes/remove-unused-brs.wast4
-rw-r--r--test/lit/passes/signature-pruning.wast4
-rw-r--r--test/lit/passes/signature-refining.wast4
-rw-r--r--test/lit/passes/type-refining.wast12
-rw-r--r--test/lit/wat-kitchen-sink.wast4
16 files changed, 81 insertions, 63 deletions
diff --git a/test/lit/ctor-eval/extern.wast b/test/lit/ctor-eval/extern.wast
index b279b718e..5bb5c8cbc 100644
--- a/test/lit/ctor-eval/extern.wast
+++ b/test/lit/ctor-eval/extern.wast
@@ -20,7 +20,7 @@
;; CHECK: (global $ctor-eval$global_1 (ref $struct) (struct.new $struct
;; CHECK-NEXT: (extern.externalize
- ;; CHECK-NEXT: (i31.new
+ ;; CHECK-NEXT: (ref.i31
;; CHECK-NEXT: (i32.const 1)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
@@ -38,7 +38,7 @@
;; serialization of an externalized i31 is what is written here. But the add
;; will be evalled out.
(extern.externalize
- (i31.new
+ (ref.i31
(i32.add
(i32.const 41)
(i32.const 1)
@@ -62,7 +62,7 @@
;; This will add a global that contains an externalization operation.
(struct.new $struct
(extern.externalize
- (i31.new
+ (ref.i31
(i32.const 1)
)
)
@@ -72,7 +72,7 @@
;; CHECK: (func $test1_3 (type $2) (result externref)
;; CHECK-NEXT: (extern.externalize
-;; CHECK-NEXT: (i31.new
+;; CHECK-NEXT: (ref.i31
;; CHECK-NEXT: (i32.const 42)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
diff --git a/test/lit/exec/i31.wast b/test/lit/exec/i31.wast
index c8b43e6ce..cd25dffa0 100644
--- a/test/lit/exec/i31.wast
+++ b/test/lit/exec/i31.wast
@@ -24,7 +24,7 @@
;; CHECK-NEXT: [fuzz-exec] note result: non-null => 0
(func "non-null" (result i32)
(ref.is_null
- (i31.new
+ (ref.i31
(i32.const 1234)
)
)
@@ -34,7 +34,7 @@
;; CHECK-NEXT: [fuzz-exec] note result: nn-u => 2147483647
(func "nn-u" (result i32)
(i31.get_u
- (i31.new
+ (ref.i31
(i32.const 0xffffffff)
)
)
@@ -44,7 +44,7 @@
;; CHECK-NEXT: [fuzz-exec] note result: nn-s => -1
(func "nn-s" (result i32)
(i31.get_s
- (i31.new
+ (ref.i31
(i32.const 0xffffffff)
)
)
@@ -55,7 +55,7 @@
(func "zero-is-not-null" (result i32)
(local $ref (ref null i31))
(local.set $ref
- (i31.new
+ (ref.i31
(i32.const 0)
)
)
diff --git a/test/lit/i31-new.wast b/test/lit/i31-new.wast
new file mode 100644
index 000000000..9d47b3ec9
--- /dev/null
+++ b/test/lit/i31-new.wast
@@ -0,0 +1,18 @@
+;; NOTE: Assertions have been generated by update_lit_checks.py and should not be edited.
+
+;; Check that we still parse the legacy i31.new instruction.
+
+;; RUN: wasm-opt %s -all -S -o - | filecheck %s
+
+(module
+ ;; CHECK: (func $test (type $0) (result i31ref)
+ ;; CHECK-NEXT: (ref.i31
+ ;; CHECK-NEXT: (i32.const 0)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ (func $test (result i31ref)
+ (i31.new
+ (i32.const 0)
+ )
+ )
+)
diff --git a/test/lit/passes/coalesce-locals-gc.wast b/test/lit/passes/coalesce-locals-gc.wast
index 6e3381e8e..b9224f59e 100644
--- a/test/lit/passes/coalesce-locals-gc.wast
+++ b/test/lit/passes/coalesce-locals-gc.wast
@@ -17,12 +17,12 @@
(global $global (ref null $array) (ref.null $array))
;; CHECK: (global $nn-tuple-global (mut ((ref any) i32)) (tuple.make
- ;; CHECK-NEXT: (i31.new
+ ;; CHECK-NEXT: (ref.i31
;; CHECK-NEXT: (i32.const 0)
;; CHECK-NEXT: )
;; CHECK-NEXT: (i32.const 1)
;; CHECK-NEXT: ))
- (global $nn-tuple-global (mut ((ref any) i32)) (tuple.make (i31.new (i32.const 0)) (i32.const 1)))
+ (global $nn-tuple-global (mut ((ref any) i32)) (tuple.make (ref.i31 (i32.const 0)) (i32.const 1)))
;; CHECK: (func $test-dead-get-non-nullable (type $6) (param $0 (ref struct))
@@ -160,7 +160,7 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (block (result i31ref)
- ;; CHECK-NEXT: (i31.new
+ ;; CHECK-NEXT: (ref.i31
;; CHECK-NEXT: (i32.const 0)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
@@ -230,7 +230,7 @@
;; CHECK-NEXT: (ref.test (ref i31)
;; CHECK-NEXT: (ref.cast i31ref
;; CHECK-NEXT: (block (result i31ref)
- ;; CHECK-NEXT: (i31.new
+ ;; CHECK-NEXT: (ref.i31
;; CHECK-NEXT: (i32.const 0)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
diff --git a/test/lit/passes/dae-gc.wast b/test/lit/passes/dae-gc.wast
index 5ca1d0373..02a2462db 100644
--- a/test/lit/passes/dae-gc.wast
+++ b/test/lit/passes/dae-gc.wast
@@ -10,7 +10,7 @@
;; CHECK-NEXT: )
(func $foo
(call $bar
- (i31.new
+ (ref.i31
(i32.const 1)
)
)
@@ -19,7 +19,7 @@
;; CHECK-NEXT: (local $0 i31ref)
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (local.tee $0
- ;; CHECK-NEXT: (i31.new
+ ;; CHECK-NEXT: (ref.i31
;; CHECK-NEXT: (i32.const 2)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
@@ -35,7 +35,7 @@
;; and also add a ref.as_non_null so that the outside still receives the
;; same type as before
(local.tee $0
- (i31.new
+ (ref.i31
(i32.const 2)
)
)
@@ -134,7 +134,7 @@
;; CHECK-NEXT: (ref.null none)
;; CHECK-NEXT: )
;; CHECK-NEXT: (call $bar
- ;; CHECK-NEXT: (i31.new
+ ;; CHECK-NEXT: (ref.i31
;; CHECK-NEXT: (i32.const 0)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
@@ -149,7 +149,7 @@
)
(call $bar
(ref.null none)
- (i31.new (i32.const 0))
+ (ref.i31 (i32.const 0))
)
)
diff --git a/test/lit/passes/dae_all-features.wast b/test/lit/passes/dae_all-features.wast
index 61591e977..dee38f646 100644
--- a/test/lit/passes/dae_all-features.wast
+++ b/test/lit/passes/dae_all-features.wast
@@ -542,7 +542,7 @@
;; CHECK-NEXT: )
(func $1
(call $0
- (i31.new (i32.const 0))
+ (ref.i31 (i32.const 0))
)
)
)
diff --git a/test/lit/passes/dce_all-features.wast b/test/lit/passes/dce_all-features.wast
index d79426dad..255ca82fd 100644
--- a/test/lit/passes/dce_all-features.wast
+++ b/test/lit/passes/dce_all-features.wast
@@ -1437,7 +1437,7 @@
;; CHECK-NEXT: (if (result i31ref)
;; CHECK-NEXT: (i32.const 0)
;; CHECK-NEXT: (unreachable)
- ;; CHECK-NEXT: (i31.new
+ ;; CHECK-NEXT: (ref.i31
;; CHECK-NEXT: (i32.const 42)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
@@ -1457,7 +1457,7 @@
(block (result i31ref)
(unreachable)
)
- (i31.new
+ (ref.i31
(i32.const 42)
)
)
@@ -1473,7 +1473,7 @@
;; CHECK-NEXT: (unreachable)
;; CHECK-NEXT: )
;; CHECK-NEXT: (catch_all
- ;; CHECK-NEXT: (i31.new
+ ;; CHECK-NEXT: (ref.i31
;; CHECK-NEXT: (i32.const 42)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
@@ -1491,7 +1491,7 @@
)
)
(catch_all
- (i31.new
+ (ref.i31
(i32.const 42)
)
)
diff --git a/test/lit/passes/global-refining.wast b/test/lit/passes/global-refining.wast
index 48538a01d..8f0b3c247 100644
--- a/test/lit/passes/global-refining.wast
+++ b/test/lit/passes/global-refining.wast
@@ -123,7 +123,7 @@
;; CHECK: (func $foo (type $0)
;; CHECK-NEXT: (global.set $global
- ;; CHECK-NEXT: (i31.new
+ ;; CHECK-NEXT: (ref.i31
;; CHECK-NEXT: (i32.const 0)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
@@ -142,7 +142,7 @@
;; CHECK-NEXT: )
;; CLOSD: (func $foo (type $0)
;; CLOSD-NEXT: (global.set $global
- ;; CLOSD-NEXT: (i31.new
+ ;; CLOSD-NEXT: (ref.i31
;; CLOSD-NEXT: (i32.const 0)
;; CLOSD-NEXT: )
;; CLOSD-NEXT: )
@@ -160,7 +160,7 @@
;; CLOSD-NEXT: )
;; CLOSD-NEXT: )
(func $foo
- (global.set $global (i31.new (i32.const 0)))
+ (global.set $global (ref.i31 (i32.const 0)))
(global.set $global (struct.new_default $struct))
(global.set $global (ref.null eq))
;; These nulls will be updated.
diff --git a/test/lit/passes/gufa-refs.wast b/test/lit/passes/gufa-refs.wast
index 0e081637b..ee125b1f2 100644
--- a/test/lit/passes/gufa-refs.wast
+++ b/test/lit/passes/gufa-refs.wast
@@ -2557,7 +2557,7 @@
;; CHECK-NEXT: (ref.cast nullref
;; CHECK-NEXT: (select (result i31ref)
;; CHECK-NEXT: (ref.null none)
- ;; CHECK-NEXT: (i31.new
+ ;; CHECK-NEXT: (ref.i31
;; CHECK-NEXT: (i32.const 0)
;; CHECK-NEXT: )
;; CHECK-NEXT: (call $import)
@@ -2600,7 +2600,7 @@
(ref.cast (ref null $struct)
(select
(ref.null $struct)
- (i31.new (i32.const 0))
+ (ref.i31 (i32.const 0))
(call $import)
)
)
@@ -3675,7 +3675,7 @@
;; CHECK-NEXT: (local $chars (ref null $chars))
;; CHECK-NEXT: (local.set $bytes
;; CHECK-NEXT: (array.new_fixed $bytes 1
- ;; CHECK-NEXT: (i31.new
+ ;; CHECK-NEXT: (ref.i31
;; CHECK-NEXT: (i32.const 0)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
@@ -3714,7 +3714,7 @@
;; there.
(local.set $bytes
(array.new_fixed $bytes 1
- (i31.new (i32.const 0))
+ (ref.i31 (i32.const 0))
)
)
(local.set $chars
@@ -3763,7 +3763,7 @@
;; CHECK-NEXT: (local $chars (ref null $chars))
;; CHECK-NEXT: (local.set $bytes
;; CHECK-NEXT: (array.new_fixed $bytes 1
- ;; CHECK-NEXT: (i31.new
+ ;; CHECK-NEXT: (ref.i31
;; CHECK-NEXT: (i32.const 0)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
@@ -3803,7 +3803,7 @@
(local $chars (ref null $chars))
(local.set $bytes
(array.new_fixed $bytes 1
- (i31.new (i32.const 0))
+ (ref.i31 (i32.const 0))
)
)
(local.set $chars
@@ -4125,7 +4125,7 @@
;; CHECK: (func $i31 (type $0)
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (i31.get_s
- ;; CHECK-NEXT: (i31.new
+ ;; CHECK-NEXT: (ref.i31
;; CHECK-NEXT: (i32.const 0)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
@@ -4134,7 +4134,7 @@
(func $i31
(drop
(i31.get_s
- (i31.new
+ (ref.i31
(i32.const 0)
)
)
diff --git a/test/lit/passes/local-subtyping.wast b/test/lit/passes/local-subtyping.wast
index c86f4d645..3d4d392a9 100644
--- a/test/lit/passes/local-subtyping.wast
+++ b/test/lit/passes/local-subtyping.wast
@@ -30,10 +30,10 @@
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (if (result (ref i31))
;; CHECK-NEXT: (local.get $x)
- ;; CHECK-NEXT: (i31.new
+ ;; CHECK-NEXT: (ref.i31
;; CHECK-NEXT: (i32.const 0)
;; CHECK-NEXT: )
- ;; CHECK-NEXT: (i31.new
+ ;; CHECK-NEXT: (ref.i31
;; CHECK-NEXT: (i32.const 1)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
@@ -41,11 +41,11 @@
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (block $block (result (ref i31))
;; CHECK-NEXT: (br $block
- ;; CHECK-NEXT: (i31.new
+ ;; CHECK-NEXT: (ref.i31
;; CHECK-NEXT: (i32.const 0)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; CHECK-NEXT: (i31.new
+ ;; CHECK-NEXT: (ref.i31
;; CHECK-NEXT: (i32.const 1)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
@@ -55,16 +55,16 @@
(drop
(if (result anyref)
(local.get $x)
- (i31.new (i32.const 0))
- (i31.new (i32.const 1))
+ (ref.i31 (i32.const 0))
+ (ref.i31 (i32.const 1))
)
)
(drop
(block $block (result anyref)
(br $block
- (i31.new (i32.const 0))
+ (ref.i31 (i32.const 0))
)
- (i31.new (i32.const 1))
+ (ref.i31 (i32.const 1))
)
)
)
@@ -99,7 +99,7 @@
;; CHECK-NEXT: (local $z structref)
;; CHECK-NEXT: (local $w (ref func))
;; CHECK-NEXT: (local.set $x
- ;; CHECK-NEXT: (i31.new
+ ;; CHECK-NEXT: (ref.i31
;; CHECK-NEXT: (i32.const 0)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
@@ -107,12 +107,12 @@
;; CHECK-NEXT: (local.get $struct)
;; CHECK-NEXT: )
;; CHECK-NEXT: (local.set $y
- ;; CHECK-NEXT: (i31.new
+ ;; CHECK-NEXT: (ref.i31
;; CHECK-NEXT: (i32.const 0)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: (local.set $y
- ;; CHECK-NEXT: (i31.new
+ ;; CHECK-NEXT: (ref.i31
;; CHECK-NEXT: (i32.const 1)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
@@ -136,17 +136,17 @@
(local $w funcref)
;; x is assigned two different types with a new LUB possible
(local.set $x
- (i31.new (i32.const 0))
+ (ref.i31 (i32.const 0))
)
(local.set $x
(local.get $struct)
)
;; y and z are assigned the same more specific type twice
(local.set $y
- (i31.new (i32.const 0))
+ (ref.i31 (i32.const 0))
)
(local.set $y
- (i31.new (i32.const 1))
+ (ref.i31 (i32.const 1))
)
(local.set $z
(local.get $struct)
diff --git a/test/lit/passes/remove-unused-brs-gc.wast b/test/lit/passes/remove-unused-brs-gc.wast
index 5b4e09a25..ce06b89ef 100644
--- a/test/lit/passes/remove-unused-brs-gc.wast
+++ b/test/lit/passes/remove-unused-brs-gc.wast
@@ -162,7 +162,7 @@
;; CHECK-NEXT: (block $label$1 (result (ref i31))
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (br $label$1
- ;; CHECK-NEXT: (i31.new
+ ;; CHECK-NEXT: (ref.i31
;; CHECK-NEXT: (i32.const 0)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
@@ -178,7 +178,7 @@
;; handle that properly (do nothing without hitting an assertion).
(br_on_cast $label$1 (ref any) (ref i31)
(br_on_cast $label$1 (ref any) (ref i31)
- (i31.new (i32.const 0))
+ (ref.i31 (i32.const 0))
)
)
)
diff --git a/test/lit/passes/remove-unused-brs.wast b/test/lit/passes/remove-unused-brs.wast
index e1db006db..82963f792 100644
--- a/test/lit/passes/remove-unused-brs.wast
+++ b/test/lit/passes/remove-unused-brs.wast
@@ -8,7 +8,7 @@
;; CHECK: (func $selectify-fresh-lub (type $2) (param $x i32) (result anyref)
;; CHECK-NEXT: (select (result i31ref)
;; CHECK-NEXT: (ref.null none)
- ;; CHECK-NEXT: (i31.new
+ ;; CHECK-NEXT: (ref.i31
;; CHECK-NEXT: (i32.const 0)
;; CHECK-NEXT: )
;; CHECK-NEXT: (local.get $x)
@@ -21,7 +21,7 @@
(ref.null none)
)
(return
- (i31.new (i32.const 0))
+ (ref.i31 (i32.const 0))
)
)
)
diff --git a/test/lit/passes/signature-pruning.wast b/test/lit/passes/signature-pruning.wast
index 3e9d0742f..eaa05ac46 100644
--- a/test/lit/passes/signature-pruning.wast
+++ b/test/lit/passes/signature-pruning.wast
@@ -797,7 +797,7 @@
;; CHECK-NEXT: (local.get $anyref)
;; CHECK-NEXT: )
;; CHECK-NEXT: (call $bar
- ;; CHECK-NEXT: (i31.new
+ ;; CHECK-NEXT: (ref.i31
;; CHECK-NEXT: (i32.const 0)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
@@ -808,7 +808,7 @@
(func $bar (type $sig-bar) (param $anyref anyref)
(drop (local.get $anyref))
;; Mixing a null with something else prevents optimization, of course.
- (call $bar (i31.new (i32.const 0)))
+ (call $bar (ref.i31 (i32.const 0)))
(call $bar (ref.null none))
)
)
diff --git a/test/lit/passes/signature-refining.wast b/test/lit/passes/signature-refining.wast
index 2ac1aba78..6516b4a24 100644
--- a/test/lit/passes/signature-refining.wast
+++ b/test/lit/passes/signature-refining.wast
@@ -96,7 +96,7 @@
;; CHECK-NEXT: (local.get $struct)
;; CHECK-NEXT: )
;; CHECK-NEXT: (call_ref $sig
- ;; CHECK-NEXT: (i31.new
+ ;; CHECK-NEXT: (ref.i31
;; CHECK-NEXT: (i32.const 0)
;; CHECK-NEXT: )
;; CHECK-NEXT: (ref.func $func)
@@ -109,7 +109,7 @@
(local.get $struct)
)
(call_ref $sig
- (i31.new (i32.const 0))
+ (ref.i31 (i32.const 0))
(ref.func $func)
)
)
diff --git a/test/lit/passes/type-refining.wast b/test/lit/passes/type-refining.wast
index 6d0c2257a..e41cd9261 100644
--- a/test/lit/passes/type-refining.wast
+++ b/test/lit/passes/type-refining.wast
@@ -14,13 +14,13 @@
;; CHECK: (func $work (type $1) (param $struct (ref $struct))
;; CHECK-NEXT: (struct.set $struct 1
;; CHECK-NEXT: (local.get $struct)
- ;; CHECK-NEXT: (i31.new
+ ;; CHECK-NEXT: (ref.i31
;; CHECK-NEXT: (i32.const 0)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: (struct.set $struct 2
;; CHECK-NEXT: (local.get $struct)
- ;; CHECK-NEXT: (i31.new
+ ;; CHECK-NEXT: (ref.i31
;; CHECK-NEXT: (i32.const 0)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
@@ -33,11 +33,11 @@
(func $work (param $struct (ref $struct))
(struct.set $struct 1
(local.get $struct)
- (i31.new (i32.const 0))
+ (ref.i31 (i32.const 0))
)
(struct.set $struct 2
(local.get $struct)
- (i31.new (i32.const 0))
+ (ref.i31 (i32.const 0))
)
(drop
;; The type of this struct.get must be updated after the field's type
@@ -66,7 +66,7 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: (struct.set $struct 0
;; CHECK-NEXT: (local.get $struct)
- ;; CHECK-NEXT: (i31.new
+ ;; CHECK-NEXT: (ref.i31
;; CHECK-NEXT: (i32.const 0)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
@@ -77,7 +77,7 @@
)
(struct.set $struct 0
(local.get $struct)
- (i31.new (i32.const 0))
+ (ref.i31 (i32.const 0))
)
)
)
diff --git a/test/lit/wat-kitchen-sink.wast b/test/lit/wat-kitchen-sink.wast
index dc6ebb4c8..3b42db434 100644
--- a/test/lit/wat-kitchen-sink.wast
+++ b/test/lit/wat-kitchen-sink.wast
@@ -1454,13 +1454,13 @@
)
;; CHECK: (func $i31-new (type $28) (param $0 i32) (result i31ref)
- ;; CHECK-NEXT: (i31.new
+ ;; CHECK-NEXT: (ref.i31
;; CHECK-NEXT: (local.get $0)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
(func $i31-new (param i32) (result i31ref)
local.get 0
- i31.new
+ ref.i31
)
;; CHECK: (func $i31-get (type $29) (param $0 i31ref)