• Shiyu Zhang's avatar
    [x64] Implement partial constant pool for x64. · 819c9845
    Shiyu Zhang authored
    Partial constant pool aims at reducing code size and only takes effect for shareable constants.
    Different from ARM’s constant pool, partial constant pool does not emit constant pools at the end of each code object. Instead, it keeps the first shareable constant inlined in the instructions and uses rip-relative memory loadings for the same constants in subsequent instructions. These rip-relative memory loadings will target at the position of the first inlined constant. For example:
    
      REX.W movq r10,0x7f9f75a32c20	  ; 10 bytes
      …
      REX.W movq r10,0x7f9f75a32c20	  ; 10 bytes
      …
    turns into
    
      REX.W movq r10,0x7f9f75a32c20	  ; 10 bytes
      …
      REX.W movq r10,[rip+0xffffff96] ; 7 bytes
      …
    
    
    Change-Id: I25a417f6d82da96024989bddf0451d7df9340c00
    Reviewed-on: https://chromium-review.googlesource.com/1082231Reviewed-by: 's avatarMichael Starzinger <mstarzinger@chromium.org>
    Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
    Reviewed-by: 's avatarSigurd Schneider <sigurds@chromium.org>
    Commit-Queue: Shiyu Zhang <shiyu.zhang@intel.com>
    Cr-Commit-Position: refs/heads/master@{#54963}
    819c9845
Name
Last commit
Last update
benchmarks Loading commit data...
build_overrides Loading commit data...
custom_deps Loading commit data...
docs Loading commit data...
gni Loading commit data...
include Loading commit data...
infra Loading commit data...
samples Loading commit data...
src Loading commit data...
test Loading commit data...
testing Loading commit data...
third_party Loading commit data...
tools Loading commit data...
.clang-format Loading commit data...
.editorconfig Loading commit data...
.git-blame-ignore-revs Loading commit data...
.gitattributes Loading commit data...
.gitignore Loading commit data...
.gn Loading commit data...
.vpython Loading commit data...
.ycm_extra_conf.py Loading commit data...
AUTHORS Loading commit data...
BUILD.gn Loading commit data...
CODE_OF_CONDUCT.md Loading commit data...
ChangeLog Loading commit data...
DEPS Loading commit data...
LICENSE Loading commit data...
LICENSE.fdlibm Loading commit data...
LICENSE.strongtalk Loading commit data...
LICENSE.v8 Loading commit data...
LICENSE.valgrind Loading commit data...
OWNERS Loading commit data...
PRESUBMIT.py Loading commit data...
README.md Loading commit data...
WATCHLISTS Loading commit data...
codereview.settings Loading commit data...
snapshot_toolchain.gni Loading commit data...