1/* 2 * strncmp.S: Hand optimized Sparc assembly of GCC output from GNU libc 3 * generic strncmp routine. 4 */ 5 6 .text 7 .align 4 8 .global __strncmp, strncmp 9__strncmp: 10strncmp: 11 mov %o0, %g3 12 mov 0, %o3 13 14 cmp %o2, 3 15 ble 7f 16 mov 0, %g2 17 18 sra %o2, 2, %o4 19 ldub [%g3], %o3 20 210: 22 ldub [%o1], %g2 23 add %g3, 1, %g3 24 and %o3, 0xff, %o0 25 26 cmp %o0, 0 27 be 8f 28 add %o1, 1, %o1 29 30 cmp %o0, %g2 31 be,a 1f 32 ldub [%g3], %o3 33 34 retl 35 sub %o0, %g2, %o0 36 371: 38 ldub [%o1], %g2 39 add %g3,1, %g3 40 and %o3, 0xff, %o0 41 42 cmp %o0, 0 43 be 8f 44 add %o1, 1, %o1 45 46 cmp %o0, %g2 47 be,a 1f 48 ldub [%g3], %o3 49 50 retl 51 sub %o0, %g2, %o0 52 531: 54 ldub [%o1], %g2 55 add %g3, 1, %g3 56 and %o3, 0xff, %o0 57 58 cmp %o0, 0 59 be 8f 60 add %o1, 1, %o1 61 62 cmp %o0, %g2 63 be,a 1f 64 ldub [%g3], %o3 65 66 retl 67 sub %o0, %g2, %o0 68 691: 70 ldub [%o1], %g2 71 add %g3, 1, %g3 72 and %o3, 0xff, %o0 73 74 cmp %o0, 0 75 be 8f 76 add %o1, 1, %o1 77 78 cmp %o0, %g2 79 be 1f 80 add %o4, -1, %o4 81 82 retl 83 sub %o0, %g2, %o0 84 851: 86 87 cmp %o4, 0 88 bg,a 0b 89 ldub [%g3], %o3 90 91 b 7f 92 and %o2, 3, %o2 93 949: 95 ldub [%o1], %g2 96 add %g3, 1, %g3 97 and %o3, 0xff, %o0 98 99 cmp %o0, 0 100 be 8f 101 add %o1, 1, %o1 102 103 cmp %o0, %g2 104 be 7f 105 add %o2, -1, %o2 106 1078: 108 retl 109 sub %o0, %g2, %o0 110 1117: 112 cmp %o2, 0 113 bg,a 9b 114 ldub [%g3], %o3 115 116 and %g2, 0xff, %o0 117 retl 118 sub %o3, %o0, %o0 119