• rmcilroy@chromium.org's avatar
    ARM: Do not set FPSCR when converting to clamped uint8 · b61696dd
    rmcilroy@chromium.org authored
    Setting the FPSCR flags is expensive on some CPUs. Get rid of repeated
    setting of the FPSCR by relying on the correct default flags being set
    when doing uint8 clamping. Also use vcvt_u32_f64 instead of vcvt_s32_f64,
    which enables removing the check against zero (vcvt_u32_f64 will clamp to
    zero).
    
    To be on the safe side, add asserts to check that the VFP rounding mode
    flags are set to default as expected.
    
    This increases performance of a hot loop repeatedly setting
    Uint8ClampedArray values on some CPUs by as much as a factor of 12.
    
    BUG=v8:3253
    LOG=N
    R=jacob.bramley@arm.com, rmcilroy@chromium.org, ulan@chromium.org
    
    Review URL: https://codereview.chromium.org/230473005
    
    git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20676 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
    b61696dd
Name
Last commit
Last update
..
OWNERS Loading commit data...
assembler-arm-inl.h Loading commit data...
assembler-arm.cc Loading commit data...
assembler-arm.h Loading commit data...
builtins-arm.cc Loading commit data...
code-stubs-arm.cc Loading commit data...
code-stubs-arm.h Loading commit data...
codegen-arm.cc Loading commit data...
codegen-arm.h Loading commit data...
constants-arm.cc Loading commit data...
constants-arm.h Loading commit data...
cpu-arm.cc Loading commit data...
debug-arm.cc Loading commit data...
deoptimizer-arm.cc Loading commit data...
disasm-arm.cc Loading commit data...
frames-arm.cc Loading commit data...
frames-arm.h Loading commit data...
full-codegen-arm.cc Loading commit data...
ic-arm.cc Loading commit data...
lithium-arm.cc Loading commit data...
lithium-arm.h Loading commit data...
lithium-codegen-arm.cc Loading commit data...
lithium-codegen-arm.h Loading commit data...
lithium-gap-resolver-arm.cc Loading commit data...
lithium-gap-resolver-arm.h Loading commit data...
macro-assembler-arm.cc Loading commit data...
macro-assembler-arm.h Loading commit data...
regexp-macro-assembler-arm.cc Loading commit data...
regexp-macro-assembler-arm.h Loading commit data...
simulator-arm.cc Loading commit data...
simulator-arm.h Loading commit data...
stub-cache-arm.cc Loading commit data...