Commit | Line | Data |
---|---|---|
1da177e4 LT |
1 | /* $Id: ashldi3.S,v 1.1 1998/04/06 16:09:28 jj 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) | |
11 | C_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 | ||
27 | 1: | |
28 | sll %o1, %o2, %o5 | |
29 | srl %o0, %o2, %g2 | |
30 | or %g2, %g3, %o4 | |
31 | 2: | |
32 | mov %o4, %o0 | |
33 | mov %o5, %o1 | |
34 | 3: | |
35 | jmpl %o7 + 8, %g0 | |
36 | nop |