l_mpy_ll.s 524 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. .text
  2. .align 4
  3. .code 32
  4. .global L_mpy_ll
  5. .type L_mpy_ll, %function
  6. @*
  7. @* Longword L_mpy_ll(Longword L_var1, Longword L_var2);
  8. @*
  9. L_mpy_ll:
  10. STMFD sp!,{r4 - r11,lr}
  11. EOR r3,r3,r3
  12. MOVW r3,#0xFFFF
  13. AND r4,r3,r0, ASR #16
  14. AND r5,r0,r3
  15. LSR r5,r5,#1
  16. AND r6,r3,r1, ASR #16
  17. AND r7,r1,r3
  18. LSR r7,r7,#1
  19. SMULBB r8,r4,r6
  20. MOV r9,#0
  21. QDADD r10,r9,r8
  22. SMULBB r11,r4,r7
  23. MOV r4,r11, ASR #15
  24. QDADD r8,r10,r4
  25. SMULBB r11,r5,r6
  26. MOV r5,r11, ASR #15
  27. QDADD r10,r8,r5
  28. MOV r0,r10
  29. LDMFD sp!,{r4 - r11,lr}
  30. BX lr