1 | /* |
---|---|
2 | * Sparc v9 has divide. |
3 | * As divx takes 68 cycles and sdivcc only 36, |
4 | * we use sdivcc even though it is deprecated. |
5 | */ |
6 | |
7 | #include <sysdep.h> |
8 | |
9 | .text |
10 | .align 32 |
11 | ENTRY(.rem) |
12 | |
13 | sra %o0, 31, %o2 |
14 | wr %o2, 0, %y |
15 | sdivcc %o0, %o1, %o2 |
16 | xnor %o2, %g0, %o3 |
17 | movvs %icc, %o3, %o2 |
18 | smul %o2, %o1, %o2 |
19 | retl |
20 | sub %o0, %o2, %o0 |
21 | |
22 | END(.rem) |
23 |