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