1 .text 2 .align 4 3 .global __memcmp, memcmp 4__memcmp: 5memcmp: 6#if 1 7 cmp %o2, 0 8 ble L3 9 mov 0, %g3 10L5: 11 ldub [%o0], %g2 12 ldub [%o1], %g3 13 sub %g2, %g3, %g2 14 mov %g2, %g3 15 sll %g2, 24, %g2 16 17 cmp %g2, 0 18 bne L3 19 add %o0, 1, %o0 20 21 add %o2, -1, %o2 22 23 cmp %o2, 0 24 bg L5 25 add %o1, 1, %o1 26L3: 27 sll %g3, 24, %o0 28 sra %o0, 24, %o0 29 30 retl 31 nop 32#else 33 save %sp, -104, %sp 34 mov %i2, %o4 35 mov %i0, %o0 36 37 cmp %o4, 15 38 ble L72 39 mov %i1, %i2 40 41 andcc %i2, 3, %g0 42 be L161 43 andcc %o0, 3, %g2 44L75: 45 ldub [%o0], %g3 46 ldub [%i2], %g2 47 add %o0,1, %o0 48 49 subcc %g3, %g2, %i0 50 bne L156 51 add %i2, 1, %i2 52 53 andcc %i2, 3, %g0 54 bne L75 55 add %o4, -1, %o4 56 57 andcc %o0, 3, %g2 58L161: 59 bne,a L78 60 mov %i2, %i1 61 62 mov %o0, %i5 63 mov %i2, %i3 64 srl %o4, 2, %i4 65 66 cmp %i4, 0 67 bge L93 68 mov %i4, %g2 69 70 add %i4, 3, %g2 71L93: 72 sra %g2, 2, %g2 73 sll %g2, 2, %g2 74 sub %i4, %g2, %g2 75 76 cmp %g2, 1 77 be,a L88 78 add %o0, 4, %i5 79 80 bg L94 81 cmp %g2, 2 82 83 cmp %g2, 0 84 be,a L86 85 ld [%o0], %g3 86 87 b L162 88 ld [%i5], %g3 89L94: 90 be L81 91 cmp %g2, 3 92 93 be,a L83 94 add %o0, -4, %i5 95 96 b L162 97 ld [%i5], %g3 98L81: 99 add %o0, -8, %i5 100 ld [%o0], %g3 101 add %i2, -8, %i3 102 ld [%i2], %g2 103 104 b L82 105 add %i4, 2, %i4 106L83: 107 ld [%o0], %g4 108 add %i2, -4, %i3 109 ld [%i2], %g1 110 111 b L84 112 add %i4, 1, %i4 113L86: 114 b L87 115 ld [%i2], %g2 116L88: 117 add %i2, 4, %i3 118 ld [%o0], %g4 119 add %i4, -1, %i4 120 ld [%i2], %g1 121L95: 122 ld [%i5], %g3 123L162: 124 cmp %g4, %g1 125 be L87 126 ld [%i3], %g2 127 128 cmp %g4, %g1 129L163: 130 bleu L114 131 mov -1, %i0 132 133 b L114 134 mov 1, %i0 135L87: 136 ld [%i5 + 4], %g4 137 cmp %g3, %g2 138 bne L163 139 ld [%i3 + 4], %g1 140L84: 141 ld [%i5 + 8], %g3 142 143 cmp %g4, %g1 144 bne L163 145 ld [%i3 + 8], %g2 146L82: 147 ld [%i5 + 12], %g4 148 cmp %g3, %g2 149 bne L163 150 ld [%i3 + 12], %g1 151 152 add %i5, 16, %i5 153 154 addcc %i4, -4, %i4 155 bne L95 156 add %i3, 16, %i3 157 158 cmp %g4, %g1 159 bne L163 160 nop 161 162 b L114 163 mov 0, %i0 164L78: 165 srl %o4, 2, %i0 166 and %o0, -4, %i3 167 orcc %i0, %g0, %g3 168 sll %g2, 3, %o7 169 mov 32, %g2 170 171 bge L129 172 sub %g2, %o7, %o1 173 174 add %i0, 3, %g3 175L129: 176 sra %g3, 2, %g2 177 sll %g2, 2, %g2 178 sub %i0, %g2, %g2 179 180 cmp %g2, 1 181 be,a L124 182 ld [%i3], %o3 183 184 bg L130 185 cmp %g2, 2 186 187 cmp %g2, 0 188 be,a L122 189 ld [%i3], %o2 190 191 b L164 192 sll %o3, %o7, %g3 193L130: 194 be L117 195 cmp %g2, 3 196 197 be,a L119 198 ld [%i3], %g1 199 200 b L164 201 sll %o3, %o7, %g3 202L117: 203 ld [%i3], %g4 204 add %i2, -8, %i1 205 ld [%i3 + 4], %o3 206 add %i0, 2, %i0 207 ld [%i2], %i4 208 209 b L118 210 add %i3, -4, %i3 211L119: 212 ld [%i3 + 4], %g4 213 add %i2, -4, %i1 214 ld [%i2], %i5 215 216 b L120 217 add %i0, 1, %i0 218L122: 219 ld [%i3 + 4], %g1 220 ld [%i2], %i4 221 222 b L123 223 add %i3, 4, %i3 224L124: 225 add %i2, 4, %i1 226 ld [%i3 + 4], %o2 227 add %i0, -1, %i0 228 ld [%i2], %i5 229 add %i3, 8, %i3 230L131: 231 sll %o3, %o7, %g3 232L164: 233 srl %o2, %o1, %g2 234 ld [%i3], %g1 235 or %g3, %g2, %g3 236 237 cmp %g3, %i5 238 bne L163 239 ld [%i1], %i4 240L123: 241 sll %o2, %o7, %g3 242 srl %g1, %o1, %g2 243 ld [%i3 + 4], %g4 244 or %g3, %g2, %g3 245 246 cmp %g3, %i4 247 bne L163 248 ld [%i1 + 4], %i5 249L120: 250 sll %g1, %o7, %g3 251 srl %g4, %o1, %g2 252 ld [%i3 + 8], %o3 253 or %g3, %g2, %g3 254 255 cmp %g3, %i5 256 bne L163 257 ld [%i1 + 8], %i4 258L118: 259 sll %g4, %o7, %g3 260 srl %o3, %o1, %g2 261 ld [%i3 + 12], %o2 262 or %g3, %g2, %g3 263 264 cmp %g3, %i4 265 bne L163 266 ld [%i1 + 12], %i5 267 268 add %i3, 16, %i3 269 addcc %i0, -4, %i0 270 bne L131 271 add %i1, 16, %i1 272 273 sll %o3, %o7, %g3 274 srl %o2, %o1, %g2 275 or %g3, %g2, %g3 276 277 cmp %g3, %i5 278 be,a L114 279 mov 0, %i0 280 281 b,a L163 282L114: 283 cmp %i0, 0 284 bne L156 285 and %o4, -4, %g2 286 287 add %o0, %g2, %o0 288 add %i2, %g2, %i2 289 and %o4, 3, %o4 290L72: 291 cmp %o4, 0 292 be L156 293 mov 0, %i0 294 295 ldub [%o0], %g3 296L165: 297 ldub [%i2], %g2 298 add %o0, 1, %o0 299 300 subcc %g3, %g2, %i0 301 bne L156 302 add %i2, 1, %i2 303 304 addcc %o4, -1, %o4 305 bne,a L165 306 ldub [%o0], %g3 307 308 mov 0, %i0 309L156: 310 ret 311 restore 312#endif 313