ARM: Do not set FPSCR when converting to clamped uint8
authorrmcilroy@chromium.org <rmcilroy@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Fri, 11 Apr 2014 09:22:14 +0000 (09:22 +0000)
committerrmcilroy@chromium.org <rmcilroy@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Fri, 11 Apr 2014 09:22:14 +0000 (09:22 +0000)
commitb61696dd952ef9a702a23895e6aae31547df5567
tree15eacd28698e814378215f41072487f499d6b1af
parent6f2bea967cf9acf7038e85a8b590317a84619ff9
ARM: Do not set FPSCR when converting to clamped uint8

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
src/arm/macro-assembler-arm.cc
src/objects.h