mirror of
https://github.com/fluencelabs/wasmer
synced 2024-12-05 02:20:19 +00:00
194 lines
12 KiB
Plaintext
194 lines
12 KiB
Plaintext
;; NaN canonicalization tests.
|
|
;;
|
|
;; Things that are covered by spectests canonicalization
|
|
;; (`fabs`, `fneg`, `fcopysign`, `reinterpret`, `const`)
|
|
;; won't be duplicated here.
|
|
|
|
(module
|
|
;; Auxiliary definitions
|
|
(type $f32-id (func (param f32) (result f32)))
|
|
(type $f64-id (func (param f64) (result f64)))
|
|
|
|
(table funcref
|
|
(elem
|
|
$nan-canonicalization-f32-func-call-target
|
|
$nan-canonicalization-f64-func-call-target
|
|
)
|
|
)
|
|
|
|
(memory 1)
|
|
|
|
(func (export "nan-canonicalization-f32-add") (param i32) (result i32)
|
|
(i32.reinterpret_f32 (f32.add (f32.reinterpret_i32 (get_local 0)) (f32.const 0)))
|
|
)
|
|
(func (export "nan-canonicalization-f32-sub") (param i32) (result i32)
|
|
(i32.reinterpret_f32 (f32.sub (f32.reinterpret_i32 (get_local 0)) (f32.const 0)))
|
|
)
|
|
(func (export "nan-canonicalization-f32-mul") (param i32) (result i32)
|
|
(i32.reinterpret_f32 (f32.mul (f32.reinterpret_i32 (get_local 0)) (f32.const 0)))
|
|
)
|
|
(func (export "nan-canonicalization-f32-div") (param i32) (result i32)
|
|
(i32.reinterpret_f32 (f32.div (f32.reinterpret_i32 (get_local 0)) (f32.const 1)))
|
|
)
|
|
(func (export "nan-canonicalization-f32-max") (param i32) (result i32)
|
|
(i32.reinterpret_f32 (f32.max (f32.reinterpret_i32 (get_local 0)) (f32.const 1)))
|
|
)
|
|
(func (export "nan-canonicalization-f32-min") (param i32) (result i32)
|
|
(i32.reinterpret_f32 (f32.min (f32.reinterpret_i32 (get_local 0)) (f32.const 1)))
|
|
)
|
|
(func (export "nan-canonicalization-f32-nearest") (param i32) (result i32)
|
|
(i32.reinterpret_f32 (f32.nearest (f32.reinterpret_i32 (get_local 0))))
|
|
)
|
|
(func (export "nan-canonicalization-f32-floor") (param i32) (result i32)
|
|
(i32.reinterpret_f32 (f32.floor (f32.reinterpret_i32 (get_local 0))))
|
|
)
|
|
(func (export "nan-canonicalization-f32-ceil") (param i32) (result i32)
|
|
(i32.reinterpret_f32 (f32.ceil (f32.reinterpret_i32 (get_local 0))))
|
|
)
|
|
(func (export "nan-canonicalization-f32-trunc") (param i32) (result i32)
|
|
(i32.reinterpret_f32 (f32.trunc (f32.reinterpret_i32 (get_local 0))))
|
|
)
|
|
(func (export "nan-canonicalization-f32-sqrt") (param i32) (result i32)
|
|
(i32.reinterpret_f32 (f32.sqrt (f32.reinterpret_i32 (get_local 0))))
|
|
)
|
|
(func (export "nan-canonicalization-f32-mem") (param i32) (result i32)
|
|
(f32.store (i32.const 0) (f32.reinterpret_i32 (get_local 0)))
|
|
(i32.reinterpret_f32 (f32.load (i32.const 0)))
|
|
)
|
|
(func (export "nan-canonicalization-f32-mem-cncl") (param i32) (result i32)
|
|
(f32.store (i32.const 0) (f32.add (f32.reinterpret_i32 (get_local 0)) (f32.const 0)))
|
|
(i32.reinterpret_f32 (f32.load (i32.const 0)))
|
|
)
|
|
(func (export "nan-canonicalization-f32-local") (param i32) (result i32)
|
|
(local f32)
|
|
(set_local 1 (f32.reinterpret_i32 (get_local 0)))
|
|
(i32.reinterpret_f32 (get_local 1))
|
|
)
|
|
(func (export "nan-canonicalization-f32-local-cncl") (param i32) (result i32)
|
|
(local f32)
|
|
(set_local 1 (f32.add (f32.reinterpret_i32 (get_local 0)) (f32.const 0)))
|
|
(i32.reinterpret_f32 (get_local 1))
|
|
)
|
|
(func $nan-canonicalization-f32-func-call-target (param f32) (result f32)
|
|
(get_local 0)
|
|
)
|
|
(func (export "nan-canonicalization-f32-func-call") (param i32) (result i32)
|
|
(i32.reinterpret_f32 (call $nan-canonicalization-f32-func-call-target (f32.reinterpret_i32 (get_local 0))))
|
|
)
|
|
(func (export "nan-canonicalization-f32-func-call-cncl") (param i32) (result i32)
|
|
(i32.reinterpret_f32 (call $nan-canonicalization-f32-func-call-target (f32.add (f32.reinterpret_i32 (get_local 0)) (f32.const 0))))
|
|
)
|
|
(func (export "nan-canonicalization-f32-func-call-indirect") (param i32) (result i32)
|
|
(i32.reinterpret_f32 (call_indirect (type $f32-id) (f32.reinterpret_i32 (get_local 0)) (i32.const 0)))
|
|
)
|
|
(func (export "nan-canonicalization-f32-func-call-indirect-cncl") (param i32) (result i32)
|
|
(i32.reinterpret_f32 (call_indirect (type $f32-id) (f32.add (f32.reinterpret_i32 (get_local 0)) (f32.const 0)) (i32.const 0)))
|
|
)
|
|
|
|
(func (export "nan-canonicalization-f64-add") (param i64) (result i64)
|
|
(i64.reinterpret_f64 (f64.add (f64.reinterpret_i64 (get_local 0)) (f64.const 0)))
|
|
)
|
|
(func (export "nan-canonicalization-f64-sub") (param i64) (result i64)
|
|
(i64.reinterpret_f64 (f64.sub (f64.reinterpret_i64 (get_local 0)) (f64.const 0)))
|
|
)
|
|
(func (export "nan-canonicalization-f64-mul") (param i64) (result i64)
|
|
(i64.reinterpret_f64 (f64.mul (f64.reinterpret_i64 (get_local 0)) (f64.const 0)))
|
|
)
|
|
(func (export "nan-canonicalization-f64-div") (param i64) (result i64)
|
|
(i64.reinterpret_f64 (f64.div (f64.reinterpret_i64 (get_local 0)) (f64.const 1)))
|
|
)
|
|
(func (export "nan-canonicalization-f64-max") (param i64) (result i64)
|
|
(i64.reinterpret_f64 (f64.max (f64.reinterpret_i64 (get_local 0)) (f64.const 1)))
|
|
)
|
|
(func (export "nan-canonicalization-f64-min") (param i64) (result i64)
|
|
(i64.reinterpret_f64 (f64.min (f64.reinterpret_i64 (get_local 0)) (f64.const 1)))
|
|
)
|
|
(func (export "nan-canonicalization-f64-nearest") (param i64) (result i64)
|
|
(i64.reinterpret_f64 (f64.nearest (f64.reinterpret_i64 (get_local 0))))
|
|
)
|
|
(func (export "nan-canonicalization-f64-floor") (param i64) (result i64)
|
|
(i64.reinterpret_f64 (f64.floor (f64.reinterpret_i64 (get_local 0))))
|
|
)
|
|
(func (export "nan-canonicalization-f64-ceil") (param i64) (result i64)
|
|
(i64.reinterpret_f64 (f64.ceil (f64.reinterpret_i64 (get_local 0))))
|
|
)
|
|
(func (export "nan-canonicalization-f64-trunc") (param i64) (result i64)
|
|
(i64.reinterpret_f64 (f64.trunc (f64.reinterpret_i64 (get_local 0))))
|
|
)
|
|
(func (export "nan-canonicalization-f64-sqrt") (param i64) (result i64)
|
|
(i64.reinterpret_f64 (f64.sqrt (f64.reinterpret_i64 (get_local 0))))
|
|
)
|
|
(func (export "nan-canonicalization-f64-mem") (param i64) (result i64)
|
|
(f64.store (i32.const 0) (f64.reinterpret_i64 (get_local 0)))
|
|
(i64.reinterpret_f64 (f64.load (i32.const 0)))
|
|
)
|
|
(func (export "nan-canonicalization-f64-mem-cncl") (param i64) (result i64)
|
|
(f64.store (i32.const 0) (f64.add (f64.reinterpret_i64 (get_local 0)) (f64.const 0)))
|
|
(i64.reinterpret_f64 (f64.load (i32.const 0)))
|
|
)
|
|
(func (export "nan-canonicalization-f64-local") (param i64) (result i64)
|
|
(local f64)
|
|
(set_local 1 (f64.reinterpret_i64 (get_local 0)))
|
|
(i64.reinterpret_f64 (get_local 1))
|
|
)
|
|
(func (export "nan-canonicalization-f64-local-cncl") (param i64) (result i64)
|
|
(local f64)
|
|
(set_local 1 (f64.add (f64.reinterpret_i64 (get_local 0)) (f64.const 0)))
|
|
(i64.reinterpret_f64 (get_local 1))
|
|
)
|
|
(func $nan-canonicalization-f64-func-call-target (param f64) (result f64)
|
|
(get_local 0)
|
|
)
|
|
(func (export "nan-canonicalization-f64-func-call") (param i64) (result i64)
|
|
(i64.reinterpret_f64 (call $nan-canonicalization-f64-func-call-target (f64.reinterpret_i64 (get_local 0))))
|
|
)
|
|
(func (export "nan-canonicalization-f64-func-call-cncl") (param i64) (result i64)
|
|
(i64.reinterpret_f64 (call $nan-canonicalization-f64-func-call-target (f64.add (f64.reinterpret_i64 (get_local 0)) (f64.const 0))))
|
|
)
|
|
(func (export "nan-canonicalization-f64-func-call-indirect") (param i64) (result i64)
|
|
(i64.reinterpret_f64 (call_indirect (type $f64-id) (f64.reinterpret_i64 (get_local 0)) (i32.const 1)))
|
|
)
|
|
(func (export "nan-canonicalization-f64-func-call-indirect-cncl") (param i64) (result i64)
|
|
(i64.reinterpret_f64 (call_indirect (type $f64-id) (f64.add (f64.reinterpret_i64 (get_local 0)) (f64.const 0)) (i32.const 1)))
|
|
)
|
|
)
|
|
|
|
(assert_return (invoke "nan-canonicalization-f32-add" (i32.const 0x7fc00001)) (i32.const 0x7fc00000))
|
|
(assert_return (invoke "nan-canonicalization-f32-sub" (i32.const 0x7fc00001)) (i32.const 0x7fc00000))
|
|
(assert_return (invoke "nan-canonicalization-f32-mul" (i32.const 0x7fc00001)) (i32.const 0x7fc00000))
|
|
(assert_return (invoke "nan-canonicalization-f32-div" (i32.const 0x7fc00001)) (i32.const 0x7fc00000))
|
|
(assert_return (invoke "nan-canonicalization-f32-max" (i32.const 0x7fc00001)) (i32.const 0x7fc00000))
|
|
(assert_return (invoke "nan-canonicalization-f32-min" (i32.const 0x7fc00001)) (i32.const 0x7fc00000))
|
|
(assert_return (invoke "nan-canonicalization-f32-nearest" (i32.const 0x7fc00001)) (i32.const 0x7fc00000))
|
|
(assert_return (invoke "nan-canonicalization-f32-floor" (i32.const 0x7fc00001)) (i32.const 0x7fc00000))
|
|
(assert_return (invoke "nan-canonicalization-f32-ceil" (i32.const 0x7fc00001)) (i32.const 0x7fc00000))
|
|
(assert_return (invoke "nan-canonicalization-f32-trunc" (i32.const 0x7fc00001)) (i32.const 0x7fc00000))
|
|
(assert_return (invoke "nan-canonicalization-f32-sqrt" (i32.const 0x7fc00001)) (i32.const 0x7fc00000))
|
|
(assert_return (invoke "nan-canonicalization-f32-mem" (i32.const 0x7fc00001)) (i32.const 0x7fc00001))
|
|
(assert_return (invoke "nan-canonicalization-f32-mem-cncl" (i32.const 0x7fc00001)) (i32.const 0x7fc00000))
|
|
(assert_return (invoke "nan-canonicalization-f32-local" (i32.const 0x7fc00001)) (i32.const 0x7fc00001))
|
|
(assert_return (invoke "nan-canonicalization-f32-local-cncl" (i32.const 0x7fc00001)) (i32.const 0x7fc00000))
|
|
(assert_return (invoke "nan-canonicalization-f32-func-call" (i32.const 0x7fc00001)) (i32.const 0x7fc00001))
|
|
(assert_return (invoke "nan-canonicalization-f32-func-call-cncl" (i32.const 0x7fc00001)) (i32.const 0x7fc00000))
|
|
(assert_return (invoke "nan-canonicalization-f32-func-call-indirect" (i32.const 0x7fc00001)) (i32.const 0x7fc00001))
|
|
(assert_return (invoke "nan-canonicalization-f32-func-call-indirect-cncl" (i32.const 0x7fc00001)) (i32.const 0x7fc00000))
|
|
|
|
(assert_return (invoke "nan-canonicalization-f64-add" (i64.const 0x7ff8000000000001)) (i64.const 0x7ff8000000000000))
|
|
(assert_return (invoke "nan-canonicalization-f64-sub" (i64.const 0x7ff8000000000001)) (i64.const 0x7ff8000000000000))
|
|
(assert_return (invoke "nan-canonicalization-f64-mul" (i64.const 0x7ff8000000000001)) (i64.const 0x7ff8000000000000))
|
|
(assert_return (invoke "nan-canonicalization-f64-div" (i64.const 0x7ff8000000000001)) (i64.const 0x7ff8000000000000))
|
|
(assert_return (invoke "nan-canonicalization-f64-max" (i64.const 0x7ff8000000000001)) (i64.const 0x7ff8000000000000))
|
|
(assert_return (invoke "nan-canonicalization-f64-min" (i64.const 0x7ff8000000000001)) (i64.const 0x7ff8000000000000))
|
|
(assert_return (invoke "nan-canonicalization-f64-nearest" (i64.const 0x7ff8000000000001)) (i64.const 0x7ff8000000000000))
|
|
(assert_return (invoke "nan-canonicalization-f64-floor" (i64.const 0x7ff8000000000001)) (i64.const 0x7ff8000000000000))
|
|
(assert_return (invoke "nan-canonicalization-f64-ceil" (i64.const 0x7ff8000000000001)) (i64.const 0x7ff8000000000000))
|
|
(assert_return (invoke "nan-canonicalization-f64-trunc" (i64.const 0x7ff8000000000001)) (i64.const 0x7ff8000000000000))
|
|
(assert_return (invoke "nan-canonicalization-f64-sqrt" (i64.const 0x7ff8000000000001)) (i64.const 0x7ff8000000000000))
|
|
(assert_return (invoke "nan-canonicalization-f64-mem" (i64.const 0x7ff8000000000001)) (i64.const 0x7ff8000000000001))
|
|
(assert_return (invoke "nan-canonicalization-f64-mem-cncl" (i64.const 0x7ff8000000000001)) (i64.const 0x7ff8000000000000))
|
|
(assert_return (invoke "nan-canonicalization-f64-local" (i64.const 0x7ff8000000000001)) (i64.const 0x7ff8000000000001))
|
|
(assert_return (invoke "nan-canonicalization-f64-local-cncl" (i64.const 0x7ff8000000000001)) (i64.const 0x7ff8000000000000))
|
|
(assert_return (invoke "nan-canonicalization-f64-func-call" (i64.const 0x7ff8000000000001)) (i64.const 0x7ff8000000000001))
|
|
(assert_return (invoke "nan-canonicalization-f64-func-call-cncl" (i64.const 0x7ff8000000000001)) (i64.const 0x7ff8000000000000))
|
|
(assert_return (invoke "nan-canonicalization-f64-func-call-indirect" (i64.const 0x7ff8000000000001)) (i64.const 0x7ff8000000000001))
|
|
(assert_return (invoke "nan-canonicalization-f64-func-call-indirect-cncl" (i64.const 0x7ff8000000000001)) (i64.const 0x7ff8000000000000)) |