
@; fractional multiply routines

@; 32x32=64 shift result right by 16 bits
@; return the lowest 32 bits
    .text
    .align 2
    .global fmull48
fmull48:
    mov   r2, r0
    umull r0, r1, r2, r1
    mov   r0, r0, lsr #16
    orr   r0, r0, r1, lsl #(32-16)
    mov   pc, lr

@; 32x32=64 shift result right by 15 bits
@; return the lowest 32 bits
    .global fmull47
fmull47:
    mov   r2, r0
    umull r0, r1, r2, r1
    mov   r0, r0, lsr #15
    orr   r0, r0, r1, lsl #(32-15)
    mov   pc, lr
