summaryrefslogtreecommitdiff
path: root/test/lit/basic/min.wast
diff options
context:
space:
mode:
Diffstat (limited to 'test/lit/basic/min.wast')
-rw-r--r--test/lit/basic/min.wast234
1 files changed, 234 insertions, 0 deletions
diff --git a/test/lit/basic/min.wast b/test/lit/basic/min.wast
new file mode 100644
index 000000000..74898f59f
--- /dev/null
+++ b/test/lit/basic/min.wast
@@ -0,0 +1,234 @@
+;; NOTE: Assertions have been generated by update_lit_checks.py --all-items and should not be edited.
+
+;; RUN: wasm-opt %s -all -o %t.text.wast -g -S
+;; RUN: wasm-as %s -all -g -o %t.wasm
+;; RUN: wasm-dis %t.wasm -all -o %t.bin.wast
+;; RUN: wasm-as %s -all -o %t.nodebug.wasm
+;; RUN: wasm-dis %t.nodebug.wasm -all -o %t.bin.nodebug.wast
+;; RUN: cat %t.text.wast | filecheck %s --check-prefix=CHECK-TEXT
+;; RUN: cat %t.bin.wast | filecheck %s --check-prefix=CHECK-BIN
+;; RUN: cat %t.bin.nodebug.wast | filecheck %s --check-prefix=CHECK-BIN-NODEBUG
+
+(module
+ ;; CHECK-TEXT: (type $0 (func (param f32) (result f32)))
+ ;; CHECK-BIN: (type $0 (func (param f32) (result f32)))
+ ;; CHECK-BIN-NODEBUG: (type $0 (func (param f32) (result f32)))
+ (type $0 (func (param f32) (result f32)))
+ ;; CHECK-TEXT: (type $1 (func (param i32 i32) (result f32)))
+ ;; CHECK-BIN: (type $1 (func (param i32 i32) (result f32)))
+ ;; CHECK-BIN-NODEBUG: (type $1 (func (param i32 i32) (result f32)))
+ (type $1 (func (param i32 i32) (result f32)))
+ ;; CHECK-TEXT: (type $2 (func (param i32) (result i32)))
+ ;; CHECK-BIN: (type $2 (func (param i32) (result i32)))
+ ;; CHECK-BIN-NODEBUG: (type $2 (func (param i32) (result i32)))
+ (type $2 (func (param i32) (result i32)))
+ ;; CHECK-TEXT: (type $3 (func (param i32 i32 i32) (result i32)))
+ ;; CHECK-BIN: (type $3 (func (param i32 i32 i32) (result i32)))
+ ;; CHECK-BIN-NODEBUG: (type $3 (func (param i32 i32 i32) (result i32)))
+ (type $3 (func (param i32 i32 i32) (result i32)))
+ ;; CHECK-TEXT: (memory $0 256 256)
+ ;; CHECK-BIN: (memory $0 256 256)
+ ;; CHECK-BIN-NODEBUG: (memory $0 256 256)
+ (memory $0 256 256)
+ ;; CHECK-TEXT: (export "floats" (func $floats))
+ ;; CHECK-BIN: (export "floats" (func $floats))
+ ;; CHECK-BIN-NODEBUG: (export "floats" (func $0))
+ (export "floats" (func $floats))
+
+ ;; CHECK-TEXT: (func $floats (type $0) (param $f f32) (result f32)
+ ;; CHECK-TEXT-NEXT: (local $t f32)
+ ;; CHECK-TEXT-NEXT: (f32.add
+ ;; CHECK-TEXT-NEXT: (local.get $t)
+ ;; CHECK-TEXT-NEXT: (local.get $f)
+ ;; CHECK-TEXT-NEXT: )
+ ;; CHECK-TEXT-NEXT: )
+ ;; CHECK-BIN: (func $floats (type $0) (param $f f32) (result f32)
+ ;; CHECK-BIN-NEXT: (local $t f32)
+ ;; CHECK-BIN-NEXT: (f32.add
+ ;; CHECK-BIN-NEXT: (local.get $t)
+ ;; CHECK-BIN-NEXT: (local.get $f)
+ ;; CHECK-BIN-NEXT: )
+ ;; CHECK-BIN-NEXT: )
+ (func $floats (type $0) (param $f f32) (result f32)
+ (local $t f32)
+ (f32.add
+ (local.get $t)
+ (local.get $f)
+ )
+ )
+
+ ;; CHECK-TEXT: (func $neg (type $1) (param $k i32) (param $p i32) (result f32)
+ ;; CHECK-TEXT-NEXT: (local $n f32)
+ ;; CHECK-TEXT-NEXT: (local.tee $n
+ ;; CHECK-TEXT-NEXT: (f32.neg
+ ;; CHECK-TEXT-NEXT: (block $block0 (result f32)
+ ;; CHECK-TEXT-NEXT: (i32.store
+ ;; CHECK-TEXT-NEXT: (local.get $k)
+ ;; CHECK-TEXT-NEXT: (local.get $p)
+ ;; CHECK-TEXT-NEXT: )
+ ;; CHECK-TEXT-NEXT: (f32.load
+ ;; CHECK-TEXT-NEXT: (local.get $k)
+ ;; CHECK-TEXT-NEXT: )
+ ;; CHECK-TEXT-NEXT: )
+ ;; CHECK-TEXT-NEXT: )
+ ;; CHECK-TEXT-NEXT: )
+ ;; CHECK-TEXT-NEXT: )
+ ;; CHECK-BIN: (func $neg (type $1) (param $k i32) (param $p i32) (result f32)
+ ;; CHECK-BIN-NEXT: (local $n f32)
+ ;; CHECK-BIN-NEXT: (local.tee $n
+ ;; CHECK-BIN-NEXT: (f32.neg
+ ;; CHECK-BIN-NEXT: (block $label$1 (result f32)
+ ;; CHECK-BIN-NEXT: (i32.store
+ ;; CHECK-BIN-NEXT: (local.get $k)
+ ;; CHECK-BIN-NEXT: (local.get $p)
+ ;; CHECK-BIN-NEXT: )
+ ;; CHECK-BIN-NEXT: (f32.load
+ ;; CHECK-BIN-NEXT: (local.get $k)
+ ;; CHECK-BIN-NEXT: )
+ ;; CHECK-BIN-NEXT: )
+ ;; CHECK-BIN-NEXT: )
+ ;; CHECK-BIN-NEXT: )
+ ;; CHECK-BIN-NEXT: )
+ (func $neg (type $1) (param $k i32) (param $p i32) (result f32)
+ (local $n f32)
+ (local.tee $n
+ (f32.neg
+ (block $block0 (result f32)
+ (i32.store
+ (local.get $k)
+ (local.get $p)
+ )
+ (f32.load
+ (local.get $k)
+ )
+ )
+ )
+ )
+ )
+
+ ;; CHECK-TEXT: (func $littleswitch (type $2) (param $x i32) (result i32)
+ ;; CHECK-TEXT-NEXT: (block $topmost (result i32)
+ ;; CHECK-TEXT-NEXT: (block $switch-case$2
+ ;; CHECK-TEXT-NEXT: (block $switch-case$1
+ ;; CHECK-TEXT-NEXT: (br_table $switch-case$1 $switch-case$2 $switch-case$1
+ ;; CHECK-TEXT-NEXT: (i32.sub
+ ;; CHECK-TEXT-NEXT: (local.get $x)
+ ;; CHECK-TEXT-NEXT: (i32.const 1)
+ ;; CHECK-TEXT-NEXT: )
+ ;; CHECK-TEXT-NEXT: )
+ ;; CHECK-TEXT-NEXT: )
+ ;; CHECK-TEXT-NEXT: (br $topmost
+ ;; CHECK-TEXT-NEXT: (i32.const 1)
+ ;; CHECK-TEXT-NEXT: )
+ ;; CHECK-TEXT-NEXT: )
+ ;; CHECK-TEXT-NEXT: (br $topmost
+ ;; CHECK-TEXT-NEXT: (i32.const 2)
+ ;; CHECK-TEXT-NEXT: )
+ ;; CHECK-TEXT-NEXT: (i32.const 0)
+ ;; CHECK-TEXT-NEXT: )
+ ;; CHECK-TEXT-NEXT: )
+ ;; CHECK-BIN: (func $littleswitch (type $2) (param $x i32) (result i32)
+ ;; CHECK-BIN-NEXT: (block $label$1 (result i32)
+ ;; CHECK-BIN-NEXT: (block $label$2
+ ;; CHECK-BIN-NEXT: (block $label$3
+ ;; CHECK-BIN-NEXT: (br_table $label$3 $label$2 $label$3
+ ;; CHECK-BIN-NEXT: (i32.sub
+ ;; CHECK-BIN-NEXT: (local.get $x)
+ ;; CHECK-BIN-NEXT: (i32.const 1)
+ ;; CHECK-BIN-NEXT: )
+ ;; CHECK-BIN-NEXT: )
+ ;; CHECK-BIN-NEXT: )
+ ;; CHECK-BIN-NEXT: (br $label$1
+ ;; CHECK-BIN-NEXT: (i32.const 1)
+ ;; CHECK-BIN-NEXT: )
+ ;; CHECK-BIN-NEXT: )
+ ;; CHECK-BIN-NEXT: (br $label$1
+ ;; CHECK-BIN-NEXT: (i32.const 2)
+ ;; CHECK-BIN-NEXT: )
+ ;; CHECK-BIN-NEXT: )
+ ;; CHECK-BIN-NEXT: )
+ (func $littleswitch (type $2) (param $x i32) (result i32)
+ (block $topmost (result i32)
+ (block $switch-case$2
+ (block $switch-case$1
+ (br_table $switch-case$1 $switch-case$2 $switch-case$1
+ (i32.sub
+ (local.get $x)
+ (i32.const 1)
+ )
+ )
+ )
+ (br $topmost
+ (i32.const 1)
+ )
+ )
+ (br $topmost
+ (i32.const 2)
+ )
+ (i32.const 0)
+ )
+ )
+
+ ;; CHECK-TEXT: (func $f1 (type $3) (param $i1 i32) (param $i2 i32) (param $i3 i32) (result i32)
+ ;; CHECK-TEXT-NEXT: (block $topmost (result i32)
+ ;; CHECK-TEXT-NEXT: (local.get $i3)
+ ;; CHECK-TEXT-NEXT: )
+ ;; CHECK-TEXT-NEXT: )
+ ;; CHECK-BIN: (func $f1 (type $3) (param $i1 i32) (param $i2 i32) (param $i3 i32) (result i32)
+ ;; CHECK-BIN-NEXT: (local.get $i3)
+ ;; CHECK-BIN-NEXT: )
+ (func $f1 (type $3) (param $i1 i32) (param $i2 i32) (param $i3 i32) (result i32)
+ (block $topmost (result i32)
+ (local.get $i3)
+ )
+ )
+)
+;; CHECK-BIN-NODEBUG: (func $0 (type $0) (param $0 f32) (result f32)
+;; CHECK-BIN-NODEBUG-NEXT: (local $1 f32)
+;; CHECK-BIN-NODEBUG-NEXT: (f32.add
+;; CHECK-BIN-NODEBUG-NEXT: (local.get $1)
+;; CHECK-BIN-NODEBUG-NEXT: (local.get $0)
+;; CHECK-BIN-NODEBUG-NEXT: )
+;; CHECK-BIN-NODEBUG-NEXT: )
+
+;; CHECK-BIN-NODEBUG: (func $1 (type $1) (param $0 i32) (param $1 i32) (result f32)
+;; CHECK-BIN-NODEBUG-NEXT: (local $2 f32)
+;; CHECK-BIN-NODEBUG-NEXT: (local.tee $2
+;; CHECK-BIN-NODEBUG-NEXT: (f32.neg
+;; CHECK-BIN-NODEBUG-NEXT: (block $label$1 (result f32)
+;; CHECK-BIN-NODEBUG-NEXT: (i32.store
+;; CHECK-BIN-NODEBUG-NEXT: (local.get $0)
+;; CHECK-BIN-NODEBUG-NEXT: (local.get $1)
+;; CHECK-BIN-NODEBUG-NEXT: )
+;; CHECK-BIN-NODEBUG-NEXT: (f32.load
+;; CHECK-BIN-NODEBUG-NEXT: (local.get $0)
+;; CHECK-BIN-NODEBUG-NEXT: )
+;; CHECK-BIN-NODEBUG-NEXT: )
+;; CHECK-BIN-NODEBUG-NEXT: )
+;; CHECK-BIN-NODEBUG-NEXT: )
+;; CHECK-BIN-NODEBUG-NEXT: )
+
+;; CHECK-BIN-NODEBUG: (func $2 (type $2) (param $0 i32) (result i32)
+;; CHECK-BIN-NODEBUG-NEXT: (block $label$1 (result i32)
+;; CHECK-BIN-NODEBUG-NEXT: (block $label$2
+;; CHECK-BIN-NODEBUG-NEXT: (block $label$3
+;; CHECK-BIN-NODEBUG-NEXT: (br_table $label$3 $label$2 $label$3
+;; CHECK-BIN-NODEBUG-NEXT: (i32.sub
+;; CHECK-BIN-NODEBUG-NEXT: (local.get $0)
+;; CHECK-BIN-NODEBUG-NEXT: (i32.const 1)
+;; CHECK-BIN-NODEBUG-NEXT: )
+;; CHECK-BIN-NODEBUG-NEXT: )
+;; CHECK-BIN-NODEBUG-NEXT: )
+;; CHECK-BIN-NODEBUG-NEXT: (br $label$1
+;; CHECK-BIN-NODEBUG-NEXT: (i32.const 1)
+;; CHECK-BIN-NODEBUG-NEXT: )
+;; CHECK-BIN-NODEBUG-NEXT: )
+;; CHECK-BIN-NODEBUG-NEXT: (br $label$1
+;; CHECK-BIN-NODEBUG-NEXT: (i32.const 2)
+;; CHECK-BIN-NODEBUG-NEXT: )
+;; CHECK-BIN-NODEBUG-NEXT: )
+;; CHECK-BIN-NODEBUG-NEXT: )
+
+;; CHECK-BIN-NODEBUG: (func $3 (type $3) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
+;; CHECK-BIN-NODEBUG-NEXT: (local.get $2)
+;; CHECK-BIN-NODEBUG-NEXT: )