| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 1 | .text |
| 2 | .align 4 | ||||
| 3 | .global __memcmp, memcmp | ||||
| 4 | __memcmp: | ||||
| 5 | memcmp: | ||||
| 6 | #if 1 | ||||
| 7 | cmp %o2, 0 | ||||
| 8 | ble L3 | ||||
| 9 | mov 0, %g3 | ||||
| 10 | L5: | ||||
| 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 | ||||
| 26 | L3: | ||||
| 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 | ||||
| 44 | L75: | ||||
| 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 | ||||
| 58 | L161: | ||||
| 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 | ||||
| 71 | L93: | ||||
| 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 | ||||
| 89 | L94: | ||||
| 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 | ||||
| 98 | L81: | ||||
| 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 | ||||
| 106 | L83: | ||||
| 107 | ld [%o0], %g4 | ||||
| 108 | add %i2, -4, %i3 | ||||
| 109 | ld [%i2], %g1 | ||||
| 110 | |||||
| 111 | b L84 | ||||
| 112 | add %i4, 1, %i4 | ||||
| 113 | L86: | ||||
| 114 | b L87 | ||||
| 115 | ld [%i2], %g2 | ||||
| 116 | L88: | ||||
| 117 | add %i2, 4, %i3 | ||||
| 118 | ld [%o0], %g4 | ||||
| 119 | add %i4, -1, %i4 | ||||
| 120 | ld [%i2], %g1 | ||||
| 121 | L95: | ||||
| 122 | ld [%i5], %g3 | ||||
| 123 | L162: | ||||
| 124 | cmp %g4, %g1 | ||||
| 125 | be L87 | ||||
| 126 | ld [%i3], %g2 | ||||
| 127 | |||||
| 128 | cmp %g4, %g1 | ||||
| 129 | L163: | ||||
| 130 | bleu L114 | ||||
| 131 | mov -1, %i0 | ||||
| 132 | |||||
| 133 | b L114 | ||||
| 134 | mov 1, %i0 | ||||
| 135 | L87: | ||||
| 136 | ld [%i5 + 4], %g4 | ||||
| 137 | cmp %g3, %g2 | ||||
| 138 | bne L163 | ||||
| 139 | ld [%i3 + 4], %g1 | ||||
| 140 | L84: | ||||
| 141 | ld [%i5 + 8], %g3 | ||||
| 142 | |||||
| 143 | cmp %g4, %g1 | ||||
| 144 | bne L163 | ||||
| 145 | ld [%i3 + 8], %g2 | ||||
| 146 | L82: | ||||
| 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 | ||||
| 164 | L78: | ||||
| 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 | ||||
| 175 | L129: | ||||
| 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 | ||||
| 193 | L130: | ||||
| 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 | ||||
| 202 | L117: | ||||
| 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 | ||||
| 211 | L119: | ||||
| 212 | ld [%i3 + 4], %g4 | ||||
| 213 | add %i2, -4, %i1 | ||||
| 214 | ld [%i2], %i5 | ||||
| 215 | |||||
| 216 | b L120 | ||||
| 217 | add %i0, 1, %i0 | ||||
| 218 | L122: | ||||
| 219 | ld [%i3 + 4], %g1 | ||||
| 220 | ld [%i2], %i4 | ||||
| 221 | |||||
| 222 | b L123 | ||||
| 223 | add %i3, 4, %i3 | ||||
| 224 | L124: | ||||
| 225 | add %i2, 4, %i1 | ||||
| 226 | ld [%i3 + 4], %o2 | ||||
| 227 | add %i0, -1, %i0 | ||||
| 228 | ld [%i2], %i5 | ||||
| 229 | add %i3, 8, %i3 | ||||
| 230 | L131: | ||||
| 231 | sll %o3, %o7, %g3 | ||||
| 232 | L164: | ||||
| 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 | ||||
| 240 | L123: | ||||
| 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 | ||||
| 249 | L120: | ||||
| 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 | ||||
| 258 | L118: | ||||
| 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 | ||||
| 282 | L114: | ||||
| 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 | ||||
| 290 | L72: | ||||
| 291 | cmp %o4, 0 | ||||
| 292 | be L156 | ||||
| 293 | mov 0, %i0 | ||||
| 294 | |||||
| 295 | ldub [%o0], %g3 | ||||
| 296 | L165: | ||||
| 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 | ||||
| 309 | L156: | ||||
| 310 | ret | ||||
| 311 | restore | ||||
| 312 | #endif | ||||