64 bit operations

Michael Hope michael.hope at linaro.org
Tue Oct 18 22:49:11 UTC 2011


...and here's the missing test case.

-- Michael

On Wed, Oct 19, 2011 at 11:38 AM, Michael Hope <michael.hope at linaro.org> wrote:
> Following on from last night's performance call, I had a look at how
> 64 bit integer operations are mapped to NEON instructions.  The
> summary is:
>
>  * add - fine
>  * subtract - fine
>  * bitwise and - fine
>  * bitwise or - fine
>  * bitwise xor - fine
>  * multiply - can't as the instruction tops out at 32 bits.  Might be
> able to compose using VMLAL
>  * div, mod - no instruction
>  * negate - instruction tops out at 32 bits, but could be turned into
> vmov #0, vsub
>  * left shift constant - missing
>  * right shift constant - missing
>  * right arithmetic shift constant - missing
>  * left shift register - missing
>  * right shift register - tricky, as you do this as a left shift -register
>  * not - no instruction, but could be done through a vceq, #0?
>  * bitwise not - missing
>
> I also noticed that the replicated constants aren't being used.  A
> pre-increment is load constant pool; vadd but could be done as a vmov,
> #-1; vsub.  The same with pre-decrement - it could be done as a vmov,
> #-1; vadd.
>
> This seems worth blueprinting.
>
> -- Michael
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: operators.c
Type: text/x-csrc
Size: 1353 bytes
Desc: not available
URL: <http://lists.linaro.org/pipermail/linaro-toolchain/attachments/20111019/0515d7b0/attachment.c>


More information about the linaro-toolchain mailing list