1/* 2 * GCC generated output for sparc v8 mul/div/rem operations. 3 * Included in the sparc_v8.so shared library for use on sparc v8 4 * machines instead of the libc.so versions. 5 */ 6 .file "sparc_v8.S" 7.section ".text" 8 9 10/* 11 * unsigned .umul(unsigned a, unsigned b) 12 * 13 * This function computes a * b with unsigned integer 14 * multiplication. When .umul returns, the caller's register %o0 15 * contains the least significant 32 bits of the 64-bit result; 16 * register %o1 holds the most significant 32 bits of the result. 17 * Upon return, the integer condition codes and registers %o2 18 * through %o5 have unspecified values. 19 */ 20 .align 4 21 .global .umul 22 .type .umul,@function 23.umul: 24 umul %o0, %o1, %o0 25 retl 26 rd %y, %o1 27.LLfe1: 28 .size .umul,.LLfe1-.umul 29 30 31/* 32 * int .mul(int a, int b) 33 * 34 * This function computes a * b with signed integer 35 * multiplication. When .mul returns, the caller's register %o0 36 * contains the least significant 32 bits of the 64-bit result; 37 * register %o1 holds the most significant 32 bits of the result. 38 * Upon return, the integer condition codes and registers %o2 39 * through %o5 have unspecified values. 40 */ 41 .align 4 42 .global .mul 43 .type .mul,@function 44.mul: 45 smul %o0, %o1, %o0 46 retl 47 rd %y, %o1 48.LLfe2: 49 .size .mul,.LLfe2-.mul 50 51/*--- .udiv ---*/ 52 .align 4 53 .global .udiv 54 .type .udiv,@function 55.udiv: 56 wr %g0, 0, %y 57 nop; nop; nop 58 retl 59 udiv %o0, %o1, %o0 60.LLfe3: 61 .size .udiv,.LLfe3-.udiv 62 63/*--- .div ---*/ 64 .align 4 65 .global .div 66 .type .div,@function 67.div: 68 sra %o0, 31, %g2 69 wr %g2, 0, %y 70 nop; nop; nop 71 retl 72 sdiv %o0, %o1, %o0 73.LLfe4: 74 .size .div,.LLfe4-.div 75 76/*--- .urem ---*/ 77 .align 4 78 .global .urem 79 .type .urem,@function 80.urem: 81 wr %g0, %g0, %y 82 nop; nop; nop 83 udiv %o0, %o1, %g2 84 smul %g2, %o1, %g2 85 retl 86 sub %o0, %g2, %o0 87.LLfe5: 88 .size .urem,.LLfe5-.urem 89 90/*--- .rem ---*/ 91 .align 4 92 .global .rem 93 .type .rem,@function 94.rem: 95 sra %o0, 31, %g3 96 wr %g3, 0, %y 97 nop; nop; nop 98 sdiv %o0, %o1, %g2 99 smul %g2, %o1, %g2 100 retl 101 sub %o0, %g2, %o0 102.LLfe6: 103 .size .rem,.LLfe6-.rem 104 !.ident "GCC: (GNU) 2.95.3 20010315 (release) (NetBSD nb3)" 105