[arm] Optimize FitsShifter to remove loop
Operands in Arm can be encoded as (8-bit value, 2*N bit left rotate). This encoding is checked for with the FitsShifter function. Previously, this encoding was exhaustively searched for by checking all 16 possible rotations. However, we can simply classify the different possible rotations as shifting away trailing zeros (without rotation), or rotating an 8-bit value split over the beginning and end of the 32-bit value (which, after one rotation, becomes the first case). Hence, we can replace the exhaustive search with a couple of trailing zeros calculations within these classes. Change-Id: Id896539c376f695b54bdf31133b2a103b0cf9736 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2831479 Commit-Queue: Leszek Swirski <leszeks@chromium.org> Reviewed-by: Patrick Thier <pthier@chromium.org> Cr-Commit-Position: refs/heads/master@{#74012}
Showing
Please
register
or
sign in
to comment