-
svenpanne@chromium.org authored
Arithmetic right shifting is *not* division in two's complement representation, only in one's complement. So we convert to one's complement, shift, and go back to two's complement. By permutating the last steps, one can get efficient branch-free code. This insight comes from the paleozoic era of computer science, see the paper from 1976: Guy Lewis Steele Jr.: "Arithmetic Shifting Considered Harmful" ftp://publications.ai.mit.edu/ai-publications/pdf/AIM-378.pdf This results in better and more correct code than our previous "neg/shift/neg" dance. LOG=y BUG=v8:3151 R=bmeurer@chromium.org Review URL: https://codereview.chromium.org/166793002 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19434 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
dbce2704