On Wed, 2016-03-02 at 14:25 +0000, Renato Golin wrote:
On 2 March 2016 at 11:35, Edward Nevill edward.nevill@linaro.org wrote:
cmp x2, 8 <<< (1)
(1) If count as a 64 bit unsigned is <= 8 then it is probably still <= 8 as a 32 bit unsigned.
You mean to use "cmp w2, 8" instead? Is there any difference?
No. Look at the assembler again
pd_disjoint_words: cmp x2, 8 <<< (1) sub sp, sp, #64 <<< (2) bhi .L2 cmp w2, 8 <<< (1) bls .L15
It is doing cmp x2, 8 then a few instructions later, without modifying x2/w2 and without any intervening branch destinations it does cmp w2, 8. I assert the 2nd cmp w2, 8 and bls are redundant, because we know it is (unsigned) <= 8 already.
Have you tried building OpenJDK with Clang?
No. I might if you can provide me a binary.
Thanks, Ed.