aboutsummaryrefslogtreecommitdiffhomepage
path: root/tests/src
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2024-06-29 17:25:26 +0900
committernsfisis <nsfisis@gmail.com>2024-06-29 17:25:26 +0900
commite5ddbd619b1f85a3f67fe8e09c48b4761d9fe177 (patch)
tree420cf1d5050dc3632f1d7f8835af596860a0af6a /tests/src
parent80b9584de4b9c2b0601c709877b50d589aece57d (diff)
downloadphp-waddiwasi-e5ddbd619b1f85a3f67fe8e09c48b4761d9fe177.tar.gz
php-waddiwasi-e5ddbd619b1f85a3f67fe8e09c48b4761d9fe177.tar.zst
php-waddiwasi-e5ddbd619b1f85a3f67fe8e09c48b4761d9fe177.zip
fix: some float ops
Diffstat (limited to 'tests/src')
-rw-r--r--tests/src/SpecTestsuites/SpecTestsuiteBase.php12
1 files changed, 10 insertions, 2 deletions
diff --git a/tests/src/SpecTestsuites/SpecTestsuiteBase.php b/tests/src/SpecTestsuites/SpecTestsuiteBase.php
index 1e74e13..ee9c65d 100644
--- a/tests/src/SpecTestsuites/SpecTestsuiteBase.php
+++ b/tests/src/SpecTestsuites/SpecTestsuiteBase.php
@@ -159,8 +159,16 @@ abstract class SpecTestsuiteBase extends TestCase
return match ($type) {
'i32' => unpack('l', pack('V', (int)$value))[1],
'i64' => unpack('q', self::convertInt64ToBinary($value))[1],
- 'f32' => unpack('g', pack('V', (int)$value))[1],
- 'f64' => unpack('e', self::convertInt64ToBinary($value))[1],
+ 'f32' => match ($value) {
+ 'nan:canonical' => NAN,
+ 'nan:arithmetic' => NAN,
+ default => unpack('g', pack('V', (int)$value))[1],
+ },
+ 'f64' => match ($value) {
+ 'nan:canonical' => NAN,
+ 'nan:arithmetic' => NAN,
+ default => unpack('e', self::convertInt64ToBinary($value))[1],
+ },
'externref' => $value === 'null' ? Ref::RefNull(RefType::ExternRef) : Ref::RefExtern((int)$value),
'funcref' => $value === 'null' ? Ref::RefNull(RefType::FuncRef) : Ref::RefFunc((int)$value),
default => throw new RuntimeException("unknown type: $type"),