1/* $Id: ashldi3.S,v 1.1.1.1 2007/08/03 18:52:18 Exp $
2 * ashldi3.S:	Math-emu code creates all kinds of references to
3 *              this little routine on the sparc with gcc.
4 *
5 * Copyright (C) 1998 Jakub Jelinek(jj@ultra.linux.cz)
6 */
7
8#include <asm/cprefix.h>
9
10	.globl C_LABEL(__ashldi3)
11C_LABEL(__ashldi3):
12	tst	%o2
13	be	3f
14	 mov	32, %g2
15
16	sub	%g2, %o2, %g2
17
18	tst	%g2
19	bg	1f
20	 srl	%o1, %g2, %g3
21
22	clr	%o5
23	neg	%g2
24	ba	2f
25	 sll	%o1, %g2, %o4
26
271:
28	sll	%o1, %o2, %o5
29	srl	%o0, %o2, %g2
30	or	%g2, %g3, %o4
312:
32	mov	%o4, %o0
33	mov	%o5, %o1
343:
35	jmpl	%o7 + 8, %g0
36	 nop
37