1// +build !noasm 2// +build !gccgo 3 4// Generated by PeachPy 0.2.0 from metro.py 5 6// func Hash64(buffer_base uintptr, buffer_len int64, buffer_cap int64, seed uint64) uint64 7TEXT ·Hash64(SB),4,$0-40 8 MOVQ seed+24(FP), AX 9 MOVQ buffer_base+0(FP), BX 10 MOVQ buffer_len+8(FP), CX 11 MOVQ $3603962101, DX 12 IMULQ DX, AX 13 MOVQ $5961697176435608501, DX 14 ADDQ DX, AX 15 CMPQ CX, $32 16 JLT after32 17 MOVQ AX, DX 18 MOVQ AX, DI 19 MOVQ AX, SI 20 MOVQ AX, BP 21loop_begin: 22 MOVQ 0(BX), R8 23 MOVQ $3603962101, R9 24 IMULQ R9, R8 25 ADDQ R8, DX 26 RORQ $29, DX 27 ADDQ SI, DX 28 MOVQ 8(BX), R8 29 MOVQ $2729050939, R9 30 IMULQ R9, R8 31 ADDQ R8, DI 32 RORQ $29, DI 33 ADDQ BP, DI 34 MOVQ 16(BX), R8 35 MOVQ $1654206401, R9 36 IMULQ R9, R8 37 ADDQ R8, SI 38 RORQ $29, SI 39 ADDQ DX, SI 40 MOVQ 24(BX), R8 41 MOVQ $817650473, R9 42 IMULQ R9, R8 43 ADDQ R8, BP 44 RORQ $29, BP 45 ADDQ DI, BP 46 ADDQ $32, BX 47 SUBQ $32, CX 48 CMPQ CX, $32 49 JGE loop_begin 50 MOVQ DX, R8 51 ADDQ BP, R8 52 MOVQ $3603962101, R9 53 IMULQ R9, R8 54 ADDQ DI, R8 55 RORQ $37, R8 56 MOVQ $2729050939, R9 57 IMULQ R9, R8 58 XORQ R8, SI 59 MOVQ DI, R8 60 ADDQ SI, R8 61 MOVQ $2729050939, R9 62 IMULQ R9, R8 63 ADDQ DX, R8 64 RORQ $37, R8 65 MOVQ $3603962101, R9 66 IMULQ R9, R8 67 XORQ R8, BP 68 MOVQ DX, R8 69 ADDQ SI, R8 70 MOVQ $3603962101, R9 71 IMULQ R9, R8 72 ADDQ BP, R8 73 RORQ $37, R8 74 MOVQ $2729050939, R9 75 IMULQ R9, R8 76 XORQ R8, DX 77 MOVQ DI, R8 78 ADDQ BP, R8 79 MOVQ $2729050939, BP 80 IMULQ BP, R8 81 ADDQ SI, R8 82 RORQ $37, R8 83 MOVQ $3603962101, SI 84 IMULQ SI, R8 85 XORQ R8, DI 86 XORQ DI, DX 87 ADDQ DX, AX 88after32: 89 CMPQ CX, $16 90 JLT after16 91 MOVQ 0(BX), DX 92 MOVQ $1654206401, DI 93 IMULQ DI, DX 94 ADDQ AX, DX 95 ADDQ $8, BX 96 SUBQ $8, CX 97 RORQ $29, DX 98 MOVQ $817650473, DI 99 IMULQ DI, DX 100 MOVQ 0(BX), DI 101 MOVQ $1654206401, SI 102 IMULQ SI, DI 103 ADDQ AX, DI 104 ADDQ $8, BX 105 SUBQ $8, CX 106 RORQ $29, DI 107 MOVQ $817650473, SI 108 IMULQ SI, DI 109 MOVQ DX, SI 110 MOVQ $3603962101, BP 111 IMULQ BP, SI 112 RORQ $21, SI 113 ADDQ DI, SI 114 XORQ SI, DX 115 MOVQ DI, SI 116 MOVQ $817650473, BP 117 IMULQ BP, SI 118 RORQ $21, SI 119 ADDQ DX, SI 120 XORQ SI, DI 121 ADDQ DI, AX 122after16: 123 CMPQ CX, $8 124 JLT after8 125 MOVQ 0(BX), DX 126 MOVQ $817650473, DI 127 IMULQ DI, DX 128 ADDQ DX, AX 129 ADDQ $8, BX 130 SUBQ $8, CX 131 MOVQ AX, DX 132 RORQ $55, DX 133 MOVQ $2729050939, DI 134 IMULQ DI, DX 135 XORQ DX, AX 136after8: 137 CMPQ CX, $4 138 JLT after4 139 XORQ DX, DX 140 MOVL 0(BX), DX 141 MOVQ $817650473, DI 142 IMULQ DI, DX 143 ADDQ DX, AX 144 ADDQ $4, BX 145 SUBQ $4, CX 146 MOVQ AX, DX 147 RORQ $26, DX 148 MOVQ $2729050939, DI 149 IMULQ DI, DX 150 XORQ DX, AX 151after4: 152 CMPQ CX, $2 153 JLT after2 154 XORQ DX, DX 155 MOVW 0(BX), DX 156 MOVQ $817650473, DI 157 IMULQ DI, DX 158 ADDQ DX, AX 159 ADDQ $2, BX 160 SUBQ $2, CX 161 MOVQ AX, DX 162 RORQ $48, DX 163 MOVQ $2729050939, DI 164 IMULQ DI, DX 165 XORQ DX, AX 166after2: 167 CMPQ CX, $1 168 JLT after1 169 MOVBQZX 0(BX), BX 170 MOVQ $817650473, CX 171 IMULQ CX, BX 172 ADDQ BX, AX 173 MOVQ AX, BX 174 RORQ $37, BX 175 MOVQ $2729050939, CX 176 IMULQ CX, BX 177 XORQ BX, AX 178after1: 179 MOVQ AX, BX 180 RORQ $28, BX 181 XORQ BX, AX 182 MOVQ $3603962101, BX 183 IMULQ BX, AX 184 MOVQ AX, BX 185 RORQ $29, BX 186 XORQ BX, AX 187 MOVQ AX, ret+32(FP) 188 RET 189 190// func Hash64Str(buffer_base uintptr, buffer_len int64, seed uint64) uint64 191TEXT ·Hash64Str(SB),4,$0-32 192 MOVQ seed+16(FP), AX 193 MOVQ buffer_base+0(FP), BX 194 MOVQ buffer_len+8(FP), CX 195 MOVQ $3603962101, DX 196 IMULQ DX, AX 197 MOVQ $5961697176435608501, DX 198 ADDQ DX, AX 199 CMPQ CX, $32 200 JLT after32 201 MOVQ AX, DX 202 MOVQ AX, DI 203 MOVQ AX, SI 204 MOVQ AX, BP 205loop_begin: 206 MOVQ 0(BX), R8 207 MOVQ $3603962101, R9 208 IMULQ R9, R8 209 ADDQ R8, DX 210 RORQ $29, DX 211 ADDQ SI, DX 212 MOVQ 8(BX), R8 213 MOVQ $2729050939, R9 214 IMULQ R9, R8 215 ADDQ R8, DI 216 RORQ $29, DI 217 ADDQ BP, DI 218 MOVQ 16(BX), R8 219 MOVQ $1654206401, R9 220 IMULQ R9, R8 221 ADDQ R8, SI 222 RORQ $29, SI 223 ADDQ DX, SI 224 MOVQ 24(BX), R8 225 MOVQ $817650473, R9 226 IMULQ R9, R8 227 ADDQ R8, BP 228 RORQ $29, BP 229 ADDQ DI, BP 230 ADDQ $32, BX 231 SUBQ $32, CX 232 CMPQ CX, $32 233 JGE loop_begin 234 MOVQ DX, R8 235 ADDQ BP, R8 236 MOVQ $3603962101, R9 237 IMULQ R9, R8 238 ADDQ DI, R8 239 RORQ $37, R8 240 MOVQ $2729050939, R9 241 IMULQ R9, R8 242 XORQ R8, SI 243 MOVQ DI, R8 244 ADDQ SI, R8 245 MOVQ $2729050939, R9 246 IMULQ R9, R8 247 ADDQ DX, R8 248 RORQ $37, R8 249 MOVQ $3603962101, R9 250 IMULQ R9, R8 251 XORQ R8, BP 252 MOVQ DX, R8 253 ADDQ SI, R8 254 MOVQ $3603962101, R9 255 IMULQ R9, R8 256 ADDQ BP, R8 257 RORQ $37, R8 258 MOVQ $2729050939, R9 259 IMULQ R9, R8 260 XORQ R8, DX 261 MOVQ DI, R8 262 ADDQ BP, R8 263 MOVQ $2729050939, BP 264 IMULQ BP, R8 265 ADDQ SI, R8 266 RORQ $37, R8 267 MOVQ $3603962101, SI 268 IMULQ SI, R8 269 XORQ R8, DI 270 XORQ DI, DX 271 ADDQ DX, AX 272after32: 273 CMPQ CX, $16 274 JLT after16 275 MOVQ 0(BX), DX 276 MOVQ $1654206401, DI 277 IMULQ DI, DX 278 ADDQ AX, DX 279 ADDQ $8, BX 280 SUBQ $8, CX 281 RORQ $29, DX 282 MOVQ $817650473, DI 283 IMULQ DI, DX 284 MOVQ 0(BX), DI 285 MOVQ $1654206401, SI 286 IMULQ SI, DI 287 ADDQ AX, DI 288 ADDQ $8, BX 289 SUBQ $8, CX 290 RORQ $29, DI 291 MOVQ $817650473, SI 292 IMULQ SI, DI 293 MOVQ DX, SI 294 MOVQ $3603962101, BP 295 IMULQ BP, SI 296 RORQ $21, SI 297 ADDQ DI, SI 298 XORQ SI, DX 299 MOVQ DI, SI 300 MOVQ $817650473, BP 301 IMULQ BP, SI 302 RORQ $21, SI 303 ADDQ DX, SI 304 XORQ SI, DI 305 ADDQ DI, AX 306after16: 307 CMPQ CX, $8 308 JLT after8 309 MOVQ 0(BX), DX 310 MOVQ $817650473, DI 311 IMULQ DI, DX 312 ADDQ DX, AX 313 ADDQ $8, BX 314 SUBQ $8, CX 315 MOVQ AX, DX 316 RORQ $55, DX 317 MOVQ $2729050939, DI 318 IMULQ DI, DX 319 XORQ DX, AX 320after8: 321 CMPQ CX, $4 322 JLT after4 323 XORQ DX, DX 324 MOVL 0(BX), DX 325 MOVQ $817650473, DI 326 IMULQ DI, DX 327 ADDQ DX, AX 328 ADDQ $4, BX 329 SUBQ $4, CX 330 MOVQ AX, DX 331 RORQ $26, DX 332 MOVQ $2729050939, DI 333 IMULQ DI, DX 334 XORQ DX, AX 335after4: 336 CMPQ CX, $2 337 JLT after2 338 XORQ DX, DX 339 MOVW 0(BX), DX 340 MOVQ $817650473, DI 341 IMULQ DI, DX 342 ADDQ DX, AX 343 ADDQ $2, BX 344 SUBQ $2, CX 345 MOVQ AX, DX 346 RORQ $48, DX 347 MOVQ $2729050939, DI 348 IMULQ DI, DX 349 XORQ DX, AX 350after2: 351 CMPQ CX, $1 352 JLT after1 353 MOVBQZX 0(BX), BX 354 MOVQ $817650473, CX 355 IMULQ CX, BX 356 ADDQ BX, AX 357 MOVQ AX, BX 358 RORQ $37, BX 359 MOVQ $2729050939, CX 360 IMULQ CX, BX 361 XORQ BX, AX 362after1: 363 MOVQ AX, BX 364 RORQ $28, BX 365 XORQ BX, AX 366 MOVQ $3603962101, BX 367 IMULQ BX, AX 368 MOVQ AX, BX 369 RORQ $29, BX 370 XORQ BX, AX 371 MOVQ AX, ret+24(FP) 372 RET 373