[webkit-changes] [WebKit/WebKit] b07e2d: [JSC] Clean up wasm AirIRGenerator FP truncation
jjgriego
noreply at github.com
Mon Sep 26 13:17:57 PDT 2022
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: b07e2d5c790373fbf908cecdf9aa47517c40de93
https://github.com/WebKit/WebKit/commit/b07e2d5c790373fbf908cecdf9aa47517c40de93
Author: Joseph Griego <jgriego at igalia.com>
Date: 2022-09-26 (Mon, 26 Sep 2022)
Changed paths:
M Source/JavaScriptCore/wasm/WasmAirIRGenerator.cpp
Log Message:
-----------
[JSC] Clean up wasm AirIRGenerator FP truncation
https://bugs.webkit.org/show_bug.cgi?id=245436
Reviewed by Justin Michaud.
The implementation for all of the (checked and saturated) floating point to
integer truncations ends up being really duplicative--we have code for the
patchpoints to generate the appropriate instructions twice for each flavor of
this operation and code for the bounds checking needed is duplicated many times.
This patch adds a new method for generating only the code for an unchecked
truncation; a table of the output ranges for each flavor, and uses both to have
a single implementation for both the checked and saturating versions of each
truncation instruction.
Also avoids clobbering the macro scratch registers on ARM64 for some variants of
the truncation (the ones resulting in U64s) since the macro assembler doesn't
seem to actually need them on that architecture.
Relying on the existing test suite; this shouldn't really change the generated
code, except for the change to the macro scratch register clobbers on ARM64.
* Source/JavaScriptCore/wasm/WasmAirIRGenerator.cpp:
(JSC::Wasm::AirIRGenerator::lookupTruncationRange):
(JSC::Wasm::AirIRGenerator::addUncheckedFloatingPointTruncation):
(JSC::Wasm::AirIRGenerator::truncSaturated):
(JSC::Wasm::AirIRGenerator::addCheckedFloatingPointTruncation):
(JSC::Wasm::AirIRGenerator::addOp<OpType::I32TruncSF64>):
(JSC::Wasm::AirIRGenerator::addOp<OpType::I32TruncSF32>):
(JSC::Wasm::AirIRGenerator::addOp<OpType::I32TruncUF64>):
(JSC::Wasm::AirIRGenerator::addOp<OpType::I32TruncUF32>):
(JSC::Wasm::AirIRGenerator::addOp<OpType::I64TruncSF64>):
(JSC::Wasm::AirIRGenerator::addOp<OpType::I64TruncUF64>):
(JSC::Wasm::AirIRGenerator::addOp<OpType::I64TruncSF32>):
(JSC::Wasm::AirIRGenerator::addOp<OpType::I64TruncUF32>):
Canonical link: https://commits.webkit.org/254875@main
More information about the webkit-changes
mailing list