Files
avo/examples/stadtx/stadtx.s
2018-12-19 22:09:55 -08:00

311 lines
4.6 KiB
ArmAsm

// Code generated by command: go run asm.go -out stadtx.s -stubs stub.go. DO NOT EDIT.
#include "textflag.h"
// func Hash(state *State, key []byte) uint64
TEXT ·Hash(SB),0,$0-40
MOVQ state(FP), AX
MOVQ key_base+8(FP), CX
MOVQ key_len+16(FP), DX
MOVQ (AX), BX
MOVQ 8(AX), BP
MOVQ DX, SI
ADDQ $0x1, SI
MOVQ $0xb89b0f8e1655514f, DI
IMULQ DI, SI
XORQ SI, BX
MOVQ DX, SI
ADDQ $0x2, SI
MOVQ $0x8c6f736011bd5127, DI
IMULQ DI, SI
XORQ SI, BP
CMPQ DX, $0x20
JGE coreLong
MOVQ DX, SI
SHRQ $0x3, SI
CMPQ SI, $0x0
JE shortCore0
CMPQ SI, $0x1
JE shortCore1
CMPQ SI, $0x2
JE shortCore2
CMPQ SI, $0x3
JE shortCore3
shortCore3:
MOVQ (CX), SI
MOVQ $0x9c1b8e1e9628323f, DI
IMULQ DI, SI
ADDQ SI, BX
RORQ $0x11, BX
XORQ BP, BX
RORQ $0x35, BP
ADDQ BX, BP
ADDQ $0x8, CX
SUBQ $0x8, DX
shortCore2:
MOVQ (CX), SI
MOVQ $0x9c1b8e1e9628323f, DI
IMULQ DI, SI
ADDQ SI, BX
RORQ $0x11, BX
XORQ BP, BX
RORQ $0x35, BP
ADDQ BX, BP
ADDQ $0x8, CX
SUBQ $0x8, DX
shortCore1:
MOVQ (CX), SI
MOVQ $0x9c1b8e1e9628323f, DI
IMULQ DI, SI
ADDQ SI, BX
RORQ $0x11, BX
XORQ BP, BX
RORQ $0x35, BP
ADDQ BX, BP
ADDQ $0x8, CX
SUBQ $0x8, DX
shortCore0:
CMPQ DX, $0x0
JE shortTail0
CMPQ DX, $0x1
JE shortTail1
CMPQ DX, $0x2
JE shortTail2
CMPQ DX, $0x3
JE shortTail3
CMPQ DX, $0x4
JE shortTail4
CMPQ DX, $0x5
JE shortTail5
CMPQ DX, $0x6
JE shortTail6
CMPQ DX, $0x7
JE shortTail7
shortTail7:
MOVBQZX 6(CX), SI
SHLQ $0x20, SI
ADDQ SI, BX
shortTail6:
MOVBQZX 5(CX), SI
SHLQ $0x30, SI
ADDQ SI, BP
shortTail5:
MOVBQZX 4(CX), SI
SHLQ $0x10, SI
ADDQ SI, BX
shortTail4:
MOVLQZX (CX), SI
ADDQ SI, BP
JMP shortAfter
shortTail3:
MOVBQZX 2(CX), SI
SHLQ $0x30, SI
ADDQ SI, BX
shortTail2:
MOVWQZX (CX), SI
ADDQ SI, BP
JMP shortAfter
shortTail1:
MOVBQZX (CX), SI
ADDQ SI, BX
shortTail0:
RORQ $0x20, BP
XORQ $0xff, BP
shortAfter:
XORQ BX, BP
RORQ $0x21, BX
ADDQ BP, BX
ROLQ $0x11, BP
XORQ BX, BP
ROLQ $0x2b, BX
ADDQ BP, BX
ROLQ $0x1f, BP
SUBQ BX, BP
ROLQ $0xd, BX
XORQ BP, BX
SUBQ BX, BP
ROLQ $0x29, BX
ADDQ BP, BX
ROLQ $0x25, BP
XORQ BX, BP
RORQ $0x27, BX
ADDQ BP, BX
RORQ $0xf, BP
ADDQ BX, BP
ROLQ $0xf, BX
XORQ BP, BX
RORQ $0x5, BP
XORQ BP, BX
MOVQ BX, ret+32(FP)
RET
coreLong:
MOVQ 16(AX), DI
MOVQ 24(AX), AX
MOVQ DX, SI
ADDQ $0x3, SI
MOVQ $0x8f29bd94edce7b39, R8
IMULQ R8, SI
XORQ SI, DI
MOVQ DX, SI
ADDQ $0x4, SI
MOVQ $0x9c1b8e1e9628323f, R8
IMULQ R8, SI
XORQ SI, AX
block:
MOVQ (CX), SI
MOVQ $0x802910e3, R8
IMULQ R8, SI
ADDQ SI, BX
ROLQ $0x39, BX
XORQ AX, BX
MOVQ 8(CX), SI
MOVQ $0x819b13af, R8
IMULQ R8, SI
ADDQ SI, BP
ROLQ $0x3f, BP
XORQ DI, BP
MOVQ 16(CX), SI
MOVQ $0x91cb27e5, R8
IMULQ R8, SI
ADDQ SI, DI
RORQ $0x2f, DI
ADDQ BX, DI
MOVQ 24(CX), SI
MOVQ $0xc1a269c1, R8
IMULQ R8, SI
ADDQ SI, AX
RORQ $0xb, AX
SUBQ BP, AX
ADDQ $0x20, CX
SUBQ $0x20, DX
CMPQ DX, $0x20
JGE block
MOVQ DX, R8
MOVQ DX, SI
SHRQ $0x3, SI
CMPQ SI, $0x0
JE longCore0
CMPQ SI, $0x1
JE longCore1
CMPQ SI, $0x2
JE longCore2
CMPQ SI, $0x3
JE longCore3
longCore3:
MOVQ (CX), SI
MOVQ $0x802910e3, R9
IMULQ R9, SI
ADDQ SI, BX
ROLQ $0x39, BX
XORQ AX, BX
ADDQ $0x8, CX
SUBQ $0x8, DX
longCore2:
MOVQ (CX), SI
MOVQ $0x819b13af, R9
IMULQ R9, SI
ADDQ SI, BP
ROLQ $0x3f, BP
XORQ DI, BP
ADDQ $0x8, CX
SUBQ $0x8, DX
longCore1:
MOVQ (CX), SI
MOVQ $0x91cb27e5, R9
IMULQ R9, SI
ADDQ SI, DI
RORQ $0x2f, DI
ADDQ BX, DI
ADDQ $0x8, CX
SUBQ $0x8, DX
longCore0:
RORQ $0xb, AX
SUBQ BP, AX
ADDQ $0x1, R8
MOVQ $0x9c1b8e1e9628323f, SI
IMULQ SI, R8
XORQ R8, BX
CMPQ DX, $0x0
JE longTail0
CMPQ DX, $0x1
JE longTail1
CMPQ DX, $0x2
JE longTail2
CMPQ DX, $0x3
JE longTail3
CMPQ DX, $0x4
JE longTail4
CMPQ DX, $0x5
JE longTail5
CMPQ DX, $0x6
JE longTail6
CMPQ DX, $0x7
JE longTail7
longTail7:
MOVBQZX 6(CX), SI
ADDQ SI, BP
longTail6:
MOVWQZX 4(CX), SI
ADDQ SI, DI
MOVLQZX (CX), SI
ADDQ SI, AX
JMP longAfter
longTail5:
MOVBQZX 4(CX), SI
ADDQ SI, BP
longTail4:
MOVLQZX (CX), SI
ADDQ SI, DI
JMP longAfter
longTail3:
MOVBQZX 2(CX), SI
ADDQ SI, AX
longTail2:
MOVWQZX (CX), SI
ADDQ SI, BP
JMP longAfter
longTail1:
MOVBQZX (CX), SI
ADDQ SI, DI
longTail0:
ROLQ $0x20, AX
XORQ $0xff, AX
longAfter:
SUBQ DI, BP
RORQ $0x13, BX
SUBQ BX, BP
RORQ $0x35, BP
XORQ BP, AX
SUBQ AX, BX
ROLQ $0x2b, AX
ADDQ AX, BX
RORQ $0x3, BX
SUBQ BX, AX
RORQ $0x2b, DI
SUBQ AX, DI
ROLQ $0x37, DI
XORQ BX, DI
SUBQ DI, BP
RORQ $0x7, AX
SUBQ DI, AX
RORQ $0x1f, DI
ADDQ DI, AX
SUBQ BP, DI
RORQ $0x27, AX
XORQ AX, DI
RORQ $0x11, AX
XORQ DI, AX
ADDQ AX, BP
RORQ $0x9, BP
XORQ BP, DI
ROLQ $0x18, DI
XORQ DI, AX
RORQ $0x3b, AX
RORQ $0x1, BX
SUBQ BP, BX
XORQ BP, BX
XORQ AX, DI
XORQ DI, BX
MOVQ BX, ret+32(FP)
RET