mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-01-23 17:52:26 -05:00
LibWasm: Implement fx.nearest using nearbyint() instead of round()
This instruction wants RoundingMode::ToEven, so let's use the correct function.
This commit is contained in:
parent
e93c740df5
commit
2c7e2e351a
Notes:
sideshowbarker
2024-07-18 05:03:55 +09:00
Author: https://github.com/alimpfard Commit: https://github.com/SerenityOS/serenity/commit/2c7e2e351aa Pull-request: https://github.com/SerenityOS/serenity/pull/9685
2 changed files with 5 additions and 5 deletions
|
@ -824,7 +824,7 @@ void BytecodeInterpreter::interpret(Configuration& configuration, InstructionPoi
|
|||
case Instructions::f32_trunc.value():
|
||||
return unary_operation<float, float, Operators::Truncate>(configuration);
|
||||
case Instructions::f32_nearest.value():
|
||||
return unary_operation<float, float, Operators::Round>(configuration);
|
||||
return unary_operation<float, float, Operators::NearbyIntegral>(configuration);
|
||||
case Instructions::f32_sqrt.value():
|
||||
return unary_operation<float, float, Operators::SquareRoot>(configuration);
|
||||
case Instructions::f32_add.value():
|
||||
|
@ -852,7 +852,7 @@ void BytecodeInterpreter::interpret(Configuration& configuration, InstructionPoi
|
|||
case Instructions::f64_trunc.value():
|
||||
return unary_operation<double, double, Operators::Truncate>(configuration);
|
||||
case Instructions::f64_nearest.value():
|
||||
return unary_operation<double, double, Operators::Round>(configuration);
|
||||
return unary_operation<double, double, Operators::NearbyIntegral>(configuration);
|
||||
case Instructions::f64_sqrt.value():
|
||||
return unary_operation<double, double, Operators::SquareRoot>(configuration);
|
||||
case Instructions::f64_add.value():
|
||||
|
|
|
@ -271,14 +271,14 @@ struct Truncate {
|
|||
|
||||
static StringView name() { return "truncate"; }
|
||||
};
|
||||
struct Round {
|
||||
struct NearbyIntegral {
|
||||
template<typename Lhs>
|
||||
auto operator()(Lhs lhs) const
|
||||
{
|
||||
if constexpr (IsSame<Lhs, float>)
|
||||
return roundf(lhs);
|
||||
return nearbyintf(lhs);
|
||||
else if constexpr (IsSame<Lhs, double>)
|
||||
return round(lhs);
|
||||
return nearbyint(lhs);
|
||||
else
|
||||
VERIFY_NOT_REACHED();
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue