2.9
[glibc/nacl-glibc.git] / sysdeps / sparc / sparc32 / sparcv9 / rem.S
blob5385bd8305ca953ace898794424380d2170724a6
1 /*
2  * Sparc v9 has divide.
3  * As divx takes 68 cycles and sdivcc only 36,
4  * we use sdivcc eventhough it is deprecated.
5  */
7 #include <sysdep.h>
9         .text
10         .align          32
11 ENTRY(.rem)
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
22 END(.rem)