mirror of
https://github.com/fluencelabs/wasmer
synced 2025-06-29 00:21:34 +00:00
Canonicalize NANs produced by f.trunc and f.nearby.
This commit is contained in:
@ -3701,7 +3701,7 @@ impl<'ctx> FunctionCodeGenerator<CodegenError> for LLVMFunctionCodeGenerator<'ct
|
|||||||
.try_as_basic_value()
|
.try_as_basic_value()
|
||||||
.left()
|
.left()
|
||||||
.unwrap();
|
.unwrap();
|
||||||
state.push1_extra(res, i);
|
state.push1_extra(res, i | ExtraInfo::pending_f32_nan());
|
||||||
}
|
}
|
||||||
Operator::F64Trunc => {
|
Operator::F64Trunc => {
|
||||||
let (v, i) = state.pop1_extra()?;
|
let (v, i) = state.pop1_extra()?;
|
||||||
@ -3714,7 +3714,7 @@ impl<'ctx> FunctionCodeGenerator<CodegenError> for LLVMFunctionCodeGenerator<'ct
|
|||||||
.try_as_basic_value()
|
.try_as_basic_value()
|
||||||
.left()
|
.left()
|
||||||
.unwrap();
|
.unwrap();
|
||||||
state.push1_extra(res, i);
|
state.push1_extra(res, i | ExtraInfo::pending_f64_nan());
|
||||||
}
|
}
|
||||||
Operator::F32Nearest => {
|
Operator::F32Nearest => {
|
||||||
let (v, i) = state.pop1_extra()?;
|
let (v, i) = state.pop1_extra()?;
|
||||||
@ -3727,7 +3727,7 @@ impl<'ctx> FunctionCodeGenerator<CodegenError> for LLVMFunctionCodeGenerator<'ct
|
|||||||
.try_as_basic_value()
|
.try_as_basic_value()
|
||||||
.left()
|
.left()
|
||||||
.unwrap();
|
.unwrap();
|
||||||
state.push1_extra(res, i);
|
state.push1_extra(res, i | ExtraInfo::pending_f32_nan());
|
||||||
}
|
}
|
||||||
Operator::F64Nearest => {
|
Operator::F64Nearest => {
|
||||||
let (v, i) = state.pop1_extra()?;
|
let (v, i) = state.pop1_extra()?;
|
||||||
@ -3740,7 +3740,7 @@ impl<'ctx> FunctionCodeGenerator<CodegenError> for LLVMFunctionCodeGenerator<'ct
|
|||||||
.try_as_basic_value()
|
.try_as_basic_value()
|
||||||
.left()
|
.left()
|
||||||
.unwrap();
|
.unwrap();
|
||||||
state.push1_extra(res, i);
|
state.push1_extra(res, i | ExtraInfo::pending_f64_nan());
|
||||||
}
|
}
|
||||||
Operator::F32Abs => {
|
Operator::F32Abs => {
|
||||||
let (v, i) = state.pop1_extra()?;
|
let (v, i) = state.pop1_extra()?;
|
||||||
|
@ -326,12 +326,6 @@ llvm:skip:unwind.wast:*:windows
|
|||||||
llvm:skip:simd.wast:352:unix # Module - caught panic Any
|
llvm:skip:simd.wast:352:unix # Module - caught panic Any
|
||||||
llvm:skip:simd_binaryen.wast:*: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
|
||||||
singlepass:skip:simd.wast:* # SIMD not implemented
|
singlepass:skip:simd.wast:* # SIMD not implemented
|
||||||
singlepass:skip:simd_binaryen.wast:* # SIMD not implemented
|
singlepass:skip:simd_binaryen.wast:* # SIMD not implemented
|
||||||
|
Reference in New Issue
Block a user