Add clif/llvm NaN spectest failure excludes.

This commit is contained in:
losfair 2020-03-16 23:40:28 +08:00
parent 5d26d92d9b
commit da07ed5011
2 changed files with 125 additions and 1 deletions

View File

@ -28,6 +28,100 @@
(call_indirect (type $out-i32))
(return)
)
;; NaN canonicalization tests.
;; Things that are covered by spectests canonicalization (`fabs`, `fneg`, `fcopysign`, `reinterpet`, `const`) won't be duplicated here.
(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-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))))
)
)
(assert_return (invoke "call-indirect-from-spilled-stack") (i32.const 0x132))
(assert_return (invoke "call-indirect-from-spilled-stack") (i32.const 0x132))
(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-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))

View File

@ -266,6 +266,30 @@ clif:fail:data.wast:266:windows # AssertUnlinkable - caught panic Any
clif:fail:data.wast:186:windows # AssertUnlinkable - caught panic Any
clif:fail:data.wast:194:windows # AssertUnlinkable - caught panic Any
# NaN canonicalization
clif:fail:wasmer.wast:105 # AssertReturn - result I32(2143289345) ("0x7fc00001") does not match expected I32(2143289344) ("0x7fc00000")
clif:fail:wasmer.wast:106 # AssertReturn - result I32(2143289345) ("0x7fc00001") does not match expected I32(2143289344) ("0x7fc00000")
clif:fail:wasmer.wast:107 # AssertReturn - result I32(2143289345) ("0x7fc00001") does not match expected I32(2143289344) ("0x7fc00000")
clif:fail:wasmer.wast:108 # AssertReturn - result I32(2143289345) ("0x7fc00001") does not match expected I32(2143289344) ("0x7fc00000")
clif:fail:wasmer.wast:109 # AssertReturn - result I32(2143289345) ("0x7fc00001") does not match expected I32(2143289344) ("0x7fc00000")
clif:fail:wasmer.wast:110 # AssertReturn - result I32(2143289345) ("0x7fc00001") does not match expected I32(2143289344) ("0x7fc00000")
clif:fail:wasmer.wast:111 # AssertReturn - result I32(2143289345) ("0x7fc00001") does not match expected I32(2143289344) ("0x7fc00000")
clif:fail:wasmer.wast:112 # AssertReturn - result I32(2143289345) ("0x7fc00001") does not match expected I32(2143289344) ("0x7fc00000")
clif:fail:wasmer.wast:113 # AssertReturn - result I32(2143289345) ("0x7fc00001") does not match expected I32(2143289344) ("0x7fc00000")
clif:fail:wasmer.wast:114 # AssertReturn - result I32(2143289345) ("0x7fc00001") does not match expected I32(2143289344) ("0x7fc00000")
clif:fail:wasmer.wast:115 # AssertReturn - result I32(2143289345) ("0x7fc00001") does not match expected I32(2143289344) ("0x7fc00000")
clif:fail:wasmer.wast:117 # AssertReturn - result I64(9221120237041090561) ("0x7ff8000000000001") does not match expected I64(9221120237041090560) ("0x7ff8000000000000")
clif:fail:wasmer.wast:118 # AssertReturn - result I64(9221120237041090561) ("0x7ff8000000000001") does not match expected I64(9221120237041090560) ("0x7ff8000000000000")
clif:fail:wasmer.wast:119 # AssertReturn - result I64(9221120237041090561) ("0x7ff8000000000001") does not match expected I64(9221120237041090560) ("0x7ff8000000000000")
clif:fail:wasmer.wast:120 # AssertReturn - result I64(9221120237041090561) ("0x7ff8000000000001") does not match expected I64(9221120237041090560) ("0x7ff8000000000000")
clif:fail:wasmer.wast:121 # AssertReturn - result I64(9221120237041090561) ("0x7ff8000000000001") does not match expected I64(9221120237041090560) ("0x7ff8000000000000")
clif:fail:wasmer.wast:122 # AssertReturn - result I64(9221120237041090561) ("0x7ff8000000000001") does not match expected I64(9221120237041090560) ("0x7ff8000000000000")
clif:fail:wasmer.wast:123 # AssertReturn - result I64(9221120237041090561) ("0x7ff8000000000001") does not match expected I64(9221120237041090560) ("0x7ff8000000000000")
clif:fail:wasmer.wast:124 # AssertReturn - result I64(9221120237041090561) ("0x7ff8000000000001") does not match expected I64(9221120237041090560) ("0x7ff8000000000000")
clif:fail:wasmer.wast:125 # AssertReturn - result I64(9221120237041090561) ("0x7ff8000000000001") does not match expected I64(9221120237041090560) ("0x7ff8000000000000")
clif:fail:wasmer.wast:126 # AssertReturn - result I64(9221120237041090561) ("0x7ff8000000000001") does not match expected I64(9221120237041090560) ("0x7ff8000000000000")
clif:fail:wasmer.wast:127 # AssertReturn - result I64(9221120237041090561) ("0x7ff8000000000001") does not match expected I64(9221120237041090560) ("0x7ff8000000000000")
# LLVM
llvm:fail:linking.wast:388 # AssertReturn - Call failed RuntimeError: WebAssembly trap occurred during runtime: incorrect `call_indirect` signature
@ -302,6 +326,12 @@ llvm:skip:unwind.wast:*:windows
llvm:skip:simd.wast:352:unix # Module - caught panic Any
llvm:skip:simd_binaryen.wast:*:unix # Module - caught panic Any
# NaN canonicalization
llvm:fail:wasmer.wast:111 # AssertReturn - result I32(2143289345) ("0x7fc00001") does not match expected I32(2143289344) ("0x7fc00000")
llvm:fail:wasmer.wast:114 # AssertReturn - result I32(2143289345) ("0x7fc00001") does not match expected I32(2143289344) ("0x7fc00000")
llvm:fail:wasmer.wast:123 # AssertReturn - result I64(9221120237041090561) ("0x7ff8000000000001") does not match expected I64(9221120237041090560) ("0x7ff8000000000000")
llvm:fail:wasmer.wast:126 # AssertReturn - result I64(9221120237041090561) ("0x7ff8000000000001") does not match expected I64(9221120237041090560) ("0x7ff8000000000000")
# Singlepass
singlepass:skip:simd.wast:* # SIMD not implemented
singlepass:skip:simd_binaryen.wast:* # SIMD not implemented