Test case:

   1 void
   2 mul (long long *a, long long *b)
   3 {
   4   *a = *a * *b;
   5 }

Output code:

mul:
        fldd    d18, [r0, #0]   @ int
        fldd    d7, [r1, #0]    @ int
        vmull.u32       q8, d18, d7[0]
        vmla.i32        d17, d18, d7[1]
        vshl.u64        d18, d17, #32
        vadd.i64        d16, d18, d16
        fstd    d16, [r0, #0]   @ int
        bx      lr

Note: d17 is the same as q8[1]

AndrewStubbs/Sandbox/neon-muldi3 (last modified 2012-05-30 03:38:40)