diff options
Diffstat (limited to 'test')
-rw-r--r-- | test/passes/denan.txt | 123 | ||||
-rw-r--r-- | test/passes/denan.wast | 27 |
2 files changed, 145 insertions, 5 deletions
diff --git a/test/passes/denan.txt b/test/passes/denan.txt index 67f4989e4..10794b03b 100644 --- a/test/passes/denan.txt +++ b/test/passes/denan.txt @@ -1,26 +1,139 @@ (module (type $f32_=>_f32 (func (param f32) (result f32))) (type $f64_=>_f64 (func (param f64) (result f64))) + (type $i32_f32_i64_f64_=>_none (func (param i32 f32 i64 f64))) + (type $f32_f64_=>_none (func (param f32 f64))) (global $global$1 (mut f32) (f32.const 0)) (global $global$2 (mut f32) (f32.const 12.34000015258789)) (func $foo32 (param $x f32) (result f32) + (local.set $x + (call $deNan32 + (local.get $x) + ) + ) (call $deNan32 (call $foo32 - (call $deNan32 - (local.get $x) - ) + (local.get $x) ) ) ) (func $foo64 (param $x f64) (result f64) + (local.set $x + (call $deNan64 + (local.get $x) + ) + ) (call $deNan64 (call $foo64 - (call $deNan64 - (local.get $x) + (local.get $x) + ) + ) + ) + (func $various (param $x i32) (param $y f32) (param $z i64) (param $w f64) + (local.set $y + (call $deNan32 + (local.get $y) + ) + ) + (local.set $w + (call $deNan64 + (local.get $w) + ) + ) + (nop) + ) + (func $ignore-local.get (param $f f32) (param $d f64) + (local.set $f + (call $deNan32 + (local.get $f) + ) + ) + (local.set $d + (call $deNan64 + (local.get $d) + ) + ) + (drop + (local.get $f) + ) + (drop + (local.get $d) + ) + (local.set $f + (local.get $f) + ) + (local.set $d + (local.get $d) + ) + (drop + (local.get $f) + ) + (drop + (local.get $d) + ) + (drop + (call $deNan32 + (f32.abs + (local.get $f) + ) + ) + ) + (drop + (call $deNan64 + (f64.abs + (local.get $d) + ) + ) + ) + (local.set $f + (call $deNan32 + (f32.abs + (local.get $f) + ) + ) + ) + (local.set $d + (call $deNan64 + (f64.abs + (local.get $d) + ) + ) + ) + (drop + (local.get $f) + ) + (drop + (local.get $d) + ) + ) + (func $tees (param $x f32) (result f32) + (local.set $x + (call $deNan32 + (local.get $x) + ) + ) + (local.tee $x + (local.tee $x + (local.tee $x + (local.tee $x + (local.get $x) + ) ) ) ) ) + (func $select (param $x f32) (result f32) + (local.set $x + (call $deNan32 + (local.get $x) + ) + ) + (select + (local.get $x) + (local.get $x) + (i32.const 1) + ) + ) (func $deNan32 (param $0 f32) (result f32) (if (result f32) (f32.eq diff --git a/test/passes/denan.wast b/test/passes/denan.wast index 73c3c8f1c..7ab0964b2 100644 --- a/test/passes/denan.wast +++ b/test/passes/denan.wast @@ -7,4 +7,31 @@ (func $foo64 (param $x f64) (result f64) (call $foo64 (local.get $x)) ) + (func $various (param $x i32) (param $y f32) (param $z i64) (param $w f64) + ) + (func $ignore-local.get (param $f f32) (param $d f64) + (drop (local.get $f)) + (drop (local.get $d)) + (local.set $f (local.get $f)) + (local.set $d (local.get $d)) + (drop (local.get $f)) + (drop (local.get $d)) + (drop (f32.abs (local.get $f))) + (drop (f64.abs (local.get $d))) + (local.set $f (f32.abs (local.get $f))) + (local.set $d (f64.abs (local.get $d))) + (drop (local.get $f)) + (drop (local.get $d)) + ) + (func $tees (param $x f32) (result f32) + (local.tee $x + (local.tee $x + (local.tee $x + (local.tee $x + (local.get $x)))))) + (func $select (param $x f32) (result f32) + (select + (local.get $x) + (local.get $x) + (i32.const 1))) ) |