shl.s 386 B

1234567891011121314151617181920212223242526272829303132
  1. .text
  2. .align 4
  3. .code 32
  4. .global shl
  5. .type shl, %function
  6. shl:
  7. LSL r0,r0,#16
  8. CMP r0,#0
  9. BEQ .END
  10. CMP r1,#0
  11. BEQ .END
  12. BLT .R_SHIFT
  13. .L_SHIFT:
  14. CMP r1,#16
  15. MOVGT r1,#16
  16. MOV r2,r0
  17. LSL r0,r0,r1
  18. CMP r2,r0,ASR r1
  19. BEQ .END
  20. MOV r1,#0x7FFFFFFF
  21. EOR r0,r1,r2, ASR #31
  22. B .END
  23. .R_SHIFT:
  24. RSB r1,r1,#0
  25. CMP r1,#16
  26. MOVGT r1,#16
  27. ASR r0,r0,r1
  28. .END:
  29. ASR r0,r0,#16
  30. BX lr