v8/test
Steinar H. Gunderson 6da6e45099 Microoptimizations in FastDtoa.
Optimize FastDtoa, in particular Grisu3. In addition to making
a microbenchmark, there are a number of smaller and larger
changes here:

 - Replace divisions by power-of-ten with multiplications by
   their inverses, using an algorithm very similar to the one
   in libdivide.
 - For DiyFp::Times(), use 128-bit hardware multiplication
   if available (which it generally is on 64-bit platforms).
 - Where possible, send around a pointer to the end of the string,
   instead of a pointer and a length, reducing register pressure
   (especially for Intel). Where not (easily) possible, add
   a local variable to make the compiler understand that length
   and decimal_point cannot alias.
 - Change some ints to unsigneds where it helps us avoid sign
   extensions.
 - Some minor changes to reduce instruction dependency chains.
 - Inline BiggestPowerTen().

Actual performance gain is wildly different between platforms.
On my 3990X workstation (Zen 2), gains are about 21%. On a M1
Mac Mini, they are about 17%. But on my i7-10610U laptop
(Comet Lake, so Skylake microarchitecture), the function is
78% faster. This is probably because large divisions
(divisor over 255) seem to hurt a lot on Skylake, but I haven't
gone through it in detail.

Change-Id: I5b67c257d788a3f7d1be7065d055456852451d68
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4110741
Commit-Queue: Steinar H Gunderson <sesse@chromium.org>
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Cr-Commit-Position: refs/heads/main@{#84906}
2022-12-16 15:03:39 +00:00
..
benchmarks Microoptimizations in FastDtoa. 2022-12-16 15:03:39 +00:00
bigint
cctest [wasm-gc] Subtyping support for call_indirect 2022-12-16 13:24:24 +00:00
common [wasm-gc] Add new br_on_cast_fail null variant taking a heap type immediate 2022-12-15 12:45:51 +00:00
debugger Reland: "[wasm] Compile debug code lazily" 2022-12-15 14:59:13 +00:00
debugging
fuzzer [wasm] Do not validate asm.js code 2022-12-13 17:46:59 +00:00
fuzzilli
inspector [inspector] Improve description for Proxy objects. 2022-12-15 10:53:39 +00:00
intl [Intl] Impl LocaleInfo PR 63 2022-12-15 01:21:58 +00:00
js-perf-test
memory
message Resolved an issue where an earlier error was not reported first in certain cases 2022-11-11 13:43:32 +00:00
mjsunit [wasm-gc] Fix nullability typing for new br_on_cast instructions 2022-12-16 12:16:53 +00:00
mkgrokdump [heap] Rename safepoint scopes 2022-10-25 16:32:55 +00:00
mozilla
test262 [test262] Roll test262 2022-12-15 00:34:07 +00:00
torque
unittests [wasm][revec] Decision and Transformation 2022-12-16 13:14:35 +00:00
wasm-api-tests [heap] Enable conservative stack scanning on tests 2022-12-14 16:14:12 +00:00
wasm-js [wasm] Update spec tests 2022-12-16 13:05:33 +00:00
wasm-spec-tests [wasm] Update spec tests 2022-12-16 13:05:33 +00:00
webkit
BUILD.gn
OWNERS